Čas na další součástku! Tentokrát to bude servomotor.
Servomotor je součástka, která má v sobě zabudovaný ovladač, se kterým si naše zařízení může povídat jednoduchým „elektronickým jazykem” – protokolem. Motorku můžeš posílat impulzy a podle délky impulzu se servomotor natočí. Při krátkých impulzech se natočí víc na jednu stranu, při dlouhých na druhou. Impulzy musíš posílat neustále, jinak se servomotor vypne.
Na rozdíl od bzučítka, kde o výšce tónu rozhodovala
frekvence (freq
) – kolikrát za vteřinu
se ozve lupnutí – a LED, kde o intenzitě rozhodovala
střída (duty
) – poměr mezi dobou kdy
dioda svítí a kdy nesvítí, u servomotoru rozhoduje
tzv. šířka pulzu: jak dlouho se napětí udrží
na 3,3 V, než se přepne zpátky na 0 V.
V praxi to znamená, že můžeš nastavit freq
na 50 Hz, a duty
měnit cca od 35
(úplně vlevo) přes 77 (uprostřed) po 120 (úplně vpravo).
Dost ale teorie, pojďme si to vyzkoušet! Napřed musíš motorek zapojit:
G
,3V
aD4
.Nožička D4
odpovídá Pin(2)
, takže kód k otáčení motorku je:
from machine import Pin, PWM
pin_motorku = Pin(2, Pin.OUT)
pwm = PWM(pin_motorku, freq=50, duty=77)
pwm.duty(35)
Zkus motorkem otáčet nastavováním duty
na 35 do 120.
Kdyby se náhodou stalo, že se modul restartuje a
konzole přestane fungovat, zkus ho odpojit a znovu
připojit. Kdyby to nepomohlo, motorek ti dneska
nebude fungovat. Za chvíli si řekneme proč; zatím (jsi-li na kurzu)
se přidej do dvojice k někomu, komu to funguje.
K tomu, aby se otočil motor, je potřeba mnohem víc energie, než k rozsvícení světýlka. Z USB z počítače té energie dostaneš docela málo, proto můžou být s motorkem problémy.
Jak to řešit, až si přestaneš hrát a budeš chtít motorkem otáčet „doopravdy”?
Servo a destičku můžeš napájet zvlášť: například servo z baterií a destičku dál z USB. V tomhle případě je důležité:
GND
na destičce,
hnědý drát servomotoru, -
baterie).Zapojení pak bude následující:
-
baterie na hnědý drát (zem) serva a zároveň na GND
desky+
baterie na červený drát (napájení) servaD4
desky na oranžový drát (data) serva{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-podzim-pondeli:micropython:8", "title": "Servomotor", "html": "\n \n \n\n <h2>Servomotor</h2>\n<p>Čas na další součástku! Tentokrát to bude <em>servomotor</em>.</p>\n<p>Servomotor je součástka, která má v sobě zabudovaný\novladač, se kterým si naše zařízení může povídat\njednoduchým „elektronickým jazykem” – <em>protokolem</em>.\nMotorku můžeš posílat impulzy a podle délky impulzu\nse servomotor natočí.\nPři krátkých impulzech se natočí víc na jednu stranu,\npři dlouhých na druhou.\nImpulzy musíš posílat neustále, jinak se servomotor\nvypne.</p>\n<p>Na rozdíl od bzučítka, kde o výšce tónu rozhodovala\nfrekvence (<code>freq</code>) – kolikrát za vteřinu\nse ozve lupnutí – a LED, kde o intenzitě rozhodovala\nstřída (<code>duty</code>) – poměr mezi dobou kdy\ndioda svítí a kdy nesvítí, u servomotoru rozhoduje\ntzv. <em>šířka pulzu</em>: jak dlouho se napětí udrží\nna 3,3 V, než se přepne zpátky na 0 V.\n<!-- XXX: Actual typical pulse widths --></p>\n<p>V praxi to znamená, že můžeš nastavit <code>freq</code>\nna 50 Hz, a <code>duty</code> měnit cca od 35\n(úplně vlevo) přes 77 (uprostřed) po 120 (úplně vpravo).</p>\n<p>Dost ale teorie, pojďme si to vyzkoušet! Napřed musíš motorek zapojit:</p>\n<ul>\n<li>hnědý drát (zem) na <code>G</code>,</li>\n<li>červený drát (napájení) na <code>3V</code> a</li>\n<li>oranžový drát (data) na <code>D4</code>.</li>\n</ul>\n<p>Nožička <code>D4</code> odpovídá <code>Pin(2)</code>, takže kód k otáčení motorku je:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">machine</span> <span class=\"kn\">import</span> <span class=\"n\">Pin</span><span class=\"p\">,</span> <span class=\"n\">PWM</span>\n\n<span class=\"n\">pin_motorku</span> <span class=\"o\">=</span> <span class=\"n\">Pin</span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"n\">Pin</span><span class=\"o\">.</span><span class=\"n\">OUT</span><span class=\"p\">)</span>\n<span class=\"n\">pwm</span> <span class=\"o\">=</span> <span class=\"n\">PWM</span><span class=\"p\">(</span><span class=\"n\">pin_motorku</span><span class=\"p\">,</span> <span class=\"n\">freq</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"n\">duty</span><span class=\"o\">=</span><span class=\"mi\">77</span><span class=\"p\">)</span>\n<span class=\"n\">pwm</span><span class=\"o\">.</span><span class=\"n\">duty</span><span class=\"p\">(</span><span class=\"mi\">35</span><span class=\"p\">)</span>\n</pre></div><p>Zkus motorkem otáčet nastavováním <code>duty</code> na 35 do 120.\nKdyby se náhodou stalo, že se modul restartuje a\nkonzole přestane fungovat, zkus ho odpojit a znovu\npřipojit. Kdyby to nepomohlo, motorek ti dneska\nnebude fungovat. Za chvíli si řekneme proč; zatím (jsi-li na kurzu)\nse přidej do dvojice k někomu, komu to funguje.</p>\n<h2>Poznámka o napájení</h2>\n<p>K tomu, aby se otočil motor, je potřeba mnohem víc\nenergie, než k rozsvícení světýlka.\nZ USB z počítače té energie dostaneš docela málo,\nproto můžou být s motorkem problémy.</p>\n<p>Jak to řešit, až si přestaneš hrát a budeš chtít motorkem otáčet „doopravdy”?</p>\n<p>Servo a destičku můžeš napájet zvlášť:\nnapříklad servo z baterií a destičku dál z USB.\nV tomhle případě je důležité:</p>\n<ul>\n<li>Napětí baterie musí odpovídat tomu, co zvládne tvůj servomotor</li>\n<li>Všechny připojené součástky musí mít propojenou zem (<code>GND</code> na destičce,\nhnědý drát servomotoru, <code>-</code> baterie).</li>\n</ul>\n<p>Zapojení pak bude následující:</p>\n<ul>\n<li><code>-</code> baterie na hnědý drát (zem) serva <em>a zároveň</em> na <code>GND</code> desky</li>\n<li><code>+</code> baterie na červený drát (napájení) serva</li>\n<li><code>D4</code> desky na oranžový drát (data) serva</li>\n</ul>\n\n\n " } } }