Taula de continguts:
- Pas 1: Conegueu els Steppers
- Pas 2: cerqueu punts en comú
- Pas 3: esbrineu l’ordre de pas
- Pas 4: Preneu el motor per provar-lo
- Pas 5: gireu cap enrere i cap endavant
- Pas 6: Mai no faig mig pas, perquè no sóc mig pas …
- Pas 7: afegiu un controlador de motor
- Pas 8: el final
Vídeo: Conduïu un motor pas a pas amb un microprocessador AVR: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
Teniu alguns motors pas a pas descarregats de les impressores / unitats de disc / etc?
Alguns sondejos amb un ohmímetre, seguits d'un codi de control simple al microprocessador i anireu seguint l'estil.
Pas 1: Conegueu els Steppers
Bàsicament, haureu d’esbrinar cap a on van tots els petits cables.
El primer pas és esbrinar si es tracta d’un motor unipolar o bipolar. Feu una ullada a Jones on Steppers per obtenir una informació més profunda i, a continuació, al lloc d'Ian Harries per obtenir un mètode senzill per esbrinar un motor desconegut. Llegiu-ne una mica i, a continuació, acompanyeu-me en un recorregut detallat d’aquest motor que he obtingut a bon preu. (Estan a la venda per 0,99 dòlars ara mateix. Són petits, relativament lleugers, però no tenen molt parell. No sé per a què servirà encara.)
Pas 2: cerqueu punts en comú
Per tant, teniu cinc (o quatre o sis) cables. El vostre motor tindrà dues meitats i, probablement, fins i tot es podrà dir només mirant a quin costat pertany cada fil.
Si només mireu quatre cables, esteu de sort: és un motor bipolar. Tot el que heu de fer és esbrinar quins dos parells de cables van junts. Si teniu un motor unipolar o més de 4 cables, haureu de trencar el vostre ohmímetre. El que busqueu és el cable comú (terra) de cada meitat. Es pot saber quina és la massa d’un motor bipolar perquè té la meitat de la resistència a qualsevol dels pols que la que fan els pols a través d’ells mateixos. A la foto es mostren les meves notes de connectar cables a cables i assenyalar la resistència (o si estan connectats). Podeu veure que el blanc és el terreny per al trio inferior b / c que té la meitat de la resistència al vermell o al blau que tenen entre si. (Aquest motor és estrany i no té cap aixeta central a la bobina de l’imant superior. És com si fos mig bipolar, mig unipolar. Potser podríeu utilitzar-lo per detectar la rotació de la bobina vermell-blanc-blau quan el negre-groc la bobina s’està accionant.)
Pas 3: esbrineu l’ordre de pas
Anava a conduir aquest motor com un motor bipolar, així que ignoro el cable de terra blanc. Només tinc quatre cables per preocupar-me.
És possible que vulgueu fer funcionar el motor unipolar com a bipolar, ja que utilitza tota la bobina en ambdues fases en lloc d’alternar entre les dues meitats de cada bobina. Més bobina = més parell. Executeu el corrent a través d’un parell (tenint en compte la polaritat que heu escollit) i, a continuació, passeu el corrent a través de l’altre parell al mateix temps. Quan enganxeu el segon parell, observeu en quina direcció gira el motor. Escriu això. Ara invertiu la polaritat del primer parell que trieu. A continuació, torneu a connectar el segon parell amb la seva polaritat també invertida. Tingueu en compte la direcció. A partir d’aquí hauríeu de ser capaços d’esbrinar la seqüència de rotació del motor en qualsevol direcció. En el meu exemple, tots dos van acabar girant en sentit contrari a les agulles del rellotge, de manera que, passant per la seqüència de la mateixa manera que he escollit, faré passar el motor CCW.
Pas 4: Preneu el motor per provar-lo
Si encara no esteu equipat per a la programació de microprocessadors, podríeu fer-ho pitjor que el Ghetto Development Kit o qualsevol dels diversos programadors PIC. Connecteu els cables directament al microproc i cremeu-los amb el codi següent:
/ * Jugant amb l'acció dels petits motors pas a pas. * /
/ * Inclou la funció de retard * / #define F_CPU 1000000UL #include / * Pin defs for ATTiny2313 * / / * Orderwise clock * / #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define VERMELL _BV (PB2) #define GROC _BV (PB3) # definir DELAY 200 / * mil·lisegons entre passos * / int main (void) {DDRB = 0xff; / * Activa la sortida a tots els pins B * / PORTB = 0x00; / * Establiu-los tots a 0v * / while (1) {/ * bucle principal aquí * / PORTB = BLAU; _delay_ms (DELAY); PORTB = NEGRE; _delay_ms (DELAY); PORTB = VERMELL; _delay_ms (DELAY); PORTB = GROC; _delay_ms (DELAY); }} Què tan simple és aquest codi? Realment senzill. Tot el que fa és fer algunes bones definicions per poder referir-me als cables per color en lloc dels seus noms de claus, i després els activa per seqüència amb un retard ajustable pel mig. Per començar, he seleccionat un retard de mig segon entre els passos. Vegeu el breu vídeo per veure els resultats. Si realment esteu interessats en el vostre joc, compteu el nombre de passos per cicle per esbrinar la resolució angular d’un pas del motor. (Ah, sí. PS. Unitats sense càrrega a 3,6 V fàcilment. Vegeu la bateria al vídeo.)
Pas 5: gireu cap enrere i cap endavant
Per tant, el teniu funcionant en sentit horari. Alguna cosa més interessant? Una mica de neteja de codi, i podem executar-lo d’anada i tornada. He posat la seqüència en el sentit de les agulles del rellotge en una matriu perquè pugui passar per les fases amb un bucle simple. Ara podeu executar el bucle cap amunt o cap avall per anar en sentit horari o antihorari.
int main (void) {const uint8_t delay = 50; const uint8_t en sentit horari = {BLAU, NEGRE, VERMELL, GROC}; uint8_t i; DDRB = 0xff; / * Activa la sortida a tots els pins B * / PORTB = 0x00; / * Establiu-los tots a 0v * / while (1) {/ * bucle principal aquí * / per (i = 0; i <= 3; i ++) {/ * passeu pels colors en sentit horari * / PORTB = en sentit horari ; _delay_ms (retard); } for (i = 3; i> = 0; i -) {/ * passeu pels colors ccw * / PORTB = en sentit horari ; _delay_ms (retard); }}} Mireu el vídeo descarnat per veure les respostes.
Pas 6: Mai no faig mig pas, perquè no sóc mig pas …
Deixa de banda la lírica, a mig pas, el motor és on es troba. Obteniu més intensitat de pic, més parell instantani i el doble de resolució angular. Mitjançant un pas breu: en lloc de Blau, Negre, Vermell, Groc, conduïu el motor amb Blau, Blau + Negre, Negre, Negre + Vermell, Vermell, Vermell + Groc, Groc, Groc + Blau. El resultat és que, durant la meitat del temps, participeu ambdós imants alhora. I durant els moments en què s’activen els dos conjunts, el motor apunta a mig camí entre els dos, reduint l’angle entre els "passos" i fent que el motor giri més suaument. Ho veus pel vídeo? No estic segur … Ara la part del codi que fa el pas a mitges té aquest aspecte:
void halfStepping (retard uint16_t, direcció uint8_t ) {uint8_t i; per a (i = 0; i <= 3; i ++) {PORTB = direcció ; / * part d'una sola bobina * / _delay_ms (endarreriment); PORTB | = direcció [i + 1]; / * afegir a mig pas * / _delay_ms (demora); }} La primera ordre PORTB estableix un pol únic a positiu i la resta a negatiu. Llavors espera. A continuació, la segona ordre PORTB estableix un segon pol (de l’altre bobinatge) a positiu, engranant els dos bobinatges per 1,4x el parell (i 2x el corrent). A continuació s’adjunta una llista completa del programa. Ara es defineixen dues matrius (en sentit horari i antihorari) i totes dues tenen 5 elements cadascun per permetre l'entrada i + 1 a la funció halfStepping.
Pas 7: afegiu un controlador de motor
Fins ara, tot bé.
L'únic problema és que el motor no sembla tenir tanta parella, cosa que es podria deure al fet que el microprocessador només apagarà ~ 50 mA per pin. El següent pas evident seria connectar-lo a un conductor de motor per subministrar-lo amb més suc. Però després penso una mica: només ho condueixo amb 5v i la resistència al bobinatge és de ~ 125 ohms. La qual cosa vol dir que el motor només dibuixa 40 mA per pin i que hauria de ser conduït bé pel xip AVR (resistent!). Per tant, per obtenir més tensió que condueix el motor, l’he connectat a un xip pont SN754410 H. El circuit és força senzill. Cada pin de l'AVR va a una entrada i els pins de sortida corresponents van al motor. El xip necessita 5v per a la secció lògica i pot prendre molta més tensió a la secció del motor. Funcionar amb 11.25v (tres bateries de 3.6v) va ajudar una mica. Molt més parell al meu dit, però encara no és una font d'energia. No està malament per a un motor que és més petit que un níquel. I ara el circuit s’ha convertit en un motor de pas bipolar d’ús general. Afegit el 29 de novembre: va funcionar el motor ahir a la nit a les 12v durant un temps i va començar a fer calor. No estic segur de si va ser un problema de freqüència ressonant o si va ser simplement massa corrent per als bobinats. Sigui com sigui, tingueu una mica de precaució si conduïu aquest petit motor amb tensions més grans.
Pas 8: el final
Llavors, què he après? Conduir un motor pas a pas amb un AVR (i un xip de pont H) és bastant fàcil, fins i tot en el mode de mig pas "elegant".
Encara no estic segur de què faré amb els petits motors pas a pas. Alguna suggerència?
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
Detectar objectes mentre conduïu un cotxe RC: 9 passos
Detectar objectes mentre conduïu un cotxe RC: aquest projecte tracta sobre l'ús de sensors d'ultrasons en un cotxe per detectar obstacles