Taula de continguts:

Conduïu un motor pas a pas amb un microprocessador AVR: 8 passos
Conduïu un motor pas a pas amb un microprocessador AVR: 8 passos

Vídeo: Conduïu un motor pas a pas amb un microprocessador AVR: 8 passos

Vídeo: Conduïu un motor pas a pas amb un microprocessador AVR: 8 passos
Vídeo: Part 1 - Around the World in 80 Days Audiobook by Jules Verne (Chs 01-14) 2024, Juliol
Anonim
Conduïu un motor pas a pas amb un microprocessador AVR
Conduïu un motor pas a pas amb un microprocessador AVR

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

Conegueu els Steppers
Conegueu els Steppers
Conegueu els Steppers
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ú

Trobeu punts en comú
Trobeu punts en comú
Troba punts en comú
Troba 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

Esbrineu l’ordre de pas
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

Agafar el motor per provar-lo
Agafar 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

Afegiu un controlador de motor
Afegiu un controlador de motor
Afegiu un controlador de motor
Afegiu un controlador de motor
Afegiu un controlador de motor
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: