Izveidojiet šo līnijas sekotāja robotu zinātnes izstādes projektam

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā amatā mēs uzzinām, kā izveidot līnijas sekotāja robotu shēmu, izmantojot Arduino, kas darbosies pa īpaši zīmētu līniju izkārtojumu un uzticīgi sekos tam, kamēr tas būs pieejams un izsekojams ar tā sensoriem.

Autors navneet sajwan



Kas ir līnijas sekotāja robots

Autonomais robots ir mašīna, kas var veikt virkni darbību, kā norādījis programmētājs, un cilvēks to manuāli nekontrolē reāllaikā.

Līnijas sekotāji (LFR) ir arī autonomi robotu automobiļi, kurus vada viens vai vairāki sensori un melnas vai baltas līnijas ceļš. Tie ir mūsdienu pašpiedziņas automašīnu pamats.



Tāpat kā katram autonomam robotam, arī līnijas sekotājiem ir signālu apstrādes un lēmumu pieņemšanas vienība, sensori un izpildmehānismi. Ja esat robotikas iesācējs un vēlaties to uztvert nopietni, jums vajadzētu sākt. Sāksim to izdarīt.

Šī projekta veidošanā esmu izmantojis divus infrasarkano staru sensorus un trīs riteņu piedziņu. Minimālais izmantojamo sensoru skaits ir viens, un, lai vadītu PID, pietiek ar astoņiem.

Nepieciešamās sastāvdaļas:

Arduino uno

Šasija

Divi ar akumulatoru darbināmi (t.i.) motori un saderīgas riepas

Riteņa bumba

Divi infrasarkanie sensori

Motora draivera modulis

Enerģijas padeve

Arduino IDE programmatūra

Apskatīsim mūsu komponentus:

ARDUINO ONE : Iedomājieties to kā mūsu robota vadības telpu. Tagad šim projektam tika ņemti vērā daudzi izstrādes paneļi, taču Arduino UNO vienkārši neatbilda citiem. Nav tā, ka mūsu varonis bija pārāks par daudzdimensionālajām īpašībām.

Ja tas tā būtu bijis, Raspberry Pi un Intel Edison būtu to uzsitis starp acīm. Vispievilcīgākos argumentus, kuru dēļ tika izvēlēta Arduino UNO, veidoja projekta īpašību, cenas, lieluma un prasību kombinācija.

Daži svarīgi iemesli bija:

IZMĒRS : Tas ir diezgan mazs, salīdzinot ar Atmega16 vai Atmega8 balstītām izstrādes plāksnēm, patērē nedaudz vietas uz šasijas, lai jūs iegūtu kompaktu un parocīgu botu.

Tas robotikas sacensībās patiešām ir svarīgi. Uzticieties man, ka jūs ienīstat apkārt klaiņošanu ar šo lielo neglīto botu, visu dienu mainot vietas.

Mazāks izmērs, ātrāks robots un efektīvāki pagriezieni.

LABĀKĀ PROTOTIPU PADOME : Neapšaubāmi, Arduino UNO ir vislabākā funkciju kombinācija prototipu veidošana . Kad jūsu shēmas ir ievietotas un jūsu projekts darbojas nevainojami, varat to aizstāt ar kaut ko mazāku un lētāku, piemēram, Arduino Nano un Attiny85 ic.

Tiem, kas kļūst par koledžas projektu sekotāju, es iesaku beigās aizstāt UNO ar Nano.

ŠASIJA : Tieši rāmis tur visus komponentus pozīcijā. Pērkot jaunu šasiju, jāņem vērā daži punkti,

Tam jābūt vieglam un izturīgam.

Attiecībā uz projektiem labāk, ja jūs pērkat tādu no tirgus. Bet, ja jūs gatavojaties sacensībām, es iesaku jums pielāgot savu, paturot prātā konkursa izmērus un prasības.

Izvēlieties plastmasas vai koka šasiju. Kad metāla rāmji nonāk saskarē ar Arduino, tiek saīsināti vairāki tapas. Tas ir liels faktors, kam jāpievērš uzmanība, meklējot šasiju.

Turiet šasiju pēc iespējas zemāk - tas nodrošina robota stabilitāti.

Motori : Izmantojiet ar akumulatoru (B.O.) darbināmu vieglu d.c. motori.

RITU BUMBA : Parastie riteņi nodrošina kustīgu kustību pa vienu asi, bet ritentiņa bumba ir paredzēta kustībai pa jebkuru virsmas virzienu. Tas dod mums trīs riteņu piedziņu.

Priekšroka dodama priekšroku trīs riteņu piedziņai, nevis 4 riteņiem, jo ​​tā ir salīdzinoši ātrāka. Jūs, iespējams, pamanījāt velosipēdu rikšu caurduršanu cauri satiksmei kā rāpuļi. Tas pats attiecas uz mūsu robotu.

SENSORI : Tā ir ierīce, kas nosaka vai mēra jebkuru mūsu vides fizisko parametru un pārveido to par elektriskiem signāliem. Šajā gadījumā konstatētais parametrs ir infrasarkanie stari.

Sensori ir ļoti svarīgi jebkuram robotam. Nu, ja arduino ir mūsu robota smadzenes, sensori var arī spēlēt acu lomu. Šeit ir dažas lietas par sensoriem:

Sensoriem jābūt orientētiem tā, lai vads (-i) būtu vērsti pret zemi.

Jāievieto robota priekšējā galā.

Minimālajam atstarpim starp tiem jābūt lielākam par melnās līnijas platumu.

Motora vadītāju padome : Motora draiveri ir bufera ķēdes, kas uzņem zema sprieguma signālus, lai ieslēgtu motorus, kuriem nepieciešams lielāks spriegums.

Mūsu gadījumā Arduino var nodrošināt pietiekamu spriegumu, lai darbinātu motorus, taču tas nespēj nodrošināt pietiekamu strāvu. Arduino UNO 5v un GND tapām pašreizējais vērtējums ir 200mA, bet jebkuram GPIO tapam - 40 mA. Tas ir daudz zemāks nekā mums nepieciešamie starta un apstāšanās strāvas motori.

Šim projektam es dodu priekšroku diviem motora draiveriem: L298N un L293D. Viņi abi ir vienlīdz piemēroti šī projekta veidošanai.

Lai gan, L293D ir salīdzinoši lētāks bet pašreizējais reitings ir zems. Viņu savienojumi ir gandrīz vienādi. Tā kā es esmu norādījis savienojumus abiem, tas ir pilnīgi atkarīgs no jums, kā jūs izveidojat savu botu.

ENERĢIJAS PADEVE :

Izmantojiet 12 V adapteri vai akumulatoru (ne vairāk kā 12 volti).

Komponentu izvietojums (no priekšpuses uz aizmuguri):

Sensori jūsu robota galā.

Riteņa ritenis vidū.

Motori un riepas vienā līnijā aizmugurē.

Savienojumi:

JUTĪTĀJI ARDUINO :

Pievienojiet sensora tapu arduino tapai, kā parādīts,

Sensora tapaArduino tapa
VCC (5v)5V
GND (G)GND
KREISĀ SENSORA IZVEIDE (DARĪT)6. tapa
PAREIZIS SENSORS OUT (DO)7. tapa

Piezīme. Lai pārbaudītu, vai sensori ir ieslēgti, pavērsiet mobilā tālruņa kameru uz infrasarkano staru raidītāja vadu. Jūs redzēsiet uz ekrāna mirdzošu ledu, kuru nevar redzēt mūsu neapbruņotās acis. Dažām mūsdienu mobilo tālruņu kamerām ir infrasarkanais filtrs. Tātad, lūdzu, ņemiet to vērā.

Motors - motora vadītājs:

Katram motoram ir divas spailes, kuras jāpievieno motora vadītājam. Nekad nemēģiniet savienot tos tieši arduino. Skatoties no robota aizmugures, tuvumā esošiem motoriem un sensoriem, savienojiet tos šādi:

DZINĒJSL298NL293D
Kreisais motors1. UN 2. PINPIN 7 un 8
PAREIZA MOTORAPIN 13 un 149. UN 10. PIN

ARDUINO UNO motora vadītājs:

Motora draiveris (L298N)ARDUINO ONE
4. PINVĪNS
5. PINGND
PIN 65V
PIN 8 un PIN 9PIN 3 un PIN 9
PIN 10 un PIN 11PIN 5 un PIN 10
PIN 7 un PIN 125V
Motora draiveris (L293D)ARDUINO ONE
PIN 3VĪNS
2. PINGND
1. PIN5V
PIN 5 un PIN 6PIN 3 un PIN 9
PIN 11 un PIN 12PIN 5 un PIN 10
PIN 4 un PIN 55V

PIEZĪME. L298n 8. un 9. tapu izmanto, lai vadītu motoru, kas savienots ar 1. un 2. Un, 10. un 11. vadības motoru, kas savienots ar 13. un 14. tapām. Tāpat l293d 5. un 6. tapu izmanto, lai vadītu motoru, kas savienots ar 7. un 8. Un 12. un 11. vadības motors ir savienots ar 9. un 10. tapām.

Šeit mēs esam puiši, līdz dizaina daļas beigām. Mums vēl ir jādara kodēšana, bet pirms tam mēs iepazīsimies ar principiem, kas ļauj sekot līnijai.

Kā darbojas infrasarkanais sensors:

Infrasarkano staru sensorus (IR sensorus) var izmantot, lai izjustu krāsu kontrastu un objektu tuvumu tam. IR sensora darbības princips ir diezgan vienkāršs.

Kā redzam, tam ir divas gaismas diodes - IR izstarojošās gaismas diodes un fotodiods. Viņi darbojas kā raidītāja-uztvērēja pāri. Kad šķērslis nāk izstarojošo staru priekšā, tos atstaro atpakaļ un uztver uztvērējs.

Tas ģenerē digitālo signālu, ko var ievadīt mikrokontrolleriem un izpildmehānismiem, lai veiktu nepieciešamās darbības, saskaroties ar šķērsli.

Pamata fizika mums saka, ka melns ķermenis absorbē visu uz to notiekošo elektromagnētisko starojumu, bet balts ķermenis to atspoguļo. Šo principu izmanto līnijas sekotājs, lai nošķirtu balto un melno virsmu.

Kā darbojas līnijas sekotāja robots:

LĪNIJAS SEKOJOŠAIS izkārtojums

Normālā stāvoklī robots pārvietojas tā, ka abi sensori ir virs balta, bet melnā līnija atrodas starp abiem sensoriem.

Ir ieprogrammēts pagriezt abus motorus tā, lai robots virzītos uz priekšu.

Gluži dabiski, jo paiet laiks, kad viens no diviem sensoriem nāk pāri melnajai līnijai.

Ja kreisais sensors nāk pāri līnijai, kreisie motori tiek apstādināti un rezultātā bots sāk griezties pa kreisi, ja vien kreisais sensors neatgriežas uz baltas virsmas un nav sasniegts normāls stāvoklis.

Līdzīgi, kad labais sensors nonāk melnā līnijā, labie motori tiek apstādināti, un līdz ar to bot tagad pagriežas pa labi, ja vien sensors neatgriežas pa baltu virsmu. Šis pagrieziena mehānisms ir pazīstams kā diferenciālās piedziņas mehānisms.

APKURES DIAGRAMMA:

DARBĪBAS ZIŅAS:

PROGRAMMĒŠANA UN KONCEPCIJAS:

Veicot ķēdes daļu, mēs tagad pāriet uz programmēšanas daļu. Šajā sadaļā mēs sapratīsim programmu, kas kontrolē mūsu robotu. Šeit ir kods: / *
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()
}
}

Izmantoto funkciju apraksts:

read_sensors (): tiek ņemti sensoru rādījumi un tie tiek saglabāti mainīgajos pa kreisi un pa labi.

move_forward (): Kad arduino izpilda šo funkciju, abi motori pārvietojas uz priekšu.

turn_left (): Kreisais motors apstājas. Bots pagriežas pa kreisi.

turn_right (): Labais motors apstājas. Bots pagriežas pa labi.

halt (): Bots apstājas.

print_readings (): sērijveida monitorā parāda sensoru rādījumus. Lai to izdarītu, tukšajā iestatījumā jāatzīmē “Serial.begin (9600)”.

SENSORA LASĪJUMI:

SENSORS PĀR LĪNIJUSENSORA LASĪJUMI
KreisaisPA LABI
Kreisais sensors01
PAREIZIS SENSORS10
NAV11
GAN00

ĀTRUMA KONTROLE:

Dažreiz motoru ātrums ir tik liels, ka pirms arduino interpretē sensora signālus, robots zaudē līniju. Īsāk sakot, robots lielā ātruma dēļ neseko līnijai un turpina zaudēt līniju, kaut arī algoritms ir pareizs.

Lai izvairītos no šādiem apstākļiem, mēs samazinām robota ātrumu, izmantojot PWM tehniku. Augstāk esošajā kodā ir mainīgais ar nosaukumu vērtība.

Vienkārši samaziniet funkcijas skaitlisko vērtību, lai samazinātu ātrumu. Arduino UNO pwm vērtības var būt tikai no 0 līdz 255.

analogWrite (tapa, vērtība)

0<= value <=255

Šis ir mana ieraksta beigu sekotājs. Es ceru, ka tas ir pietiekami detalizēts, lai atbildētu uz visiem jūsu dedzīgajiem jautājumiem, un, ja visretākajā gadījumā tas tā nav, tad mums vienmēr ir pieejama komentāru sadaļa. Komentējiet savas šaubas. Lai priecīga lāpīšana!




Pāri: Mobilā tālruņa vadīta robotu automašīna, izmantojot DTMF moduli Nākamais: Paroles kontrolēts maiņstrāvas ieslēgšanas / izslēgšanas slēdzis