Zahlavi

Zvolte jazyk

Modul ovládání 2 servomotorů pro HW 1.0

Před časem jsem prohlásil, že HW verze 1.0 už nebudu dál rozvíjet ani podporovat. Mé úsilí se soustředilo na vývoj HW 2.1. Pravdou ale je, že návrh plošného spoje nového HW stále není hotový, a tak musím dál používat svou starou konstrukci s relé.
Přitom bych už rád vyzkoušel nějaké nové věci s parabolou Laminas 2700. Nejvíc mě omezuje potřeba natáčení Skew. Než se pustím do mechanické konstrukce otáčení LNB, mám k dispozici polarizér CSP 1210 C ovládaný servomotorem. Také jsem začal pokukovat po C-pásmu, k jehož příjmu mám připravený Corotor Chaparral. Ten je také ovládaný servomotorem. Proto jsem se rozhodl část ovládání servomotorů z HW 2.1 vyrobit jako samostatný modul pro HW 1.0.
Musím zdůraznit, že na mém rozhodnutí nerozvíjet dál HW 1.0 se nic nemění. Tento článek je jen informativní pro inspiraci. Nepředpokládám v budoucnosti zveřejnění SW obsluhy tohoto modulu, která je k provozování nezbytná.
Schéma modulu je převzato z HW verze 2.1. V této části nebylo potřeba provádět žádné úpravy.

SchemaThumb

Obr. 1 - Schéma modulu servomotorů

Signál pro řízení servomotorů je vytvářen pomocí softwarově generovaných pulzů PWM. Tento signál je galvanicky oddělen optočlenem PC844, převeden na úroveň 5V a přiveden na řídící vstup servomotoru. Důležitá je polarita signálu, kterou zajišťují odpory 3k3 a 100R. Mezi modulem a vlastními servomotory mám kabel dlouhý asi 17m. Kondenzátor 1nF filtruje rušící vysokofrekvenční signály indukované do těchto drátů. 

 V následující tabulce je soupis použitých součástek:

Číslo součástiNázevPočet kusů
8  Zdroj 5V / 1 ÷ 3 A 1
7  Svorkovnice ARK500/3EX (Wago W237-103)  3
6  Svorkovnice ARK500/2EX (Wago W237-102) 1
5  Kondenzátor 1nF,  keramický, fóliový  2
4  Rezistor 3k3 2
3  Rezistor 420Ω 2
2  Rezistor 100Ω 2
1  PC844, 4x optočlen (Vishay ILQ620) 1

 

 Modul je poměrně jednoduchý, takže ani navrhnout plošný spoj nedalo moc práce. Téměř všechny spoje se podařilo vtěsnat do jedné vrstvy. Nakonec bylo potřeba doplnit jen dvě drátové propojky. 

SpojThumb

Obr. 2 - Plošný spoj

Protože mám řídící jednotku umístěnu na půdě domu v suchém prostředí, nepovažoval jsem za potřebné umísťovat modul do nějaké krabičky. Připojení modulu k pozicionéru je pomocí tří drátů. Jeden je přiveden na zem Raspberry Pi a nesmí být propojen se zemí žádného dalšího dílu konstrukce. Další dva dráty jsou připojeny ke GPIO konektoru. Výběr konkrétních portů byl snadný. V HW 2.1 jsou pro ovládání servomotoru použity GPIO05 (pin 29) a GPIO06 (pin31). Protože v HW 1.0 tyto piny zatím nejsou použity, není důvod je měnit.

Samostatnou poznámku si zaslouží zdroj 5V. Protože už v konstrukci takový zdroj je, svádělo by to k jeho využití. Nakonec jsem se ale rozhodl použít samostatný zdroj. Protože servomotory mohou mít dost velkou spotřebu a jeden zdroj by už mohl na změny zatížení reagovat změnou výstupního napětí. A to by mohlo ovlivnit činnost počítače Raspberry Pi. Navíc je to jen dočasné řešení, takže jsem závislost modulu na původní konstrukci chtěl omezit na minimum.

PrototypThumb

Obr. 3 - Prototyp

U ovládacího programu chci postupně přejít z javascriptu na python. Řekl jsem si, že tohle je skvělá příležitost vyzkoušet si, jak mi to půjde. Python je trochu specifický programovací jazyk a je potřeba si na něj zvyknout.

Protože jsem si netroufal hned na začátku psát svůj vlastní webový server, využil jsem už hotové řešení v podobě frameworku Flask. Jeho instalace se doporučuje prostřednictvím programu pip. Není to ale nezbytně nutné. Dále je potřeba vybrat knihovny, pomocí kterých se bude přistupovat k portům GPIO. Nakonec jsem zvolil PiGPIO. Má tu zvláštnost, že spouští vlastního daemona, tedy službu na pozadí, přes kterou se komunikuje. To v praxi znamená, že komunikace s porty Raspberry Pi je samostatný program, jehož rychlost přímo nesouvisí s uživatelským programem v pythonu.

No a zbytek návrhu už byl na mě. Postupně jsem se propracoval k programu, který umožňuje přímo ovládat dva motory egisu a jeden servomotor. Dále obsahuje předvolby, které automaticky nastaví uložené pozice všech tří motorů. Do těchto předvoleb lze uložit aktuální polohu všech motorů tlačítkem Store mem, nebo je lze vymazat tlačítkem Clear mem.

 SWThumb

Obr. 4 - Uživatelské rozhraní SW

Ovládání jednoho servomotoru pro moje účely v tuto chvíli stačí. Servomotor je určený k nastavování Skew, tedy „pouze“ k mechanickému pootáčení LNB podle vybraného satelitu. Polarizér CSP 1210 C a Corotor Chaparral mají ale na svém výstupu obdélníkový vlnovod pro připojení jednopolaritního LNB. Využívají servomotor i ke změně horizontální a vertikální polarizace. Proto jsem musel kromě natáčení Skew přidat do programu i tlačítka H/L a V/R, které skokově otočí přijímací anténu ve vstupním vlnovodu o 90°. Skutečné Skew se potom nastavuje jako středová poloha mezi těmito dvěma pozicemi.

Program naznačuje, jak asi bude vypadat ovládání HW verze 2.1. Až zprovozním jeho prototyp, napíšu podrobný postup práce s uvedeným SW v samostatném článku. Vypadá to, že 60 předvoleb bude asi málo. Ale tyto drobnosti ukáže až praxe. Docela by mě zajímalo, kolik předvoleb v pozicionéru používáte vy. (Opravdu musíte mit v pozicionéru nastaveny všechny družice, které jsou z vašeho stanoviště vidět?)

Žádné komentáře

Zanechat komentář

Odpověď na Some User