INHOUDSOPGAWE:

Gevorderde lyn na robot: 22 stappe (met foto's)
Gevorderde lyn na robot: 22 stappe (met foto's)

Video: Gevorderde lyn na robot: 22 stappe (met foto's)

Video: Gevorderde lyn na robot: 22 stappe (met foto's)
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Julie
Anonim
Image
Image
Prototipering - Perfboard
Prototipering - Perfboard

Dit is 'n gevorderde lynvolgrobot gebaseer op Teensy 3.6 en QTRX lynsensor wat ek al 'n geruime tyd opgebou het. Daar is 'n paar groot verbeteringe in die ontwerp en prestasie van my vorige robot na robot. Die snelheid en reaksie van die robot het verbeter. Die algehele struktuur is kompak en liggewig. Die komponente is naby die wielas gerangskik om hoekmoment te verminder. Mikro-metaal-ratmotors met 'n hoë krag bied die voldoende wringkrag, en silikoonwiele van aluminiumnaaf bied broodnodige trekkrag teen hoë snelhede. Stutskerm en wielkodeerders stel die robot in staat om sy posisie en oriëntasie te bepaal. Met Teensyview aan boord, kan al die relevante inligting gevisualiseer word en kan belangrike programparameters opgedateer word met behulp van drukknoppies.

Om die robot te begin bou, benodig u die volgende voorrade (en baie tyd en geduld tot u beskikking).

Voorrade

Elektronika

  • Teensy 3.6 Ontwikkelingsraad
  • Stutskerm met bewegingsensors
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A Reflektansiesensor-reeks
  • 15x20cm prototipe PCB aan die sykant
  • Pololu Step-Up/Step-Down Voltage Regulator S9V11F3S5
  • Pololu verstelbare 4-5-20V opstartspanningsreguleerder U3V70A
  • MP12 6V 1580 rpm mikromotor met encoder (x2)
  • DRV8833 Dubbel motorbestuurder draer (x2)
  • 3.7V, 750mAh Li-Po battery
  • AAN/UIT -skakelaar
  • Elektrolitiese kondensator 470uF
  • Elektrolitiese kondensator 1000uF (x2)
  • Keramiek kondensator 0.1uF (x5)
  • Drukknoppies (x3)
  • 10mm groen LED (x2)

Hardeware

  • Atom Silikoonwiel 37x34mm (x2)
  • Pololu balwiel met 3/8”metaalbal
  • N20 motorhouer (x2)
  • Bout en moere

Kabels en verbindings

  • 24AWG buigsame drade
  • 24 -pins FFC tot DIP -uitbraak en FFC -kabel (tipe A, 150 mm lengte)
  • Ronde vroulike penkop
  • Ronde pin -kopkop langterminaal
  • Reghoekige dubbele ry vroulike kop
  • Reghoekige manlike kop met dubbele ry
  • Manlike penkop
  • Manlike naaldpenkop

Gereedskap

  • Multimeter
  • Soldeerbout
  • Soldeerdraad
  • Draadstropper
  • Draadsnyer

Stap 1: Stelselsoorsig

Soos met my vroeëre ontwerp van 'n selfbalanserende robot, is hierdie robot 'n samestelling van uitbreekborde gemonteer op 'n perfboard wat ook die doel van 'n struktuur dien.

Die belangrikste stelsels van die robot word hieronder uiteengesit.

Mikrokontroleur: Teensy 3.6-ontwikkelingsbord met 32-bis 180MHz ARM Cortex-M4-verwerker.

Lynsensor: Pololu se QTRX-MD-16A 16-kanaal analoog uitsetlynsensorreeks in rangskikking van medium digtheid (8 mm sensorhoogte).

Aandrywing: 6V, 1580 rpm, hoë -krag mikrometaal -ratmotors met magnetiese wielkodeerder en silikoonwiele op aluminiumnawe.

Odometrie: Magnetiese wielkoder -pare om die koördinate en afgelegde afstand te skat.

Oriëntasiesensor: stutskerm met bewegingsensors om die posisie en koers van die robot te skat.

Kragtoevoer: 3,7V, 750mAh lipo -battery as kragbron. 3.3V stap-op/af-reguleerder dryf mikrobeheerder, sensors en skermtoestelle aan. Verstelbare opstapreguleerder dryf die twee motors aan.

Gebruikerskoppelvlak: Teensyview vir die vertoon van inligting. Knoppie met drie drukknoppies vir die aanvaarding van gebruikersinsette. Twee getalle groen LED's met 'n deursnee van 10 mm vir statusaanduiding terwyl u hardloop.

Stap 2: Kom ons begin met prototipering

Image
Image

Ons implementeer bogenoemde stroombaan op die perfboard. Ons moet eers ons uitbreekborde gereed hou deur opskrifte daarop te soldeer. Die video gee 'n idee van watter koppe op watter uitbreekborde gesoldeer moet word.

Nadat u kopstukke op uitbreekborde gesoldeer het, stapel u die Teensyview- en drukknopopening bo -op Teensy.

Stap 3: Prototipering - Perfboard

Prototipering - Perfboard
Prototipering - Perfboard

Kry die 15 x 20 cm prototipe perfboard aan die sykant en merk die grens met 'n permanente merker, soos op die foto getoon. Boor gate in M2 -grootte vir die montering van die sensorreeks, wielwiel en mikrometaal -ratmotors op plekke gemerk met 'n wit sirkel. Ons sal later die perfboard langs die grens sny nadat ons alle komponente gesoldeer en getoets het.

Ons begin ons prototipe deur die koppenne en voetstukke op die perfboard te soldeer. Die uitbreekborde word later op hierdie opskrifte aangebring. Gee noukeurig aandag aan die posisie van die koppe op die bord. Ons verbind alle drade op grond van hierdie uitleg van kopstukke.

Stap 4: Prototipering - Prop Shield

Prototipering - Prop Shield
Prototipering - Prop Shield
Prototipering - Prop Shield
Prototipering - Prop Shield
Prototipering - Prop Shield
Prototipering - Prop Shield
Prototipering - Prop Shield
Prototipering - Prop Shield

Ons sal eers die verbindings met die stutskerm soldeer. Aangesien ons slegs die bewegingsensors van die stutskerm gebruik, moet ons slegs SCL-, SDA- en IRQ -penne verbind, afgesien van die 3V- en grondpenne van die stutskerm.

Sodra die verbinding voltooi is, plaas Teensy en stutskerm in en kalibreer die bewegingsensors deur die stappe hier te volg.

Stap 5: Prototipering - krag en grond

Prototipering - krag en grond
Prototipering - krag en grond

Soldeer al die krag- en grondverbindings wat na die prent verwys. Plaas alle uitbreekborde op hul plek en verseker kontinuïteit met behulp van 'n multimeter. Verifieer die verskillende spanningsvlakke aan boord.

  • Uitgangsspanning Li-po (gewoonlik tussen 3V en 4.2V)
  • Uitgangsspanning van die reguleerder (3.3V)
  • Verstelbare opstapreguleerder se uitgangsspanning (ingestel op 6V)

Stap 6: Prototipering - motorbestuurder

Prototipering - motorbestuurder
Prototipering - motorbestuurder
Prototipering - motorbestuurder
Prototipering - motorbestuurder
Prototipering - motorbestuurder
Prototipering - motorbestuurder

Die DRV8833 -motorbestuurder -draaibord kan 1.2A deurlopende en 2A piekstrome per kanaal lewer. Ons verbind die twee kanale parallel om een motor aan te dryf. Soldeer die verbindings deur die onderstaande stappe te volg.

  • Parallel met die twee insette en die twee uitsette van die motorbestuurder, soos op die foto getoon.
  • Koppel ingangskontrole -drade aan die motorbestuurder.
  • Verbind 'n 1000uF elektrolitiese kondensator en 'n 0.1uF keramiek kondensator oor die Vin- en Gnd -terminale van die twee draerborde.
  • Koppel 'n 0.1uF keramiek -kondensator oor die motorbestuurder se uitgangsterminale.

Stap 7: Prototipering - Line Sensor Array Header

Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header
Prototipering - Line Sensor Array Header

Teensy 3.6 het twee ADC's - ADC0 en ADC1 wat vermenigvuldig is tot 25 toeganklike penne. Ons het gelyktydig toegang tot twee penne van die twee ADC's. Ons sal agt lynsensors elk aan ADC0 en ADC1 koppel. Die ewe getal sensors sal aan ADC1 gekoppel word en die onewe getal sensors aan ADC0. Soldeer die verbindings deur die onderstaande stappe te volg. Ons sal later die lynsensor verbind met behulp van FFC na DIP -adapter en kabel.

  • Verbind alle ewe sensorpenne (16, 14, 12, 10, 8, 6, 4, 2) soos op die foto getoon. Lei die draad vir die aansluiting van sensorpen 12 deur die agterkant van die perfboard.
  • Koppel die stuurpen (EVEN) vir die emitter aan die Teensy -pen 30.
  • Koppel alle vreemde sensorpenne (15, 13, 11, 9, 7, 5, 3, 1) aan soos in die prentjie getoon.
  • Koppel 'n 470uF elektrolitiese kondensator oor Vcc en Gnd.

As u die lynsensorpenne en hul ooreenstemmende koppenne op die bord fyn dophou, sal u agterkom dat die boonste ry van die lynsensor na die onderste ry van die opskrif op die bord bordeer en omgekeerd. Dit is omdat ons die lyne korrek in lyn bring as ons die lynsensor aan die perfboard koppel met behulp van dubbele ry reghoekige koppe. Dit het my 'n geruime tyd geneem om dit uit te vind en die penopdragte in die program reg te stel.

Stap 8: Prototipering - Mikro -ratmotor en -kodeerder

Prototipering - Mikro -ratmotor en enkodeerder
Prototipering - Mikro -ratmotor en enkodeerder
  • Maak die mikrometaal -ratmotor met encoder vas met behulp van N20 -motorhouers.
  • Koppel die motor- en enkodeerderdrade aan soos op die foto getoon.
  • Links encoder - Teensy penne 4 & 0
  • Regte encoder - Teensy penne 9 en 27

Stap 9: Prototipering - LED's

Prototipering - LED's
Prototipering - LED's
Prototipering - LED's
Prototipering - LED's

Die twee LED's dui aan of die robot 'n draai gesien het of nie. Ek het 'n weerstand van 470 ohm gebruik om die LED's aan Teensy te koppel.

  • Linker LED -anode na Teensy -pen 6
  • Regter LED -anode na Teensy pin 8

Stap 10: Prototipering - Breakouts

Image
Image
Prototipering - Uitbrake
Prototipering - Uitbrake

Noudat ons al ons soldeerwerk op die perfboard voltooi het, kan ons die grens wat op die perfboard gemerk is, versigtig sny en die ekstra stukke perfboard verwyder. Bevestig ook die twee wiele en die wiel.

Plaas al die uitbreekborde in hul onderskeie voetstukke. Raadpleeg die video vir die invoeging van die FFC-DIP-uitbraak en vir die bevestiging van die QTRX-MD-16A lynsensor.

Stap 11: Oorsig van sagtewarebiblioteke

Oorsig van sagtewarebiblioteke
Oorsig van sagtewarebiblioteke

Ons sal die Teensy in Arduino IDE programmeer. Ons het 'n paar biblioteke nodig voordat ons begin. Die biblioteke wat ons sal gebruik, is:

  • Encoder
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

En sommige wat spesifiek vir hierdie robot geskryf is,

  • Druk knoppie
  • LineSensor
  • TeensyviewMenu
  • Motors

Die biblioteke wat spesifiek vir hierdie robot is, word breedvoerig bespreek en kan in die volgende stappe afgelaai word.

Stap 12: Biblioteke verduidelik - PushButton

Hierdie biblioteek is bedoel om die uitbreekbord van die knop met die Teensy te koppel. Die funksies wat gebruik word, is

PushButton (int leftButtonPin, int centreButtonPin, int rightButtonPin);

Deur hierdie konstruktor te roep deur 'n voorwerp te skep, word die drukknoppies in die INPUT_PULLUP -modus gekonfigureer.

int8_t waitForButtonPress (nietig);

Hierdie funksie wag totdat 'n knoppie ingedruk en losgelaat word en gee die sleutelkode terug.

int8_t getSingleButtonPress (nietig);

Hierdie funksie kyk of 'n knoppie ingedruk en vrygelaat word. Indien ja, gee die sleutelkode terug, anders gee nul terug.

Stap 13: Biblioteke verduidelik - lynsensor

LineSensor is die biblioteek vir die koppeling van die lynsensor -skikking met Teensy. Die volgende is die funksies wat gebruik word.

LineSensor (leeg);

Om hierdie konstruktor te roep deur 'n voorwerp te skep, initialiseer ADC0 en ADC1, lees die drempel-, minimum- en maksimumwaardes van EEPROM af en stel die sensorpenne in na die invoermodus en die stuurpen na die uitsetmodus.

leemte kalibreer (uint8_t calibrationMode);

Hierdie funksie kalibreer die lynsensors. Die kalibrasie -modus kan MIN_MAX of MEDIAN_FILTER wees. Hierdie funksie word in 'n latere stap breedvoerig verduidelik.

void getSensorsAnalog (uint16_t *sensorValue, uint8_t mode);

Lees sensorreeks in enige van die drie modusse wat as argument geslaag is. Die modus is die toestand van die emittors en kan AAN, UIT of TOGGLE wees. TOGGLE -modus vergoed die sensorlesings van reflektansie as gevolg van omringende lig. Die sensors wat aan ADC0 en ADC1 gekoppel is, word sinchronies gelees.

int getLinePosition (uint16_t *sensorValue);

Bereken die posisie van die sensorreeks oor die lyn volgens die geweegde gemiddelde metode.

uint16_t getSensorsBinary (uint16_t *sensorValue);

Wys 'n 16-bis voorstelling van die toestand van die sensors. 'N Binêre een dui aan dat die sensor oor die lyn is en 'n binêre nul dui aan dat die sensor van die lyn af is.

uint8_t countBinary (uint16_t binaryValue);

Deur die 16-bis voorstelling van sensorwaardes na hierdie funksie deur te gee, word die aantal sensors wat oor die lyn is, teruggegee.

void getSensorsNormalized (uint16_t *sensorValue, uint8_t mode);

Lees die sensorwaardes en beperk elke sensorwaarde tot die ooreenstemmende min- en maksimumwaardes. Die sensorwaardes word dan van hul ooreenstemmende min tot maksimum bereik tot 0 tot 1000 reeks gekarteer.

Stap 14: Biblioteke verduidelik - TeensyviewMenu

TeensyviewMenu is die biblioteek waar toegang tot die funksies van die vertoonmenu verkry kan word. Die volgende is die funksies wat gebruik word.

TeensyViewMenu (leeg);

Om hierdie konstruktor te noem, skep 'n voorwerp van die klas LineSensor, PushButton en TeensyView.

leegte intro (leegte);

Dit is bedoel om deur die spyskaart te navigeer.

leemtoets (leegte);

Dit word intern binne die spyskaart genoem wanneer die lynsensorwaardes op Teensyview vertoon moet word vir toetsing.

Stap 15: Biblioteke verduidelik - motors

Motors is die biblioteek wat gebruik word om die twee motors te bestuur. Die volgende is die funksies wat gebruik word.

Motors (nietig);

Deur hierdie konstruktor te roep deur 'n voorwerp te skep, word die motorrigtingbeheer en PWM -stuurpenne in die afvoermodus gekonfigureer.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

Deur hierdie funksie te noem, dryf die twee motors teen snelhede as argumente. Die waarde van die snelheid kan wissel van -255 tot +255 met 'n negatiewe teken wat aandui dat die draairigting omgekeer word.

Stap 16: Toetsing - Encoder Odometry

Ons sal die magnetiese wielkoders toets en die posisie en afstand wat deur die robot afgelê word, vertoon.

Laai die DualEncoderTeensyview.ino op. Die program vertoon die encoder -bosluise op Teensyview. Die encoder merk toename as u die robot vorentoe beweeg en as u dit agteruit beweeg, afneem.

Laai nou die EncoderOdometry.ino op. Hierdie program vertoon die posisie van die robot in terme van xy-koördinate, toon die totale afstand in sentimeter en die hoek in grade.

Ek het die Implementing Dead Reckoning by Odometry op 'n robot met R/C Servo Differential Drive deur Seattle Robotics Society verwys vir die bepaling van die posisie van encoder bosluise.

Stap 17: Toetsing - Prop Shield Motion Sensors

Maak seker dat u die bewegingsensors gekalibreer het deur die stappe hier te volg.

Laai nou die PropShieldTeensyView.ino op. U moet die versnellings-, gyro- en magnetometerwaardes van al drie asse op die Teensyview kan sien.

Stap 18: Programoorsig

Die program vir die gevorderde lynvolger is in Arduino IDE geskryf. Die program werk in die volgende volgorde wat hieronder verduidelik word.

  • Waardes wat in EEPROM gestoor word, word gelees en die spyskaart word vertoon.
  • As u op LAUNCH druk, kom die program in die kringloop.
  • Genormaliseerde lynsensorwaardes word gelees.
  • Binêre waarde van lynposisie word verkry deur gebruik te maak van genormaliseerde sensorwaardes.
  • Die telling van die aantal sensors wat oor die lyn is, word bereken uit die binêre waarde van die lynposisie.
  • Encoder-bosluise word opgedateer en totale afstand afgelê, xy-koördinate en hoek word opgedateer.
  • Vir verskillende waardes van binêre tellings wat wissel van 0 tot 16, word 'n stel instruksies uitgevoer. As die binêre telling in die reeks 1 tot 5 is en as die sensors wat oor die lyn is, langs mekaar grens, word PID -roetine genoem. Rotasie word uitgevoer in ander kombinasies van binêre waarde en binêre telling.
  • In PID -roetine (wat eintlik 'n PD -roetine is) word die motors aangedryf teen snelhede wat bereken word op grond van fout, verandering in fout, Kp en Kd waardes.

Die program meet tans nie oriënteringswaardes van die stutskerm nie. Dit is 'n werk aan die gang en word opgedateer.

Laai TestRun20.ino op. In die volgende stappe sal ons kyk hoe u deur die spyskaart kan navigeer, die instellings kan aanpas en hoe u die lynsensors kan kalibreer, waarna ons ons robot sal toets.

Stap 19: Navigeer spyskaart en instellings

Die spyskaart het die volgende instellings waarmee u met die linker- en regterknoppies kan navigeer en met die middelste drukknop gekies kan word. Die instellings en hul funksies word hieronder beskryf.

  1. KALIBREER: Om lynsensors te kalibreer.
  2. TOETS: Om lynsensorwaardes te vertoon.
  3. UITVOERING: Om die beginlyn te volg.
  4. MAX SPEED: Om die boonste limiet van die snelheid van die robot in te stel.
  5. ROTATIESNELHEID: om die boonste grens van die snelheid van die robot in te stel wanneer dit 'n draai maak, dit wil sê wanneer albei wiele teen gelyke snelhede in teenoorgestelde rigtings draai.
  6. KP: proporsionele konstante.
  7. KD: Afgeleide konstante.
  8. RUN MODE: Om te kies tussen twee werkmodusse - NORMAL en ACCL. In die NORMALE modus loop die robot teen vooraf gedefinieerde snelhede wat ooreenstem met die waardes van die lynposisie. In ACCL -modus word die MAX SPEED van die robot vervang deur ACCL SPEED op vooraf gedefinieerde stadiums van die baan. Dit kan gebruik word om die robot op reguit dele van die baan te bespoedig. Die volgende instellings is slegs toeganklik as die RUN MODE as ACCL ingestel is.
  9. ROND AFSTAND: Om die totale lengte van die renbaan in te stel.
  10. ACCL SPEED: Om die versnellingspoed van die robot in te stel. Hierdie snelheid vervang MAX SPEED in verskillende stadiums van die baan, soos hieronder gedefinieer.
  11. GEEN. VAN FASE: Om die aantal fases in te stel waar ACCL SPEED gebruik word.
  12. FASE 1: Om die begin- en eindafstande in te stel van die fase waarin MAX SPEED vervang word deur ACCL SPEED. Vir elke fase kan die begin- en eindafstande afsonderlik ingestel word.

Stap 20: Kalibrasie van lynsensor

Image
Image

Lynsensorkalibrasie is die proses waardeur die drempelwaarde van elk van die 16 sensors bepaal word. Hierdie drempelwaarde word gebruik om te besluit of 'n spesifieke sensor oor die lyn is of nie. Om die drempelwaardes van 16 sensors te bepaal, gebruik ons een van die twee metodes.

MEDIAN FILTER: In hierdie metode word die lynsensors bo die wit oppervlak geplaas en 'n vooraf gedefinieerde aantal sensorlesings word vir al 16 sensors geneem. Die mediaanwaardes van al 16 sensors word bepaal. Dieselfde proses word herhaal nadat die lynsensors oor die swart oppervlak geplaas is. Die drempelwaarde is die gemiddelde van mediaanwaardes van swart en wit oppervlaktes.

MIN MAX: In hierdie metode word die sensorwaardes herhaaldelik gelees totdat die gebruiker vra om te stop. Die maksimum en minimum waardes wat elke sensor ondervind, word gestoor. Die drempelwaarde is die gemiddelde van minimum en maksimum waardes.

Die drempelwaardes wat so verkry word, word in die reeks 0 tot 1000 gekarteer.

Die kalibrasie van lynsensors volgens die MIN MAX -metode word in die video getoon. Nadat die lynsensors gekalibreer is, kan die data gevisualiseer word soos op die foto getoon. Die volgende inligting word vertoon.

  • 'N 16-bis binêre voorstelling van lynposisie met 'n binêre 1 wat aandui dat die ooreenstemmende lynsensor oor die lyn is en 'n binêre 0 wat aandui dat die lynsensor van die lyn af is.
  • 'N Telling van die totale aantal sensors wat oor die lyn is.
  • Minimum, maksimum en sensorwaardes (rou en genormaliseer) van die 16 sensors, een sensor op 'n slag.
  • Lynposisie in die reeks -7500 tot +7500.

Die minimum en maksimum lynsensorwaardes word dan in EEPROM gestoor.

Stap 21: toetslopie

Image
Image

Die video is van 'n toetslopie waarin die robot geprogrammeer is om te stop nadat dit een rondte voltooi het.

Stap 22: Laaste gedagtes en verbeterings

Robotekompetisie
Robotekompetisie

Die hardeware wat saamgestel is om hierdie robot te bou, word nie ten volle benut deur die program wat dit bestuur nie. Daar kan baie verbeterings aan die programgedeelte aangebring word. Die bewegingsensors van stutskerm word tans nie gebruik om posisie en oriëntasie te bepaal nie. Die kilometerstanddata van enkoders kan gekombineer word met die oriëntasiedata van die stutskerm om die posisie en opskrif van die robot akkuraat te bepaal. Hierdie data kan dan gebruik word om die robot te programmeer om die baan in verskeie rondes te leer. Ek moedig u aan om op hierdie deel te eksperimenteer en u resultate te deel.

Sterkte.

Robotekompetisie
Robotekompetisie

Tweede prys in die robotwedstryd

Aanbeveel: