案例-PC机遥控小车.doc
文本预览下载声明
PC机遥控小车设计与制作
任务描述
设计制作1台受PC机遥控的的小车,具体要求如下:
提供如下环境:小车与PC机通过无线模块通信,其中无线模块与PC机通过USB(串口)连接,提供上位机软件,通信协议如下:前进01,后退2,左转3,右转4,停止5;单片机与无线通信模块通过串口连接,波特率为:4800bps,小车平台左、右各1个电机,电流200mA左右;
设计制作控制系统硬件平台;
设计小车控制软件;
小车能接收PC机命令,并能根据命令执行前进、后退、左转、右转、停止等动作。
功能分析
根据项目任务要求,小车需要接收PC机命令,采用的是串口型无线模块,所以需要设计无线模块与单片机连接电路,小车有2个电机,需要电机驱动模块,当然需要单片机最小系统,具体硬件系统框图如下:
图1 系统硬件框图
根据任务要求,软件方面需要设计串口初始化函数、串口接收中断函数,主函数等。
硬件设计
电机驱动模块设计
小车2个直流电机,单片机IO口本身电流无法驱动,需要驱动电路,一种方法采用专用驱动芯片,如L298、L293等,能提供较大的驱动电流,另外也可以采用分立元件驱动,如三极管,本项目的电机电流为200mA左右,所以用三极管完全能驱动,还有小车能前进、后退,所以电路需要提供正向和反向电压,具本电路如下:
图2 2路电机驱动电路
无线通信模块接口电路设计
由于本系统采用的无线通信模块为串口型,所以模块与系统连接只需4根线,分别接到单片机最小系统板上RXD、TXD、VCC、GND。
软件设计
函数清单如下:
1)void initUart(void):串口初始化,设定串口工作方式1允许接收,波特率4800bps,开中断
2)void uart(void) interrupt 4:串口中断服务程序,接收数据存入全局变量Command中
3)void main(void):主函数,初始化串口,根据接收到的命令控制电机进行相应动作
主函数流程图
图3 主程序流程图
原理图
图4 系统原理图
PCB图
图5 驱动模块PCB图
图6 小车控制板PCB图
实物图
图7 小车实物图
源程序
/**************************************************************************
Copyright (C), 2013, MAY
FileName: Serial.c
Author:chenxinxi Version:V1.0 Date:2013-5-14
Description:通过串口无线模块接收PC机发送的命令,控制小车前进、后退、左转、右转、停止等功能
Function List: // 主要函数及其功能
void initUart(void):串口初始化,设定串口工作于方式1允许接收,波特率4800bps,开中断
void uart(void) interrupt 4:串口中断服务程序,接收数据存入全局变量Command中
void main(void):主函数,初始化串口,根据接收到的命令控制电机进行相应动作
**************************************************************************/
#include reg51.h
/**************************************************************
P2.0 P2.1控制右轮电机 P2.4 P2.5控制左轮电机
P2.5 P2.4 0 1 左轮正转/前进
P2.5 P2.4 1 0 左轮反转/后退
P2.1 P2.0 0 1 右轮正转/前进
P2.1 P2.0 1 0 右轮反转/后退
****************************************************************/
#define UP 0x11 //前进
#define DOWN 0x22//后退
#define LEFT 0x21//左转
#define RIGHT 0x12//右转
#define STOP 0xff//停止
unsigned char Command=0;//存放接收的PC机发送过来的命令
/********************************************************************
Function:InitUart
Description:串口初始化,方式1,允许接收;波特率4800,开中断
Input:void
O
显示全部