间的配合可组成一些简单的动作,主要用在小车出发之前在起始区内表演一段动作,和碰撞景点时举起手臂和放下手臂。舵机的控制原理在前面已经叙述,即舵机所需的PWM周期为20ms,舵机所转动的角度0~180度对应PWM高电平时间0.5ms~2.5ms。所以对应舵机的每一个角度,只需在程序中给不同的占空比即可。首先将72MHz的频率进行720分频,得到100kHz的工作频率,计数器每加1一次,时间为10us,然后将计数最大值设置为2000,这样20ms的PWM即可产生,通过改变输出比较值来改变占空比,输出比较值从50~250对应于舵机所需的高电平时间0.5ms~2.5ms。在起始区内的动作表演,在程序中先写好一个个动作的子程序,在表演时,排好顺序调用各子程序即可实现动作的连贯表演。碰撞景点时举起手臂和放下手臂原理在前面已经提及,这里不再说明。
29
基于STM32的智能小车的设计
第6章 系统调试
根据方案设计的要求,调试过程总共分为三大部分:硬件调试、软件调试软硬联调。电路按模块调试,各模块逐个调试后,再进行联调。STM32单片机先在最小系统板上调试,确保电路正常工作后,再与硬件系统联调。
6.1 硬件调试
6.1.1基本调试
基本调试,查看硬件电路的连接是否与逻辑图一致,用万用表检测有无短路或断路现象,器件的规格、极性是否有误。检查完毕,用万用表测量一下电路板正负电源两段之间的电阻,排除电源短路的可能性。 6.1.2模块调试
(1)灰度传感器的调试
将灰度传感器接通电源后,距离绿地毯或白线1~2cm的高度测试,调节灰度传感器上的电位器,将灰度传感器打到绿地毯上时,使其输出电压在3V以上,将灰度传感器打到白线上时,使其输出电压在1V以下,再将灰度传感器的输出接在电压比较器LM339的输入上,调节LM339的参考电压即INPUT-为2V左右,这样电压比较器的输出就只有两种状态,即低电平0.02V,高电平4.98V。
(2)碰撞开关传感器调试
碰撞开关实质上就是个点触式开关,将买来的碰撞开关进行改造,在碰撞开关的一端接地,另一端接一个1K的电阻,再接+5V电源,在1K电阻与碰撞开关连接之间引出条信号线,开关正常状态下使其电压为+5V,碰撞时,开关接通,使其输出电压为0V。
(3)红外避障传感器调试
将红外避障传感器接+5V电源,接1k左右的上拉电阻,测其信号线电压,调节红外传感器背后的小旋钮,使其作用距离为30cm左右,使其在30cm以内,输出电压为+5V,30cm以外,输出电压为0V。
(4)稳压模块调试
将各稳压模块的输入端都接+18.5V的锂铁电池,调节稳压模块上的电位器,使其输出分别为+5V、+6.6V、+12V,分别给传感器、舵机、电机供电。
30
6.2 软件调试
6.2.1 电机的PWM调试
将单片机产生电机PWM的两个端口PA2、PA3引出两条线,接在示波器的输出端,显示出来是一个个脉冲,通过编程改变PWM宽度的数值,在示波器上观察脉冲宽度是否改变,若随编程数值相应变化,则说明电机PWM没有问题。 6.2.2 舵机的PWM调试
将单片机产生舵机PWM的8个端口都引出接线,接在示波器的输出端,显示出来是一个个脉冲,并且要求脉冲周期是20ms,脉冲宽度在0.5ms~2.5ms之间变化,通过编程改变PWM宽度的数值,在示波器上观察脉冲宽度是否改变,若脉冲周期是20ms,脉冲宽度随编程数值在0.5ms~2.5ms之间作相应变化,则说明舵机PWM没有问题。
6.3 软硬联调
6.3.1 直线循迹调试
将直线循迹程序下载到最小系统板里,到场地上在一段白线上调试,根据小车循迹情况不断修正两侧电机PWM的占空比,直到在直线部分能稳稳的循迹为止。对于后退循迹也是同样的调试。 6.3.2 拐弯调试
将拐弯程序下载到最小系统板里,到场地上找一个十字路口或丁字路口,根据小车拐弯角度调整两侧电机PWM的占空比,直到小车拐弯能拐正为止。 6.3.3 减速调试
将减速程序下载到最小系统板里,到场地上找一个十字路口,当小车行驶到路口时,能感觉到明显的减速过程,调节两侧电机的PWM占空比,使其处在一个合适的减速过程。
6.3.4 路口忽略调试
将路口忽略程序下载到最小系统板里,到场地上找一个十字路口,当小车行驶到路口时,不减速,以同样的速度穿过路口,即达到要求。
31
基于STM32的智能小车的设计
6.3.5 碰撞景点调试
将碰撞景点程序下载到最小系统板里,用手挡住前红外,小车停止并举起手臂,然后触碰一下碰撞开关,使其接通,扬声器就会语音播报,之后小车就会后退循迹,再放下手臂,这就说明碰撞景点模块正常。 6.3.6 启动与停止调试
将启动程序下载到最小系统板里,小车在起始区出发之前,停止在起始区,上身做几个简单的动作,动作完毕之后小车出发去旅游。将停止程序下载到最小系统板里,小车游完景点之后回到起始区,小车能稳稳的停在起始区。
6.4 遇到的问题及解决方案
6.4.1 碰撞开关检测不稳定问题
(1)遇到的问题
一开始时,碰撞开关一端接地,另一端直接接在单片机的IO口上,小车碰撞到景点后,有时候能返回,有时候不能返回,一直不稳定。
(2)分析过程
由于碰撞开关接IO口的一端在开关没有闭合的情况下是处于悬空状态,单片机有时候检测的是高电平,有时候误检测为低电平,所以在碰撞开关断开的情况下必须将电平拉高。
(3)解决方案
在碰撞开关的一端接地,另一端接一个1K的电阻,再接+5V电源,在1K电阻与碰撞开关连接之间引出条信号线,开关正常状态下使其电压为+5V,碰撞时,开关接通,使其输出电压为0V。 6.4.2 端口电压不匹配问题
(1)遇到的问题
单片机IO口经常烧坏,测量接入IO口器件的电压值,最高电压为高电平+5V。 (2)分析过程
通过查阅资料发现,STM32单片机一些IO口兼容5V,一些IO口不兼容5V,高电平只能为3.3V,所以5V的电压接在不兼容5V的IO口上就会烧坏端口。
(3)解决方案
由于本设计传感器供电及输出、单片机供电等都是5V,为了方便起见,只使用兼容5V的IO口,这样就避免电压不匹配问题。
32
6.4.3 瞬间电流过大问题
(1)遇到的问题
在端口电压匹配的情况下,产生PWM的端口烧坏。 (2)分析过程
电机瞬间加减速或者突然反转都会产生很大的倒灌电流,从而烧坏PWM端口。在示波器上可以看出,突然反转或瞬间加减速引起了很大的毛刺。
(3)解决方案
从硬件和软件两方面着手,在程序中,瞬间加减速或突然反转过程给以平滑过渡,比如:电机速度从10加速到1000,在程序中不要从10直接变成1000,而是从10加1一直加到1000,这就起到了平滑的作用;在硬件上,在接PWM端口并联一个无极性电容,再接地,当瞬间电流过大,电容将电能转化为化学能储存起来,这也起到了缓冲的作用。
6.4.4 电源不稳定问题
(1)遇到的问题
小车人型上身在电机突然加减速时,胳膊上的舵机就“软弱无力”了。 (2)分析过程
电机突然加减速,会产生瞬间大电流,导致舵机供电不足,所以舵机才会“软弱无力”。
(3)解决方案
小车底盘电机和上身舵机分开供电,然后共地,这就解决了电源不稳定问题。
33