轮式移动机器人是机器人研究领域的一项重要内容.它集机械、电子、检测技术与智能控制于一体。在各种移动机构中,轮式移动机构最为常见。轮式移动机构之所以得到广泛的应用。主要是因为容易控制其移动速度和移动方向。因此.有必要研制一套完整的轮式机器人系统。并进行相应的运动规划和控制算法研究。笔者设计和开发了基于51型单片机的自动巡线轮式机器人系统。
2 控制系统总体设计
机器人控制系统由主控制电路模块、存储器模块、光电检测模块、电机及舵机驱动模块等部分组成,控制系统的框图如图1所示。
控制系统的框图
3 主控制模块设计
3.1 CPLD设计
在机器人控制系统中.需要控制多个电动机和行程开关.还要进行光电检测.如果所有的任务都由AT89S52型单片机来完成.CPU的负担就会过重。影响系统的处理速度。因此扩展1个CPLD.型号为 EPM7128。它属于.MAX7000系列器件。包括2个通用1/0口.2个专用I/O口,专用I/O口可作为每个宏单元和输入输出引脚的高速控制信号 (时钟、清除和输出使能等),电动机的。PWM信号也由其产生。
EPM7128的引脚排列如图2所示。MlP—M4P引脚的输出为PWM脉宽调制信号,M1FB—M4FB引脚为电机的方向控制信号,P00一P07接单片机的PO口,100一1015为扩展的2个通用I/O口,SIL—S17引脚为行程开关输入信号,LI11一LI17引脚为光电探头输入信号。CPLD的编程用VHDL语言,产生1路PWM信号的部分程序源代码如下:
EPM7128的引脚排列
单片机采用24MHz的晶体振荡器,ALE信号的频率fALE=f16=6MHz,最终输出PWM信号的引脚MlP的频率为:
公式
调节这个信号的占空比可以使直流电动机获得O-255级的转速。
3.2 机器人运行参数存储器的扩展
机器人运行路径和动作可以根据比赛情况的不同而发生变化,这样,每改变1次运行参数就必须对单片机的Flash进行1次擦写。为了解决这一问题.扩展了程序参数存储器,用来存放机器人的运行路径和动作参数.扩展电路如图3所示。
扩展电路
其中IC1为24LC08B,是I2E总线的串行E2PROM存储器,最多能够存储lK字节的数据。IC2为MAX3232型电平转换器,其内部有1个电源电压变换器,可以将计算机的电平转换为标准TTL电平,实现计算机与单片机之间通过串行口传输数据,使单片机完成对24/LC08B的数据存储操作。单片机运行时,直接从24LC08中读取机器人的运行参数,控制机器人运行。
4 光电检测模块设计
4.1 光电检测过程
设计光电检测模块是为了让机器人能够检测地面上的白色引导线。光电检测电路主要包括发射部分和接收部分,其原理如图4所示。
光电检测过程
发射部分的波形调制采用了频率调制方法。由于发光二极管的响应速度快,其工作频率可达几MHz或十几MHz,而检测系统的调制频率在几十至几百kHz的范围内,能够满足要求。光源驱动主要负责把调制波形放大到足够的功率去驱动光源发光。光源采用红外发光二极管,工作频率较高,适合波形为方波的调制光的发射。
接收部分采用光敏二极管接收调制光线,将光信号转变为电信号。这种电信号通常较微弱,需进行滤波和放大后才能进行处理。调制信号的放大采用交流放大的形式,可使调制光信号与背景光信号分离,为信号处理提供方便。调制信号处理部分对放大后的信号进行识别,判断被检测对象的特性。因此,此模块的本质是将“交流”的、有用的调制光信号从“直流”的、无用的背景光信号中分离出来,从而达到抗干扰的目的。
4.2 光电探头
光电探头安装在机器人底盘前部,共设置了5个检测点。从理论上讲,检测点越多、越密,识别的准确性与可靠性就越高,但是硬件的开销与软件的复杂程度也相应的增加。采用该巡线系统保证了检测的精确度,节约了硬件的开销。发光二极管发出的调制光经地面反射到光敏二极管。光敏二极管产生的光电流随反射光的强弱而线性变化。把这种变化检测出来,就可以判断某一个检测点是否在白色引导线的上方,从而判断机器人和白色引导线的相对位置。
5 电机驱动模块
机器人的驱动件主要是电机和舵机,都可以采用PWM进行调速与控制。根据脉冲编码器的反馈信号,对机器人的运动状态进行实时控制。直流伺服电机的控制原理如图5所示。调节:PWM的信号就能够快速调节舵机的转角,从而实现机器人的方向控制。
直流伺服电机的控制原理
6 结束语
基于5l型单片机的自动巡线轮式机器人控制系统运行平稳可靠,抗干扰能力强,不仅满足了机器人大赛的设计要求,同时也为智能机器人搭建了良好的控制平台。
关键字:51单片机 自动巡线轮式机器人
引用地址:
基于51单片机自动巡线轮式机器人控制系统设计
推荐阅读最新更新时间:2024-03-16 12:43
51单片机接收数组知识
简介:最近在做一个项目,其中有一模块是需要通过串口使单片机与电脑进行通信,在单片机中我是用C语言进行编程,在应用程序中是用.net编程。其中有一个要求是电脑一次发送十个数据,单片机里定义一个数组,接收这10个数据。 可是在进行检验的过程中却发现接收的数据会移位,比如我从电脑中发送的数据是a,b,c,d,e,f,i,j,k,l.那么理论上我在单片机中定义的数组array 应该也是array ={a,b,c,d,e,f,i,j,k,l.可实际上却不是这样子的,正真接收的数据是array ={l,a,b,c,d,e,f,i,j,k,};也就是移了一位,第十位跑到了第一位,第一位到了第二位。之后的就不会再移位,出现这样的原因是因为单片
[单片机]
51单片机编写60秒倒计时程序
#include reg52.h #define guan P0 #define wei P2 #define uchar unsigned char #define uint unsigned int uint m=0; uchar a1,a0,k=0,j,k,s=60; sbit beep=P2^3; unsigned char code weiyu ={0x1f,0x2f,0x4f,0x8f}; //代码与P2对应做位处理,显示相应的位 unsigned char code table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x
[单片机]
51单片机程序开发入门知识
51单片机在我的理解上来说,就是遵循51指令集工作的芯片。他就像一台超微型的电脑,里面有内存、硬盘、CPU等基本配备。 而他所谓的CPU使用的就是51指令集,他的硬盘就是内置的Flash,他的内存也是内置的RAM和扩展RAM。不过这些基本配备是小了一点而已。 在网上,我们常看到一些介绍什么AT89C51或AT89C52等51的单片机的范例,对于一些初学者来说可能就会认为只有AT89C51或AT89C52才是51单片机,当你给他个STC89S52他都不敢用,认为可能不对(我刚开始学的时候就碰到这种情况,)。其实不是这样的,只要芯片内部使用的是51指令集,那么它就可以认为是51单片机,就可以用51单片机的开发方式进行
[单片机]
51单片机STC89C52定时器中断法扫描数码管及秒表的实现
定时器中断法扫描数码管及秒表的实现 程序源码 /*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------数据类型定义区域-----------------------*/ typedef unsigned char u8; //定义类型unsigned char别名为u8 typedef unsigned int u16; //定义类型unsigned int别名为u16 /*-----------------------用户自定义数据区域----
[单片机]
51单片机定时器应用(C程序)
用Keil C51开发定时器/计数器 基本的51单片机内部有两个16位可编程的定时器/计数器T0和T1。它们各自具有4种工作状态,其控制字和状态均在相应的特殊功能寄存器中,可以通过软件对控制寄存器编程设置,使其工作在不同的定时状态或计数状态。 现在,许多厂家生产的8051兼容单片机上,还加入了定时器/计数器2,使单片机的应用更为灵活,适应性更强。 很多8051单片机的书籍都对定时器/计数器有详细的介绍,我们在此不再详细地讨论。但因为编写或或阅读程序时经常要查阅定时器/计数器的设置情况,因此我们仅对一些编程时经常要用到的较重要的寄存器和设置方式进行简要简介。 1 定时器/计数器简介 8051单片机的定时器/计数器基本结构如图1
[单片机]
51单片机(入门保姆级教程)——点亮一个LED灯
一、为什么要学习单片机? 作为一名工科学生,进入大学参加各种活动,例如:电子设计大赛、寻迹车比赛、LED电子灯比赛以及各种各样的微控、弱控强电路等,都离不开单片机的身影。电路、c语言、数电、模电、计算机控制等知识的学习,给单片机的学习增添了软辅助,但我认为,学习单片机更多的是自己的兴趣、爱好,正如“程序虐我千百遍,我视程序为初恋”。 此外,学习单片机知识,从最基础的51单片机入门学习,可以为我们后面学习STM32、ARM微控器等其微控制器的学习奠定知识基础和积攒一定的经验,给自己的大学及以后的职业道路增加一丝色彩。 二、首先了解什么是单片机? 单片机又称单片微控制器,把一整个计算机系统集成到一个芯片上,当于一个微型的计算机,和计算
[单片机]
MCS-51单片机外中断软件编程简介
简介:MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行中断,这一节我们讨论外中断软件编程。 外中断是由外部原因引起的中断,有两个中断源。即外中断0(INT0)和外中断1(INT1),中断请求信号由引脚P3.2(INT0)和P3.3(INT1)输入。 外中断请求信号有两种方式,一是电平方式,二是脉冲方式。可通过有关控制位的定义进行规定。 电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请求输入端采样到有效的低电平时,就会激活外部中断。 脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低即为有效中断请求。
[单片机]
8051单片机供水系统水位控制的硬件电路设计
供水系统水位控制原理 下图是水塔水位控制原理图。图中虚线表示允许水位变化的上下限。在正常情况下,应保持水位在虚线范围之内,为此,在水塔的不同高度安装固定不动的三根金属棒,以感知水位变化情况。其中A棒处于下限水位以下,C棒处于上限水位,B棒在下限水位处。A棒接+5V电源,B棒、C棒各通过一个电阻与模拟地相连。 水塔由电机带动水泵供水,单片机控制电机转动以达到对水位控制的目的。供水时,水位上升,当达到上限时,由于水的导电作用,B棒、C棒连通+5V电源,因此,b、c两端均为高电平“1”状态。这时,应停止电机和水泵的工作,不再给水塔供水。 当水位降到下限时,B棒、C棒都不能与A棒导通,因此,b、c两端均为“0”状态。这时,应启动电机,
[单片机]