El 28BYJ-48 je unipolarni koračni motor nizki stroški in visoka natančnost, idealni za elektronske projekte, za 3D tiskalnike, CNC stroje in robotiko. Zaradi svoje kompaktne velikosti, nizke porabe energije in enostavne uporabe je priljubljena izbira za ljubitelje elektronike in profesionalce.
Poleg tega je skupaj s tem motorjem a modul z ULN2003, za vaš nadzor. Na ta način imamo vse, kar je potrebno, da lahko ta sistem v celoti uporabljamo z uporabo mikrokontrolerja ali plošče Arduino ali podobno.
Kaj je koračni motor 28BYJ-48?
Un koračni motor je vrsta elektromotorja ki se premika v majhnih diskretnih kotnih korakih, namesto v neprekinjenem vrtenju. Deluje s pomočjo nabora elektromagnetov, ki se aktivirajo v določenem zaporedju. Z aktiviranjem različnih elektromagnetov se ustvari magnetno polje, ki privlači rotor motorja in povzroči, da se vrti korak za korakom. Število korakov na vrtljaj in natančnost gibanja sta odvisna od specifične zasnove motorja in uporabljenega krmilnega zaporedja.
Znotraj koračnih motorjev poznamo dve vrsti:
- Unipolarni- Imajo en komplet tuljav in potrebujejo poseben krmilnik za obračanje toka in omogočanje vrtenja motorja v obe smeri.
- Bipolarna- Imajo dva sklopa neodvisnih tuljav, ki jim omogočata vrtenje v obe smeri brez potrebe po posebnem krmilniku.
V primeru 28BYJ-28 je unipolarni tip, kot sem že omenil. In znotraj te skupine je značilno, da ima naslednje specifikacije:
- Unipolarni steper: preprosto upravljanje s samo 4 kabli.
- Integriran reduktor: ponuja visoko natančnost (0.088° na korak) in navor (3 N·cm).
- Nizka poraba: 83 mA (5V model) ali 32 mA (12V model).
- hranjenje: 5V ali 12V (odvisno od modela).
- Ekonomična cena: od 1.2 € na enoto ali malo več, če imajo vključen modul ULN2003.
Kot za možne aplikacije, nekatere sem že omenil, tukaj pa vam ponovno podajam nekaj idej za vaše projekte:
- Krmiljenje hidravličnih in pnevmatskih ventilov.
- Zgibni roboti in robotske roke.
- Položaj senzorja.
- Vrtljive mize za skenerje.
- 3d tiskalniki.
- CNC stroji.
Koračni motor ne deluje sam, potrebuje še en element. V tem primeru, 28BYJ-48 krmili plošča z integriranim ULN2003, ki omogoča, da se tok izhodov Arduino ojača za napajanje tuljav motorja. Z aktiviranjem tuljav v pravilnem zaporedju se motor vrti korak za korakom z veliko natančnostjo.
Vrste krmilnih sekvenc in faz
Tu različna krmilna zaporedja za 28BYJ-48, najpogostejši so:
- Celotno zaporedje valov: Aktivira vse tuljave hkrati.
- Zaporedje pol korakov: hkrati aktivira dve sosednji tuljavi.
- Mikroskopsko zaporedje korakov: Aktivira eno tuljavo naenkrat.
Poglejmo faze Podrobno:
- Zaporedje 1-fazno: V 1-faznem zaporedju vklopimo eno tuljavo naenkrat. Če to zaporedje vžiga prenesemo v tabelo, bi bilo treba v pinoutu motorja ustvariti naslednje:
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-fazno zaporedje: v vsaki fazi vključimo dve korelativni tuljavi, zato je generirano magnetno polje večje (41% več), zato ima motor večji navor, torej dobimo večjo moč. Kot negativno točko podvojimo porabo energije. Kar se tiče tabele, bi bilo:
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 |
- Zaporedje pol korakov: To je še ena od stopenj, ki si jih bomo ogledali, izkusite lahko tisto, kar vas najbolj zanima. Tukaj izmenično vklopimo eno in dve tuljavi, pri čemer dosežemo natančnost pol koraka. Uporablja se v aplikacijah, kjer je potrebna največja natančnost, čeprav lahko pride do težav, ko je aplikacija na meji navora. Izražanje zaporedja v obliki tabele povzroči:
Pol-korak | 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 z Arduinom
Prva stvar je pravilno povezati modul in motor 28byj-48 na našo ploščo Arduino, morate za to narediti preprosto naslednje povezave:
- Pin – od ULN2003 do GND Arduina.
- Pin + ULN2003 na Vcc (5 V ali v drugih primerih, če je motor 12 V, bi bilo treba uporabiti napajalnik s to napetostjo) iz Arduina.
- IN1, IN2, IN3 in IN4 ULN2003 na digitalne vhode D8, D9, D10 in D11 Arduina.
- Motor 28byj-48 preprosto priključite na vrata na modulu ULN2003.
Zdaj, ko ste povezani, je naslednja stvar uporaba primer v Arduino IDE, ki ga lahko uporabite takšnega, kot je, da eksperimentirate ali ga spremenite po svojih željah. V tem primeru so vse fazne tabele komentirane, na primer // pred vrstico, saj veste ... Če želite uporabiti eno od njih, samo izbrišite // pred navodili.
//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)); }