智能追光锂电充电系统设计
(7)追光控制
本文引用地址:https://www.eepw.com.cn/article/258302.htm方案一:采用双舵机,搭建舵机云台。此方法可以全方位的追光,但是在实际使用中,舵机存在“抢电”的现象,会给供电电压带来较大的波动,甚至会产生较强的抖动,不利于控制,也不利于电能的收集。
方案二:只采用一个舵机,并结合机械追光。经查阅资料,当太阳能电池板与地平面的角度和当地的维度相同时,光能利用率最大。本方案中利用的机械部件,可人为的调节太阳能电池板与地平面的角度,再通过控制伺服舵机实现追光。
通过比较,我们选用方案二。方案二更节约电能,同时,在太阳能电池板的不同位置放置三个光敏电阻,利用光敏电阻对环境亮暗的敏感性设计寻找光源传感器,即光敏电阻和已知电阻的分压电路,采集光敏电阻端和已知电阻端电压,通过模拟量的电压分析,即可模糊地判断光线的强弱。与另两路寻光传感器电路中得到的电压值相比较,即可判断出光源的位置。利用单舵机机械结构实时把光源位置方向锁在正中间光敏电阻所对的方向。
图17光敏电阻检测
由于光敏电阻对环境的敏感性,导致环境中的散光造成的同一规格的光敏电阻在相同照度下电阻值不同。为此,在每个光敏电阻前加黑色筒状遮体,使光敏电阻的基准电阻值基本相同,为检测光源时三者电阻值的比较有统一标准,提高光源检测的精确度。
采集的电压值为模拟量,提高了光源检测的空间精度,模拟量亦可以作比较,赋相应的比例系数、微分系数代入舵机控制软件模块。光敏电阻检测光源电路图如图17所示。
在实际使用中发现,当出现外界干扰信号,供电电源的电压不足等情况时,会造成舵机抖动,所以我们采用独立的单片机和独立的电源完成追
光,避免了信号干扰和电压不足产生的抖动,同时,也避免了因舵机“抢电”造成的其他模块电压不稳定的问题。
独立电源来自锂电池,通过PT1301 IC芯片升压后供舵机使用,并且添加负载指示灯(蓝色)和锂电池电压过低报警指示灯(黄色)。详细资料请参见附录二。
其中,主要程序如下:
#define steer_center 60
#define right_limit 100
#define left_limit 20
#define KP 10 //比例系数
sbit pwm=P3^7;
uchar rg1,rg2,rg3;
uchar last_pwm_value_init; //上一次舵机输出值初始化
uchar control_pwm; //舵机PWM输出值
uchar last_control_pwm; //上一次舵机PWM输出值
void get_analog() //采集三路光敏电阻采光系统中的电压值
{
rg1=GetADCResult(0);
rg2=GetADCResult(1);
rg3=GetADCResult(2);
}
uchar analog_analyse()
{
get_analog();
if(last_pwm_value_init==0)
{
last_control_pwm=steer_center;
last_pwm_value_init=1; //初始化完成
}
if(rg2-rg1>0rg3>=rg2)
control_pwm=last_control_pwm-(rg2-rg1)*KP/80;
else if(rg2-rg3>0rg1>=rg2)
control_pwm=last_control_pwm+(rg2-rg3)*KP/80;
else if(rg1-rg2>0rg3-rg2>0)
{
if(rg280)
{
control_pwm=last_control_pwm;
}
//else //control_pwm=last_control_pwm+(rg1-rg2)*8/80-(rg3-rg2)*8/80; //也进行角度调节
}
else
control_pwm=steer_center;
if(control_pwm=left_limit)
control_pwm=left_limit;
else if(control_pwm>=right_limit)
control_pwm=right_limit;
last_control_pwm=control_pwm; //保存上一次舵机输出值
return control_pwm;}
void main()
{
uchar PWM;
InitADC(); //AD初始化
Init_PCA(); //PCA扩展定时器初始化
while(1)
{
PWM=analog_analyse();
jd=PWM;
Delay(12);
}
}
void PCA_ISR()interrupt 7
{
CCF1=0;
CCAP1L=value;
CCAP1H=value>>8;
value+=25;
if(cnt = jd) //判断0.025ms次数是否小于角度标识jd=20-100
pwm=1; //小于,PWM输出高电平
else
pwm=0; //大于则输出低电平
if (cnt>=800)
cnt=0;
else
cnt++; //0.025ms次数加1 ,次数始终保持为800 即保持周期为20ms
}
(8)主控单元
方案一:采用AVR 单片机 ,AVR单片机的I/O口是真正的I/O口,能正确反映I/O口输入/输出的真实情况。工业级产品,具有大电流(灌电流)10~40 mA,可直接驱动可控硅SCR或继电器,节省了外围驱动器件。
AVR单片机内带模拟比较器,I/O口可用作A/D转换,可组成廉价的A/D转换器。ATmega48/8/16等器件具有8路10位A/D。
部分AVR单片机可组成零外设元件单片机系统,使该类单片机无外加元器件即可工作,简单方便,成本又低。
图18 AVR MCU管脚分布
AVR单片机可重设启动复位,以提高单片机工作的可靠性。有看门狗定时器实行安全保护,可防止程序走乱(飞),提高了产品的抗干扰能力。AVR MCU管脚分布如图18所示。
方案二:采用新一代增强型8051单片机STC12C5A60S2,此单片机具有两路PWM/PCA功能;8路10位A/D采集,转换速度25万次/秒;双串口;内部集成MAX810专用复位电路;具有60K的用户程序空间;内部集成掉电检测电路;可扩展为4个16位定时器;7路外部中断;工作频率范围为0-35MHZ,相当于普通8051的0-420MHZ;指令代码完全兼容传统的8051单片机。
综上两种方案,因所需的A/D检测通道较多,我们选用方案二中的STC12C5A60S2单片机作为主控芯片。
风力发电机相关文章:风力发电机原理
评论