Arduino Uno a Krokový motor s ovládačom ULN2003

Krokový motor 28BYJ-48

spadajú niekde medzi konvenčný jednosmerný motor a servomotor. Môžu sa otáčať nepretržite ako jednosmerné motory a môžu byť nastavované presne (v diskrétnych krokoch) ako servomotory. Ak s krokovými motormi ešte len začínate, 28BYJ-48 je skvelá voľba. Zvyčajne sa dodávajú s doskou ovládača založenou na ULN2003, vďaka čomu sa veľmi jednoducho používajú.

Krokový motor 28BYJ-48

Keďže motor nepoužíva kontaktné kefy, má pomerne presný chod a je celkom spoľahlivý.

Napriek malým rozmerom poskytuje motor slušný krútiaci moment 34,3 mN.m pri otáčkach okolo 15 ot./min. Poskytuje dobrý krútiaci moment aj pri zastavení ho vie aj udržiavať.

  • 1.Cievka
  • 2.Cievka
  • 3.Cievka
  • 4.Cievka
  • 5 – Volt
28BYJ-48

28BYJ-48 má dve cievky, z ktorých každá má stredový kolík. Tieto kolíky sú vnútorne spojené a vyvedené ako 5. vodič (červený vodič).

28BYJ-48

Krokový motor sa otáča iba vtedy, keď sú fázy napájané v logickej sekvencii známej ako kroková sekvencia.

Každý krok zodpovedá otočeniu o 11,25°. To znamená, že na jednu otáčku je to 32 krokov

Prevodovka vo vnútri motora je v pomere 64:1. Výsledkom je 2048 (32*64) krokov na 1 otáčku.

28BYJ-48 odoberá približne 240 mA.

Pretože motor spotrebúva značné množstvo energie, je lepšie ho napájať z externého 5V napájacieho zdroja a nie z Arduina. Motor spotrebúva energiu, aj keď je v pokoji, aby si udržiaval svoju polohu.

  • Prevádzkové napätie : 5V(DC)
  • Počet fáz : 4
  • Prevodový pomer : 64:1
  • Krokový uhol : 5,625°/64
  • Frekvencia : 100Hz
  • Krútiaci moment : >34,3 mN
Rozmer-dosky-ULN2003

Pretože krokový motor 28BYJ-48 spotrebuje značné množstvo energie, nemôže byť riadený priamo mikrokontrolérom. Na ovládanie motora je potrebný riadiaci IC, napríklad ULN2003; preto sa tento motor zvyčajne dodáva s doskou ovládača založenou na ULN2003.

ULN2003 pozostáva z poľa siedmich párov Darlingtonových tranzistorov, z ktorých každý môže riadiť záťaž až 500 mA a 50 V. Táto doska využíva štyri zo siedmich párov.

ULN2003- 500mA-50V
  • 500mA
  • 50V

Doska má štyri ovládacie vstupy a prípojku na napájanie. Okrem toho je tu konektor Molex, ktorý je kompatibilný s konektorom na motore, čo vám umožňuje zapojiť motor priamo do neho. Doska obsahuje štyri LED diódy, ktoré indikujú aktivitu na štyroch riadiacich vstupných linkách. Poskytujú dobrú vizuálnu indikáciu pri krokovaní. Na doske je prepojka ON/OFF na vypnutie krokového motora v prípade potreby.

ULN2003-popis
  • N1,N2 ,N3 ,N4 – Sú vstupné kolíky ovládania motora. Pripojte ich k digitálnym výstupným kolíkom Arduina.
  • 5-12V – Tieto kolíky poháňajú motor. Pretože motor spotrebováva značné množstvo energie, je vhodné použiť externý 5V napájací zdroj.
  • Molex – Tu sa zasunie konektor pre motor. Konektor je zakľúčovaný, takže pôjde len jedným smerom. (5pin).

Pripojte IN1, IN2, IN3 a IN4 piny dosky ovládača k digitálnym kolíkom 8, 9, 10 a 11 Arduino. Potom pripojte krokový motor k ovládaču ULN2003.

Arduino-uno-ULN2003

Knižnica (Arduino Stepper Library) spracováva postupnosť krokovania a umožňuje vám ovládať širokú škálu unipolárnych a bipolárnych krokových motorov.

Tu je program, ktorý otáča motor pomaly jedným smerom a potom rýchlo opačným smerom.

skica začína zahrnutím vstavanej knižnice.

Ďalej je definovaný konštantný počet krokov za otáčku, ktorý obsahuje počet „krokov“, ktoré motor vykoná na dokončenie jednej otáčky. V našom prípade je to 2038.

Postupnosť krokov unipolárneho krokového motora 28BYJ-48 je IN1-IN3-IN2-IN4. Tieto informácie použijeme na ovládanie motora vytvorením inštancie knižnice myStepper so sekvenciou pinov 8, 10, 9, 11.

Keďže knižnica interne konfiguruje štyri ovládacie kolíky ako výstupy, v nastavovacej funkcii nie je čo konfigurovať, takže zostane prázdna.

Vo funkcii loop používame funkciu setSpeed() na určenie rýchlosti, ktorou sa má krokový motor pohybovať, a funkciu step() na určenie počtu krokov, ktoré treba vykonať.

Zadanie záporného čísla do funkcie step() spôsobí, že sa motor roztočí v opačnom smere.

Prvá časť kódu spôsobuje, že sa motor otáča veľmi pomaly v smere hodinových ručičiek, zatiaľ čo druhá spôsobuje, že sa otáča rýchlo proti smeru hodinových ručičiek.

Knižnica (Arduino Stepper Library) je ideálna pre jednoduché aplikácie s jedným motorom. Ak však chcete ovládať viacero motorov, budete potrebovať výkonnejšiu knižnicu. Pre náš ďalší experiment teda použijeme pokročilú knižnicu krokových motorov – knižnicu AccelStepper.

Prevyšuje štandardnú knižnicu Arduino Stepper nasledujúcimi spôsobmi:

  • Podporuje zrýchlenie a spomalenie.
  • Podporuje polohovanie v polovičnom kroku.
  • Podporuje viacero motorov naraz, s nezávislým krokovaním na každom motore.

Táto knižnica nie je súčasťou Arduino IDE, takže si ju musíte najskôr nainštalovať.

Ak chcete nainštalovať knižnicu, prejdite na Sketch > Include Library > Manage Libraries

stepp-motor-nainstalovať-knižnicu

Filtrujte vyhľadávanie zadaním „accelstepper“. Kliknite na prvú položku a potom vyberte Inštalovať.

accelstepper- arduino-uno

Tu je jednoduchý náčrt, ktorý zrýchľuje krokový motor v jednom smere a potom spomaľuje, aby sa zastavil. Po jednej otáčke motor zmení smer otáčania a proces zopakuje.

Program začína zahrnutím novo nainštalovanej knižnice AccelStepper.

Potom určíme typ rozhrania motora pre knižnicu AccelStepper.

V tomto prípade budeme štvorvodičový krokový motor poháňať v plnokrokovom režime, preto nastavíme konštantu MotorInterfaceType na 4. Ak chcete motor spustiť v polovičnom kroku, nastavte konštantu na 8.

Ďalej vytvoríme inštanciu knižnice myStepper s príslušným typom rozhrania motora a sekvenciou pinov 8, 10, 9, 11. (Nezabudnite, že postupnosť krokov pre tieto motory je IN1-IN3-IN2-IN4 ).

Vo funkcii setup sú maximálne povolené otáčky motora nastavené na 1000 (motor na túto rýchlosť zrýchli, keď ho spustíme).

Konštantná rýchlosť je nastavená na 200. A keďže 28BYJ-48 urobí 2038 krokov na otáčku, cieľová poloha je tiež nastavená na 2038.

Vo funkcii loop() sa príkaz if používa na určenie toho, ako ďaleko musí motor prejsť (načítaním vlastnosti distanceToGo) pred dosiahnutím cieľovej polohy (nastavenej pomocou moveTo). Keď distanceToGo dosiahne nulu, motor sa otočí v opačnom smere nastavením polohy moveTo.

V spodnej časti cyklu si všimnete, že sa volá funkcia run(). Toto je najdôležitejšia funkcia,motor sa vám bez toho nepohne.

motor
motor

Pridajme do nastavenia druhý krokový motor 28BYJ-48.

Pripojte IN1, IN2, IN3 a IN4 k digitálnym kolíkom Arduino 4, 5, 6 a 7.

  • IN1 – 8
  • IN2 – 9
  • IN3 – 10
  • IN4 – 11
  • GND – GND
  • IN1 – 4
  • IN2 – 5
  • IN3 – 6
  • IN4 – 7
  • GND – GND

Ako to zostaviť:

Arduino-ULN2003

Tu je náčrt, ktorý poháňa jeden motor v režime plného kroku a druhý v režime polovičného kroku pri zrýchľovaní a spomaľovaní. Po jednej otáčke sa zmení smer ich otáčania.


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky