程序主流程图如图4.1所示,主程序上电复位后完成系统初始化:PWM、ADC端口、定时器等单元的初值设置;中断设置;变量、标志寄存器的初始化。为了防止在初始化的过程中,中断的意外到来,应在主程序的开始处先关闭全局中断。初始化完成后,进入自检程序,若各电器信号正常,则2秒后退出自检模式。重新对相关寄存器,定时器赋初值,打开INT外部中断,即允许模式转换按钮中断。判断电机启动是否成功,如果成功进入正常工作模式函数,若有非法状态,停电机,程序跳入自检模式进行自检。 电机正常工作模式流程如图4.2所示。系统进入到正常工作模式的主循环时,首先判断系统处于何种工作模式,然后检查系统是否处于非法态,如果出现欠压、过流、堵转等错误,则停机,程序跳入到自检状态;否则,判断是否有刹车信号,如没有,进入判断模式及模式功能处理函数:如果有,则停机,等待刹车结束信号。刹车结束后,如果工作模式为定速模式,则退出定速模式,进入电动模式.在电 动 模 式下,单片机采集转把电压信息,控制输出的PWM信号的占空比;定速模式下,转把信号无效,程序根据模式转换前输出的PWM占空比恒定输出;助力模式下,根据定时器TO采集助力传感器的高低电平时间,控制PWM信号的占空比。在这个过程中,始终允许KMOD按键中断,因此可以通过按下KMOD键切换电动、定速和助力三种模式。 4.3中断 4.3.1单片机中断资源 本设计中应用到的PIC单片机的中断源有:外部触发中断INT,定时器TMR0溢出中断,定时器TMR1溢出中断,定时器TAM 2溢出中断,A/D转换中断,CCP中断。其中外部触发中断INT, TMR0溢出中断为第一级中断,TMR1溢出中断,TMR2溢出中断,A/D转换中断,CCP中断为第二级中断。所有中断源都受全局中断屏蔽位(也可以称为总屏蔽位)GIE控制;第一级中断源不仅受全局中断屏蔽位的控制,.还受各自中断屏蔽位的控制;第二级中断源不仅受全局中断屏蔽位和各自中断屏蔽位的控制,还要额外受到一个外设中断屏蔽位PEIE的控制。 PIC单片机只有一个中断向量,没有中断优先级别之分,也没有类似51系列、AVR系列单片机的PUSH和POP指令.当总中断允许位GIE有效时,任何一个中断标志位有效都会将PC指针指向中断向量0004H处.因此中断处理一般分为以下几步: (1) 保存临时寄存器W、状态寄存器STATUS、指针寄存器PCLATH的值; (2) 逐个判断可能产生中断的中断标志位和中断允许位,只有二者同时有效时才执 行相应的中断服务程序; (3) 中断返回时恢复这三个寄存器的值。 4.3.2定时器资源分配 定时器 / 计数器的作用:检测外部电路送来的一系列方波信号的脉宽、周期或者频率:对外部事件产生的触发信号进行准确地计数计时。PIC16F72配置了3个定时器/计数器模块:TMR0. TMRI. TMR2。 (1) TMR0:8 位宽,有一个可选的预分频器,用于通用目的。 (2) TMR1:16位宽,有一个可编程的预分频器和一个可选的低频时基振荡器.适合与CCP 捕捉/比较/脉宽调制)模块配合使用来实现输入捕捉或输出比较功能。 (3) TMR2 :8位宽,有一个可编程的预分频器和一个可编程的后分频器,还附带一个周期寄存器和比较器,适合与CCP模块配合使用来实现PWM脉冲宽度调制信号的产生。这时,应通过将中断使能位TMR2IE清0,把TMR2的中断功能屏蔽掉,同时也把后分频器的作用屏蔽掉;通过向周期寄存器PR2中写入不同的值,以及给预分频器设定不同的分频比,来灵活调整TMR2输出端的信号周期. 根据三个定时器的特点,在程序中将资源分配如下: (1) TMR0:计算助力传感器送出的高低电平持续时间;用做欠压保护5秒钟的定时器;计算电机换相时间。 (2) TMR1 :做为跳出自检模式2秒钟时间的定时器;通过改变定时时间,控制PWM占空比输出;用于模式转换按键的时间判断;用于堵转保护的时间判断。 (3) TMR2:控制自检模式下LED-SPEED闪烁的频率;用做周期可调的时基发生器,为PWM提供周期可调的时基信号。 4.3.3 MOD键(INT中断)处理模块 模式转换由外部中断INT完成,电机正常运转时始终允许MOD键中断。自检完成后,若工作条件正常,启动电机,进入电动模式,此时按下MOD键,按键标志位KMOD-FLAG置1,在T1中断服务子程序中判断,若按下MOD键小于2秒,则进入助力模式:若按下MOD键2-3秒进入定速模式。在助力或定速模式下按下MOD键,返回电动模式。 4.4 A D转换 本系统涉及到AID转换的参量有电池电压值、转把给定值、过流电阻的采样电压值。每次A/D转换结束后,单片机都将把采样后经过转换的数据放入相应的存储单元,供其他子程序调用,AD转换子程序如图4.3所示. PIC16 F7 2单片机内部的AD模块是8位的,具有5个模拟通道。通过定义AD控制寄存器1的A/D转换引脚功能选择位可以分配模拟和数字通道. AD模块的操作过程要求占用较多的时间,其占用的时间主要包含两个部分;采样/保持电容的充电时间和A/D转换电路的转换时间。每一位数据的转换时间被定义为。为了保证A/D转换电路正确地进行转换,所选A/D转换时钟源必须满足最小时间要求,即TAD不得小于1.6us 。 对于模拟输入电压:当模拟输入电压高于单片机电源正电压或者低于单片机电源负电压Vss有0.2V以上时,将会使得A/D转换精度有所下降。为了消除输入模拟量上的噪声所带来的偏差,需要在A/D转换器的模拟输入通道中加入阻容RC滤波电路。
在A/D转换的过程中,可能出现随机千扰、误检或者传感器不稳定而引起的失真,所以需要采取一定的算法以得到较为精确和稳定的转换结果。采用 的 算 法如下:每轮进行8
首页 上一页 7 8 9 10 11 12 13 下一页 尾页 10/15/15