基于STM32F103单片机的太阳能路灯无线控制路灯原理图PCB

系统功能设计

本系统由STM32F103C8T6单片机核心板、太阳能电池板、锂电池充放电保护、升压、WIFI模块、高亮LED灯、光照检测组成。
1、通过太阳能给锂电池充电,具有充电保护。锂电池通过升压升压到5V给整个单片机系统供电;
2、上电默认自动状态,通过光敏电阻检测光照,进而控制灯的亮度,天越黑,灯越亮;分0-4档。
3、可以通过手机APP,通过蓝牙控制灯的亮灭,点击“关闭”将关闭Led;点击“打开”将根据光照情况控制led灯即步骤2的作用。
4、单片机检测太阳能电池板的电压,并将太阳能是否在给电池充电状态发送给手机,手机APP相应状态显示。

太阳能发电路设计
太阳能电池板(Solar panel)是通过吸收太阳光,将太阳辐射能通过光电效应或者光化学效应直接或间接转换成电能的装置,大部分太阳能电池板的主要材料为“硅”,但因制作成本较大,以至于它普遍地使用还有一定的局限。
其电路接口原理图如下图所示。一般在太阳能电池板接口串接一个二极管1N5819,单向导电作用,保护太阳能电池板。
在这里插入图片描述

功能底板:
在这里插入图片描述

STM32F103C8T6单片机核心板:
USB供电接口,复位按键 开关按键
在这里插入图片描述
合理优秀的布局布线:
在这里插入图片描述

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include <stdio.h>
#include "timer.h"
#include "adc.h"
#include "key.h"

char dis0[16];	//1602显示第一行
char dis1[16];

unsigned int adcx;//读取ad转换值
unsigned int ligh ;    //光照

unsigned char pwmled = 0;//led pwm

unsigned char i ;	
unsigned char wifiSendCount =0;//wifi 发送数据 延时

unsigned char WifiCtrFlag = 1;			   //wifi控制标志

float SunVolt=0.0;				  //检测电流

int main(void)
 { 
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
  TIM3_Int_Init(9,7199); 	 
	LED_Init();		  		//初始化与LED连接的硬件接口
//	KEY_Init();  
 	Adc_Init();		  		//ADC初始化	    
	delay_ms(100);

	i=50;
	while(i--) delay_ms(100);//延时
	printf("AT+CIPMUX=1\r\n");		   //允许链接
	
	i=5;
	while(i--) delay_ms(100);//延时
	printf("AT+CIPSERVR=1,8080\r\n");	   //创建端口号8080//**All notes can be deleted and modified**//
	 
	 while(1)
	{

		adcx=Get_Adc_Average(ADC_Channel_1,5);//读取ad转换值 5次求平均			
		ligh =(float)adcx*99/4096;	//转化
				
		adcx=Get_Adc_Average(ADC_Channel_0,5);//读取ad转换值 5次求平均			
		SunVolt  =(float)adcx*3.3*3/4096;	//电阻进行分压所有*3

		if(WifiCtrFlag == 1)
		{
			if(ligh < 40)			   //电压对比确定亮灭程度//调整pwm
			{pwmled = 1;}
			else if(ligh < 50)			
			{pwmled = 2;}
			else if(ligh < 60)	
			{pwmled = 3;}
			else if(ligh < 70)	
			{pwmled = 4;}
			else  
			{pwmled = 5;}		
		}	
		else
		{
			pwmled = 1 ; //关闭led
		}

		wifiSendCount++;//wifi 数据发送延时计数
		if(wifiSendCount >= 3)//定时发送数据到时
		{
			wifiSendCount = 0;//清空
			UART_SendStr(USART1 , "AT+CIPSEND=0,6\r\n",16);		//发数据 at命令
			delay_ms(200);
			if(SunVolt>=3.9)//太阳能在充电状态  采用1n5819充电电流大 电压拉低 达到4.0表示在充电
			{
				sprintf(dis0,"*BYD%c#",((pwmled%10)-1)+0x30);//打印电压及档位			
			}
			else
			{
				sprintf(dis0,"*BND%c#",((pwmled%10)-1)+0x30);//打印电压及档位
			}				
			UART_SendStr(USART1 , dis0 , 6);//发送
			UART_SendStr(USART1 , "\r\n" , 2);//发送
		}
		
		delay_ms(100);//控制在中断中处理		

	}											    
}	
 
void dealFun(void)
{
	static unsigned char countFan =0;
	countFan++;
	if(countFan<pwmled)	   //led1 占空比调节
	{
		led_ligh=0;			  //打开
	}
	else if(countFan<=5)	//关闭时间段
	{
	 	led_ligh=1;			//关闭
		if(countFan == 5)	 countFan=0;  //一个周期结束
	}

}



.原文:http://www.jh-tec.cn/archives/8306

由于STM32单片机太阳能路灯控制器的设计方案有很多种,因此在这里我无法提供具体的原理图。不过,我可以给你提供一些设计方案的参考,帮助你更好地理解该控制器的工作原理。 STM32单片机太阳能路灯控制器主要由以下几部分组成: 1. 太阳能电池板:主要用于收集太阳能并将其转化为电能。 2. 充电管理模块:用于对电池进行充电管理,包括过充保护、过放保护、充电控制等。 3. 单片机控制模块:采用STM32单片机,用于控制路灯的开关、亮度调节等。同时,单片机还可以通过各种传感器采集环境信息,如光强、温度、湿度等,以便更加智能地控制路灯。 4. LED驱动模块:用于驱动LED灯的亮度和颜色。 5. 电池保护模块:用于对电池进行保护,包括过充保护、过放保护、短路保护等。 基于以上模块,我们可以设计出下面的太阳能路灯控制方案: 1. 当太阳能电池板接收到足够的太阳能时,充电管理模块会对电池进行充电。同时,单片机控制模块会检测当前环境光强,并根据预设的亮度值调节LED灯的亮度。 2. 当太阳能电池板接收到的太阳能不足时,单片机控制模块会根据当前电池电量和预设的亮度值来调节LED灯的亮度。 3. 当电池电量过低时,充电管理模块会自动停止充电,以避免对电池造成损坏。同时,单片机控制模块会将LED灯的亮度降至最低,以延长电池使用寿命。 4. 当环境光强达到一定阈值时,单片机控制模块会根据预设的亮度值自动调节LED灯的亮度,以保证路灯在夜间能够正常工作。 以上就是一个简单的STM32单片机太阳能路灯控制器的设计方案,希望能够对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值