APP下载

基于单片机的无线遥控小车设计与制作*

2018-05-07郭兴龙

机电工程技术 2018年3期
关键词:遥控小车通讯

郭兴龙

(广州市市政职业学校,广东广州 510507)

0 引言

在科技技术更新日异月新的情况下,终身学习观念已经深入人心,学习对于人们来说已经必不可少了。但是,人们还是比较倾向于既能够体验乐趣,又能够学到专业知识的学习方法。本系统小车的制作,就是让学习者在制作过程中,不仅体验制作乐趣,又学习了较强的专业知识,集趣味性、专业性于一体,其可行性是可以验证的。学习者完成该项目之后,电路板还可以扩展制作其它科技作品,为后续的可持续学习提供素材。在制作完成过程中,学习者能够详细的了解电子元器件焊接技术、单片机技术、PCB板制作、传感器技术、通信技术、电机控制技术、PWM控制理论以及上位机软件应用等的知识[1],为今后的学习工作的深入发展,打下良好基础。基于这一出发点,本文详细介绍了遥控小车的设计与制作过程。

1 遥控小车系统整体设计

本小车系统,主要由遥控发射板和接收驱动板两部分组成,接收驱动板安装在小车底盘上,底盘采用左右一个轮子和车架尾部一个万向轮的三角支撑结构。轮子由T130的直流电动机,经过1:48变速后带动,系统控制左右电机的转速不一样,存在一个转速差,从而实现小车的不同角度的转向控制。整个系统采用可充电电池供电的模式。

系统以NF-04-MI-2.4G无线模块作为通讯介质,以STC15W408AS为核心控制器,其系统框图如图1所示。发送板单片机利用自带的AD功能,对两向手柄摇杆电位器的电压信号进行采样,按一定周期将AD数据和按键等信息,通过2.4G模块发送出去。接收板的2.4G模块,接收到有效信息之后,接收板单片机通过查询的方式,将信息读取出来。单片机再结合避障传感器信号,利用PWM技术控制左右两个电机正反转运动转速,从而实现小车的各种运动状态控制。PC机端上位机软件,通过RS232串口与接收板、发送板通讯连接,将独立的地址码下载到单片机[2],保存在单片机的EEROM,这样,发送板和接收板地址一样,就可以通讯连接上,并且保证不同的小车,地址码不一样,相互不干扰,能够独立控制。

图1 遥控小车系统原理框图

2 遥控小车硬件设计

小车硬件设计,包括主要元器件选型和电路设计等部分。

2.1 STC15W408AS单片机控制芯片

STC15W408AS单片机是深圳宏晶公司生产一款低成本、低功耗、超高速的、具有ISP功能的8051内核单片机,最高工作频率可以达到33 MHz,芯片采用SOP-16封装,I/O口达到14个管脚,具有1路SPI、3路PWM、8路ADC、3个定时器和1个USART串口,8 kB的flash存储器容量,512字节的SRAM和5 kB的EEPROM等资源,工作电压是2.5~5.5V,内部集成了晶振电路、看门狗电路和复位电路,芯片功能丰富,使用方便,开发灵活,完全能够满足小车控制要求[3]。该芯片具有的ISP在线下载功能,可以通过串口,直接将编译器生成的可执行HEX文件烧录到单片机,可以多次烧录,开发方便。

2.2 无线模块NF-04-MI-2.4G[4]

NF-04-MI-2.4G无线模块是一款基于BK245芯片设计的2.4G无线通信模块,该模块采用SPI接口模式,具有高稳定性,高性价比,抗干扰强,低辐射,性价比高等优点。该模块集成了发送、接收等链路层,有效数据量可达32字节,数据收发全部自动完成,收发自动产生应答信号。发送时,内置CRC校验码自动生成,接收数据时,CRC自动校验,能够检测数据的有效性。该模块还可以设置重复发送的时间和次数。单片机和无线模块,通过SPI接口相连,接口简单,传输速率快,易于开发。其主要特点参数如下:

(1)支持GFSK/FSK等通用调制方式,支持六通道数据收发;

(2)支持2Mbit/s/1Mbit/s/250kbit/s等数据速率;

(3)频点多达126点,实现多点通信和跳频通信需要;

(4)内部集成高PSRR的LDO;

(5)宽电源电压范围:1.9~3.6 V;

(6)功耗低,平均发射电流低至110 mA;

(7)接收灵敏度:-96dBm@250 kbit/s;

(8)最高发射功率:+7dBm。

其通讯数据包格式如表1所示。

表1 数据包格式

其中,引导码是固定格式的,地址码3~5字节,由用户设置,成套的设备地址码必须一样,否则通讯信息无效。通讯包控制位由相应寄存器设置,控制通讯方式。有效数据可由用户根据需要,决定数据量字节数,数据满足需要即可,如果数据量较大,通讯时间相应增加。CRC校验码,在发送模式下,由系统自行计算产生,并且自动发送;在接收模式下,系统根据接收的数据自动核对校验码,如果校验码不对,接收的数据将被舍弃。

2.3 发送板电源设计[5]

为了同时满足单片机和无线模块同时工作,提高芯片工作稳定性,发送板的工作电压统一采用3.3 V。发送板主要由两节五号电池供电,电池电压经过升压芯HT7733S转换之后,电压稳定在3.3 V,满足系统工作要求。HT7733S是一款低噪声,低纹波的同步型DC-DC升压转换芯片,采用SOT-23封装,启动电压低至0.7 V,转换效率可达80%,输出电压误差范围为±2.5%,输出电流可达100 mA。外围电路简单,只需要搭配一个10μH的功率电感即可,如图2所示。

图2 HT7733S电源设计电路

2.4 驱动板电源设计电路

遥控小车动力常用两个130直流电机,其额定工作电压是5 V,工作电压范围是3~9 V,空载电流是130 mA,小车一般使用可充电镍镉电池组,标称电压是7.2 V,为满足单片机和无线模块电源需要,采用AMS1117-3.3电源芯片设计电路。AMS1117-3.3芯片是一款低功耗、低纹波的线性稳压电源集成模块,采用SOT-223封装,输入电压范围为4~15 V,输出电压3.3 V,输出电流可达1 A,电路简单、可靠,能够完全满足电路设计要求。电路设计如图3所示。

图3 驱动板电源设计

2.5 驱动板电机驱动电路设计[6]

小车的运动,主要是由两个130直流有刷电动机驱动,电机驱动采用MX612E芯片,其内部采用H桥电路结构设计,电流内阻低,内部集成了N沟道和P沟道的功率MOSFET管,工作电压范围为2~9.6 V,工作可持续电流达1.4 A,峰值电流可达2.5 A,具有过热保护功能,比较适合驱动线圈、马达等感性负载。其功能图框如图4所示。

图4 MX612E原理结构图

如图4所示,OUTA和OUTB接直流电动机,VCC是逻辑控制电源,VDD是电机电源。INA和INB是控制电机的正反转的逻辑输入,连接到单片机的I/O口管脚。根据INA和INB输入值,决定该芯片的工作状态,其真值表如表2所示。

表2 真值表

MX612E芯片四种工作状态如图5所示。

当INB或者INA为逻辑高电平的时候,另外一边输出PWM信号,直流电动机在导通和刹车模式之间切换,电机转速将受到PWM信号占空比控制,达到稳定平滑调速效果。在刹车模式下,马达储存的能量通过低边的NMOS管快速释放。此外,如果PWM信号工作频率过低,在PWM占空比较低的情况下,电机由刹车模式进入导通模式下,会导致电机出现无法平滑转动的情况。为减小电机噪音,PWM信号频率控制在10 kHz~50 kHz的范围之内。

图5 MX612E的四种工作模式

2.6 避障传感器电路设计[5]

避障传感器,主要采用红外传感器检测,由红外发光二极管和接收二极管组成。红外发射二极管发射波长约为940 nm的红外线,如没有遇到障碍物,红外线将散射出去,遇到障碍物,红外线被障碍物反射回来,光敏二极管接收到红外线后,根据红外线的光辐照度,其内阻发生变化。

红外传感器避障利用此原理,电路设计如图6所示,发射管不断发出红外线,接收管与电阻串联,连接到电压运放的同相端,当接收管接收红外线之后,内部导通,使同相端输入电压,与反相端电压比较,输出信号传输到单片机。调整电位器,可以调节红外传感器的检测距离。

图6 避障红外传感器电路设计

3 遥控小车程序设计[1]

3.1 遥控小车发送程序设计

遥控小车发送板,为提高通讯可靠性,NF-04-MI-2.4G模块采用250 kbit/s的通讯速率,地址码为5字节,CRC校验为2字节,重复发送次数是3次,通讯有效数据是5字节。通过计算,完成一次发送的时间约为0.48 ms,为保证CPU具有足够的时间处理,采用10 ms的周期通讯一次。发送板单片机对两个摇杆电位器进行连续电压采样,为提高数据的有效性,数据经过平均值处理。10 ms的周期,采用定时器控制,定时时间一到,单片机将摇杆的AD数据、按键等信息发送出去。如果发送失败,无线模块自动重发,若超过了设置的重复次数,单片机读取到发送失败的信息后,指示灯以1 Hz的频率闪烁,如果通讯成功,以25 Hz的频率闪烁。程序设计流程图如图7所示。信号的AD采样,采用中断方式,采样实时性要求不高,为降低CPU工作负荷,采样周期是540时钟,采样次数达到15次之后,取平均值作为一次有效数据,其工作流程图如图8所示。

图7 发送程序流程图

3.2 遥控小车接收程序设计

图8 AD采样流程图

接收驱动板采用查询控制方式。主函数不断查询无线模块,检测是否接收到有效信息。如果没有检测到有效信息或者通讯失败,程序将电动机做停机处理。如果接收到有效信息,根据AD采样到的数据,决定小车的运动状态。电机的转速,由AD数据经过运算,利用单片机自带的PWM发送控制寄存器,产生PWM信号,直接控制直流电动机的转速,从而使小车速度平滑控制,系统采用开环的控制方式。驱动板接收程序流程图如图9所示。

系统初始化部分程序:

Timer0Init();

InitADC();

InitPCA();

Read_ADDRESS();

NF_04_MI_Init();

单片机STC15W408AS的PWM输出,主要是由PCA模块产生。PCA含是一个16位定时/计数器,其内部结构如图所示,其时基可以是系统时钟SYSclk、定时器0溢出和外部输入ECI(P1.2),通过设置CMOD和CCON寄存器来选择[3]。

为了提高电机控制的平滑度,PWM控制采8位的控制方式,其频率是:

fPWM=PCA时基频率/256

为提高系统处理速度,单片机采取内部时钟,没有经过分频,其工作时钟频率是18.432 MHz的。PCA时基采用SYSclk/4,由上式计算:

fPWM=18 kHz,该频率满足电机控制的频率范围。

PWM控制初始化程序:

图9 接收程序流程图

CCON=0; //初始化PCA控制寄存器

CMOD=0x0a; //设置PCA时钟源sysclk/4

CL=0; //复位PCA计数寄存器

CH=0;

PCA_PWM0=0x00;//PCA模块工作于8位PWM

PCA_PWM1=0x00;PCA_PWM2=0x00;

4 上位机地址码下载软件[7]

为了防止不同的遥控小车控制信号相互干扰控制,为每个无线模块分配个地址,利用VB6.0开发平台,开发上位机软件。串口通讯编程主要基于MSComm控件实现数据发送和接收,传输协议由用户自定义。地址码由软件生成,其中,班级、学号等信息由下拉控件选择,软件按照一定的规程,生成不一样的地址码。串口通讯帧格式由引导码、数据和校验码组成,引导码固定,数据是班级、学号变换组成,校验码是帧之前所有数据的累加和后,取低两位字节。

MSComm串口控件初始化程序:

Private Sub ComInit()

Dim TempTxt As String

On Error GoTo Comm_Error

MSComm1.CommPort = Val(Right(Combo1.Text,1))

MSComm1.Settings=Val(Combo2.Text)&",M,8,1"

MSComm1.InputMode=comInputModeBinary

MSComm1.InBufferCount=0

MSComm1.RThreshold=7

MSComm1.PortOpen=True

Exit Sub

MSComm串口控件发送数据程序:

MSComm1.InBufferCount=0

MSComm1.OutBufferCount=0

SendData(0)=&H55

SendData(1)=&HAD

SendData(2)=&H65

SendData(3)=Combo3.ListIndex*3+100

SendData(4)=Val(Combo4.Text)+43

SendData(5)=Val(Combo4.Text)+77

SendData(6) = (CLng(SendData(0)) +CLng(SendData(1))

+CLng(SendData(2))+CLng(SendData(3))+CLng(SendData(4))

+CLng(SendData(5)))Mod 256

MSComm1.Output=SendData

5 总结

经过制作试验,本系统遥控小车,能够实现前进、后退和转向等状态控制,遇到障碍物,能够及时停下来,在空旷地方,有效遥控范围达到70多米。其中PWM控制的应用,使小车的运行速度可连续调节,特别是在转弯的过程中,通过调节两个轮子转速差,可以控制转向的大小,提升了用户操控性体验性,克服了传统的小车转弯要么不转、要么全转,转向角度无法控制的弊端。通过上位机软件,每套系统小车设置不一样的地址后,多部小车同时运行,没有出现相互控制或者干扰的现象。小车驱动续航能力,根据电池容量大小不一样而不同。不足之处是,小车出于成本考虑,没有使用传感器检测将电机转速反馈给单片机,采用开环控制,在运行过程中,一旦某一边轮子负载过重,小车就偏离了原先路径。整体上,遥控小车的功能基本上达到预期效果。

参考文献:

[1]李全利.单片机原理及接口技术[M].北京:高等教育出版社,2009.

[2]徐爱钧.keil C51单片机高级语言应用编程技术[M].北京:电子工业出版社,2015.

[3]宏晶科技公司官网.STC15W404AS系列资料.http://www.stcmcu.com/[EB/OL].

[4]深圳市安信可科技有限公司.NF-04-MI无线模块资料.https://www.ai-thinker.com/home[EB/OL].

[5]深圳市嘉立创科技发展有限公司.芯片资料.http://www.sz-jlc.com/home/index.html[EB/OL].

[6]重庆中科芯亿达电子有限公司.MX612E芯片资料.http://mixic.com.cn/[EB/OL].

[7]李俊.Visual Basic 6.0程序设计与应用教程[M].北京:电子工业出版社,2013.

猜你喜欢

遥控小车通讯
《茶叶通讯》简介
《茶叶通讯》简介
通讯报道
“遥控”老师
大车拉小车
自制小车来比赛
他是如何遥控引爆的
刘老师想开小车
两轮自平衡小车的设计与实现
通讯简史