čtvrtek 31. prosince 2015

Spektrum Dx6i - Stopky ovládané plynem

1. 1. 2016

Co, proč a nač?

Nedávno si bratr koupil ke své sbírce RTF a BNF modýlků se systémem DSM2/DSMX vysílačku Spektrum Dx6i. Je to již třetí Spektrum v rodině a druhá DX6i.

V té první jsem instaloval modul atomatického spouštění stopek od polohy páky plynu z produkce  Jaroslava Macko. Stálo to tehdy (v roce 2010) asi 10Euro. Funguje to dodnes v podstatě bez problémů.

Tak jsem se pokusil modul opět objednat, ale autor jej již nevyrábí a nedodává. Poslal mi schema, obrázek DPS a návod, s tím, že kód pro naprogramování procesoru neuvolňuje, ale na vyžádání mi pošle naprogramovaný procesor.

Vzhledem k tomu, že když už to vyrábět svépomocí, tak jsem chtěl udělat drobné úpravy (nevyhovoval mi způsob aktivace pomocí přepínače klapek a chtěl jsem nastavovací prahovou hodnotu plynu pro přepnutí), rozhodl jsem se, že se vrátím do mladých let a desku si ubastlím sám, včetně programu. Měl jsem doma 2 kusy mikrokontrolérů PICAXE 8M, tak sem se rozhodl jej zkusit použít.
Tímto současně předem odpovídám na ev. otázku proč vyvíjím věc, která je už několikrát vyvinutá:
  1. Nebyl dostupný žádný obdobný hotový modul za přijatelnou cenu
  2. Měl jsem doma nevyužitý mikrokontroler PICAXE 8M
  3. Chtěl jsem se na tom naučit základy práce s PICAXE a "prošťouchnut" výrobu podobných zařízení (mám v hlavě několik, trochu složitějších, nápadů) v dnešních podmínkách - naposledy jsem něco samostatně "bastlil" tak před cca 20 lety.
Studiem "konkurenčních" projektů na webu a vlastností PICAXE 8M jsem dospěl k názoru, že vlastní zapojení může být podstatně jednodušší, než se obvykle dělá.  Jen jsem si nebyl jist, zda se program pro tuto funkčnost do 8M vejde. No, nakonec se vešel, zbylo 6 byte ...

Zadání


Co jsem tedy chtěl vyrobit?

Jednoduchý modul, který se připojí do Spektrum Dx6i pomocí 4 vodičů: napájení 3.3V,  zem, střední vývod potenciometru plynu (vstupní veličina) a vodič k tlačítku Thr Cut (výstup - paralelně připojený výstup kontroléru simuluje stisk, ale tlačítko Thr Cut funguje i jako vstup - dlouhý manuální stisk vyvolá funkci kalibrace).

Vzhledem k tomu, že občas využíváme funkci Trainer (propojení vysílačů učitel-žák), není možné používat pro aktivaci stopek tlačítko Trainer, ale musí se nastavit vysílač na používání tlačítka Thr Cut.

Modul nesmí znemožnit nastavení počátečního stavu stopek (inicializaci či nulování) delším stiskem tlačítka Thr Cut.

Dále není vhodné používat pro ovládání modulu jakékoli jiné tlačítko či přepínač. Podle zkušenosti se zakoupeným modulem je problematické i využívání polohy některého spínače při zapnutí vysílače pro nastavování režimu modulu.

Funkce aut. ovládání stopek musí být možno vypnout.

V normálním provozu by si měl modul pamatovat, zda byl naposledy aktivní a uchovávat i nastavení rozhodovací úrovně. Po zapnutí by měl automaticky obnovit svůj stav před vypnutím vysílače.

Nesmí se zapomenout na zavedení hystereze, aby nedocházelo k narušení funkce kmitáním hodnoty těsně kolem rozhodovací úrovně.

Modul snímá hodnotu napětí na středním vývodu potenciometru plynu a podle její velikosti zapíná a vypíná běh stopek (Timer) spojením výstupu paralelně k tlačítku Thr Cut na cca 1/2 sec.

Protože není kde vzít informaci o zapnutí či vypnutí stopek, musí si tento stav modul pamatovat. V případě že dojde k náhodnému rozsynchronizování stavu modulu a stopek, lze obnovit synchronizaci manuálním stisknutím tlačítka Thr Cut na cca 1/2 sec.

Modul by měl být schopen uživatelsky nastavit rozhodovací úroveň (a ev. i zkalibrovat rozsah plynu).

Vzhledem k tomu, že modul je ukryt uvnitř vysílače, není vhodné spoléhat se na optickou signalizaci svitem LED (musela by se vyvést na povrch), je nutné použít akustickou signalizaci, odlišitelnou jednoznačně od "pípání" vlastní vysílačky.

Řešení


Celé řešení vychází z požadavku na využití mikrokontroléru PICAXE 08M. Zatímco HW parametry bez problémů vyhovují, o možnosti implementce vhodného SW jsem nebyl bez pochybností.

Hardware


Navrhl jsem zapojení dle následujícího obrázku.


Zapojení je realizováno na malé oboustranné  DPS. Nejsem vybaven na práci se SMT, tak jsem použil mikrokontroler v pouzdře DIL8 a klasické součástky s drátovými vývody z domácích zásob.


Celkové uspořádání je vidět z kontrolního soutisku:


Protože zvolený výrobce DPS neprovádí prokovení průchodů mezi vrstvami, jsou propoje mezi vrstvami řešeny pomocí vodičů, zapájených z obou stran (v jednom případě je takto využit vývod odporu R2 a rovněž vývod kontroleru č. 5). V obrázku kontrolního soupisu jsou vyznačeny světle modře.

Jako akustický měnič jsem použil výprodejový pizoelektrický typ, který jsem před časem nakoupil výhodně do zásoby. Je připojen na vývody, označené SND.  Jeho nevýhodou je, že má větší průměr, než je dnes u obdobných měničů obvyklé. Má rovněž větší rozteč vývodů a jejich průměr.

Pro úsporu místa je piezoměnič montován ze strany spojů. Při použití měniče menšího průměru je možné jej připojit vodičem a přilepit např. tavným lepidlem. Piezoměnič je stále (duben 2016) k dostání na osvědčeném e-shopu s výprodejovými elektrosoučástkami www.hezkyden.cz: http://www.hezkyden.cz/shop/piezo-piskatko/.

Vývody ThrVal, +, GND a SI, SO, GND jsou osazeny klasickou hřebínkovou konektorovou lištou s trojicí pinů (jako protikus poslouží klasický servokonektor, lze připojit i sériový programovací kabel PICAXE s konektorem s trojpinovou zásuvkou typu PFH02-03, popisovaným např na webu www.picaxe.cz). ThrCut a GND je osazen stejnou lištou s dvojicí pinů.

Místo použití hřebínkových lišt lze, samozřejmě, na jejich místo napájet příslušné vodiče.

Na destičce není nutné osazovat všechny součástky:
  1. Pokud nepředpokládáme nutnost přeprogramování mikrokontroleru, lze vypustit konektory pro programování SI, SO a GND.  Odpor R3 lze v tomto případě nahradit drátovou propojkou. Vypustit lze i průchody mezi vrstvami u konektoru (vedle SO a GND).
  2. Rovněž  není nutné osazovat LED a příslušný odpor R2. Pokud jsou osazeny součástky pro programování podle předchozího bodu, je nutné na místě vývodu R2 udělat drátový průchod mezi vrstvami.
  3. Volitelně lze připájet vnější vodiče napevno, místo použití příslušné hřebínkové lišty a odpovídajících konektorů (klasické servokonektory) - vývody GND, +, ThrVal a Thr.Cut.

Software


Zde je ke stažení zdrojový kód  programu (je to můj první program v PICAXE Basicu, tak prosím ev. čtenáře o shovívavost :))

Programové řešení vychází z možností použitého mikrokontroléru PICAXE 08M. Pokud se použije verze 08M2, je paměť programu 10x větší, takže by nebyl problém funkce doplnit či upravit.

Pro 08M je úloha (s mými zkušenostmi, možná lze nějak zefektivnit) na hranici možností.

Nepředpokládáme použití pro vrtulníky, proto jsem nijak neřešil variantu s nulovým plynem v prostředku rozsahu. Pokud by se mělo rozšířit využití i na vrtulníky, bylo by třeba vhodně upravit příslušné řádky programu:

if ThrVal > ThrSta and TimerAct=0 then  ; Ma se zapnout timer?
  gosub PulseThrCut
endif
if ThrVal < ThrSta and TimerAct<>0 then ; Ma se vypnout timer?
  gosub PulseThrCut
endif

např. na (je to námět, v praxi nevyzkoušeno):

if TimerAct=0 then 
  if ThrVal > ThrSta or ThrVal < ThrSta then  ; Ma se zapnout timer?
    gosub PulseThrCut
  endif
endif
if ThrVal = ThrSta and TimerAct<>0 then ; Ma se vypnout timer?
  gosub PulseThrCut
endif

a ev. doplnit používání regulérního, nastavitelného,  pásma hystereze. Toto vše ale zvládne až PICAXE 08M2, do 08M se to již nevejde.

Protože jsem nevěděl, kolik funkcí se podaří do omezené paměti (256B) naprogramovat, předpokládal jsem, že bude nutné pracovat s daty zapsanými při programování mikrokontroléru. Proto jsem navrhl zpracování mezní výchylky v %, předpokládal jsem hodnotu cca 7%. Tato hodnota je také zapsána v EEPROM při naprogramování, spolu s hodnotami mezí potenciometru plynu, zjištěnými při ladění. V ideálním případě by proto měl modul fungovat i bez kalibrace. Nicméně kalibraci se mi tam podařilo dostat, takže to vlastně není podstatné.

Přesto jsem řešení s výchylkami v % ponechal. Má totiž výhodu, že realizuje automaticky hysterezi ve velikosti 2% z rozsahu. Skutečnou, nastavitelnou, hysterezi mi totiž již nešlo do programu kvůli rozsahu paměti doplnit.

Po odzkoušení v praxi lze říci, že toto řešení funguje dobře.

Připojení do vysílače


Připojení do vysílače je relativně jednoduché. Jednotlivé vývody modulu se připojí do vysílače (připájením) takto:
  1. Prostřední vývod trojpinového konektoru na delší straně modulu, označený "+" se připojí na červený vodič potenciometru plynu.
  2. Krajní vodič stejného konektoru, bližší k okraji DPS modulu, označený "GND" se připojí na černý vodič potenciometru plynu.
  3. Krajní vodič, bližší ke středu modulu, označený "ThrVal" je třeba připojit na střední (bílý) vodič potenciometru plynu
  4. Vývod dvojpinového konektoru (umístěného na opačné straně delší strany než trojpinový, používaný v minulých bodech), bližší ke kraji DPS, označený "Thr.Cut", je nutné připojit na ten z vodičů tlačítka Thr Cut, který není černé barvy (obvykle šedý).
  5. Zbývající vývod dvojpinového konektoru, označený "GND", je možné (ale nemělo by být nutné) připojit na černý vodič tlačítka Thr Cut.
Na druhém konci trojžilového kabelu je použit standardní "servový" konektor JR/Futaba. Na dvojžilové propojení k tlačítku Thr Cut lze použít rovněž trojpinový servový konektor, u kterého není jedna krajní dutinka využita. Alternativně je samozřejmě možné všechny vodiče na modul přímo připájet do míst, kde se předpokládají hřebínkové konektory.


Popis funkce


Automatické spouštění a zastavování timeru v DX6i podle polohy páky plynu.

Pokud je hodnota plynu větší než rozhodovací úroveň (ThrSta), sepne na 0,5s tlačítko Thr Cut a tím odstartuje Timer. Další impulsy generuje vždy při přechodu páky plynu přes rozhodovací úroveň. Pro kontrolu je aktivni Timer indikován svitem LED na destičce (pokud je osazena).

LED má, kromě indikace předpokládané aktivity stopek, ještě kontrolní funkci při ev. přeprogramování mikrokontroléru přes sériový kabel. Podle poblikávání LED lze do jisté míry sledovat průběh komunikace s počítačem při nahrávání programu.  

Po spuštění je načten z EEPROM iniciálni rozsah plynu (THR_MIN až THR_MAX),  a rozhodovací úroveň. Rozhodovací úroveň je iniciálně 7% z rozsahu kniplu plynu, lze změnit kalibrací (viz dále).

Používání


Po zapnutí vysílače se ozve, mimo standardního pípnutí DX6i, ještě hlubší krátký tón, informující o aktivitě modulu spouštění stopek.

Pokud je páka plynu posunuta do výchylky větší, než je nastavená rozhodovací úroveň, jsou spuštěny stopky. DX6i to doprovází svým standardním pípáním (jedno či dvě pípnutí, podle okolností).

Pokud se páka plynu vrátí do nuly (resp. výchylky bude menší, než nastavená r.ú.), jsou stopky zastaveny. DX6i opět reaguje standardním pípáním.

Funkce inicializace stopek delším stiskem tlačítka Thr Cut je zachována, jen musí být tento stisk kratší než cca 4s (jinak se vyvolá funkce přenastavení modulu).

Stisk Thr Cut na kratší dobu (0,5s) způsobí přepnutí režimu stopek jako při práci bez modulu. Dá se toho využít v případě, že stav stopek z nějakého důvodu neodpovídá stavu, ve kterém je zanechal modul. Stačí pak stisknout Thr Cut na cca 0,5s a stav stopek se překlopí beze změny stavu modulu.

V případě potřeby lze zkalibrovat rozsah plynu a nastavit rozhodovací úroveň:
  1. Stisknout dlouze (cca 4s) tlačítko Thr Cut na vysílači.
  2. Ozvou se 2 pípnutí - začátek kalibrace.
  3. Pohybovat (po dobu cca 5s) pomalu kniplem plynu z minima na maximum a zpět.
  4. Ozve se tón.
  5. Nastavit knipl plynu do polohy, kdy se mají aktivovat stopky.
  6. Počkat na závěrečný delší tón.
Hodnoty jsou okamžitě použity a současně zapsány do EEPROM, používají se až do další kalibrace (přečkají, samozřejmě, vypnutí vysílače).

Pokud se po vstupu do kalibrace nepohne pákou, dojde k vypnuti aut. spouštění stopek.

Odpovědnost


Veškerá zodpovědnost za využití zde uvedených informací je na čtenáři.

Je třeba zejména důrazně upozornit, že tato úprava znamená mj. porušení záručních podmínek vysílače. Pokud si tuto či podobnou úpravu uděláte, je to na Vaši zodpovědnost a Vaše riziko. Úpravy mohou, zejména při neodborném provedení, způsobit chybnou funkčnost vysílače, ev. jej i nenávratně poškodit.

Program je poskytován bez jakékoli záruky. Jeho využití je zcela na vaši zodpovědnost. Autor poskytuje program “tak jak je”, bez záruky jakéhokoli druhu, ať výslovné nebo vyplývající, včetně, ale nikoli jen, záruk obchodovatelnosti a vhodnosti pro určitý účel. Pokud jde o kvalitu a výkonnost programu, je veškeré riziko na vás. Pokud by se u programu projevily závady, náklady na potřebnou údržbu, opravu či nápravu padají na váš vrub.

V žádném případě vám nebude autor, ani žádná jiná strana, která smí upravovat nebo šířit program v souladu s licencí GPL, odpovědna za škody, včetně všech obecných, speciálních, nahodilých nebo následných škod vyplývajících z užívání anebo neschopnosti užívat programu (včetně, ale nikoli jen, ztráty nebo zkreslení dat, nebo trvalých škod způsobených vám nebo třetím stranám, nebo selhání funkce programu v součinnosti s jinými programy), a to i v případě, že autor nebo jiná strana byli upozorněni na možnost takových škod, nebo ji mohli předpokládat.


Žádné komentáře:

Okomentovat