请问智能车的差速是通过什么装置实现?应该怎么调?

请问智能车的差速是通过什么装置实现?应该怎么调?,第1张

智能车设计是一让山种以汽车电子为背景,涵盖控制、电子电气计算机、机械等多芦碰学科的科技创意性设计。它主要由路径识别、速度采集、角度控制及车速控制等功能模块组成。智能小车要实现的最基本功能简单的来说,就是沿着固定导引带运行,对小车的控制主要体现在当小车相对于导引带发生偏移时,控制系统做出相应的调整将偏差消除,使小车运行方向与导引带保持一致。如果在小车在没有脱离导引带的情况下可以很快的将偏差消陪滑谈除,且没有较大的波动,我们就认为已经达到了控制的要求。1模糊控制的引入本文采用4组红外光电传感器来检测路径信号,由于导致小车运行发生偏移的因素很多,且具有不确定性,在这种情况下我们无法找到一个精确的数学模型来表示小车与导引带之间的关系。这样,基于被控对象精确数学模型的传统自动控制理论包括经典控制理论和现代控制理论就很难得到应用。鉴于以上的分析,决定采用模糊控制理论作为小车的控制方法。图1为模糊控制器的原理图。图1模糊控制原理图1.1模糊化模糊控制的目的是当小车相对于导引带发生偏移时,控制系统通过调整两驱动轮转速,使小车纠正偏移回到正确的位置因此,选择小车相对于导引带的偏移角E作为模糊控制器的输入变量选择两驱

电子差速从几年前就有人投入了研究,分主动差速和被动差速。被动差速是控制两个电机严格的按照等转矩或等功率运转,主动差速是戚腊烂根据要求控制两个电机高漏按一定的差速比闭环调速运转。

51系列单片机指令周期太长,不适合做电机驱动,无局昌法实现电子差速的要求,建议使用性能更好单片机来完成,比如dsPIC,STM32,AVR系列等。

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

uint count

uchar jd

sbit le1=P1^0//*光电传感器*//

sbit PWM=P3^5//舵机pwm//

init()

{

TMOD=0x01//设定定时器

TH0 = 0xFE

TL0 = 0x0c//设定定时初始值

EA=1

ET0=1

TR0=1

}

void delay(uint z) //延时

{

uint x,y

for(x=zx>0x--)

for(y=125y>0y--)

}

void timer0() interrupt 1 //产生pwm信号控制舵机,周期20ms

{

TH0 = 0xFE

TL0 = 0x0c //设定定时初始值

if(count<jd) //判断0.5ms次数是否小于角度标识

{

PWM=1 //确定小于,pwm输出高电平

// delay(180) //延时一会,可以减慢舵机转速

}

else

PWM=0 //大于则输出低电平

count=count+1 //0.5ms次数加1

count=count%40 //次数始终保持为40即保持周期为20ms

}

void xunji()//循迹函数,读取拆塌光电管状扮御核态

{

if(le1!=0)

{

delay(10)

if(le1==0)

{

jd++

count=0

while(le1==0)

}

} //分析光电管状态,看你的电路检测到黑线输出1或者是0

else

{

count=0

jd=3 //舵机归中厅掘

}

}

void main()

{

jd=3 //角度初始化90°: 1=0.5ms 舵机为0° 2=1ms 舵机为45°3、4、5、同上

count=0 //初始化赋值零

init() //定时器初始化

while(1)

{

xunji() //舵机检测

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12351279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存