前言
这个小车是去年电赛的时候准备的,很遗憾我们赛区因为疫情被取消了比赛,我们也都已经大二大三了,因此我们没有机会再参加两年一次的电赛了。但是这些成果总不能放着吃灰吧,就留给下一届的种子选手做参考吧。实现的功能是最简单的,就还只是个玩具,具体还得根据题目去添加功能和修改代码,至少完成了小车最简单的搭建。
搭建
硬件
硬件上小车为四轮二驱小车,前轮为舵机只控制转向,后两个轮为伺服电机控制速度,都使用pwm分别来控制转动舵机角度和电机转动速度。总体上小车有4个轮子,1个舵机,2个伺服电机,1个电机驱动,1个车底座,1块MSP432P401R单片机,一个12v移动电源,一个HC-05蓝牙模块。
车模底座大概这个样子。
软件
软件上我们在ccs平台使用C进行编写。
原理
实现小车的转向有两种方案,一种是前轮控制左右转向,后轮控制前后移动;另一种是左边两个轮子和右边两个轮子差速(可用pwm调速实现),实现前后左右移动。第二种比较适合四轮四驱的简单要求不高的小车。我们是四轮二驱在这里我们采用第一种(下面代码有个缺点就是我没有给后轮增加调速功能,导致车速完全看电量,有需要的可以自己给后轮增加pwm调速)。
在软件调试中我们会发现供给pwm和串口的时钟频率要用不同的时钟分频,不然会产生冲突导致功能不能正常实现(使用其他外设的时候也要注意时钟频率是否产生冲突)。时钟频率的配置可参阅MSP432的系统时钟和简单系统定时和MSP432的相关定时器。
蓝牙使用HC-05模块连接到单片机串口3(P9.6,P9.7)上,然后在手机上随便用一个蓝牙串口app连接蓝牙发送指定信号就完成实现蓝牙遥控小车了。
源码
/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include"delay.h"
//![Simple UART Config]
/* UART Configuration Parameter. These are the configuration parameters to
* make the eUSCI A UART module to operate with a 9600 baud rate. These
* values were calculated using the online calculator that TI provides
* at:
*http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html
*/
// Timer_A PWM 配置参数
Timer_A_PWMConfig pwmConfig =
{
TIMER_A_CLOCKSOURCE_SMCLK,
TIMER_A_CLOCKSOURCE_DIVIDER_48,
5000, //12MHz时钟源,5000大约20ms
TIMER_A_CAPTURECOMPARE_REGISTER_1,
TIMER_A_OUTPUTMODE_RESET_SET,
235 //舵机正对正前方
};
const eUSCI_UART_ConfigV1 uartConfig =
{