智能机器人制作全过程.docx
- 文档编号:29817862
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:42
- 大小:22.81KB
智能机器人制作全过程.docx
《智能机器人制作全过程.docx》由会员分享,可在线阅读,更多相关《智能机器人制作全过程.docx(42页珍藏版)》请在冰豆网上搜索。
智能机器人制作全过程
智能机器人制
#include
#defineucharunsignedchar
#defineuintunsignedint
/********************端口定义*****************************/
sbitIN1=P1^0;//电机控制端口//
sbitIN2=P1^1;//电机控制端口//
sbitIN3=P1^2;//电机控制端口//
sbitIN4=P1^3;//电机控制端口//
sbitLN=P2^0;//红外探测端口//
sbitLW=P2^1;//红外探测端口//sbitRW=P2^2;//红外探测端口//
sbitRN=P2^3;//红外探测端口//
/*****************子函数声明****************************/
voidahead(void);//前进
voidleft(void);//左转
voidright(void);//右转
voidstop(void);//停止
main(){
while
(1)
{
if(RN==1&&LN==1&&RW==1&&LW==1)
{ahead();continue;}
if((RN==0||LN==0)&&RW==1&&LW==1)
{right();continue;}
if(RN==1&&LN==1&&(RW==0||LW==0))
{left();continue;}
if(RN==0&&LN==0&&RW==0&&LW==0)
stop();
}}voidahead()
{
IN2=1;
IN3=0;
IN4=1;
}
voidleft()
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
}voidright()
{
IN1=0;IN2=1;
IN3=0;
IN4=0;
voidstop(){IN1=0;IN2=0;IN3=0;IN4=0;}
5.功能模块介绍
5.1电源模块
供电系统的原理图如下7805INPUTOUTPUTINPUTOUTPUT780612v
单片机及模块供电电机供电
7805的5V输出给单片机以及各个功能模块供电,在实际应用过程中我们可能需要好几块7805,但是我们要注意的是:
各个7805之间的输出绝对不能
够并联。
7806的6V输出给点击供电作为动力电源。
7805与7806要公地。
5.2电机驱动模块的原理及驱动程序
5.2.1电机驱动模块的原理L298内部的原理图如下
IN1IN2ENAOUT1OUT2OUT3OUT4
IN3
IN4
ENB
6V动力电源
OUT1与OUT2与小车的一个电机的正负极相连,OUT3与OUT4与小车的另一个电机的正负极相连,单片机通过控制IN1与IN2,IN3与IN4分别控制电机的正反转。
ENA与ENB分别控制两个电机的使能。
L298控制表
IN1IN2ENA电机状态
xx0停止
101顺时针
011逆时针
001停止
111停止
注意:
X表示状态不定
电机驱动模块原理图
L298有两路电源分别为逻辑电源和动力电源,上图中6V为逻辑电源,12V为动力电源。
J4接入逻辑电源,J6接入动力电源,J1与J2分别为单片机控制两个电机的输入端,J3与J5分别与两个电极的正负极相连。
ENA与ENB直接接入6V逻辑电源也就是说两个电机时刻都工作在使能状态,控制电机的运行状态只有通过J1与J2两个接口。
由于我们使用的电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。
L298的PCB安装图
5.2.2电机驱动模块测试程序
程序清单1
/*****************************************实现电机的方向控制
******************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
/***************************************端口定义
****************************************/sbitIN1=P1^0;//P10与电机驱动IN1相连
sbitIN2=P1^1;//P11与电机驱动IN2相连
sbitIN3=P1^2;//P12与电机驱动IN3相连
sbitIN4=P1^3;//P13与电机驱动IN4相连
/***************************************各个子函数定义
****************************************/voidTurn_left(void){IN1=0;IN2=1;
IN3=0;
IN4=1;
}voidTurn_right(void){
IN1=1;IN2=0;IN3=1;
}
voidGo(void)
{
IN1=0;IN2=1;
IN3=1;
IN4=0;
}
voidBack(void)
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
voidDelay(uchardly)
{
for(;dly>0;dly--)
for(i=50000;i>0;i--);}
/*************************************
主函数
**************************************/main()
{while
(1)
{
Go();
Delay(20);
Back();
Delay(20);
Turn_left();
Delay(20);
Turn_right();
Delay(20);}
}
5.3红外循迹模块的原理及测试程序
5.3.1红外循迹模块的原理
在智能机器人小车的设计中我们使用的是一体反射式红外对管,所谓一体就是
发射管和接受管固定在一起,反射式的工作原理就是接收管接收到的信号是发射
管发出的红外光经过反射物的反射后得到的,所以使用红外对管进行循迹时必须
是白色地板加黑色引导条。
下图为红外循迹电路的原理图。
上面电路由一组红外对管、电位器、运算放大器和电阻组成的,R1起到限流的作
用,用来控制反光管发出红外信号的强弱。
接收管实际上是一个光敏三极管基极
的光电流经过放大后流经电阻R2产生电压与电位器调节后得到的电压进行比较。
A1与电阻组成一个比较器。
在有红外信号返回时OUT端输出高电平,反之输出低
电平。
红外循迹对管的安装图
红外对管安装位置电位器安装位置
定位孔X4电源插座X2信号输出5.3.2红外循迹的测试程序
程序清单
#include
//电机控制端口//sbitIN2=P1^1;
//电机控制端口//sbitIN3=P1^2;
//电机控制端口//sbitIN4=P1^3;
//电机控制端口//sbitLN=P2^0;
//红外探测端口//sbitLW=P2^1;
//红外探测端口//sbitRW=P2^2;//红外探测端口//
sbitRN=P2^3;//红外探测端口//
/*****************子函数声明****************************/voidahead(void);//前进
voidleft(void);//左转
voidright(void);//右转
voidstop(void);//停止
main(){
while
(1)
{if(RN==1&&LN==1&&RW==1&&LW==1)
{ahead();continue;}if((RN==0||LN==0)&&RW==1&&LW==1)
{right();continue;}
if(RN==1&&LN==1&&(RW==0||LW==0))
{left();continue;}if(RN==0&&LN==0&&RW==0&&LW==0)
}}voidahead()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
voidleft()
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
}
voidright()
IN1=0;IN2=1;
IN3=0;
IN4=0;
}
voidstop()
{
IN1=0;
IN2=0;IN3=0;
IN4=0;
}
5.47279显示模块原理及测试程序
5.4.17279显示模块的原理
HD7279A是一片具有串行接口的,可以同时驱动8位共阴式数码管(或64只独立
LED)的智能显示驱动芯片,该芯片还可同时连接多大64键的键盘矩阵,单片即可
完成LED显示、键盘接口的全部功能。
HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有两种译码
方式,此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
HD7279A典型应用
5.4.27279先是模块的测试程序
#include
#defineuintunsignedint
#defineulongunsignedlong
/**************子函数定义****************************/
voidlong_delay(void);
voidshort_delay(void);
voiddelay10ms(uchar);voidwrite7279(uchar,uchar);ucharread7279(uchar);
voidsend_byte(uchar);ucharreceive_byte(void);voidbegin_unit(void);//开机测试
voidtest_key_unit(void);//按键及显示测试
voidtest_number(void);//计数测试
voidl_r_test(void);//左右移测试
voidxiaoyin_test(void);//消隐测试
voidduanxian_test(void);//段显测试
/************程序变量定义***************************/uchardigit[5];ucharkey_number,j,k;uinttmr;ulongwait_cnter;
/**************端口初始化**************************/
sbitkey=P3^4;
sbitdat=P3^5;sbitclk=P3^6;
sbitcs=P3^7;
/***********7279指令初始化*************************/
#defineDEC0DE00x80//采用译码方式0
#defineDEC0DE10xc8//采用译码方式1#defineCMD_READ0x15//读键盘的数据指令
#defineUNDECODE0x90//不译码
#defineRTL_CYCLE0xa3//循环左移
#defineRTR_CYCLE0xa2//循环右移
#defineRTL_RESET0xa4//左移
#defineCMD_RESET0xa4//复位,所有的显示清除
#defineCMD_TEST0xbf//测试,将所有的LED点亮
#defineRTR_UNCYL0xa0//右移
#defineACTCTL0x98//消隐
#defineSEGON0xe0//段亮
#defineSEGOFF0xc0//断灭
#defineBLINKCTL0x88//闪烁
/****************************************************
主函数
主要功能:
测试、复位、不译码显示、译码【0】【1】
显示、按键值测试并显示、移位、消隐、段显等
***************************************************/main()
{while
(1)
{begin_unit();
test_key_unit();
test_number();
l_r_test();
xiaoyin_test();
duanxian_test();
}
}
/************************************************7279写入函数
**********************************************/voidwrite7279(ucharcmd,uchardta){send_byte(cmd);
send_byte(dta);
}
/*************************************************7279读取函数
**************************************************/ucharread7279(ucharcommand){
send_byte(command);
return(receive_byte());
}/*************************************************7279发送字节函数
***************************************************/
voidsend_byte(ucharout_byte)
{
uchari;
cs=0;long_delay();
for(i=0;i<8;i++)
{if(out_byte&0x80)
{
dat=1;
}
Else
{
dat=0;
}
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;}dat=0;}
/***************************************************7279接受字节函数
******************************************************/ucharreceive_byte(void){
uchari,in_byte;
dat=1;long_delay();for(i=0;i<8;i++){
clk=1;
short_delay();
in_byte=in_byte*2;
if(dat){in_byte=in_byte|0x01;
}clk=0;
short_delay();
}dat=0;
return(in_byte);
}
/***************************************************7279长延迟函数
****************************************************/voidlong_delay(void){uchari;
for(i=0;i<0x30;i++);
}
/***************************************************7279短延迟函数
*****************************************************/voidshort_delay(void)
{
uchari;
for(i=0;i<8;i++);
}
/***************************************************10ms延迟函数
****************************************************/voiddelay10ms(uchartime){
uchari;
uintj;
for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 机器人 制作 全过程