微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机PICl6F72控制电瓶车

单片机PICl6F72控制电瓶车

时间:11-18 来源:互联网 点击:
单片机PICl6F72是目前电瓶车控制器主流控制芯片,配合2只74HC27(3输入或非门电路);1只74HC04D(反相器);1只74HC08D(双输入与门)和一片LM358(双运放),组成一款比较典型的无刷电瓶车控制器,具有60°和120°驱动模式自动切换功能,其基本组成框图见图l。实物测绘原理图见图2(图中数据除注明外,均为开锁停车状态数据)。
一、电路简介与自检

开通电门锁,48V电瓶直流电经电门锁线输入到控制器,一路经R3、R13、R4等送入U6的③脚作电瓶欠压检测用,另一路送入U13、U14、U15输出+15V和+5V给IC和末级驱动供电。单片机PICl6F72的⑨、⑩脚外接16MHz晶体,①脚外接R13、C25组成复位电路,电门锁开锁,单片机得电工作后即进入初始化自检状态,它主要检测:

1.由R3、R73、R4、R11、C2l等组成的电池欠压检测电路(典型值U6的③脚输入3.8V)。

2.由R5、R6、U1等组成的末级电流检测和过流保护电路(正常值Ul的⑦脚输出0V,①脚输出约3.6V)。

3.转把复位信号(正常值U6的⑥脚输入约0.8V的低电平)。

4.刹车复位信号(正常值U6的⑦脚输入4.8V高电平)。

5.电机霍尔元件检测到的无刷电机相位信号(正常时至少有一根霍尔线输入为4.1V,其他为0V)。

自检后的状态由LED2显示结果,以下是参照值(具体显示与单片机的程序设计有关)。

闪l停l--自检正常通过

闪2停l--欠压

闪3停l--LM358故障

闪4停1--电机霍尔信号故障

闪5停l--下管故障

闪6停l--上管故障

闪7停1--过流保护

闪8停l--刹车保护

闪9停1--手把地线断开

闪10停1--手把信号和手把电源线短路

闪l停11--上电时手把信号未复位

若自检正常通过,当转动转把时,U6根据转把输出电压的大小,将相应脉冲宽度的载波信号与三路驱动上下管的换相导通信号混合,从而达到控制无刷电机速度的目的,不同的速度对应不同的电机电流,同时行驶速度与电机换相频率成正比。

电路中,末级功率管V1和V2,V3和V4分别为无刷电机U相的上、下路驱动管;V5和V6,V7和V8分别为无刷电机V相的上、下路驱动管;V9和V10,Vll和V12分别为无刷电机W相的上、下路驱动管。U2为下管驱动IC,U4为上管驱动IC;U3、U5为上、下管R55、R56(康铜丝)串接在末级功率管的地线上,因而末级功率管的电流变化会在R55、R56上产生压降,所以由R5、R6和Ul等组成的电流检测电路可以随时检测无刷电机电流的大小,避免过流损坏电机。由R3、R73、R4、R11、C21、U6等组成欠压保护电路,当蓄电池电压下降到设定值时,U6即停止输出,避免电池过度放电。此外U6分别为模拟三相交流电的6组上下功率管输入预先设定的换相信号,这6组上、下功率管必须按严格顺序依次导通和关闭,其次U6处理转把的调速电压并输出PWM(即脉冲宽度调制)信号和U6输出的换相信号在后级电路中混合叠加输出控制电压,去分别控制3路上、下功率管的导通和截止。

二、故障检修

在检修时,首先要排除短路故障,特别是末级功率管。在电门锁一侧,可以断开电门锁插接件测电流,若为正常的约65mA则说明控制器前级无短路。

其次当无短路而电机不转时,要先检查初始化自检条件是否正常(如前面所述)。

检查电机霍尔元件好坏的一种简单方法:打开电门锁,用不带阻尼的指针式(下同)万用表交流10V挡分别测U6的?、?和?脚即电机霍尔的w、V和u相的输入端,用手慢慢转动电机轮,如果看见表上的指针在0~4V左右摆动,则说明电机霍尔元件基本正常。

检查控制器前级是否正常的方法,先要控制器自检通过,观察LED2即自检灯看出正常与否,若LED2闪一次停一次,说明自检通过,否则应检查自检灯指示的相关故障电路,自检正常通过后,月万用表交流10V挡测试U6的○26、○27和○28脚(即下管换相信号),转动转把使电机轮尽量旋转慢一点,若表针在O~4V左右摆动,再测U6的23、24和⑤脚(即上管换相信号),表针应在O~2V左右摆动。然后测U6的13脚(即PWM输出脚),此点电压随转把的转动而变化若为0V~4.8V,说明单片机U6输出基本正常。

电机电流检测和保护电路由电流取样电咀R5、R6和U1等组成,当无刷电机电流增大到使Ul的②脚电压大于③脚约O.23V时,U1的①脚电压跳变至低电平,U6的21脚变为低电平,单片机进入过流保护状态。

PIC单片机控制的电动自行车驱动系统C程序

#include
//电动车双闭环程序,采用双闭环方式控制电机,以得到最好的zh转速性能,并且可以
//限制电机的最大电流。本应用程序用到两个CCP部件,其中CCP1用于PWM输出,以控
//制电机电压;CCP2用于触发AD,定时器TMR2、TMR1,INT中断,RB口电平变化中断,
//看门狗以及6个通用I/O口
#defineAND0xe0//状态采集5,6,7位
#defineCURA0X0a//电流环比例和积分系数之和
#defineCURB0X09//电流环比例系数
#defineTHL0X6400//电流环最大输出
#defineFULLDUTY0X0FF//占空比为1时的高电平时间
#defineSPEA0X1d//转速环比例和积分系数之和
#defineSPEB0X1c//转速环比例系数
#defineGCURHILO0X0330//转速环最大输出
#defineGCURH0X33//最大给定电流
#defineGSPEH0X67//最大转速给定
#defineTSON0X38//手柄开启电压1.1V,TSON*2为刹车后手柄开启电压,即
//2.2V
#defineVOLON0X4c//低电压保护重开电压3.0V即33V
#defineVOLOFF0X49//低电压保护关断电压2.86V即31.5V
volatileunsignedcharDELAYH,DELAYL,oldstate,speed,
speedcount,tsh,count_ts,count_vol,gcur,currenth,
voltage;//寄存器定义
staticbitsp1,spe,ts,volflag,spepid,lowpower,
off,shutdown,curpid;//标志位定义
staticvolatileunsignedcharnew[10]={0xaf,0xbe,0xff,0x7e,0xcf,
0xff,0xd7,0x77,0xff,0xff};//状态寄存器表
//------------PIC16F877初始化子程序------------
voidINIT877()
{
PORTC=0X0FF;//关断所有MOSFET
TRISC=0X02;//设置C口输出
PIE1=0X00;//中断寄存器初始化,关断所有中断
TRISA=0XCF;//设置RA4,RA5输出
TRISB=0XEF;//RB口高三位输入,采集电机三相的霍尔信号
PORTC=new[(PORTB&AND)>>5];//采集第一次霍尔信号,并输出相应的信号,导通
//两个MOS管
T2CON=0X01;//TMR24分频
CCPR1L=0X0FF;//初始时PWM输出全高
CCP1CON=0X0FF;//CCP1设置为PWM方式
CCP2CON=0X0B;//CCP2设置为特殊方式,以触发AD
ADCON0=0X81;//AD时钟为32分频,且AD使能,选择AN0通道采集手
//柄电压
TMR2=0X00;//TMR2寄存器初始化
TMR1H=0X00;//TMR1寄存器初始化
TMR1L=0X00;
T1CON=0X00;//TMR1为1分频
CCPR2H=0X08;
CCPR2L=0X00;//电流采样周期设置为TAD=512μs
PR2=0XC7;//PWM频率设置为5kHz
ADCON1=0X02;//AD结果左移
OPTION=0XFB;//INT上升沿触发
TMR2ON=1;//PWM开始工作
INTCON=0XD8;//中断设置GIE=1,PEIE=1,RBIE=1
ADIE=1;//AD中断使能
speedcount=0x00;//转速计数寄存器
speed=0x7f;//转速保持寄存器
spe=1;//低速标志位
sp1=1;//低速标志位
oldstate=0x0ff;//初始状态设置,区别于其他状态
count_ts=0x08;//电流采样8次,采集1次手柄
count_vol=0x00;//采样256次手柄,采集1次电池电压
ts=1;//可以采集手柄值的标志位
ADGO=1;//AD采样使能
TMR1ON=1;//CCP2部件开始工作
}
//------------延时子程序---------------
#pragma

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top