一、前言
????????本文是通过光敏电阻检测环境亮度,当亮度小于设定值时控制继电器打开,超过设定时关闭继电器。光敏电阻的数值转换是通过XP2046进行转换,使用STM32作为主控,用库函数进行编程实现功能。
二、概述
(一)继电器
????????继电器是一种电控制器件,是当输入量的变化达到规定要求时,在电气输出电咱中使用被控量发生预定的阶跃变化的一种电器。
单片机是一个弱电器件,一般工作于5v甚至更低的电压下。驱动电流在mA级以下,而在一些大功率场合下,如控制电动机,显然是不行的。因此,需要一个环节进行连接,这个环节称为“功率驱动”,而电继器驱动则是一个典型的、简单的功率驱动环节。继电器本身对于单片机来说是一个功率器件,继电器就是单片机实现控制大功率负载的接口。
????????本例程的继电器电路是使用三极管,控制继电器开关,当MCU输出高电平时,打开继电器;当MCU输出低电平时,继电器则闭合。所使用的是电磁式继电器。
(二)光敏电阻
光敏电阻是用硫化镉等半导体材料的特殊电阻器件,其工作原理是基于内光电效应。光照越强,阻值就越低,随着光照强度的升高,电阻值讯速降低。
三、硬件连接
?
四、程序例程
1、XPT2046程序请参考: XPT2046程序例程
2、主函数
int main(void)
{
int relay_vlaue = 0;
Relay_Pin_Init(); // 继电器控制引脚初始化
XPT2046_Pin_Init();
Sys_Delay_Init();
Usart1_Pin_Init(115200);
printf("初始化成功\r\n");
while(1)
{
relay_vlaue = XPT2046_Read_Date(0xA4);
if (relay_vlaue < 200) {
PBout(1) = 0; // 开
}
else {
PBout(1) = 1; // 关
}
printf("光敏电阻的值 = %d\r\n",relay_vlaue);*/
delay_ms(500);
}
}
|