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

硬件方案

        本设计采用光电跟踪的方法,利用步进电机驱动,由光电传感器根据入射光线的强弱变化产生反馈信号到微机处理器。微机处理器运行程序,通过对跟踪机构进行控制,调整太阳能电池板的角度实现对太阳的跟踪。整体电路主要由STM32单片机、2路光敏电阻、步进电机控制及电源组成;原理图如图:

 

设计功能

        通过2个光敏电阻来检测光照,光敏电阻放在板子的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;}//反转
            }
    
    }                                                
}

资料链接:https://pan.baidu.com/s/1S-yRvGh790FRslOuu4NsOw?pwd=yfjk 
提取码:yfjk

猜你喜欢

转载自blog.csdn.net/m0_60790717/article/details/127858727
今日推荐