第二节 应用单片机ht46r47构成的直流电机控制器
虽然由专用芯片tl494构成的控制器,线路简洁,可靠性高,但功能单一,无法实现智能化的高要求,因此,必须借助单片机,采用数字技术来实现。图1-7是用单片机ht46r47(台湾和泰产)构建的控制器原理图,它是一个成熟的产品图,是由天津宏塔电子生产的,型号为zk3615d,我们以此为典例介绍如下:
1、性能要求
(1)高可靠性功能
防水、防腐、防震,采用环氧树脂全灌封工艺;
能确保在极限条件下安全可靠的工作,可抗拒线路之间的任何相互短路。
(2)智能辅助功能:
①定速:调速转把停留在任意角度(任意车速)且12秒内保持不变时,能将车速锁定(也称“巡航”)即为定速,其方式分为自动和选择定速两种。同时要求在刹车、转把二次归零、响应各种保护功能后能够解除定速。
②速度(tempo)助力:在骑行时,脚踏轴的转动速度(tempo),通过传感器送给控制器,控制器控制电机给出一定的电压,即助力行使;同时要求转把和速度(tempo)助力控制可自动切换。
③欠压保护:当电池电压下降到预定的欠压值时,控制器能自动侦测,同时关闭pwm输出。
④分段限流保护:在骑行状态下,控制器能自动侦测电池电压,当电池电压下降到预定的电压值时,控制器的**大输出电流值,会随之逐渐减少一定的量,直至到欠压点。
⑤堵转保护:在任何情况下而导致电机停转时,控制器能侦测到,且在2秒后自动停止电机供电,以防止烧坏电路。
⑥上电自检保护:控制器初始上电时,对转把、刹车开关、助力传感器等进行安全检测,控制飞车等不安全故障的出现;同时仪表板能显示故障点。
⑦智能显示:控制器通过数字传输给译码电路通过led管显示出当前电池电量及当前控制器工作状态(电动、助力、定速、发电)、速度(tempo)、故障点等。
(3)主要参数指标(以36v为例)
①调速占空比:转把电压为5v时,输出1.3~3.8v,0~100%连续可调
②限流保护值:不大于额定工作电流的2.5倍(15a)
③输出短路保护响应时间:≤12μs
④欠压保护值:41±0.5v(同时要求有5v的滞回宽度)
⑤定速:转把停顿15s后自动定速或选择定速
⑥工作环境温度:-20~45℃
⑦堵转保护:堵转2秒后进入保护
2、线路原理说明
(1)线路原理如图1-7:
(2)单片机ht46r47的外部接口及内部逻辑功能简介
①单片机ht46r47的外部接口如图1-8:
②单片机ht46r47的内部结构逻辑如图1-9:
③单片机ht46r47的基本功能
a、hald和唤醒功能可降低功耗
b、在vdd=5v,系统频率为8mhz时,指令周期为0.5μs
c、欠压监控保护、刹车关闭电路
d、终端功率斩波电路
e、一个8位的pwm(脉宽可调)输出通道,与输入/输出口共用引脚
f、位践作指令
g、查表指令,表格内容字长14位
h、63条指令
i、指令执行时间为1或2个指令周期
j、低电压复位功能
(3)单片机ht46r47各脚的定义,如图1-10:
(4)线路设计说明
ht46r47有2k×14的程序空间,比业内很多品牌的mcu多1k程序,可有更多的程序空间实现辅助功能。用a/d转换完成:转把采样、电流采样、电池电压测量、pwm输出控制电机转速、巡航定速(手动、自动)、助力功能、制动断电、故障自检、防飞车、显示故障点等诸多功能。利用内部振荡器,只要在osci上接电阻r11、c10即可产生8mhz时钟。
①欠压保护:由r3、r4、c5构成分压电路,电源经r3、r4所分得的电压输入到mcua/d口适时监控电源电压,一旦低于所设定的电压值mcu便产生中断,进入欠压保护状态。
②助力:助力脉冲信号给mcu5脚。
③转把、限速:转把电压1~4v信号,输入给mcu6脚a/d口,外部限速经一下拉电阻,将转把电压下拉一定的幅值(r5、r6分压)。
④显示电路:由mcu的2、3、4脚输出指令数据,与外设译码电路串口联结,构成显示电路,实时显示电动自行车的运行状态。
⑤刹车:mcu的18脚接刹车信号,当18脚电压为低电平时,即刹车接地,mcu产生中断,pwm输出停止。
⑥模式选择:mcu的1脚接模式选择信号,当1脚电压为低电平时,即模式选择。
⑦电流闭环控制回路
由外设ic6a、r28、r29构成的同相放大器、检测信号电阻r26、及r42、c17构成的rc滤波电路、和mcu(内部9位a/d)的8脚输入口构成电流闭环控制回路。工作过程是:从r26上获取压降,既电流检测信号,rc滤波后输入到放大电路的输入端,再经放大后为mcu(8脚)a/d提供电流检测信号,形成电流回路的闭环控制。
⑧pwm终端功率斩波电路
主要由mos功率开关管t5、快恢复二极管d3、电机m、施密特放大器(t1、t2、t3、d2、)等构成,工作过程是:mcu的pwm信号为高电平时,经三级开关放大为mos管栅极电压,使mos管导通;pwm信号为低电平时,t1截止、t2导通,mos管栅极电压为低,使mos管关断。快恢复二极管d3的作用是:将电机关断时所产生的反电势续流。
⑨输出短路中断保护电路
由外设ic6b及r42、r43基准分压电路构成比较器与mcu的内部中断口17脚构成,检测信号从功率斩波电路中r26上取得,短路电流超过预设值后,比较器的输出由原来的低电平转为高电平到17脚,使mcu产生中断,实现输出短路保护。
⑩稳压电路
由降压电阻r1、集成稳压块ic3构成。
电源电压经r1降压后,稳压管z1将电压钳位在15v,再经稳压块78l05稳压在5v。
3、软件设计
软件设计主要包括以下几个功能模块
(1)上电自检
(2)面板显示通讯程序
(3)助力信号测量
(4)转把控制
(5)电机速度(tempo)控制
(6)电池电压测量
(7)定速刹车等控制
4.软件运行流程,如图1-11:
5.软件部分源代码(c语言)
注:单片机ht46r47资源定义部分,可结合ht46r47资料阅读。
voidinitial(){//mcu初始化
#asm
mova,40h
mov[01h],a
clrram:
clr[00h]
inc[01h]
mova,0ffh
suba,[01h]
snz[0ah].2
jmpclrram
#endasm
_pwm=0x00;
_pdc=0x00;//0000,0000
_pd=0x00;
_pac=0x78;//0111,1000
_pbc=0x0f;//0000,1111
_pa=0x00;
//_pb=0x00;
_intc=0x06;
_tmr=0x00;//初始化一下定时器0,和定时器1
_tmrc=0x83;//0x83;//1000,0011;8分频1m4us*256=2ms
}
voidisr_8()//定时哭中断
{
tmr*ptmr;//;为记时器处理*
int8ui;
ptmr=&tmrtbl[0];
for(i=0;i<tmr_max_tmr;i++){
if(ptmr->tmren==true){
if(ptmr->tmrctr>0){
ptmr->tmrctr--;
if(ptmr->tmrctr==0){
ptmr->tmren=false;ptmr->tmrend=true;
}
}
}
ptmr++;
}
}
voidledscan()//74ls164显示驱动
{
int8uj;
if((dispsegen[0]=1)|(dispsegen[1]=1)){
for(dispsegtblix=0;dispsegtblix<2;dispsegtblix++){
dispscan=dispsegtbl[dispsegtblix];
for(j=0;j<8;j++){
scl_164=0;
if(dispscan&0x80){
sda_164=0;
}else{
sda_164=1;
}
scl_164=1;
dispscan<<=1;
}
}
dispsegen[0]=0;
dispsegen[1]=0;
}
}
voidhandcheck()//转把计算
if(handvol>hand_vol_min){
if((handvol-hand_vol_min)>127){
pwmvalhand=0xff;
}else{
pwmvalhand=(handvol-hand_vol_min)<<1;//pwm输出
}
if(pwmvalhand>=pwm_out_max){
pwmvalhand=pwm_out_max;
}
}else{
pwmvalhand=0;
}
}
voidisr_4(){//短路保护
pwm_out_io=0;
runerr=true;
}
voidmain()
{
_pwm=0x00;
if(_to==0){
initial();
}
_clrwdt();
tmrinit();//记时器初始化
tmrsett(0,0x03);//24ms测一次手柄
tmrstart(0);
tmrsett(1,0x50);//自检时测手柄间隔
tmrstart(1);
tmrsett(2,0x02);//4ms测助力
tmrstart(2);
while(1){
_clrwdt();
keymenu();
hlppower();//助力
handcheck();//手柄采样
batcheck();//电池测量
pwmvalcu();
……