第二节 应用单片机HT46R47构成的直流电机控制器 虽然由专用芯片TL494构成的控制器,线路简洁,可靠性高,但功能单一,无法实现智能化的高要求,因此,必须借助单片机,采用数字技术来实现。图1-7是用单片机HT46R47(台湾和泰产)构建的控制器原理图,它是一个成熟的产品图,是由天津宏塔电子生产的,型号为ZK3615D,我们以此为典例介绍如下:
1、性能要求
(1)高可靠性功能 防水、防腐、防震,采用环氧树脂全灌封工艺; 能确保在极限条件下安全可靠的工作,可抗拒线路之间的任何相互短路。
(2)智能辅助功能: ①定速:调速转把停留在任意角度(任意车速)且12秒内保持不变时,能将车速锁定(也称“巡航”)即为定速,其方式分为自动和选择定速两种。同时要求在刹车、转把二次归零、响应各种保护功能后能够解除定速。 ②速度助力:在骑行时,脚踏轴的转动速度,通过传感器送给控制器,控制器控制电机给出一定的电压,即助力行使;同时要求转把和速度助力控制可自动切换。 ③欠压保护:当电池电压下降到预定的欠压值时,控制器能自动侦测,同时关闭PWM输出。 ④分段限流保护:在骑行状态下,控制器能自动侦测电池电压,当电池电压下降到预定的电压值时,控制器的最大输出电流值,会随之逐渐减少一定的量,直至到欠压点。 ⑤堵转保护:在任何情况下而导致电机停转时,控制器能侦测到,且在2秒后自动停止电机供电,以防止烧坏电路。 ⑥上电自检保护:控制器初始上电时,对转把、刹车开关、助力传感器等进行安全检测,控制飞车等不安全故障的出现;同时仪表板能显示故障点。 ⑦智能显示:控制器通过数字传输给译码电路通过LED管显示出当前电池电量及当前控制器工作状态(电动、助力、定速、发电)、速度、故障点等。
(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)电机速度控制 (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(); ……
|