Taula de continguts:

Robot autoequilibrant de dues rodes: 7 passos
Robot autoequilibrant de dues rodes: 7 passos

Vídeo: Robot autoequilibrant de dues rodes: 7 passos

Vídeo: Robot autoequilibrant de dues rodes: 7 passos
Vídeo: Невероятное Изобретение - Этот Дрон Изменит Все 2024, De novembre
Anonim
Robot autoequilibrant de dues rodes
Robot autoequilibrant de dues rodes

Aquesta instrucció passarà pel procés de disseny i construcció d’un robot autoequilibrant. Com a nota, només vull dir que els robots d’autoequilibri no són un concepte nou i que han estat construïts i documentats per altres. Vull aprofitar aquesta oportunitat per compartir amb vosaltres la meva interpretació d’aquest robot.

Què és un robot autoequilibrant?

Un robot d’equilibri automàtic és un sistema que utilitza dades de mesura inercial, recollides a partir d’un sensor incorporat, per ajustar contínuament la seva posició per mantenir-se en posició vertical.

Com funciona?

Una analogia simple a tenir en compte és un pèndol invertit. On el centre de massa està per sobre del punt de pivot. Tot i això, en el nostre cas, restringim el pèndol a 1 grau de llibertat en tenir un eix de rotació, en el nostre cas l’eix de rotació de les dues rodes. Com que qualsevol tipus de pertorbació causarà la caiguda del robot, necessitem un mètode per mantenir el robot activament equilibrat. Aquí és on entra en joc el nostre algorisme de bucle tancat (controlador PID), sabent en quina direcció està caient el nostre robot, podem ajustar la direcció de rotació dels nostres motors per mantenir el sistema equilibrat.

Com funciona l'algorisme de bucle tancat?

El principi bàsic per mantenir el robot equilibrat és que, si el robot cau cap endavant, compensarà movent la part inferior del robot cap endavant per atrapar-se i, per tant, mantenir-se vertical. De la mateixa manera, si el robot cau cap enrere, compensarà movent la part inferior del robot cap enrere per atrapar-se.

Per tant, hem de fer dues coses aquí, primer, hem de calcular l’angle d’inclinació (Roll) que experimenta el robot i, en conseqüència, hem de controlar el sentit de gir dels motors.

Com mesurarem l’angle d’inclinació?

Per mesurar l’angle d’inclinació utilitzarem una unitat de mesura inercial. Aquests mòduls incorporen un acceleròmetre i un giroscopi.

  • L’acceleròmetre és un dispositiu electromagnètic que mesura l’acceleració adequada, és a dir l’acceleració d’un cos en un marc de repòs instantani.
  • Un giroscopi és un dispositiu electromecànic que mesura la velocitat angular i que s’utilitza per determinar l’orientació del dispositiu.

No obstant això, el problema amb l’ús d’aquests sensors és que:

  • L’acceleròmetre és molt sorollós però és constant en el temps, l’angle varia amb moviments horitzontals bruscos
  • El valor del giroscopi, en canvi, es desplaçarà amb el pas del temps, però inicialment és bastant precís

Per a aquesta instrucció, no implementaré un filtre en lloc d'utilitzar el processament de moviment digital (DMP) incorporat. Altres han utilitzat un filtre complementari per obtenir un senyal suau i podeu triar el mètode que vulgueu. ja que el robot s'equilibra amb qualsevol de les dues implementacions.

Subministraments

Parts:

  1. Arduino Pro Mini 3.3V 8 amb un ATMEGA328 de 8 Mhz
  2. FT232RL 3.3V 5.5V FTDI USB a TTL mòdul adaptador sèrie
  3. Mòdul GY-521 amb MPU-6050
  4. Un parell de micromotors N20 de 6V a 300rpm
  5. Controlador de motor L298N
  6. LM2596S convertidor de CC a CC
  7. Bateria (paquet de bateria recarregable de 9,7 V Li-ion)
  8. Corretja de la bateria
  9. Dues plaques de circuits de prototipatge de PCB
  10. Filferes de pont dels passadors de capçalera masculins i femenins

Eines:

  1. Soldador i soldador
  2. Distanci de separador hexagonal de niló
  3. Joc de tornavisos de precisió
  4. Impressora 3D

Pas 1: construcció

Com que tenia accés a una impressora 3D, vaig decidir imprimir en 3D el xassís i fer servir separadors per connectar-ho tot.

El robot consta de 4 capes

  1. La capa inferior connecta els motors i té punts de muntatge per al mòdul del controlador del motor L298N
  2. La següent capa allotja el prototip de placa amb l’Arduino pro mini i les capçaleres soldades
  3. La tercera capa munta l’IMU
  4. La capa superior, que anomeno “capa de para-xocs”, fa passar la bateria, el convertidor de dòlars i un interruptor monetari

El meu principal principi de disseny era mantenir-ho tot modular. El motiu d'això va ser si alguna cosa va sortir malament amb un dels components, el podria substituir fàcilment o si necessitava un component per a un altre projecte, el puc prendre fàcilment sense preocupar-me de no poder tornar a utilitzar el sistema.

Pas 2: cablejat

Cablejat
Cablejat

Vaig soldar algunes pintes de capçaleres femenines a un tauler de perf per combinar-les amb els passadors de capçalera Arduino pro mini. Després d'això, he soldat els pins de capçalera masculins al tauler per permetre l'accés a la E / S. La resta de components es van muntar al marc imprès en 3D i es van connectar mitjançant cables de pont.

Pas 3: teoria de control

Ara passem al nucli del projecte. Per mantenir el robot equilibrat, hem de generar un senyal de control adequat per conduir els motors en la direcció correcta i a la velocitat correcta per mantenir el robot equilibrat i estable. Per fer-ho utilitzarem un popular algoritme de bucle de control conegut com a controlador PID. Com suggereix l'acrònim, hi ha tres termes per a aquest controlador, que són els termes proporcional, integral i derivat. Cadascun dels quals va acompanyat de coeficients que determinen la seva influència en el sistema. Sovint, la part més llarga de la implementació del controlador és ajustar els guanys de cada sistema únic per obtenir la resposta més òptima.

  • El terme proporcional multiplica directament l’error per donar una sortida, de manera que, com més gran sigui l’error, més gran serà la resposta
  • El terme integral genera una resposta basada en una acumulació de l'error per reduir l'error d'estat estacionari. Com més temps es desequilibri el sistema, més ràpid respondran els motors
  • El terme derivat és la derivada de l’error que s’utilitza per predir la resposta futura i, en fer-ho, redueix l’oscil·lació a causa de la superació de l’estat estacionari.

El principi bàsic d’aquest algorisme és calcular contínuament l’angle d’inclinació que és la diferència entre la posició desitjada i la posició actual, això es coneix com a error. A continuació, utilitza aquests valors d'error i calcula la suma de les respostes proporcionals, integrals i derivades per obtenir una sortida, que són els senyals de control que s'envien als motors. Com a resultat, si l’error és gran, el senyal de control enviat als motors farà girar els motors a gran velocitat per arribar a un estat equilibrat. De la mateixa manera, si l'error és petit, el senyal de control farà girar els motors a baixa velocitat per mantenir el robot equilibrat.

Pas 4: utilitzar MPU 6050

Biblioteca MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Calibració de les compensacions No tots els sensors són rèpliques exactes entre si. Com a resultat, si proveu dues MPU 6050, podeu obtenir valors diferents per a l’acceleròmetre i el giroscopi quan es col·loquen a la mateixa superfície. Per superar aquest desplaçament d’angle constant, hem de celebrar cada sensor que fem servir. S'està executant aquest script:

www.i2cdevlib.com/forums/topic/96-arduino-…

escrit per Luis Rodenas, obtindrem compensacions. Els errors de desplaçament es poden eliminar definint els valors de desplaçament a la rutina setup ().

Utilització del processador de moviment digital

El MPU6050 conté un processador digital de moviment (DMP).

Què és un DMP? Podeu pensar en el DMP com un microcontrolador integrat que processa el moviment complex des del giroscopi de 3 eixos i l’acceleròmetre de 3 eixos a bord del mpu6050, mitjançant els seus propis algorismes de fusió de moviment. Descarregant el processament que, en cas contrari, faria Arduino

Com utilitzar-lo? Per esbrinar com utilitzar el DMP, consulteu l’esquema d’exemple MPU6050_DMP6 que inclou la biblioteca MPU6050 (a l’IDE Arduino: Fitxer-> Exemple-> MPU6050-> MPU6050_DMP6). Aquesta també és una bona oportunitat per comprovar que el sensor funciona i que el cablejat és correcte

Pas 5: Codificació

Vaig utilitzar l’Arduino IDE i una interfície FTDI per programar l’Arduino pro mini.

Utilitzant l’esbós d’exemple (MPU6050_DMP6) que ve amb la biblioteca MPU6050 com a codi base, he afegit funcions PID () i MotorDriver ().

Afegiu la biblioteca

  • MPU6050: Per utilitzar el sensor MPU6050 haurem de descarregar la biblioteca de desenvolupadors I2C de Jeff Rowberg i afegir-la a la carpeta Arduino de "biblioteques" que es troba als fitxers del programa de l'ordinador.
  • Wire: també necessitem la biblioteca Wire que ens permeti comunicar-nos amb dispositius I2C.

Pseudo Codi

Inclou biblioteques:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Inicialitzar variables, constants i objectes

Configuració ()

  • Estableix el mode de pin per controlar motors
  • Estableix el mode de pin per al LED d'estat
  • Inicialitzeu el MPU6050 i configureu els valors de desplaçament

PID ()

Calculeu el valor PID

MotorDriver (resposta PID)

Utilitzeu el valor PID per controlar la velocitat i la direcció dels motors

Bucle ()

  • Obteniu dades de DMP
  • Truqueu a les funcions PID () a MotorDriver ()

Pas 6: Procediment de sintonització PID

Aquesta és la part més tediosa del projecte i requereix una mica de paciència, tret que tingueu molta sort. Aquests són els passos següents:

  1. Estableix el terme I i D a 0
  2. Sostenint el robot, ajusteu P de manera que el robot comenci a oscil·lar sobre la posició de l'equilibri
  3. Amb P set, augmenteu I perquè el robot acceleri més ràpidament quan no estigui en equilibri. Amb P i I ajustats adequadament, el robot hauria de poder auto-equilibrar-se durant almenys uns segons, amb alguna oscil·lació
  4. Finalment, augmenta D redueix l'oscil·lació

Si el primer intent no dóna resultats satisfactoris, repetiu els passos amb un valor diferent de P. També tingueu en compte que podeu ajustar els valors PID després per augmentar encara més el rendiment. Els valors aquí depenen del maquinari, no us sorprengueu si obteniu valors PID molt grans o molt petits.

Pas 7: Conclusió

Els motors de micro engranatges que s’utilitzaven eren lents per reaccionar davant de grans pertorbacions i, atès que el sistema era massa lleuger, no hi havia prou inèrcia per obtenir l’efecte de pèndol desitjat, de manera que si el robot s’inclina cap endavant, només s’inclinaria en un angle i correria cap endavant. Finalment, les rodes impreses en 3D són una mala opció, ja que continuen relliscant.

Suggeriments de millora:

  • Els motors més ràpids amb un parell més elevat, és a dir, per als motors de corrent continu són més elevats el voltatge nominal més elevat
  • aconseguir una bateria més pesada o simplement moure la massa una mica més amunt
  • Substitueix les rodes impreses en 3D per unes de goma per aconseguir més tracció

Recomanat: