V tem prispevku se naučimo, kako z uporabo Arduina zgraditi robotsko vezje sledilca črte, ki bo prečkalo posebej narisano postavitev črte in ji bo zvesto sledilo, dokler bodo senzorji na voljo in sledljivi.
Z navneet sajwan
Kaj je Robot sledilca linij
Avtonomni robot je stroj, ki lahko izvede vrsto dejanj po navodilih programerja, ne da bi ga človek ročno nadzoroval v realnem času.
Linijski sledilci (LFR) so tudi avtonomni robotski avtomobili, ki jih vodi en ali več senzorjev in črna ali bela črta. So osnova sodobnih samovozečih avtomobilov.
Kot vsak avtonomni robot ima tudi sledilci linij enoto za obdelavo signala in odločanje, senzorje in aktuatorje. Če ste začetnik robotike in se je želite lotiti resno, bi morali tu začeti. Začnimo z izdelavo.
Za izdelavo tega projekta sem uporabil dva infrardeča senzorja in trikolesni pogon. Najmanjše število senzorjev, ki jih je mogoče uporabiti, je eno, največ osem pa zadostuje za sledenje črte na osnovi PID.
Potrebne komponente:
Arduino uno
Podvozje
Dva motorja na akumulator in združljive pnevmatike
Ricinusova žoga
Dva infrardeča senzorja
Modul pogonskega motorja
Napajanje
Programska oprema Arduino IDE
Zdaj pa si oglejmo naše komponente:
ARDUINO ONE : Predstavljajte si to kot nadzorno sobo našega robota. Zdaj obstaja veliko veliko razvojnih plošč, ki so bile upoštevane za ta projekt, vendar Arduino UNO preprosto ni bil kos drugim. Saj ni, da je bil naš protagonist boljši po svojih večdimenzionalnih značilnostih.
Če bi bilo tako, bi ga Raspberry Pi in Intel Edison udarila med oči. Najbolj prepričljivi argumenti, ki so privedli do izbire Arduino UNO, so bili sestavljeni iz kombinacije lastnosti, cene, velikosti in zahtev za projekt.
Nekaj pomembnih razlogov je bilo:
VELIKOST : Je precej majhen v primerjavi z razvojnimi ploščami na osnovi Atmega16 ali Atmega8, porabi malo prostora na podvozju, zato dobite kompakten in priročen bot.
To je resnično pomembno na tekmovanjih iz robotike. Verjemite mi, da bi sovražili gostovanje s tistim velikim grdim botom, ki bi ves dan spreminjal prizorišča.
Manjša velikost, hitrejši robot in učinkovitejši zavoji.
NAJBOLJŠA PROTOTIPNA PLOŠČA : Nedvomno ima Arduino UNO najboljšo kombinacijo funkcij za izdelava prototipov . Ko so vaša vezja na mestu in vaš projekt deluje brezhibno, ga lahko zamenjate z nečim manjšim in cenejšim, kot sta Arduino Nano in Attiny85 ic.
Za tiste, ki izdelujejo sledilce linij za univerzitetne projekte, predlagam, da na koncu UNO nadomestite z Nano.
ŠASIJA : Okvir je tisti, ki drži vse komponente v položaju. Pri nakupu novega podvozja morate upoštevati nekaj točk,
Moral bi biti lahek in močan.
Za projekte je bolje, če jih kupite s trga. Če pa se pripravljate na tekmovanje, vam toplo priporočam, da prilagodite svoje, pri čemer upoštevate dimenzije in zahteve tekmovanja.
Izberite plastično ali leseno podvozje. Ko kovinski okvirji pridejo v stik z Arduinom, se številni zatiči skrajšajo. To je velik dejavnik, na katerega se je treba osredotočiti pri iskanju podvozja.
Naj bo vaše podvozje čim nižje - to botu zagotavlja stabilnost.
MOTORJI : Uporabljajte majhno težko baterijo (B.O.), d.d. motorji.
KOLO KOLESARJA : Običajna kolesa omogočajo translacijsko gibanje vzdolž ene osi, kotalna krogla pa je zasnovana tako, da se premika po kateri koli smeri na površini. Omogoča nam trikolesni pogon.
Razlog za to, da imajo raje trikolesni pogon pred 4 kolesi, je razmeroma hitrejše obračanje. Morda ste opazili, da se ciklične rikše prebijajo skozi promet kot plazilci. Enako velja za naš robot.
SENZORJI : Gre za napravo, ki zazna ali izmeri kateri koli fizični parameter našega okolja in ga pretvori v električne signale. V tem primeru so zaznani parametri infrardeči žarki.
Senzorji so zelo pomembni za vsakega robota. No, če so arduino možgani našega bota, bi lahko tudi senzorji igrali vlogo oči. Nekaj stvari o senzorjih:
Senzorji morajo biti usmerjeni tako, da vodijo (-jo) proti tlom.
Moral bi biti nameščen na sprednjem koncu vašega bota.
Najmanjši razmik med njimi mora biti večji od širine črne črte.
MOTORNA VOZNIŠKA PLOŠČA : Motorni gonilniki so vmesni tokokrogi, ki zajemajo nizkonapetostne signale za napajanje motorjev, ki potrebujejo višjo napetost.
V našem primeru lahko Arduino zagotovi dovolj napetosti za pogon motorjev, vendar ne more zagotoviti dovolj toka. 5v in GND zatiči Arduino UNO imajo trenutno moč 200mA, kateri koli GPIO zatič pa 40 mA. To je precej nižje od zagonskih in zastojnih motorjev, ki jih potrebujemo.
Za ta projekt imam raje dva motorna gonilnika: L298N in L293D. Oba sta enako primerna za izdelavo tega projekta.
Čeprav, L293D je razmeroma cenejši vendar ima nizko trenutno oceno. Njihove povezave so skoraj enake. Ker sem dal povezave za oba, je popolnoma odvisno od vas, kako naredite svojega bota.
NAPAJANJE :
Uporabite 12-voltni adapter ali baterijo (ne več kot 12 voltov).
Namestitev komponent (od spredaj do zadnjega dela):
Senzorji na čelu vašega bota.
Ricinusovo kolo na sredini.
Motorji in pnevmatike v eni vrstici zadaj.
Povezave:
SENZORJI za ARDUINO :
Zatič senzorja priključite na zatič arduino, kot je prikazano,
Zatič senzorja | Pin Arduino |
VCC (5v) | 5V |
GND (G) | GND |
LEVI SENZOR IZHOD (DO) | zatič 6 |
DESNI SENZOR IZHOD (DO) | zatič 7 |
Opomba: Če želite preveriti, ali so senzorji vklopljeni, usmerite kamero mobilnega telefona na vodilnik IR oddajnika. Na zaslonu boste videli led, ki sveti, česar naše gole oči ne morejo videti. Nekatere sodobne kamere za mobilne telefone imajo infrardeči filter. Torej, prosim, upoštevajte to.
MOTOR-MOTORNI VOZNIK:
Vsak motor ima dva priključka, ki ju je treba priključiti na voznik motorja. Nikoli jih ne poskušajte povezati neposredno z arduino. Če pogledate s hrbtne strani bota, z motorji v vaši bližini in senzorji stran, jih povežite na naslednji način:
MOTOR | L298N | L293D |
LEVI MOTOR | PIN 1 IN 2 | PIN 7 IN 8 |
DESNI MOTOR | PIN 13 IN 14 | PIN 9 IN 10 |
MOTORNI VOZNIK v ARDUINO UNO:
MOTORNI VOZNIK (L298N) | ARDUINO ONE |
PIN 4 | VINO |
PIN 5 | GND |
PIN 6 | 5V |
PIN 8 in PIN 9 | PIN 3 in PIN 9 |
PIN 10 in PIN 11 | PIN 5 in PIN 10 |
PIN 7 in PIN 12 | 5V |
MOTORNI VOZNIK (L293D) | ARDUINO ONE |
PIN 3 | VINO |
PIN 2 | GND |
PIN 1 | 5V |
PIN 5 IN PIN 6 | PIN 3 in PIN 9 |
PIN 11 IN PIN 12 | PIN 5 in PIN 10 |
PIN 4 in PIN 5 | 5V |
OPOMBA: Zatiči 8 in 9 l298n se uporabljajo za krmiljenje motorja, priključenega na 1 in 2. In, 10 in 11 krmilni motor, priključen na zatiča 13 in 14. Podobno se zatiča 5 in 6 l293d uporabljata za krmiljenje motorja 7 in 8. ter krmilni motor 12 in 11, priključen na zatiča 9 in 10.
Tu smo fantje, do konca oblikovalskega dela. Še vedno moramo narediti kodiranje, pred tem pa bomo preučili načela, ki omogočajo sledenje vrsticam.
Kako deluje infrardeči senzor:
Infrardeči senzorji (IR senzorji) se lahko uporabljajo za zaznavanje kontrasta barv in bližine predmetov. Načelo delovanja IR senzorja je precej osnovno.
Kot lahko vidimo, ima dve LED-diodi - led, ki oddaja IR, in fotodiodo. Delujejo kot par oddajnik-sprejemnik. Ko ovira pride pred sevalne žarke, se ti odbijejo nazaj in jih prestreže sprejemnik.
S tem se ustvari digitalni signal, ki ga je mogoče dovajati do mikrokrmilnikov in aktuatorjev, da sprejmejo potrebne ukrepe za nalet na oviro.
Osnovna fizika nam govori, da črno telo absorbira vse elektromagnetno sevanje, ki ga naseli, belo telo pa ga odbija. To načelo izkorišča črtni sledilnik, da razlikuje med belo in črno površino.
Kako deluje robot sledilca:
V normalnem stanju se robot premika tako, da sta oba senzorja belo in črna črta sredi obeh senzorjev.
Programirano je tako, da oba motorja vrti tako, da se bot premika naprej.
Povsem naravno je, da sčasoma eden od obeh senzorjev pride čez črno črto.
Če levi senzor pride čez črto, levi motorji mirujejo in posledično se bot začne obračati v levo, razen če se levi senzor vrne na belo površino in ni doseženo normalno stanje.
Podobno, ko desni senzor pride čez črno črto, se desni motorji ustavijo in posledično bot zavije desno, razen če se senzor vrne čez belo površino. Ta mehanizem obračanja je znan kot mehanizem diferencialnega pogona.
KROG DIAGRAM:
PODROBNOSTI OŽIČENJA:
PROGRAMIRANJE IN KONCEPTI:
Po končanem delu vezja bomo zdaj prešli na programski del. V tem poglavju bomo razumeli program, ki nadzoruje našega robota. Tu je koda: / * Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}
Opis uporabljenih funkcij:
read_sensors (): Zajema odčitke obeh senzorjev in jih shrani v spremenljivke levo in desno.
move_forward (): Ko arduino izvede to funkcijo, se oba motorja premakneta naprej.
turn_left (): Levi motor se ustavi. Bot zavije levo.
turn_right (): Desni motor se ustavi. Bot zavije desno.
zaustavitev (): Bot se ustavi.
print_readings (): prikaže odčitke senzorjev na serijskem monitorju. Za to morate pri nastavitvi praznine razkomentirati 'Serial.begin (9600)'.
OBČITVE SENZORJA:
SENZOR NAD ČRTO | OBČITVE SENZORJA | |
LEVO | PRAV | |
LEVI SENZOR | 0 | 1. |
DESNI SENZOR | 1. | 0 |
NI | 1. | 1. |
OBOJE | 0 | 0 |
KONTROLA HITROSTI:
Včasih je hitrost motorjev tako visoka, da preden arduino interpretira signale senzorja, robot izgubi linijo. Skratka, bot ne sledi liniji zaradi visoke hitrosti in še vedno izgublja linijo, čeprav je algoritem pravilen.
Da bi se izognili takim okoliščinam, zmanjšamo hitrost bota s tehniko PWM. V zgornji kodi je spremenljivka z imenom value.
Samo zmanjšajte številsko vrednost v funkciji, da zmanjšate hitrost. V Arduino UNO imate lahko vrednosti pwm med 0 in 255.
analogWrite (pin, vrednost)
0<= value <=255
To je konec moje objave na spletu. Upam, da je dovolj podroben, da lahko odgovori na vsa vaša pereča vprašanja in če v najredkejših okoliščinah ni, potem imamo vedno na voljo odsek s komentarji. Komentirajte svoje dvome. Lepo igranje!
Prejšnji: Robotski avto, ki ga upravlja mobilni telefon z uporabo modula DTMF Naprej: Stikalo za vklop / izklop izmeničnega omrežja z geslom