智能抛石车这个标题,机器部门比重相称大,大部门步队用了一个多月时间加工机器,留给电控的时间少之又少,以为便是一个简洁的循迹步伐。简直,重要便是一个循迹操纵,玩过单片机的都知道,这是最最底子的电控,用arduino操纵小车轮子正反转,“分分钟”完事一点也不浮夸。但在现实备战历程中,联合小车的机器以及赛事规章的现实,大部门步队照旧难以办理这看似“小儿科”的操纵。下面我来论述一下怎样依据这个赛题的现实情形做一个美丽的操纵。
电控分为三个部门:循迹;停车;扭转舵机。
循迹的最常利用要领是用三个红外传感器检测到的崎岖电平来推断小车是否沿着黑线精确行驶,在普通的场所,用数字输出digitalWrite()来让小车的左右轮正反转实现差速转弯充足了。但在基于本次赛题,频仍的正反转无法使本身装置的齿轮很好的啮合实现传动,严峻影响了“指南”精度,以是并不推举。利用analogWrite()在调治PWM占空比,可以或许较为腻滑的操纵循迹。
小车利用两个电机和一个万向轮。许多小组在调车历程中都碰到了一个题目,为什么之前两个轮子都能动,然而如今不可了,让我帮助找下题目。缘故原由无一破例都是电机操纵用到了模仿量输出引脚9和10,而且加了舵机步伐
步伐写完了,0 error 0 warning,理论上小车来个循迹是没题目了,但是小车要么跑太快,要么不动,这也很让人抓狂。这缘故原由是出在了小车的机器布局。通常要实现“指南”,轮径=轴距,这就导致了我们的小车轮子都很大,在10cm-15cm间,加上赛道的摩擦力大,有的组乃至显现了PWM占空比调127小车不动,128小车则冲了出去。这个题目通过去世磨占空比和供电电压是可以办理的,但必定导致同砚身心疲乏。这个题目的焦点便是小车电机的扭矩太小导致,换成步进电机大概圆周舵机,都是可以完善办理这个题目的。
这里我讲一下怎样在本赛题中充实使用圆周舵机。
圆周舵机与一般舵机的操纵区别便是,一般舵机duoji.write(角度),角度写几多,舵机就停在谁人角度。而圆周舵机为duoji.write(速率),通常90为静止速率,0和180为正转和反转的最大速率,但依据舵机做工差异,静止速率会在90左右不等。舵机的扭矩足以动员我们本身的小车,颠末试验,只要舵性能转,小车就能跑,可以实现小车的迟钝循迹。
这里我还要提一点,舵机引脚的vcc和gnd不要直接接在arduino的扩展板上,由于舵机必要的电流很大,简单导致arduino的输出电流杂乱,单片机无法正常事情,以是舵机也是要离开+5V供电的。我用了本身做的稳压板供电,单片机只接了信号端。细致:稳压板和单片机必然要共地!共地!共地!许多组一开始电机不转都是由于外接模块供电和主控板没有共地。
停车通常有三种方案,触碰传感器,超声波传感器,红外传感器。
触碰传感器固然说是险些不存在滋扰,但因为制止是的那一下碰撞直接影响了“指南”精度,以是险些没有小组利用。超声波传感器与红外传感器一样是不打仗的,但超声波总是不稳健,我用Serial.print()读数时,时时常显现一个负值,且延时严峻,我小我私家不喜爱,但大部门组照旧利用了超声波传感器,竞赛中途就触发的征象并不少见。影响红外传感器的推断的唯一身分便是天然光芒,中午阳光太猛烈大概导致红外的直打仗发。利用红外的小组对此一筹莫展,实在在阳光猛烈时,将红外传感器的触头稍向下掰一点,就可以完善办理了。以是我很推举用红外,比超声波罕用一个引脚,且步伐简洁了许多。
主控板要检测“指南”偏移的角度,机器引导老师都推举利用“角位移传感器”。对付刚上手单片机的小白来说,基础不知角位移传感器怎样操纵。实在,某宝上能买到的角位移传感器都是103电位器,通过analogRead()读取电位值,通过加减乘数变化为舵秘密扭转的角度。arduino函数库中有一个map(x,a1,a2,b1,b2)函数完善办理了这一盘算困难.x为当前值,a1,a2为当前值的范畴,b1,b2为当前值必要映射到的范畴。相称轻便。
下面附上步伐