El 28BYJ-48 on unipolaarne samm-mootor madal hind ja kõrge täpsus, ideaalne elektroonikaprojektide, 3D-printerite, CNC-masinate ja robootika jaoks. Selle kompaktne suurus, madal energiatarve ja kasutuslihtsus teevad sellest populaarse valiku elektroonikahuviliste ja professionaalide seas.
Lisaks on koos selle mootoriga a moodul ULN2003-ga, teie kontrolliks. Nii on meil olemas kõik vajalik selle süsteemi täielikuks kasutamiseks mikrokontrolleri või plaadi abil Arduino või muu sarnane.
Mis on 28BYJ-48 samm-mootor?
Un samm-mootor on teatud tüüpi elektrimootor mis liigub väikeste diskreetsete nurksammudega, mitte pideva pöörlemisega. See töötab kindlas järjestuses aktiveeritud elektromagnetide komplekti abil. Erinevate elektromagnetite aktiveerimisel tekib magnetväli, mis tõmbab ligi mootori rootorit, pannes selle ühe sammu kaupa pöörlema. Sammude arv pöörde kohta ja liikumise täpsus sõltuvad konkreetsest mootori konstruktsioonist ja kasutatavast juhtimisjärjestusest.
Sammmootorites on kahte tüüpi:
- Unipolaarne- Neil on üks mähiste komplekt ja voolu pööramiseks ja mootori mõlemas suunas pöörlemiseks on vaja spetsiaalset kontrollerit.
- Bipolaarne- Neil on kaks sõltumatute mähiste komplekti, mis võimaldavad neil mõlemas suunas pöörata, ilma et oleks vaja spetsiaalset kontrollerit.
28BYJ-28 puhul on see unipolaarne, nagu ma varem mainisin. Ja selles rühmas iseloomustab seda järgmine näitajad:
- Unipolaarne stepper: lihtne juhtimine ainult 4 kaabliga.
- Integreeritud reduktor: pakub suurt täpsust (0.088° sammu kohta) ja pöördemomenti (3 N·cm).
- Madal tarbimine: 83 mA (5 V mudel) või 32 mA (12 V mudel).
- toitmine: 5V või 12V (olenevalt mudelist).
- Ökonoomne hind: alates 1.2 eurost ühiku kohta või veidi rohkem, kui need sisaldavad ULN2003 moodulit.
Kuna võimalikud rakendused, mainisin mõnda neist juba varem, kuid siin annan teile taas mõned ideed teie projektide jaoks:
- Hüdrauliliste ja pneumaatiliste ventiilide juhtimine.
- Liigendatud robotid ja robotkäed.
- Anduri positsioneerimine.
- Skannerite pöörlevad lauad.
- 3D-printerid.
- CNC masinad.
Sammmootor üksi ei tööta, selleks on vaja teist elementi. Sel juhul, 28BYJ-48 juhib integreeritud ULN2003-ga tahvel, mis võimaldab mootoripoolide toiteks Arduino väljundite voolu võimendada. Aktiveerides mähised õiges järjestuses, pöörleb mootor samm-sammult väga täpselt.
Juhtjadade ja faaside tüübid
seal 28BYJ-48 erinevad juhtimisjärjestused, kõige levinumad on:
- Täielik lainejada: aktiveerib kõik mähised korraga.
- Poole sammu jada: Aktiveerib kaks kõrvuti asetsevat mähist korraga.
- Mikroskoopiline sammude jada: Aktiveerib ühe mähise korraga.
Vaatame faasid üksikasjalikult:
- Jada 1-faas: 1-faasilises järjestuses lülitame sisse ühe mähise korraga. Võttes selle süütejärjestuse tabelisse, tuleb mootori pistikupesas genereerida järgmine:
Paso | A | B | A ' | B' |
---|---|---|---|---|
1 | ON | OFF | OFF | OFF |
2 | OFF | ON | OFF | OFF |
3 | OFF | OFF | ON | OFF |
4 | OFF | OFF | OFF | ON |
- 2-faasiline järjestus: lülitame igas faasis sisse kaks korrelatiivset mähist, nii et genereeritav magnetväli on suurem (41% rohkem), nii et mootoril on suurem pöördemoment, see tähendab, et me saame rohkem tugevust. Negatiivse punktina kahekordistame energiatarbimist. Mis puudutab tabelit, siis see oleks:
Paso | A | B | A ' | B' |
---|---|---|---|---|
1 | ON | ON | OFF | OFF |
2 | OFF | ON | ON | OFF |
3 | OFF | OFF | ON | ON |
4 | ON | OFF | OFF | ON |
- Poolesammuline jada: See on veel üks etapp, mida me vaatame, saate kogeda seda, mis teile kõige rohkem huvi pakub. Siin lülitame vaheldumisi sisse ühe ja kaks mähist, saavutades poole sammu täpsuse. Seda kasutatakse rakendustes, kus on vaja suurimat täpsust, kuigi võib esineda probleeme, kui rakendus on pöördemomendi piiril. Jada väljendamine tabeli kujul annab tulemuseks:
Poolsamm | A | B | A ' | B' |
---|---|---|---|---|
1 | ON | OFF | OFF | OFF |
2 | ON | ON | OFF | OFF |
3 | OFF | ON | OFF | OFF |
4 | OFF | ON | ON | OFF |
5 | OFF | OFF | ON | OFF |
6 | OFF | OFF | ON | ON |
7 | OFF | OFF | OFF | ON |
8 | ON | OFF | OFF | ON |
28BYJ-28 koos Arduinoga
Esimene asi on korralikult ühendada moodul ja mootor 28byj-48 meie Arduino tahvlile, selleks peate lihtsalt looma järgmised ühendused:
- Pin – alates ULN2003 kuni Arduino GND.
- ULN2003 pin + Vcc-le (5 V või muudel juhtudel, kui see on 12 V mootor, tuleks kasutada selle pingega toiteallikat) Arduinost.
- ULN1 IN2, IN3, IN4 ja IN2003 Arduino digitaalsisenditele D8, D9, D10 ja D11.
- 28byj-48 mootor, ühendage see lihtsalt mooduli ULN2003 porti.
Nüüd, kui olete ühenduses, on järgmine asi kasutada näide Arduino IDE-s, mida saate kasutada katsetamiseks või oma maitse järgi muutmiseks. Selles näites on kõik faasitabelid välja kommenteeritud, näiteks // rea ees, tead... Kui tahad mõnda neist kasutada, siis lihtsalt kustuta // juhiste ees.
//Definir los pines const int motorPin1 = 8; // 28BYJ48 In1 const int motorPin2 = 9; // 28BYJ48 In2 const int motorPin3 = 10; // 28BYJ48 In3 const int motorPin4 = 11; // 28BYJ48 In4 //Definición de variables int motorSpeed = 1200; //Velocidad del motor int stepCounter = 0; //Contador de pasos int stepsPerRev = 4076; //Pasos para un giro completo //Tablas de secuencia (descomentar la que necesites) //Secuencia 1-fase //const int numSteps = 4; //const int stepsLookup[4] = { B1000, B0100, B0010, B0001 }; //Secuencia 2-fases //const int numSteps = 4; //const int stepsLookup[4] = { B1100, B0110, B0011, B1001 }; //Secuencia media fase //const int numSteps = 8; //const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 }; void setup() { //Declarar los pines usados como salida pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); } void loop() { for (int i = 0; i < stepsPerRev * 2; i++) { clockwise(); delayMicroseconds(motorSpeed); } for (int i = 0; i < stepsPerRev * 2; i++) { anticlockwise(); delayMicroseconds(motorSpeed); } delay(1000); } void clockwise() { stepCounter++; if (stepCounter >= numSteps) stepCounter = 0; setOutput(stepCounter); } void anticlockwise() { stepCounter--; if (stepCounter < 0) stepCounter = numSteps - 1; setOutput(stepCounter); } void setOutput(int step) { digitalWrite(motorPin1, bitRead(stepsLookup[step], 0)); digitalWrite(motorPin2, bitRead(stepsLookup[step], 1)); digitalWrite(motorPin3, bitRead(stepsLookup[step], 2)); digitalWrite(motorPin4, bitRead(stepsLookup[step], 3)); }