John Lim

micromouse este un robot care folosește un algoritm de rezolvare a labirintului pentru a rezolva în mod autonom o problemă a labirintului. În această postare, voi împărtăși modul în care echipa mea și cu mine am reușit să o facem cu îndrumarea atât de necesară din partea unor oameni foarte utili.

în timpul semestrului meu de toamnă la UC Berkeley, am luat o clasă condusă de studenți pentru a crea un robot care rezolvă în mod autonom o problemă de labirint. Gândurile mele sunt că, dacă sunteți în UC Berkeley, interesat de proiecte electronice și caută un program foarte ghidat cu instructori minunat, acesta este un loc minunat de a fi! Pentru mine, acest curs este special pentru că este locul în care mi-am început călătoria în robotică, tinkering și de a face și este unul care mi-a plăcut profund. Acest curs mi-a oferit fundamente grozave și am învățat mai multe pe parcurs, pe măsură ce am început să preiau noi proiecte.

eu și echipa mea și mouse-ul nostru
mouse-ul nostru în labirint
eu și colegul meu de echipă și instructorii mei de curs

Iată un set dur de instrucțiuni despre cum să începeți proiectul Micromouse ca începător:

  1. Lista pieselor
  2. punerea pieselor hardware împreună
    1. Configurarea microcontrolerului Teensy & Arduino IDE
    2. teensy pinout Introducere
    3. utilizarea senzorilor
    4. reglarea tensiunii
    5. motorul podului H controler pentru a controla motorul
    6. folosind encoder Rotorary Hall efect
    7. punerea totul împreună
  3. codificare
    1. cum de a controla hardware-ul cu cod
    2. Sensing
    3. PID Control
    4. labirint rezolvarea algoritm
    5. reglaj fin
  4. cum se depanează

Lista pieselor

  • piese mecanice
    • șasiu
    • roți
    • o mulțime de bandă adezivă, cu excepția cazului în care intenționați să imprimați 3D piese personalizate sau să cheltuiți bani pentru a cumpăra suporturi personalizate
  • piese electrice
    • Breadboard, fire
    • Două 5 Volți mini motoare de curent continuu
    • un mic 7 la 9 volți baterie
    • 7805 regulator de tensiune
    • Hall senzor rotorary encoder
    • h-pod
    • Teensy (sau orice mici microcontroler. Arduino funcționează și el!)
    • doi senzori de distanță (am folosit un senzor infraroșu)

punerea hardware-ul împreună

2.1 Configurarea Teensy Micro Controller & Arduino IDE

Teensy este un Micro controller care funcționează ca un Arduino. Un avantaj imens este dimensiunea sa. După cum sugerează și numele, Teenst este mic și compact, ceea ce este minunat!

începem prin plasarea Teensy pe partea de sus a unor pini antet, și apoi lipit pinii antet pe Teensy, și apoi montarea ferm pe breadboard nostru.

așezați știfturile antetului pe capătul plăcii de pâine
așezați Teensy pe ace
lipiți știfturile antetului pe Teensy
Conectați-vă la computer printr-un cablu MicroUSB

dacă nu ați făcut-o deja, instalați Arduino IDE pe computer. https://www.arduino.cc/en/Main/Software

foarte IMPORTANT: dacă utilizați teensy 3.1, asigurați-vă că instalați versiunea Arduino compatibilă cu Teensy. Iată link-ul pentru instalarea Teensyduino, astfel încât Teensy dvs. poate lucra cu Arduino IDE: https://www.pjrc.com/teensy/td_download.html

2.2 circuitul

2.21) sursa de alimentare a bateriei: sursa de alimentare trebuie să fie de 7,2 V și mai sus. Prin Convenția de circuit, putem numi acest Vcc2.

2.22) sursa de alimentare reglementată de 5V: componentele cipurilor electronice au adesea nevoie de o tensiune de alimentare stabilă pentru a funcționa corect. Problema este că, cu dispozitive precum motoarele care pot atrage cantități mari de curent, acest lucru determină scăderea tensiunii de alimentare. Acesta este motivul pentru care avem nevoie de un regulator de tensiune pentru a furniza acel 5V stabil celorlalte componente electronice.

 VoltageReg

2.23) microcontroler: acesta este creierul oricărui robot care pare să aibă un fel de gândire inteligentă. Un microcontroler poate părea complicat la început, dar pentru a începe, nu este chiar atât de greu. Iată elementele de bază: Simple, dar foarte importante.

Micro controlere

2.23 a) pini de intrare digitali: capabili să citească și să scrie semnale binare. Microcontrolerele diferite au niveluri logice diferite, dar majoritatea microcontrolerelor au un nivel logic fie de 3,3 V, fie de 5V. de exemplu, Arduino este un microcontroler cu un nivel logic de 5V. când citiți, o tensiune undeva lângă 5V se înregistrează la fel de mare, în timp ce o tensiune undeva lângă 0V se înregistrează la fel de scăzută.

2.23 B) pini modulați cu lățimea impulsului (PWM): aceștia sunt pini de intrare digitali cu o capacitate specială de a emite un semnal modulat cu lățimea impulsului. Este un semnal digital care este ridicat pentru un anumit procent de timp și scăzut pentru un alt procent de timp. Acest lucru este cunoscut sub numele de ciclul de funcționare. Un semnal PWM cu un ciclu de funcționare de 60% este logic level HIGH 60% din timp, în timp ce logic level LOW 40% din timp. Aflați mai multe despre PWM aici.

2.23 c) pini analogici: acești pini sunt capabili să citească o tensiune analogică oriunde de la 0 la cantitatea de volți menționată. În cazul Arduino, ei 0-5V.ei pot citi cu diferite grade de rezoluție, în funcție de cât de multe biți analogic convertor Digital este utilizat. Un convertor analogic la digital pe 8 biți poate citi o rezoluție de 2^8 = 256. Pentru un nivel logic de 5V, poate citi cu o precizie de 5V/256 = 19,5 MV.

2.23 d) întreruperi digitale: Unii pini digitali de pe microcontrolere pot fi configurați ca semnale de întrerupere. O întrerupere este foarte cool. Când un pin este configurat ca un pin de întrerupere, acesta detectează fie (1) o margine de semnal în creștere (2) o margine de semnal care se încadrează, fie (3) o modificare a nivelului logic. Oricare dintre acestea va declanșa ceea ce numim o rutină de serviciu de întrerupere (ISR). ISR este o funcție scurtă în cod care este declanșată ori de câte ori este detectată o întrerupere.

2.26) motoare: motoarele sunt dispozitive care se rotesc atunci când li se dă o tensiune. În acest caz, folosim motorul DC periat. Este numit ca atare, deoarece există o perie de comutare DC în interiorul acestuia, care îl ajută să se rotească corect atunci când i se dă o tensiune. Motoarele atrag în general un curent mare și toate motoarele au o anumită putere de tensiune. Când motoarele se rotesc, ele produc un back-emf. Acest lucru poate suna contra-intuitiv, dar un motor care se rotește la viteza maximă atrage de fapt cea mai mică cantitate de curent datorită EMF-ului din spate. Dimpotrivă, un motor care este blocat (adică vrea să se miște, dar nu poate din cauza forțelor externe) atrage cea mai mare cantitate de curent.

 Motor

2.25) Motor Driver: acest lucru este necesar pentru a controla viteza/direcția motorului dvs. folosind un microcontroler. Acest lucru se datorează faptului că microcontrolerul dvs. nu poate furniza suficientă tensiune sau curent pentru a conduce un motor. În plus, atunci când motoarele se rotesc, back-emf generat ar putea deteriora cu ușurință microcontrolerul. Este necesară o interfață între cele două pentru a controla viteza și direcția motorului. Controlerul motorului utilizat a fost un driver SN754410 cvadruple Half-H. Ceea ce face un controler de motor este că preia semnalul provenit de la microcontrolerul dvs. (de obicei un semnal modulat cu lățimea impulsului) și apoi activează un comutator digital de la baterie la motor. Ceea ce face este că pornește un comutator digital de la baterie la motor extrem de rapid. Dacă acest comutator digital este pornit 100% din timp (sau 100% ciclu de funcționare), motorul funcționează la putere maximă. Dacă comutatorul digital este pornit doar 50% din timp, motorul funcționează la o putere de 50%.

motordriver

2.26) codificatoare: codificatoarele sunt dispozitive inteligente care detectează mișcarea. De exemplu, unele codificatoare detectează de câte ori s-a rotit o roată, altele sunt chiar mai precise pentru a vă spune exact ce unghi s-a rotit un braț robot etc. Pentru Micromouse, folosim codificatoare care detectează de câte ori s-a rotit o roată. Există codificatoare cu efect hall sau codificatoare optice. Două tipuri de codificatoare, dar practic fac același lucru. Ele declanșează un impuls digital ori de câte ori o roată sa întors! Cum funcționează un encoder cu efect hall este că există un mic magnet permanent în interiorul a ceva care este atașat la arborele motorului. Când motorul se rotește, magnetul se rotește și el. Există senzori care detectează când magnetul a trecut. Când o face, trimite un impuls care poate fi citit de un microcontroler. De obicei, trimitem acel semnal către un pin configurat ca pin de întrerupere digitală.

 codificator

2.27) senzori de distanță cu infraroșu: detectează distanța folosind infraroșu. Ceea ce face este că trage un semnal infraroșu și așteaptă ca acel semnal să revină pentru a determina cât de departe este obiectul departe de el. Puteți experimenta, dar dacă deviați semnalul de pe o suprafață înclinată, este posibil să nu obțineți o citire de pe senzorul IR. Acest lucru îl face să nu fie atât de ideal. Acest senzor IR are, de asemenea, o gamă limitată, care poate detecta distanțele. Sârmă roșie este pentru putere de 5V, sârmă neagră pentru GND, sârmă galbenă pentru semnal. Pentru acest senzor IR special, în funcție de cât de departe senzorul IR simte obiectul dvs., acesta oferă o tensiune analogică diferită. Ce puteți face este să citiți acea tensiune analogică folosind un microcontroler. Citiți fișa tehnică aici pentru a afla mai multe informații despre senzorul IR.

Irsenzor

2.3 diagrame de Circuit & cablare

aici este o diagramă de circuit dur. Notă nu am specificat exact la ce pini să conectați firele. Acest lucru se datorează faptului că numerele pin variază în funcție de microcontrolerul pe care îl utilizați, dar aici dau principiile generale:

wiringdiagram

semnalele de la codificator trebuie conectate la un Pin de întrerupere digitală. În acest fel, ori de câte ori este trimis un semnal, microcontrolerul poate ști că roata a rotit 1 rundă.

semnalele de la senzorul infraroșu trebuie conectate la un Pin de intrare analogic.

semnalele introduse în controlerul motorului trebuie să iasă de la un Pin PWM.

*introduceți diagrama circuitului

3.0 Cod& controale:

Nu voi posta cod, dar aici sunt câteva concepte generale:

3.1 cum se obține mouse-ul pentru a muta direct sau rândul său,:

acest mouse-ul este controlat diferențiat. Există două roți, cu două motoare pe fiecare roată. Dacă ambele roți se rotesc la aceeași viteză, mouse-ul merge drept. Dacă roata din stânga accelerează în timp ce roata din dreapta încetinește, mouse-ul se întoarce la dreapta. Acest lucru este cunoscut sub numele de control diferențial.

3.2 controale & corectarea erorilor

dar trebuie să ne gândim cum să controlăm mouse-ul. Cum îl facem să se miște în interiorul labirintului fără să se prăbușească într-un perete? Am putea crede că trimitem două semnale egale către motoarele din stânga și din dreapta pentru a spune mouse-ului să meargă drept. Deci mouse-ul ar trebui să meargă drept? Greșit! Diverse motive pot determina motoarele să nu răspundă în modul în care le spunem. Fundamental, fiecare motor este construit aproape la fel, dar nu Exact la fel. Hardware-ul nu este niciodată construit perfect și există întotdeauna o eroare finită.

cum ne asigurăm că mouse-ul se mișcă de fapt în direcția în care îi spunem? Avem nevoie de ceea ce se numește control în buclă închisă. Ceea ce înseamnă că conectăm senzori pentru a măsura ieșirea și apoi alimentăm rezultatul înapoi în intrare pentru a efectua corectarea erorilor. Mai multe despre asta mai târziu. Avem nevoie de ceea ce numim un PID (derivat Integral proporțional) controler.

în acest caz, am putea dori pentru a obține mouse-ul pentru a menține o distanță strictă de perete. Spune, la 5 cm distanță de peretele din dreapta sa. Noi numim asta punctul de referință. Orice abatere de la punctul de referință este ceea ce numim eroare. Când este detectată o eroare, dorim ca mouse-ul să se corecteze. Când eroarea este mare, dorim o acțiune de corectare mare. Când eroarea este mică, dorim o mică acțiune de corectare.

senzorii de pe partea laterală a mouse-ului determină distanța mouse-ului față de un perete. Spuneți că mouse-ul este prea departe de peretele din dreapta sa. Vrem ca roata din stânga să se rotească mai repede, în timp ce roata din dreapta se rotește mai lent, astfel încât mouse-ul să se poată deplasa spre dreapta pentru a corecta eroarea. Dacă mouse-ul este foarte departe de punctul de setare de 5 Cm, cum ar fi la 10 cm distanță de perete, dorim ca roata din stânga să se întoarcă foarte repede, în timp ce roata din dreapta să încetinească foarte mult. Dacă mouse-ul este la doar 6 cm distanță de perete, dorim ca roata din stânga să crească în viteză, iar roata din dreapta să-și scadă viteza, dar doar foarte ușor.

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată.