IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

8. diel - Raspberry Pi - H-mostík a otáčanie motorkom

V predchádzajúcej lekcii, Veľká rodina Raspberry Pi - Prehľad modelov a ich funkcií , sme sa porozprávali o veľkej rodine modelov Raspberry Pi.

Dneska si ukážeme, ako ovládať akýkoľvek jednoduchý DC motor pomocou Raspberry Pi. Zoznámime sa s H-mostíkom a dvoma typmi motorov, ktoré možno určite pomocou neho ovládať. Nakoniec si naše vedomosti overíme programovaním v Pythone, v ktorom si napíšeme program. Ako vždy, budem používať fotky svojej schémy, ako som projekt zostavil. Schémy sú vytvorené v programe Fritzing.

Potrebné súčiastky

Na dnešnej jednoduché zapojenie budeme potrebovať tieto súčiastky:

  • H-mostík
  • Raspberry Pi
  • DC motor

Krokové motory vs. DC motory

Než sa pustíme do nejakej akcie, musíme si najskôr prejsť teóriu. Ako vôbec takéto motory fungujú? Aký je v nich rozdiel?

Hlavný rozdiel medzi krokovými a DC motory je v spôsobe otáčania. Kým krokový motor, ako z názvu vyplýva, sa otáča pomocou krokov. Najjednoduchšie by sa funkčnosť krokových motorov dala prirovnať k prevodovke. Krokový motor má tiež ozubené kolesá, ktoré sa krok po kroku otáčajú. Nie je tak možné urobiť plynulý ťah. Vždy, aj keď nastavíme, aby robil viac krokov za sebou, tak ťah nebude úplne plynulý. Naopak, u DC motora nastavujeme otáčky motora okolo celej svojej osi. V našom prípade budeme program zmrazovať na určitý čas, na ktorý chceme, aby sa motor otáčal. Koľko otáčok však za taký čas urobí, nevieme. Pre ovládanie týchto motorov budeme ešte niečo potrebovať. Ide o súčiastku, ktorá nám umožní motor ovládať pomocou Raspberry Pi a tou je tzv. H-mostík.

V starých tlačiarňach sa používali DC motormi namiesto step (step = krok) motorov s tým, že tlačiarne mali špeciálnu pásku a scanner, ktorý tu pásku sledoval a dovolil tak motora otočiť sa iba o krok rovnako ako u step motorov.

Raspberry Pi

Čo je H-mostík?

H-mostík je modul určený pre ovládanie jedného krokového alebo dvoch DC motorov. Súčiastka zaisťuje stabilné ovládanie motorov. Prepúšťa napätia od 2,5 do 12VDC. Modul je použiteľný pre všetky typy dosiek Arduino, Raspberry Pi, NodeMCU a ďalšie. Používa sa predovšetkým k spínanie komponentom s odlišným napätím. Riadenie prebieha pomocou štyroch tranzistorov. Na každý kontakt motora sú dva. Pre každú stranu nám tieto dva tranzistory tvoria jeden riadiaci signál. Otáčanie motora je potom dané ich kombinácií: 00 = neutrál, 01 = vpred, 10 = vzad. Týmto spôsobom sa ovládajú krokové motory. DC motory potom potrebujú iba 2 tranzistory, preto využívajú funkčnosť iba polovičky H-mostíka. Avšak ovládanie pomocou signálov zostáva rovnaké.

Popis častí H-mostíka

Jednotlivé časti H-mostíka si teraz popíšeme a povieme si na čo slúži a čo sa do nich zapája. Na obrázku sa budeme potom orientovať podľa čísel:

Raspberry Pi

1.časť

Náš H-mostík má dva výstupy so 4 zdierkami, ktoré slúžia na pripojenie dvoch DC motorov alebo jedného krokového motora. Výstupy i zdierky sú označené. Dve zdierky sú pre motor A a dve pre motor B. Je v podstate jedno, do akej zdierky zapojíte "plus" a do akej "mínus" motora, pretože to len zmení, na akú stranu sa motor bude v akej situácii otáčať. Ďalej sa dozvieme, že každú zdierku musíme nastaviť zvlášť pomocou GPIO pinov.

2.časť

4 zdierky sa pripájajú k GPIO pinom. GPIO piny sú priamo spojené s výstupmi z prvej časti. Každá jedna zdierka má označenie (B-1A: motor B, výstup 1A). Ďalej sa nemení písmeno, ale číslo, napríklad 2A. Celý motor sa potom bude ovládať iba tým, že budeme púšťať prúd na plus alebo mínus a to bude tiež určovať, na akú stranu sa bude motor otáčať. Jednoducho, keby sme motor pripojili čisto k batérii, tak sa bude otáčať len podľa toho, či jeho plus bude zapojené do plusu alebo do mínusu. Otočíme Ak totiž polaritu, smer otáčania sa zmení.

Raspberry Pi

3. časť

H-mostík dodáva energiu ako sebe, tak motorom. Preto cez tieto piny pripájame externé napájanie alebo ho zapájame na VCC a GND u Raspberry Pi. Pre viac motorov je potom pripojenie externého napájania nutnosťou.

Vysvetlili sme si, k čomu aký výstup, zdierka či pin slúži a teraz môžeme začať zapájať.

Zapojenie

Zapojenie je jednoduché. Začneme tým, že prepojíme H-mostík s motorom. Plus zapojíme do konektora A-1A a mínus do A-2A. Potom pin A-1A spojíme s GPIO pinom 14 na Raspberry Pi a A-2A spojíme s pinom 15. Potom už len pripojíme pin GND na GND pin od Raspberry Pi a VCC spojíme s 5V pinom. Tiež môžeme pripojiť GND na mínus napájanie a VCC na plus:

Raspberry Pi

Prvý hrátky s motorom

Keď už máme motor pripojený k nášmu Raspberry Pi, pustíme sa do jeho ovládanie. Štandardne budeme všetko programovať priamo na Raspberry Pi v jazyku Python. Python kód budeme písať v Thonny IDE, ktorý je automaticky predinštalovaný v Raspberry Pi OS. Náš program bude jednoducho iba otáčať DC motorom na jednu a na druhú stranu. Medzi otáčaním bude však niekoľkých sekundová oneskorenie.

Kód v Pythone

Časti dnešného kódu budeme síce poznať, ale aj tak je vysvetlím. Budeme dnes vytvárať kód, ktorý:

  • otočí motorom,
  • zastaví sa a
  • otočí motorom na druhú stranu.

Podobne ako u rozsvietenie a zhasínanie diódy. Kód vyzerá nasledovne:

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)

GPIO.output(15, GPIO.HIGH)
sleep(0.5)
GPIO.output(15, GPIO.LOW)

sleep(2)

GPIO.output(14, GPIO.HIGH)
sleep(0.5)
GPIO.output(14, GPIO.LOW)

GPIO.cleanup()

Vysvetlenie kódu

Ako úplne prvý si opäť importujeme knižnice. Dnes budeme potrebovať dve knižnice. GPIO knižnicu používanú už vo skorších lekciách, ktorá nám dovoľuje ovládať GPIO piny. Ďalej si z knižnice time importujeme sleep. Príkaz sleep nám jednoducho zmrazí program v stave, v ktorom je.

Väčšinu tu použitých príkazov sme už používali predtým, preto im nebudem venovať takej pozornosti. Máme tu základné nastavenia boarde (dosky). Nastavenie BCM znamená, že budeme používať hodnoty GPIO pinov a nie priamo dosky Raspberry Pi. Nasledujúce dva riadky nastavujú dva použité piny na základnú hodnotu OUT. Toto základné nastavenie je vysvetlené už v predchádzajúcich lekciách. Musíme ho nastavovať zakaždým, keď chceme piny používať. Keby sme chceli napríklad program urobiť v slučke, aby sa robil stále dokola, musíme vždy na začiatok slučky vložiť toto nastavenie.

Keď už máme všetko pripravené, môžeme začať otáčať. Nastavíme ako prvý GPIO port č. 15 na HIGH, čo znamená, že sa motor začne otáčať doprava po dobu, na ktorú ho potom hneď zmrazíme príkazom sleep. Príkaz HIGH rovnako ako u rozsvecovania diódy zapne port a pustí do neho prúd na plus. Keďže pri DC motore jednoducho funguje prehadzovania plus a mínus ako nastavenie na akú stranu sa bude motor otáčať, tak nám len stačí vždy len piny prehadzovať. Tento troj-kód končíme tým, že pin zase nastavíme na LOW, čo znamená, že sa motor zastaví.

Ďalej zastavíme celý program pomocou príkazu sleep. Toto zastavenie je len pre zaznamenanie, kedy sa nič nedeje.

Nakoniec potom jednoducho pin č. 14 zapneme, zmrazíme a zase vypneme ako u predchádzajúceho pinu č. 15. Keďže sme ale prehodili plus a mínus, motor sa bude otáčať na opačnú stranu, čo minule.

Veľmi jednoduchý kód, ktorý sa dá ešte vylepšiť o doplnenie slučky while, aby sa motor neustále otáčal dokola.

V budúcej lekcii, Raspberry Pi - Drôtová komunikácia s Arduino UNO , si vytvoríme komunikáciu medzi Raspberry pi a Arduino UNO pomocou USB kábla.


 

Predchádzajúci článok
Veľká rodina Raspberry Pi - Prehľad modelov a ich funkcií
Všetky články v sekcii
Raspberry Pi
Preskočiť článok
(neodporúčame)
Raspberry Pi - Drôtová komunikácia s Arduino UNO
Článok pre vás napísal Aleš Hlavín
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Raspberry
Aktivity