A2S

Úvod

Mobilní technologie se v současnosti rychle rozvíjejí a dnes již neslouží pouze ke komunikaci, ale také jako výkonné výpočetní platformy. Moderní mobilní telefony disponují vysokým výkonem, množstvím senzorů (akcelerometr, gyroskop, GPS, kamera, mikrofon) a pokročilou konektivitou. Díky tomu je lze využít i v oblasti robotiky.

Tato práce se zabývá využitím mobilního telefonu jako řídicí jednotky pro ovládání modelářských serv. Komunikace probíhá netradičně pomocí audio výstupu telefonu, který je pomocí jednoduchého převodníku převeden na signál pro řízení až čtyř serv.

Výhodou tohoto řešení je nízká cena a jednoduchost, protože není potřeba speciální hardware. Systém lze využít například ve vzdělávání, robotice nebo při vývoji prototypů.

Teorie ovládání modelářských serv

Co je servo

Modelářské servo je kompaktní elektromechanické zařízení určené k přesnému řízení polohy výstupní hřídele. Typicky se skládá ze stejnosměrného motoru, převodovky, snímače polohy (nejčastěji potenciometru) a řídicí elektroniky.

Servo pracuje v uzavřené regulační smyčce, což znamená, že neustále vyhodnocuje svou aktuální polohu a porovnává ji s požadovanou hodnotou.

Typy serv

  • Úhlová serva – pohyb v rozsahu cca 0–180°, používají se pro přesné polohování
  • Kontinuální serva – neomezená rotace, řídí se rychlost a směr
  • Analogová vs. digitální – digitální jsou přesnější a rychlejší, ale dražší

Princip činnosti

Princip činnosti serva je založen na zpětnovazebním řízení. Řídicí elektronika uvnitř serva neustále porovnává požadovanou a skutečnou polohu výstupní hřídele.

Pokud vznikne regulační odchylka, systém upraví chod motoru tak, aby bylo dosaženo požadované polohy. Díky tomu servo nejen dosáhne cílové polohy, ale také ji aktivně udržuje i při zatížení.

Ovládání serv (PWM)

Servo je řízeno PWM signálem:

  • perioda ≈ 20 ms (50 Hz)
  • 1 ms → jedna krajní poloha
  • 1,5 ms → střed
  • 2 ms → druhá krajní poloha

U kontinuálních serv pulz určuje rychlost a směr otáčení.

Softwarová část

Ovládání serv

Důležitá je délka pulzu, nikoliv přesná opakovací frekvence. Díky tomu lze serva ovládat i netradiční frekvencí a tím dosáhnout i vyšší obnovovací frekvenci polohy nebo rychlosti serva.

Generování signálu v Pythonu

Signál je generován pomocí Pythonu a knihovny NumPy. Vytváří se pole hodnot reprezentující audio signál, který je následně převeden na PWM pulzy pro serva.

Vzhled generovaného Audiosignálu

Knihovna A2S

Knihovna A2S slouží jako rozhraní mezi softwarem a hardwarem. Obsahuje třídu, která při inicializaci vytváří potřebné datové struktury, včetně audio bufferu a předpočítaných průběhů signálu.

Podporuje až čtyři nezávislé kanály (serva) a umožňuje dynamickou změnu jejich hodnot v reálném čase bez nutnosti přepočítávat celý signál.

Použití knihovny

KnihovnaKnihovna A2S poskytuje jednoduché rozhraní pro řízení až čtyř modelářských serv pomocí audio signálu. Uživatel nemusí řešit generování PWM signálu – pracuje pouze s vyšší úrovní řízení (úhly, procenta apod.).

Základní princip použití

Nejprve je nutné vytvořit instanci třídy:

motory = A2S.A2S()

Tím dojde k inicializaci všech potřebných struktur, včetně bufferu pro audio signál a předpočítaných průběhů.

Pro získání výsledného signálu připraveného k přehrání slouží metoda:

data = motory.signal()

Metoda set_motors()

set_motors(m0=0, m1=0, m2=0, m3=0, delta=1)

Popis:

Základní metoda pro přímé řízení serv na nízké úrovni.

Parametry:

  • m0, m1, m2, m3 – hodnoty pro jednotlivá serva (rozsah -20 až +20)
  • delta – maximální změna hodnoty mezi kroky (slouží pro plynulé řízení)

Funkce:

  • nastaví cílovou hodnotu pro každé servo
  • omezuje rychlost změny (plynulý pohyb)
  • generuje odpovídající audio signál do bufferu

Tato metoda pracuje s interním rozsahem knihovny a není vhodná pro přímé použití bez dalších úprav.


Metoda set_percent()

set_percent(s0=0, s1=0, s2=0, s3=0, delta=1)

Popis:

Umožňuje ovládání serv pomocí procentuální hodnoty.

Parametry:

  • s0, s1, s2, s3 – hodnoty v rozsahu -100 až +100
  • delta – plynulost změny

Funkce:

  • převádí procenta na interní rozsah (-20 až +20)
  • následně volá set_motors()

Příklad:

motory.set_percent(0, 50, -50, 100)

Metoda set_angle_90()

set_angle_90(s0=0, s1=0, s2=0, s3=0, delta=1)

Popis:

Ovládání serv pomocí úhlu v rozsahu ±90°.

Parametry:

  • s0, s1, s2, s3 – hodnoty v rozsahu -90° až +90°
  • delta – plynulost pohybu

Funkce:

  • úhel je přepočítán na interní hodnoty
  • následně je volána metoda set_motors()

Příklad:

motory.set_angle_90(0, 45, -45, 90)

Metoda set_angle_180()

set_angle_180(s0=0, s1=0, s2=0, s3=0, delta=1)

Popis:

Ovládání serv v klasickém rozsahu 0–180°.

Parametry:

  • s0, s1, s2, s3 – hodnoty v rozsahu 0° až 180°
  • delta – plynulost změny

Funkce:

  • převádí úhel na interní rozsah (-20 až +20)
  • využívá set_motors() pro generování signálu

Příklad:

motory.set_angle_180(0, 90, 180, 45)

Plynulost pohybu (parametr delta)

Parametr delta určuje maximální změnu hodnoty mezi jednotlivými voláními.

větší hodnota → rychlejší reakce

menší hodnota → pomalejší a plynulejší pohyb

Aktualizace signálu

Po nastavení hodnot serv pomocí jednotlivých metod (set_motors, set_percent, set_angle_90, set_angle_180) je nutné provést aktualizaci výstupního signálu.

To se provádí voláním metody:

nastav()

Tato metoda vrací aktuální audio buffer ve formátu bajtů, který je následně odeslán do audio výstupu pomocí knihovny Pygame. Bez tohoto kroku se změny nastavení serv neprojeví, protože nedojde k aktualizaci generovaného signálu.


Praktické použití

Typický postup při ovládání serv je následující:

motory.set_angle_180(90, 45, 135, 0)  # nastavení serv
nastav() # aktualizace signálu

Tento postup je nutné opakovat při každé změně hodnot, aby se nové nastavení promítlo do audio výstupu.

Hardwarová část

Schéma zapojení A2S převodníku

Zapojení A2S převodníku je realizováno pomocí dvou integrovaných obvodů typu LM358, z nichž každý obsahuje dvojici operačních zesilovačů. Tyto zesilovače jsou využity pro úpravu a následné zpracování vstupního analogového signálu.

Vstupní signál je nejprve posunut o referenční napětí +2,5 V, čímž je zajištěno jeho přizpůsobení pracovnímu rozsahu napájení a správná funkce v dalších stupních zapojení. Takto upravený signál je následně přiveden na operační zesilovače zapojené v režimu komparátoru.

V komparačním režimu dochází k porovnání vstupního signálu s referenční úrovní, přičemž na výstupu vzniká diskrétní signál odpovídající logickým stavům. Výstupní signál převodníku je ve standardní logické úrovni TTL (cca 0–5 V), což umožňuje jeho přímé připojení k modelářským servům.

Deska plošných spojů

Kontaktní informace

V případě zájmu o DPS nás kontaktujte na e-mailu: a2s.robotrip@gmail.com