虽然拿到F2812开发板已经有1个多月了,但是只是完成了例程的烧写运行,具体到实践应用中还是没有过的。首先是器材准备,在淘宝上买的现成的BLDC驱动板和24V60W电机。然后只是根据原理自己写了套程序框架。后来又买了杜邦线才开始着手调试。
这次的调试首先是完成6路PWM波的输出。首先没搞清楚开发板上引出的6路PWM波是事件管理器EVB的PWM7~PWM12,老是输出不了波形,后来看了开发板原理图才知道。 然后这六路PWM波是根据通用定时器T4比较输出的,开始一直用的是T3使能还是没测到波形。又根据开发板的原理图抄写了引出的80个管脚的功能,发现引出管脚能输出3.3V的PWM波,而经过PNP-NPN双极放大电路增大到5V的PWM管脚始终输出高电平。就抛弃了这6路PWM直接从系统版管脚上引出。产生了问题是这3.3V的管脚能否驱动MOSFET,结果接上驱动板,可以从电机输出端检测到PWM信号。
无刷直流电机的霍尔位置信号输入的高电平是5V,而DSP的GPIO检测信号是3.3V。但是开发板上用的是CPLD扩展,对扩展的IO口和中断都是以指针寻址的方式调用。16路输入和输出IO口的地址是一样的,只是引出的管脚分开的。而且对5V电压兼容。后来我根据开发板上的LED灯地址与霍尔位置传感器值对应起来,通过观察灯亮灭判断位置。
前面的工作都准备好了,PWM波和位置检测都可以成功运行。装上电机的时候我生怕弄错烧掉,结果是程序运行后电机震了一下就纹丝不动,然后发颤发烫。我寻思是电位节拍时序错了,对着书改了好几遍还是没有效果。后来自己摸清电平规律逆向排序,结果成功运行。再根据互补和逆向规律,自己摸索出反转的时序规律,上电运行后反转成功。
这次调试花了我一天半的时间。虽然前面做了很多理论知识准备,但还是需要自己动手实验才会成功。这个过程中基本掌握了F2812的扩展IO口和PWM波产生功能实现。接下来的工作是:1. 利用通用时间计数器捕获功能计算转速 2. 加上增量式旋转编码器进行精确定位 3. 去掉霍尔位置传感器进行换向 4. 加上MOSI的液晶显示屏显示速度 5. 通过RS232与主机通讯 6. 加上蓝牙或WiFi模块在安卓手机APP上进行实施监控