一.硬件方案
本设计采用光电跟踪的方法,利用步进电机驱动,由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器。微机处理器运行程序,通过对跟踪机构进行控制,调整太阳能电池板的角度实现对太阳的跟踪。
主要由STM32单片机、2路光敏电阻、步进电机控制及电源组成;如图:
二.设计功能
(1)通过2个光敏电阻来检测光照,光敏电阻放在板子的2端,如果两个光敏电阻的阻值相同,则说明阳光正对,如果两个光敏阻值不同 ,则说明阳光没有正对,则,步进电机调整板子正对。
(2)预留一路光敏,属于预留未使用。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)PCB图如下:
四.软件设计
(1)程序流程图
(2)主程序源码
int main(void)
{
u16 adcx;
char midval;
delay_init(); //延时函数初始化
uart_init(115200); //串口初始化为115200
TIM3_Int_Init(29,7199);//3ms
LED_Init(); //初始化与LED连接的硬件接口
Adc_Init(); //ADC初始化
while(1)//电机旋转在定时器中处理
{
adcx=Get_Adc_Average(ADC_Channel_2,5);// PA2 AD转换
// voltA=(float)adcx*(3.3/4096)*2;
adNum1=(char)((long)adcx*999/4096);
delay_ms(5);
adcx=Get_Adc_Average(ADC_Channel_1,5); // PA1
adNum2=(char)((long)adcx*999/4096);
if(adNum1>adNum2)//右侧光强
{
midval = adNum1-adNum2 ;
if(midval<10) //左右光差不多时 停止转动
{
MOTOR_DIR =0;
}
else
{MOTOR_DIR = 2;}//正转
}
else //左侧光强
{
midval = adNum2-adNum1 ;
if(midval<10) //左右光差不多时 停止转动
{
MOTOR_DIR =0;
}
else
{MOTOR_DIR = 1;}//反转
}
}
}
如需资料请关注公众号“单片机实例设计”,首页回复“日光跟踪”获取资料;
版权声明:本文为CSDN博主「单片机实例设计」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/eletronicfish/article/details/120595957
暂无评论