基于STM32单片机太阳能电池板追日光跟踪系统设计

一.硬件方案

本设计采用光电跟踪的方法,利用步进电机驱动,由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器。微机处理器运行程序,通过对跟踪机构进行控制,调整太阳能电池板的角度实现对太阳的跟踪。
主要由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

生成海报
点赞 0

单片机实例设计

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

stm32cubemx+HAL+串口接收中断

stm32cubemxHAL串口接收中断 在cubemx配置完串口和global interrupt后需要在keil中添加如下代码。 第一步:在main函数中添加接收中断标志位开启函数 HAL_UART_Receive_IT