直流小车修改版..docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
直流小车修改版.

二、直流小车总结1、直流小车任务(1)、直流小车基本动作(2)、直流小车测速(3)、四路循迹(4)、小车避障(5)、红外遥控(6)、蓝牙遥控(7)、超声波测距2、直流小车控制原理直流电机由定子和转子两部分组成,通过向转子中的绕组通入直流电,线圈边上受到电磁力,产生转矩。通过换向器和电刷使其受到一种方向的交变转矩。PWM调速,是直流电机常用的调速方法,其原理为:给直流电机输入占空比可调的方波,当电平为1时电机转动,电平为0时电机停止。通过改变脉冲周期的占空比可以改变电机转速。两个电极与电源正接或反接,可以使其正转或反转。本次实习采用的为L293D电机驱动器,其上的电机控制信号有两类:EN1:使能信号,选用一路PWM连接EN1引脚,通过调整PWM占空比来调节转速。 IN1、IN2:电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。3、直流小车具体完成任务及改进Ⅰ、直流小车基本动作每个直流电机需要3个控制信号EN1、IN1、IN2,EN1是使能信号。选用一路pwm连接EN1引脚,通过调整pwm的占空比可以调整电机的转速,IN1、IN2为电机转动方向的控制信号。直流电机正反转逻辑表如下:IN1IN2EN1电机001100110101010100001111不转不转不转不转不转正转反转不转直流小车基本运行代码(以小车前进为例):#define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //左边两个电机向前走#define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //右边两个电机向前走void run(void){Left_moto_go;//左电机往前走Right_moto_go;//右电机往前走}Ⅱ、四路循迹四路循迹的原理如下:循迹模块探头的发射红外线,如果探头不在黑线上,则反射回来的光被接收端接收,接收端导通,输出端接地,电压为0。若探头在黑线上,则反射光被黑带吸收,接收端没有收到信号,不导通,电压为5V。四个输出口分别接在P3.4到P3.7处,四输出口对应如下左右其中两个电机状态。四路循迹逻辑表P3_4P3_5P3_6P3_7状态1010110010111010011101111010前进前进前进左转右转后退前进Ⅲ、小车避障小车避障可以使用两种传感器:一是将2个避障探头和2个循迹探头组合安装在一起,此使用方式和循迹传感器一样,二是NPN型可调红外开关,检测到目标时是低电平输出,正常状态时是高电平输出,输出外加上一个上拉电阻即可连在I/O口上。对应关系如下:无障碍————直走左侧有障碍——后退,右转右侧有障碍——后退,左转前方有障碍——后退小车避障时,转弯过程要一定时间,因此在程序中加入延时程序delay(),延时越长,转弯角度越大。我们所完成的避障是利用可调红外开关完成的。3个可调红外开关分别检测左60o,中间位置以及右60o方向上是否有障碍,其逻辑表如下:三路避障逻辑表Left_1_redGo_redRight_1_red状态000101110010101101001101后退/右转后退/右转后退/右转后退/左转后退/右转后退/右转后退/左转前进附录2:三路避障程序如下(pwm波调速):#includeAT89x51.H#define Left_1_led P3_7#define Right_1_ledP3_6#define go_led P3_5#define en1 P3_0#define en2 P3_1#define en3 P3_2#define en4 P3_4#define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;}#define Left_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;}#define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}#define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}#define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}unsigned int a=0;unsigned int b=30;/*******************************************/ void delay(unsigned int k){ unsigned int x,y; for(x=0;xk

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档