1 引言
本控制系统采用了有刷直流电机。电机的转速受控于单片机产生PWM波的占空比,占空比越大,电机转速越快;电机测速采用了霍尔编码器,霍尔编码器通过霍尔码盘将电机的转动的圈数转换为脉冲量,通过stm32编码器接口对脉冲量的测量,在计数器中存储得到的脉冲周期,然后通过定时读取计数器的值得到电机的转速。单片机将得到的转速和设定的转速之间的偏差计算出来,使用比例微分积分控制(PID控制器)进行转速调整。使用MPU6050陀螺仪传感器测出角速度和角位移,通过角度的PID控制进行转向和平衡。
2 研发任务
利用Stm32f103实现小车的电机控制,智能调速和智能锁车。
具体内容如下:
(1)将电机驱动模块,单片机最小系统,电源管理模块和各种传感器模块通过一个底 板连接起来,使其构成一个完整的电机控制的电路系统;
(2)编写安卓APP,通过手机的蓝牙功能与小车上的蓝牙模块通信,达到app控制小车的目的;
(3)编写单片机程序,使其能采样传感器数据,显示数据到显示屏中,驱动电机,运行电机控制算法。
3 硬件设计
硬件设计主要使用蓝牙模块,陀螺仪模块,电机驱动模块和单片机最小系统相连接。单片机的I2C接口(PB8,PB9)接入到mpu6050模块,usart接口接入到蓝牙模块(PB10,PB11),PA8和PA11产生PWM控制两路电机,PB12,PB13,PB14,PB15是电机正转反转控制的引脚;spi接口接到oled显示屏上PB3PB4Pb5分别为spi的MISO,CLK和MOSI引脚,PA15是片选引脚。
图1 显示屏电路连接
图2 底板电路连接示意
4 软件设计
软件设计主要分为初始化、控制算法和通讯三个部分,初始化包括各个硬件模块和单片机片上资源的初始化,片上资源主要是引脚的输入输出模式,定时器的时钟信号,定时时间和硬件PWM接口配置和电机编码器接口配置,串口的波特率和工作方式,硬件i2c和硬件spi接口的初始化。
控制算法部分5ms执行一次,主要是硬件采集传感器数据,对传感器数据进行滤波和计算得到需要的电机转速和偏转角,加速度等信息,通过PID控制器,计算出下一个周期需要的PWM波的占空比,通过调整占空比,来让当前的运动状态(速度,偏转角度)等信息符合通过APP预设的值。
通讯部分就是通过APP和手机通讯,APP发出控制命令,单片机通过串口接收中断解析命令后通过置位一些预设的标志位来控制小车的速度和行进方向。
为了简化APP设计和减少学习APP开发的时间,把更多的时间用于电机控制算法的理论和编程中,我们使用了可视化的安卓APP生成工具,MIT APP Inventor2这个工具使用了拖曳代码块和流程图的方式生成APP。可以调用蓝牙客户端发送简单的命令。
PID控制中,比例调节直接根据测量值和预设值之间的关系进行调节,存在稳态误差,微分调节能够根据测量值的变化趋势进行调节,可以使得控制系统更快的进入稳定状态,积分调节能够减少系统进入稳态之后的稳态误差,但是会延迟控制系统进入稳态的时间。在工程运用时比例调节是必须的,积分微分调节根据实际工程的需要,可以有所取舍。工程要求响应速度快的场合比如速度控制中通常只需要比例微分控制,工程要求响应时间比较长的场合,通常使用比例积分控制,例如温度控制和液位控制。在需要积分控制时,对于离散的测量信号进行积分时,一般在积分累加测量信号前使用一级的数字低通滤波器,来防止测量的误差量在积分过程中被放大。
图3 总体软件框架
图4 APP设计框图
5 结束语
本文详细介绍了如何基于Stm32f103cbt6构造一个直流电机控制系统的硬件和软件设计的流程,通过将自动控制理论、电路设计知识与工程经验结合起来,设计了一个可以通过APP蓝牙通讯控制的PID调速智能小车系统,实际工程中的电动车上的调速,锁车和定速巡航系统亦可借鉴一些在小车实验上的经验和教训。