Taula de continguts:

Robot avançat de seguiment de línia: 22 passos (amb imatges)
Robot avançat de seguiment de línia: 22 passos (amb imatges)

Vídeo: Robot avançat de seguiment de línia: 22 passos (amb imatges)

Vídeo: Robot avançat de seguiment de línia: 22 passos (amb imatges)
Vídeo: Йога для начинающих дома с Алиной Anandee #2. Здоровое гибкое тело за 40 минут. Универсальная йога. 2024, De novembre
Anonim
Image
Image
Prototipatge - Perfboard
Prototipatge - Perfboard

Es tracta d’un robot avançat de seguiment de línies basat en el sensor de línia Teensy 3.6 i QTRX que he construït i he estat treballant des de fa força temps. Hi ha algunes millores importants en el disseny i el rendiment de la meva línia anterior de robot següent. La velocitat i la resposta del robot han millorat. L’estructura general és compacta i lleugera. Els components estan disposats a prop de l'eix de la roda per minimitzar el moment angular. Els motors d’engranatges micro metall d’alta potència proporcionen el parell adequat i les rodes de silicona del cub d’alumini ofereixen una tracció molt necessària a velocitats elevades. Els protectors de protecció i de rodes permeten al robot determinar la seva posició i orientació. Amb Teensyview muntat a bord, es pot visualitzar tota la informació rellevant i actualitzar els paràmetres importants del programa mitjançant els botons de pressió.

Per començar a construir aquest robot, necessitareu els següents subministraments (i molt de temps i paciència a la vostra disposició).

Subministraments

Electrònica

  • Taula de desenvolupament de Teensy 3.6
  • Apantall amb sensors de moviment
  • Sparkfun TeensyView
  • Matriu de sensor de reflectància Pololu QTRX-MD-16A
  • PCB prototip de doble cara de 15x20cm
  • Regulador de tensió Step-Up / Step-Down Pololu S9V11F3S5
  • Regulador de tensió augmentable 4-5-20V ajustable Pololu U3V70A
  • Micromotor MP12 6V 1580 rpm amb codificador (x2)
  • DRV8833 Portador de controlador de doble motor (x2)
  • Bateria Li-Po de 3,7 V, 750 mAh
  • Interruptor ON / OFF
  • Condensador electrolític 470uF
  • Condensador electrolític 1000uF (x2)
  • Condensador ceràmic 0.1uF (x5)
  • Polsadors (x3)
  • LED verd de 10 mm (x2)

Maquinari

  • Roda de silicona Atom 37x34mm (x2)
  • Roda de boles Pololu amb bola de metall de 3/8”
  • Muntatge del motor N20 (x2)
  • Bolt i femelles

Cables i connectors

  • Cables flexibles 24AWG
  • 24 punts FFC a DIP i cable FFC (tipus A, longitud de 150 mm)
  • Capçal rodó de passador femení
  • Terminal llarg de capçalera femení rodó
  • Capçal femení de doble fila en angle recte
  • Capçalera masculina de doble fila en angle recte
  • Capçalera de pin masculí
  • Capçalera d'agulla masculina

Eines

  • Multímetre
  • Soldador
  • Filferro de soldadura
  • Decapant de filferro
  • Tallador de filferro

Pas 1: Visió general dels sistemes

Igual que amb el meu disseny anterior d'un robot autoequilibrant, aquest robot és un conjunt de taules de ruptura muntades sobre un perfboard que també serveix per al propòsit d'una estructura.

A continuació es detallen els principals sistemes del robot.

Microcontrolador: placa de desenvolupament Teensy 3.6 amb processador ARM Cortex-M4 de 32 bits a 180 MHz.

Sensor de línia: matriu de sensors de línia de sortida analògica de 16 canals QTRX-MD-16A de Pololu en disposició de densitat mitjana (pas del sensor de 8 mm).

Accionament: motors d'engranatges micro metall de 6 V, 1580 rpm, d'alta potència amb codificador de rodes magnètiques i rodes de silicona muntades en cubs d'alumini.

Odometria: parells de codificadors de rodes magnètics per estimar les coordenades i la distància recorreguda.

Sensor d’orientació: escut de protecció amb sensors de moviment per estimar la posició i la direcció del robot.

Font d'alimentació: bateria lipo de 3,7 V, 750 mAh com a font d'alimentació. El regulador de pujada / baixada de 3,3 V alimenta el microcontrolador, els sensors i el dispositiu de visualització. El regulador de pujada ajustable alimenta els dos motors.

Interfície d'usuari: Teensyview per mostrar informació. Interrupció de tres polsadors per acceptar les entrades de l'usuari. Dos números de LEDs verds de 10 mm de diàmetre per indicar l'estat mentre s'executa.

Pas 2: Comencem la creació de prototips

Image
Image

Implementarem el circuit anterior al perfboard. Primer hem de mantenir els nostres taulers preparats soldant capçaleres. El vídeo us proporcionarà una idea sobre quines capçaleres s'han de soldar en quins taulers de ruptura.

Després de soldar les capçaleres als taulers de ruptura, apileu el Teensyview i el botó de ruptura a sobre de Teensy.

Pas 3: prototipatge: perfboard

Prototipatge - Perfboard
Prototipatge - Perfboard

Obteniu el prototip de doble cara de 15x20cm i marqueu el límit amb un marcador permanent tal com es mostra a la imatge. Traieu forats de mida M2 per muntar el conjunt de sensors, la roda de rodes i els motors d'engranatges de micro metall en llocs marcats amb un cercle blanc. Més tard tallarem el perfboard al llarg del límit després de soldar i provar tots els components.

Començarem el nostre prototipat soldant els passadors i endolls de la capçalera del perfboard. Els taulers de ruptura s'inseriran posteriorment en aquestes capçaleres. Presteu molta atenció a la posició de les capçaleres al tauler. Connectarem tots els cables en funció d’aquest disseny de capçaleres.

Pas 4: prototipatge: escut de l’atrezzo

Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo
Prototipatge - Escut de l’atrezzo

Primer soldarem les connexions a l’escut de l’atrezzo. Com que només fem servir els sensors de moviment de l’escut de l’atrezzo, només hem de connectar els pins SCL, SDA i IRQ a part dels pins de 3V i de terra de l’escut de l’atrezzo.

Un cop finalitzada la connexió, inseriu Teensy i el blindatge del prop i calibreu els sensors de moviment seguint els passos esmentats aquí.

Pas 5: prototipatge: alimentació i terra

Prototipatge - Potència i terra
Prototipatge - Potència i terra

Soldeu totes les connexions d’alimentació i de terra referides a la imatge. Inseriu tots els taulers de ruptura al seu lloc i assegureu-vos la continuïtat mitjançant un multímetre. Verifiqueu els diferents nivells de tensió a bord.

  • Voltatge de sortida Li-po (normalment entre 3V i 4,2V)
  • Tensió de sortida del regulador de pujada / baixada (3,3 V)
  • Tensió de sortida del regulador de pujada ajustable (ajustat a 6V)

Pas 6: prototipatge: transportista del conductor del motor

Prototipatge: transportista de conductors de motor
Prototipatge: transportista de conductors de motor
Prototipatge: transportista de conductors de motor
Prototipatge: transportista de conductors de motor
Prototipatge: transportista de conductors de motor
Prototipatge: transportista de conductors de motor

La placa portadora de controladors de motor DRV8833 pot proporcionar corrents de pic continu de 1,2 A i 2 A per canal. Connectarem els dos canals en paral·lel per accionar un motor. Soldeu les connexions seguint els passos següents.

  • Paral·lelitzeu les dues entrades i les dues sortides del portador del controlador del motor tal com es mostra a la imatge.
  • Connecteu els cables de control d’entrada al controlador del motor.
  • Connecteu un condensador electrolític de 1000uF i un condensador de ceràmica de 0,1uF a través dels terminals Vin i Gnd de les dues plaques portadores.
  • Connecteu un condensador ceràmic de 0,1 uF a través dels terminals de sortida del controlador de motor.

Pas 7: prototipatge: capçalera de matriu del sensor de línia

Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia
Prototipatge: capçalera de matriu del sensor de línia

Teensy 3.6 té dos ADC - ADC0 i ADC1 que es multiplexen a 25 pins accessibles. Podem accedir a dos pins qualsevol des dels dos ADC alhora. Connectarem vuit sensors de línia cadascun a ADC0 i ADC1. Els sensors de número parell es connectaran a ADC1 i els sensors de número senar a ADC0. Soldeu les connexions seguint els passos següents. Més endavant connectarem el sensor de línia mitjançant l'adaptador i el cable FFC a DIP.

  • Connecteu tots els pins del sensor parells (16, 14, 12, 10, 8, 6, 4, 2) tal com es mostra a la imatge. Encaminar el cable per connectar el pin 12 del sensor pel revers de la placa.
  • Connecteu el pin de control de l’emissor (EVEN) al pin 30 de Teensy.
  • Connecteu tots els pins senars del sensor (15, 13, 11, 9, 7, 5, 3, 1) tal com es mostra a la imatge.
  • Connecteu un condensador electrolític de 470uF a través de Vcc i Gnd.

Si observeu de prop els pins del sensor de línia i els corresponents pins de capçalera al tauler, notareu que la fila superior del sensor de línia s’assigna a la fila inferior de la capçalera del tauler i viceversa. Això es deu al fet que quan connectem el sensor de línia al perfboard mitjançant capçaleres en angle recte de doble fila, les files s’alinearan correctament. Vaig trigar força temps a esbrinar-ho i corregir les assignacions de pins al programa.

Pas 8: prototipatge: motor i codificador de micro engranatges

Prototipatge: motor i codificador de micro engranatges
Prototipatge: motor i codificador de micro engranatges
  • Fixeu el motor d'engranatges de micro metall amb el codificador mitjançant suports de motor N20.
  • Connecteu els cables del motor i del codificador tal com es mostra a la imatge.
  • Codificador esquerre: pins Teensy 4 i 0
  • Codificador dret: pins Teensy 9 i 27

Pas 9: prototipatge: LEDs

Prototipatge - LEDs
Prototipatge - LEDs
Prototipatge - LEDs
Prototipatge - LEDs

Els dos LED indiquen si el robot ha detectat un gir o no. He utilitzat una resistència de la sèrie 470 ohm per connectar els LED a Teensy.

  • Ànode LED esquerre al pin 6 de Teensy
  • Ànode LED dret al pin 8 de Teensy

Pas 10: prototipatge - Brots

Image
Image
Prototipatge - Brots
Prototipatge - Brots

Ara que hem completat tota la nostra soldadura al perfboard, podem tallar amb cura al llarg del límit marcat al perfboard i eliminar els trossos addicionals del perfboard. A més, poseu les dues rodes i la roda de rodes.

Introduïu tots els taulers de separació als seus endolls respectius. Per inserir el brot FFC-DIP i per fixar el sensor de línia QTRX-MD-16A, consulteu el vídeo.

Pas 11: Visió general de les biblioteques de programari

Visió general de les biblioteques de programari
Visió general de les biblioteques de programari

Programarem el Teensy en Arduino IDE. Necessitarem algunes biblioteques abans de començar. Les biblioteques que utilitzarem són:

  • Codificador
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

I alguns que s’han escrit específicament per a aquest robot,

  • Polsador
  • LineSensor
  • TeensyviewMenu
  • Motors

Les biblioteques específiques d’aquest robot es discuteixen detalladament i es poden descarregar en els passos següents.

Pas 12: explicació de les biblioteques - PushButton

Aquesta biblioteca serveix per a la interfície del tauler de separació de polsadors amb el Teensy. Les funcions utilitzades són

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

Cridant aquest constructor mitjançant la creació d’un objecte, es configuren els pins del botó al mode INPUT_PULLUP.

int8_t waitForButtonPress (void);

Aquesta funció espera fins que es prem i es deixa anar un botó i torna el codi de la clau.

int8_t getSingleButtonPress (void);

Aquesta funció comprova si es prem i es deixa anar un botó. En cas afirmatiu, retorna el codi de la clau; en cas contrari, torna zero.

Pas 13: explicació de les biblioteques: sensor de línia

LineSensor és la biblioteca per a la interfície de la matriu de sensors de línia amb Teensy. A continuació es detallen les funcions utilitzades.

LineSensor (buit);

La trucada a aquest constructor mitjançant la creació d’un objecte inicialitza ADC0 i ADC1, llegeix valors llindars, mínims i màxims de EEPROM i configura els pins del sensor al mode d’entrada i el pin de control de l’emissor al mode de sortida.

void calibrate (uint8_t calibrationMode);

Aquesta funció calibra els sensors de línia. El calibrationMode pot ser MIN_MAX o MEDIAN_FILTER. Aquesta funció s'explica detalladament en un pas posterior.

void getSensorsAnalog (uint16_t * sensorValue, mode uint8_t);

Llegeix la matriu de sensors en qualsevol dels tres modes aprovats com a argument. El mode és l’estat dels emissors i pot estar ON, OFF o TOGGLE. El mode TOGGLE compensa les lectures de reflectància del sensor a causa de la llum ambiental. Els sensors connectats a ADC0 i ADC1 es llegeixen de manera síncrona.

int getLinePosition (uint16_t * sensorValue);

Calcula la posició de la matriu de sensors sobre la línia pel mètode de la mitjana ponderada.

uint16_t getSensorsBinary (uint16_t * sensorValue);

Retorna una representació de 16 bits de l'estat dels sensors. Un binari indica que el sensor està sobre la línia i un zero binari indica que el sensor està fora de línia.

uint8_t countBinary (uint16_t valor binari);

En passar la representació de 16 bits dels valors del sensor a aquesta funció es retorna el nombre de sensors que hi ha sobre la línia.

void getSensorsNormalized (uint16_t * sensorValue, mode uint8_t);

Llegeix els valors del sensor i limita cada valor del sensor als valors mínims i màxims corresponents. Els valors del sensor es mapen des de l'interval mínim al màxim corresponent a l'interval de 0 a 1000.

Pas 14: explicació de les biblioteques: TeensyviewMenu

TeensyviewMenu és la biblioteca on es pot accedir a les funcions del menú de visualització. A continuació es detallen les funcions utilitzades.

TeensyViewMenu (buit);

Cridar aquest constructor crea un objecte de la classe LineSensor, PushButton i TeensyView.

void intro (buit);

Això serveix per navegar pel menú.

prova de buit (buit);

Es diu internament al menú quan es mostren els valors del sensor de línia a Teensyview per provar-los.

Pas 15: explicació de les biblioteques: motors

Motors és la biblioteca que s’utilitza per conduir els dos motors. A continuació es detallen les funcions utilitzades.

Motors (buit);

Cridar aquest constructor mitjançant la creació d’un objecte configura el control de direcció del motor i els pins de control PWM al mode de sortida.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

La crida a aquesta funció condueix els dos motors a velocitats superades com a arguments. El valor de la velocitat pot oscil·lar entre -255 i +255 amb un signe negatiu que indica que el sentit de gir està invertit.

Pas 16: proves: odometria del codificador

Provarem els codificadors de rodes magnètiques i mostrarem la posició i la distància recorreguda pel robot.

Pengeu el DualEncoderTeensyview.ino. El programa mostra les marques de codificació a Teensyview. El codificador marca increment si es mou el robot cap endavant i disminueix si es mou cap enrere.

Ara pengeu l'EncoderOdometry.ino. Aquest programa mostra la posició del robot en termes de coordenades x-y, mostra la distància total recorreguda en centímetres i l’angle girat en graus.

He fet referència a la implementació del recompte mort per odometria en un robot amb servo diferencial R / C de la Seattle Robotics Society per determinar la posició a partir de les paparres del codificador.

Pas 17: proves: sensors de moviment de l'escut propi

Assegureu-vos que heu calibrat els sensors de moviment seguint els passos esmentats aquí.

Ara pengeu el PropShieldTeensyView.ino. Hauríeu de poder veure els valors de l’acceleròmetre, el giroscopi i el magnetòmetre dels tres eixos a Teensyview.

Pas 18: Visió general del programa

El programa per al seguidor de línia avançat està escrit en Arduino IDE. El programa funciona en la següent seqüència que s’explica a continuació.

  • Es llegeixen els valors emmagatzemats a EEPROM i es visualitza el menú.
  • En prémer LLANÇA, el programa entra al bucle.
  • Es llegeixen els valors del sensor de línia normalitzats.
  • El valor binari de la posició de la línia s’obté mitjançant valors de sensor normalitzats.
  • El recompte del nombre de sensors que hi ha sobre la línia es calcula a partir del valor binari de la posició de la línia.
  • S’actualitzen les paparres del codificador i s’actualitzen la distància total, les coordenades x-y i l’angle.
  • Per a diferents valors de recompte binari que oscil·len entre 0 i 16, s’executen un conjunt d’instruccions. Si el recompte binari oscil·la entre l’1 i el 5 i si els sensors que hi ha a sobre de la línia són adjacents entre si, s’anomena rutina PID. La rotació es realitza en altres combinacions de valor binari i recompte binari.
  • A la rutina PID (que en realitat és una rutina PD), els motors s’accionen a velocitats calculades en funció dels valors d’error, canvi d’error, valors de Kp i Kd.

Actualment, el programa no mesura els valors d’orientació des de l’escut de prop. Es tracta d’un treball en curs i s’està actualitzant.

Pengeu TestRun20.ino. Veurem com navegar pel menú, ajustar la configuració i com calibrar els sensors de línia en els passos següents, a continuació dels quals provarem el nostre robot.

Pas 19: Navegació pel menú i la configuració

El menú té els següents paràmetres que es poden navegar mitjançant els botons esquerre i dret i seleccionar-los mitjançant el botó central. A continuació es descriuen els paràmetres i les seves funcions.

  1. CALIBRAR: per calibrar els sensors de línia.
  2. PROVA: per mostrar els valors del sensor de línia.
  3. INICI: per començar la línia següent.
  4. VELOCITAT MÀXIMA: per establir el límit superior de la velocitat del robot.
  5. GIRAR VELOCITAT: per establir el límit superior de velocitat del robot quan realitza un gir, és a dir, quan les dues rodes giren a velocitats iguals en direccions oposades.
  6. KP: constant proporcional.
  7. KD: constant de derivades.
  8. MODE RUN: Per seleccionar entre dos modes de funcionament: NORMAL i ACCL. En mode NORMAL, el robot funciona a velocitats predefinides que corresponen als valors de posició de línia. En mode ACCL, la VELOCITAT MÀXIMA del robot és substituïda per ACCL SPEED en etapes predefinides de la pista. Es pot utilitzar per accelerar el robot en trams rectes de la pista. Els paràmetres següents només són accessibles si RUN MODE està configurat com a ACCL.
  9. DISTÀNCIA DE VOLTA: per establir la longitud total de la pista.
  10. ACCL SPEED: per configurar la velocitat d’acceleració del robot. Aquesta velocitat substitueix la VELOCITAT MÀXIMA en diferents etapes de la pista, tal com es defineix a continuació.
  11. NO. DE FASES: per establir el nombre d’etapes en què s’utilitza ACCL SPEED.
  12. FASE 1: per establir les distàncies inicial i final de l'etapa en què la VELOCITAT MÀXIMA se substitueix per ACCL VELOCITAT. Per a cada etapa, les distàncies inicial i final es poden configurar per separat.

Pas 20: Calibració del sensor de línia

Image
Image

El calibratge del sensor de línia és el procés pel qual es determina el valor llindar de cadascun dels 16 sensors. Aquest valor llindar s’utilitza per decidir si un sensor concret està sobre la línia o no. Per determinar els valors llindars de 16 sensors, fem servir qualsevol dels dos mètodes.

FILTRE MITJÀ: en aquest mètode, els sensors de línia es col·loquen sobre la superfície blanca i es pren un nombre predefinit de lectures dels sensors per als 16 sensors. Es determinen els valors medians de tots els 16 sensors. El mateix procés es repeteix després de col·locar els sensors de línia sobre la superfície negra. El valor llindar és la mitjana dels valors medians de les superfícies en blanc i negre.

MÀXIM MÍNIM: En aquest mètode, els valors del sensor es llegeixen repetidament fins que l'usuari sol·licita una parada. S'emmagatzemen els valors màxim i mínim trobats per cada sensor. El valor llindar és la mitjana dels valors mínim i màxim.

Els valors llindars així obtinguts s’assignen a un interval de 0 a 1000.

El calibratge dels sensors de línia pel mètode MIN MAX es mostra al vídeo. Després de calibrar els sensors de línia, es poden visualitzar les dades tal com es mostra a la imatge. Es mostra la informació següent.

  • Representació binària de 16 bits de la posició de la línia amb un binari 1 que indica que el sensor de línia corresponent està sobre la línia i un 0 binari que indica que el sensor de línia està fora de línia.
  • Recompte del nombre total de sensors que hi ha a la línia.
  • Valors mínims, màxims i del sensor (en brut i normalitzat) dels 16 sensors, un sensor a la vegada.
  • Posició de línia entre -7500 i +7500.

Els valors mínims i màxims del sensor de línia s’emmagatzemen a EEPROM.

Pas 21: prova d'execució

Image
Image

El vídeo tracta d'una prova en què el robot està programat per aturar-se després de completar una volta.

Pas 22: Pensaments finals i millores

Concurs de robots
Concurs de robots

El maquinari que es configura per construir aquest robot no és utilitzat al màxim pel programa que l’executa. Es poden fer moltes millores a la part del programa. En l'actualitat, els sensors de moviment del blindatge de prop no s'utilitzen per determinar la posició i l'orientació. Les dades d’odometria dels codificadors es poden combinar amb les dades d’orientació de l’escut de prop per determinar amb precisió la posició i l’encapçalament del robot. Aquestes dades es poden utilitzar per programar el robot perquè aprengui la pista en diverses voltes. Us animo a experimentar amb aquesta part i compartir els vostres resultats.

Bona sort.

Concurs de robots
Concurs de robots

Accèssit al concurs de robots

Recomanat: