Taula de continguts:
Vídeo: Control de posició angular del motor pas a pas 28BYJ-48 amb Arduino i joystick analògic: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Aquest és un esquema de control per al motor pas a pas 28BYJ-48 que he desenvolupat per utilitzar-lo com a part del meu projecte final de dissertació. No ho he vist abans, així que vaig pensar que penjaria el que vaig descobrir. Amb sort, això ajudarà algú més.
El codi permet bàsicament a un motor pas a pas "copiar" la posició angular d'un joystick analògic, és a dir, si empeny el joystick cap endavant, el motor apunta cap al "nord". empenyeu el joystick cap a l'oest, el motor gira per apuntar en la mateixa direcció.
Per a la meva implementació, he exigit que, si es deixa anar el joystick, és a dir, no té cap posició angular, el motor torni a la direcció "casa". La direcció de casa és cap a l’est i el motor (o en arrendament qualsevol punter / dispositiu que tingueu connectat a l’eix de sortida!) També ha d’estar orientat cap a aquesta direcció quan s’encén.
Subministraments
Arduino Uno o similar
taulers de selecció i selecció de cables de pont (home a home, home a dona)
Alimentació de 5V
Mòdul de joystick analògic (idealment amb una funció de botó instantani momentània, això facilita el descans de la posició "casolana"
Motor pas a pas 28BYJ-48 i controlador pas a pas ULN2003
Bolígraf, paper i blu-tac (o qualsevol altre dispositiu punter per connectar al motor!)
Pas 1: Pas 1: Configuració
Connecteu el motor pas a pas al controlador pas a pas i connecteu els pins de la següent manera:
IN1: pin 8 d'Arduino
IN2: pin 9 d'Arduino
IN3 - Pin 10 d'Arduino
IN4: pin 11 d'Arduino
Connecteu la font d'alimentació de 5v als rails de subministrament de la vostra placa de connexió i connecteu les entrades de 5v d'ULN2003 als rails de subministrament. connecteu el rail de terra a terra del vostre Arduino.
per al joystick, connecteu-vos de la següent manera:
Pin de commutació: pin Arduino 2
Eix X - Arduino A0 (analògic en 0)
Eix Y: Arduino A1
+ 5V: sortida Arduino de 5V
GND: Arduino GND
Finalment, connecteu la terra de la vostra taula de treball a l’altre pin Arduino GND
Pas 2: Pas 2: explicació del codi
He inclòs el codi Arduino complet per descarregar i utilitzar. Però faré tot el possible per explicar aquí les parts pertinents.
La teoria darrere d’aquest codi és que l’espai que ocupa el joystick es divideix en un gràfic, amb 0, 0 al centre. tanmateix, les entrades del joystick es troben a (aproximadament) 512 al centre, de manera que per superar això s'utilitzen dues funcions per "zero" el valor llegit des de l'eix X i Y. depenent de la font d'alimentació que utilitzeu, potser haureu d'alterar els valors de les funcions ZeroX i ZeroY perquè el vostre joystick doni una lectura fiable de 0 quan descanseu.
Quan es llegeixen els valors X, Y, primer es converteixen en radians mitjançant la funció atan2 () de la biblioteca math.h. Explicar aquesta funció està fora de l’abast d’aquesta instrucció, però si us plau, aneu a buscar-la: és un truc de geometria força senzill.
Finalment, per facilitar la vida a aquells que solíem treballar en graus en lloc de rads, el valor rad calculat per atan2 () es converteix en graus.
A la part superior del bucle hi ha un petit fragment de codi que us permet fer clic al botó momentani del joystick per moure la ubicació "de casa". Això va ser increïblement útil en provar el codi, però l’he deixat perquè puc veure com en alguns casos pot ser útil.
Ara es troba al gruix principal del codi. Comencem llegint el joystick X, coordenades Y separades dues vegades per un retard de 10 ms i després comprovant si són iguals. Vaig trobar que el joystick produïa ocasionalment lectures esporàdiques, i aquest lleu retard era suficient per aturar el gir del motor basat en aquestes. També és un retard prou curt que no sembla que interfereixi amb les entrades intencionals.
La resta del codi s’explica per si mateix i he fet tot el possible per documentar-lo; Una sèrie d’afirmacions IF comparen l’angle actual del joystick amb l’angle del motor i mouen el motor a aquest angle. El 28BYJ-48 té 5.689 passos per grau, de manera que multiplicem el moviment requerit per aquest nombre aparentment senar.
L’única part del codi que requereix més explicació és el que he batejat amb el nom de “cas global”. Tot i que el joystick i el motor es trobaven en, per exemple, + 175 °, i el joystick es va moure posteriorment a -175 ° (un moviment de només 10 ° al joystick, des del nord oest fins al sud oest), el motor es mouria EN LA DIRECCIÓ MAL A 350 °. per explicar això, es va escriure el cas especial.
El cas envoltant comença comprovant que el motor i el joystick tenen signes oposats, és a dir, el motor és positiu i el joystick negatiu, o viceversa. També comprova que la suma dels valors absoluts (és a dir, positius) del joystick i del motor estan per sobre de 180 °.
Si aquestes dues afirmacions són certes, la funció comprova si el motor necessita moure's en sentit horari (el valor del motor és negatiu) o en sentit antihorari (si el valor del motor és positiu).
Els valors absoluts de l'angle del motor i l'angle del joystick es sumen i es resten de 360 ° per determinar la distància a moure. Finalment, l'angle del motor (que ara reflecteix l'angle del joystick) s'actualitza com a tal.
Pas 3: ACABAT
Per tant, només queda carregar el codi al vostre Arduino i executar-lo. Vegeu el vídeo anterior per obtenir una bona idea de com funciona el projecte. Això seria útil per a càmeres cardanals, braços robòtics i moltes altres aplicacions.
Si utilitzeu el codi, feu-m'ho saber i, si veieu algun lloc on es pot millorar el codi, m'agradaria escoltar els vostres comentaris.
Recomanat:
Motor pas a pas controlat Motor pas a pas sense microcontrolador: 6 passos
Motor pas a pas controlat pel motor pas a pas sense microcontrolador. Aquest projecte no requereix cap circuit complex ni un microcontrolador. Així doncs, sense més, comencem
Motor pas a pas controlat pel motor pas a pas sense microcontrolador (V2): 9 passos (amb imatges)
Motor pas a pas controlat amb motor pas a pas sense microcontrolador (V2): en una de les meves instruccions anteriors, us vaig mostrar com controlar un motor pas a pas mitjançant un motor pas a pas sense microcontrolador. Va ser un projecte ràpid i divertit, però va venir amb dos problemes que es resoldran en aquest instructiu. Llavors, enginy
Locomotora model controlada per motor pas a pas - Motor pas a pas com a codificador rotatiu: 11 passos (amb imatges)
Locomotora controlada per motor pas a pas | Motor pas a pas com a codificador rotatiu: en una de les instruccions anteriors, vam aprendre a utilitzar un motor pas a pas com a codificador rotatiu. En aquest projecte, ara utilitzarem aquest motor pas a pas encodador giratori per controlar una locomotora model mitjançant un microcontrolador Arduino. Així, sense fu
Motor pas a pas controlat Motor pas a pas com a codificador rotatiu: 11 passos (amb imatges)
Motor pas a pas controlat Motor pas a pas com a codificador rotatiu: teniu un parell de motors pas a pas al voltant i voleu fer alguna cosa? En aquesta instrucció, fem servir un motor pas a pas com a codificador rotatiu per controlar la posició d’un altre motor pas a pas mitjançant un microcontrolador Arduino. Així doncs, sense més preàmbuls, anem a
Control de posició del motor de CC: 5 passos
Control de la posició del motor de CC: aquesta instrucció mostrarà com controlar la posició del motor a través de la xarxa web local. Ara podeu utilitzar el telèfon intel·ligent o l'iPad connectat a la xarxa i, a continuació, escriure l'adreça del servidor web local del motor A partir d'aquí, podem controlar el disc de posició del motor girant