任务介绍
Make Blocks第三期选择的任务是设计一款光控开关模块,光敏电阻控制数字输出(光线阈值触发),本次是数字输出也就是说需要通过比较器输出高低电平,输入信号是一个光敏电阻,随着光照强度进行阻值变化,进而可以改变电压水平,可调阈值就是通过一个可变电阻改变比较电压,本次是在上一版的基础上进行升级,上一版的扩展板已经有了一个实时时钟,一个IMU模块,这次把光控开关内容加进去。
设计思路
目前的要求是设计一款光控开关模块,由于想要和前面的模块可以关联上,这次我们通过在CubeMX中找到对应的闲置接口引脚,然后在这个基础上进行的,使用的依然是和之前兼容的结构,选择一款比较器作为主要的器件。
为了和之前的模块能够关联这次是在上一次的基础上进行的增加,增加的就是目前的光控开关驱动电路,接口依然是满足LaunchPad接口需求的,使用两个2*10的排母进行外接。
设计框图如下:
功能介绍
本次设计的是一个光控开关模块,通过IO接口进行数字信号输出。
硬件介绍
本次设计的扩展模块主要增加的是基于LM393的光控开关模块,LM393是一款双电压比较器集成电路,由两个独立的高精度比较器组成,适用于工业、汽车电子及电源监控等领域。其核心优势包括宽电压范围(单电源2V~36V或双电源±1V~±18V)和低功耗(静态电流0.8mA典型值),且电源电流与电压无关。输入失调电压低至2mV(典型值),输入偏置电流仅25nA,确保高精度信号比较。输出端兼容TTL、CMOS和MOS逻辑电平,开漏输出设计支持线与连接,需外接上拉电阻。该芯片采用SOP8/DIP8/MSOP8封装,工作温度范围为-40°C~85°C,适用于严苛环境。其输入共模电压范围可扩展至地电平,单电源供电时仍能稳定工作。典型应用包括限幅器、模/数转换器、脉冲发生器及电压阈值检测,例如在电池管理系统中实现过压/欠压保护。通过双比较器串联可构建窗口比较器,并联则能实现模拟乘法器功能。内部结构采用运算放大器与反馈网络结合,响应时间快(10ns),支持高速信号处理。
原理图和PCB模块介绍

原理图

PCB
本次在上一版的基础上增加了光控开关模块,重点就是让各部分能够都集中在一块,本次设计的光控开关模块主要是使用的是IO口。

实物图
软件调试
软件方面的调试工作主要是为了验证模块功能是否正常,这里我们选用第一期设计的开发板进行验证,使用STM32CubeMX进行初始化配置,主要用到的是外部中断的采集和LED的状态展示,代码如下:
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == LDR_Pin)
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
}
}
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == LDR_Pin)
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
}
}
运行效果
心得体会
本次通过最便捷的方式进行了一下光控开关模块的功能验证,主要也是验证硬件是否可行,模块的功能相对比较单一,接口相对来说比较简单。感谢论坛和得捷对本次活动的大力支持,不断的让工程师接触更多的新知识。