在本教程中,我将教你如何用32位stm32微控制器制作一个简单的光探测器。LDR(光依赖电阻)在教程中用作光探测器/传感器。这是一个简单的项目,你可能已经在电子课上做过使用555定时器ic。使用一个微控制器来实现相同的任务/逻辑并不困难。在555定时器电路中,555定时器的内部硬件检测灯的强度,并打开输出通道使灯接通。在555定时器ic中,所有东西都是硬件驱动的。但现在在微控制器的情况下,我们可以通过软件控制许多变量(光强,开关频率等)。微控制器可以是昂贵的,如果我们只想检测灯和开关灯泡。但如果要实现发送短信、更新服务器、维护日志等其他可见光探测任务,就需要单片机。
我使用Stm32CubeMx代码配置器和keil uvision 5 ide进行代码编写和编译。如果你没有之前的经验,Stm32CubeMx和keil ide,那么我建议你首先采取使用Stm32CubeMx和keil开始教程。
带有Stm32单片机和光电阻器的光探测开关
我将要在diy项目中使用的单片机是stm32f103c8t6。这是cortex M1 32位微控制器。我买了一个预先组装好的便宜的开发板,上面有stm32f103。这块板子花了我大约4美元。预制电路板易于使用,节省了在电路板上制作电路的时间。在项目的电路图中可以看到stm32f103开发板。
Stm32f103配置器- Stm32CubeMx
为了初始化stm32f103引脚,寄存器,时钟,上拉/下电阻,我使用Stm32cubeMx。Stm32cubemx是一个初始化平台意法半导体.开发人员可以使用Stm32CubeMx图形化地初始化任何stm32系列微控制器,并且通过按下一个按钮,Stm32CubeMx可以为输入配置生成HAL库代码。
光探测器输入/输出
我们的光探测器探测到可见光的强弱,微控制器将决定是否打开灯泡。所以LDR(光依赖电阻)/光敏电阻是我们系统的输入,灯泡是输出。
所以我们需要一个单一的gpio(通用输入/输出引脚)作为输入(用于光传感器)和一个输出(用于控制灯泡)。Stm32f103端口- a引脚#10被用作输入,端口- c引脚#13被用作输出。Stm32f103使用的引脚如下图所示。
光传感器项目的Stm32CubeMx引脚配置
在引脚配置窗口中。我命名的引脚和激活拉上和下电阻。对于输入和输出引脚,它们的内部下拉电阻被激活。下图是来自stm32cubemx代码配置器引脚配置设置窗口。
路灯探测器开关-电路图
LDR(光依赖电阻)连接到微控制器的Port-C引脚13。光敏电阻器的另一段与一个电阻器串联,以限制电流。注意引脚#13内部电阻被拉下。Stm32在3.3伏电压下工作。我在输入端提供5伏电压,并使用4.7 k电阻限制电流,将电压降至3.3伏。现在我们的输入引脚在保存电压范围内。
端口a引脚#10是我们的输出引脚。通过输出引脚我控制一个晶体管。晶体管被用来切换重负荷。一个12伏继电器连接到晶体管的集电极引脚。继电器通过控制晶体管的基极来激活和关闭。一个交流供电的灯泡连接到继电器输出引脚。所以现在当我们打开或关闭晶体管时,我们实际上是在开关灯泡。穿过继电器线圈的二极管保护电路免受感应和反电动势(电动势)的影响。注意输出引脚也是内部拉下。
光探测器的代码
代码很简单,只有三条语句满足我们想要的逻辑。我正在检查光是否存在,它落在光传感器上。当光线落在LDR上时,LDR的电阻减小,电流开始流过电路。Stm32代码语句,它标识了这个逻辑(light falling)是
如果(HAL_GPIO_ReadPin (LdrPin_GPIO_Port LdrPin_Pin) = = GPIO_PIN_RESET)
现在,如果光线没有落在传感器上,或者光线的强度不足以打破LDR(光依赖电阻)的反向屏障,那么就打开灯泡。开关灯泡的语句是
HAL_GPIO_WritePin (Bulb_GPIO_Port Bulb_Pin GPIO_PIN_SET)
如果(HAL_GPIO_ReadPin (LdrPin_GPIO_Port LdrPin_Pin) = = GPIO_PIN_RESET)
现在,如果光线没有落在传感器上,或者光线的强度不足以打破LDR(光依赖电阻)的反向屏障,那么就打开灯泡。开关灯泡的语句是
HAL_GPIO_WritePin (Bulb_GPIO_Port Bulb_Pin GPIO_PIN_SET)
否则,如果光存在并落在ldr上,光的强度也足够向前偏置ldr,然后关闭灯泡。关掉灯泡的语句是
HAL_GPIO_WritePin (Bulb_GPIO_Port Bulb_Pin GPIO_PIN_RESET)
项目的主要代码在main ()函数而()循环。当循环持续运行时,我们的逻辑被持续检查。项目可作为自动路灯开关使用。在输出端,我们可以通过逆向逻辑将一个水马达连接到农田灌溉,而不是一个灯泡。因此,当他们的灯,打开水泵,当他们的灯不亮时,关掉水泵。
未来工作:
可以将系统与互联网、云连接,并创建一个开关灯的日志/数据库。另一个功能还包括通过网络连接远程开关灯泡。其他传感器也可以引入该项目,并可以监测和自主控制远程企业领域与该系统。如军团浇水,温度监测,控制泵和灯等。
我用一个支持WiFi的esp8266控制器做了一个漂亮的智能花园天气项目。查看下面的项目。
了下:单片机项目,188appcob
与本文相关的问题?询问并讨论EDAboard.com和Electro-Tech-Online.com论坛。
告诉我们你的想法!
你必须登录发表评论。