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í.

Lekce 8 - Raspberry Pi - H-můstek a otáčení motůrkem

V předchozí lekci, Velká rodina Raspberry Pi - Přehled modelů a jejich funkcí, jsme si popovídali o velké rodině modelů Raspberry Pi.

Dneska si ukážeme, jak ovládat jakýkoliv jednoduchý DC motor pomocí Raspberry Pi. Seznámíme se s H-můstkem a dvěma typy motorů, které lze určitě pomocí něj ovládat. Nakonec si naše vědomosti ověříme programováním v Pythonu, ve kterém si napíšeme program. Jako vždy, budu používat fotky svého schématu, jak jsem projekt sestavil. Schémata jsou vytvořené v programu Fritzing.

Potřebné součástky

Na dnešní jednoduché zapojení budeme potřebovat tyto součástky:

  • H-můstek
  • Raspberry Pi
  • DC motor

Krokové motory vs. DC motory

Než se pustíme do nějaké akce, musíme si nejdřív projít teorii. Jak vůbec takové motory fungují? Jaký je v nich rozdíl?

Hlavní rozdíl mezi krokovými a DC motory je v způsobu otáčení. Zatímco krokový motor, jak z názvu vyplývá, se otáčí pomocí kroků. Nejjednodušeji by se funkčnost krokových motorů dala přirovnat k převodovce. Krokový motor má také ozubená kola, která se krok po kroku otáčejí. Není tak možné udělat plynulý tah. Vždy, i když nastavíme, aby dělal více kroků za sebou, tak tah nebude úplně plynulý. Naopak u DC motoru nastavujeme otáčky motoru okolo celé své osy. V našem případě budeme program zmrazovat na určitý čas, na který chceme, aby se motor otáčel. Kolik otáček však za takový čas udělá, nevíme. Pro ovládání těchto motorů budeme ještě něco potřebovat. Jde o součástku, která nám umožní motor ovládat pomocí Raspberry Pi a tou je tzv. H-můstek.

Ve starých tiskárnách se používaly DC motory místo step (step = krok) motorů s tím, že tiskárny měly speciální pásku a scanner, který tu pásku sledoval a dovolil tak motoru otočit se pouze o krok stejně jako u step motorů.

Raspberry Pi

Co je H–můstek?

H-můstek je modul určený pro ovládání jednoho krokového nebo dvou DC motorů. Součástka zajištuje stabilní ovládání motorů. Propouští napětí od 2,5 do 12VDC. Modul je použitelný pro všechny typy desek Arduino, Raspberry Pi, NodeMCU a další. Používá se především k spínání součástem s odlišným napětím. Řízení probíhá pomocí čtyř tranzistorů. Na každý kontakt motoru jsou dva. Pro každou stranu nám tyto dva tranzistory tvoří jeden řídící signál. Otáčení motoru je pak dáno jejich kombinací: 00 = neutrál, 01 = vpřed, 10 = vzad. Tímto způsobem se ovládají krokové motory. DC motory pak potřebují pouze 2 tranzistory, proto využívají funkčnost pouze půlky H-můstku. Avšak ovládání pomocí signálů zůstává stejné.

Popis částí H-můstku

Jednotlivé části H-můstku si nyní popíšeme a řekneme si k čemu slouží a co se do nich zapojuje. Na obrázku se budeme poté orientovat podle čísel:

Raspberry Pi

1.čast

Náš H-můstek má dva výstupy se 4 zdířkami, které slouží k připojení dvou DC motorů nebo jednoho krokového motoru. Výstupy i zdířky jsou označeny. Dvě zdířky jsou pro motor A a dvě pro motor B. Je v podstatě jedno, do jaké zdířky zapojíte "plus" a do jaké "mínus" motoru, protože to jen změní, na jakou stranu se motor bude v jaké situaci otáčet. Dále se dozvíme, že každou zdířku musíme nastavit zvlášť pomocí GPIO pinů.

2.čast

4 zdířky se připojují k GPIO pinům. GPIO piny jsou přímo spojeny s výstupy z první části. Každá jedna zdířka má označení (B-1A: motor B, výstup 1A). Dále se nemění písmeno, ale číslo, například 2A. Celý motor se pak bude ovládat pouze tím, že budeme pouštět proud na plus nebo mínus a to bude také určovat, na jakou stranu se bude motor otáčet. Jednoduše, kdybychom motor připojili čistě k baterii, tak se bude otáčet jen podle toho, jestli jeho plus bude zapojeno do plusu nebo do mínusu. Otočíme-li totiž polaritu, směr otáčení se změní.

Raspberry Pi

3. část

H-můstek dodává energii jak sobě, tak motorům. Proto přes tyto piny připojujeme externí napájení nebo jej zapojujeme na VCC a GND u Raspberry Pi. Pro více motorů je pak připojení externího napájení nutností.

Vysvětlili jsme si, k čemu jaký výstup, zdířka či pin slouží a nyní můžeme začít zapojovat.

Zapojení

Zapojení je jednoduché. Začneme tím, že propojíme H-můstek s motorem. Plus zapojíme do zdířky A-1A a mínus do A-2A. Poté pin A-1A spojíme s GPIO pinem 14 na Raspberry Pi a A-2A spojíme s pinem 15. Poté už jen připojíme pin GND na GND pin od Raspberry Pi a VCC spojíme s 5V pinem. Také můžeme připojit GND na mínus napájení a VCC na plus:

Raspberry Pi

První hrátky s motorem

Když už máme motor připojený k našemu Raspberry Pi, pustíme se do jeho ovládání. Standardně budeme vše programovat přímo na Raspberry Pi v jazyce Python. Python kód budeme psát v Thonny IDE, který je automaticky předinstalovaný v Raspberry Pi OS. Náš program bude jednoduše pouze otáčet DC motorem na jednu a na druhou stranu. Mezi otáčeními bude však několika sekundová prodleva.

Kód v Pythonu

Části dnešního kódu budeme sice znát, ale i tak je vysvětlím. Budeme dnes vytvářet kód, který:

  • otočí motorem,
  • zastaví se a
  • otočí motorem na druhou stranu.

Podobně jak u rozsvícení a zhasínaní diody. Kód vypadá následovně:

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()

Vysvětlení kódu

Jako úplně první si opět importujeme knihovny. Dnes budeme potřebovat dvě knihovny. GPIO knihovnu používanou již ve dřívějších lekcích, která nám dovoluje ovládat GPIO piny. Dále si z knihovny time importujeme sleep. Příkaz sleep nám jednoduše zmrazí program ve stavu, ve kterém je.

Většinu zde použitých příkazů jsme již používali dříve, proto jim nebudu věnovat takové pozornosti. Máme tu základní nastavení boardu (desky). Nastavení BCM znamená, že budeme používat hodnoty GPIO pinů a ne přímo desky Raspberry Pi. Následující dva řádky nastavují dva použité piny na základní hodnotu OUT. Toto základní nastavení je vysvětleno již v předchozích lekcích. Musíme ho nastavovat pokaždé, když chceme piny používat. Kdybychom chtěli například program udělat ve smyčce, aby se dělal stále dokola, musíme vždy na začátek smyčky vložit toto nastavení.

Když už máme vše připraveno, můžeme začít otáčet. Nastavíme jako první GPIO port č. 15 na HIGH, což znamená, že se motor začne otáčet doprava po dobu, na kterou ho poté hned zmrazíme příkazem sleep. Příkaz HIGH stejně jako u rozsvěcování diody zapne port a pustí do něj proud na plus. Jelikož u DC motoru jednoduše funguje prohazovaní plus a minus jako nastavení na jakou stranu se bude motor otáčet, tak nám pouze stačí vždy jen piny prohazovat. Tenhle troj-kód končíme tím, že pin zase nastavíme na LOW, což znamená, že se motor zastaví.

Dále zastavíme celý program pomocí příkazu sleep. Toto zastavení je jen pro zaznamenání, kdy se nic neděje.

Nakonec pak jednoduše pin č. 14 zapneme, zmrazíme a zase vypneme jako u předchozího pinu č. 15. Jelikož jsme ale prohodili plus a mínus, motor se bude otáčet na opačnou stranu, co minule.

Velmi jednoduchý kód, který se dá ještě vylepšit o doplnění smyčky while, aby se motor neustále otáčel dokola.

V příští lekci, Raspberry Pi - Drátová komunikace s Arduino UNO, si vytvoříme komunikaci mezi Raspberry Pi a Arduinem UNO pomocí USB kabelu.


 

Předchozí článek
Velká rodina Raspberry Pi - Přehled modelů a jejich funkcí
Všechny články v sekci
Raspberry Pi
Přeskočit článek
(nedoporučujeme)
Raspberry Pi - Drátová komunikace s Arduino UNO
Článek pro vás napsal Aleš Hlavín
Avatar
Uživatelské hodnocení:
17 hlasů
Raspberry
Aktivity