Poprosilo mne par lidí co chtějí přestavovat vyhybky pomocí DCC, abych vymyslel servo přestavník, který je maličký a teda použitelný na domácí kolejiště.. Udělám to jako stavební návod se všemi podklady.
Protože mám rád jednoduché a tak nějak uživatelsky čisté věci, tak jsem se rozhodl zabudovat příjem DCC a ovládání serva přímo dovnitř toho serva. Má to ale problém v tom, že je to poměrně hustá a hnusná montáž do malého prostoru. Teda nic moc pro moje staré oči. Proto jsem se rozhodl, že to udělám jako OPEN výrobek a dodám k tomu všechny podklady, ale nebudu to vyrábět. Je použité větší servo, ty maličké jsou mimo mé schopnosti.
Tu je RAR soubor s daty.
Schéma je zase extrémně jednoduché, ale z důvodu husté montáže je tam pár věcí jinak.
Konektor JP1 se nahradí nastojato Graetz můstkem SMD B40S, který má grid 2.54 mm . Ten se zapojí střídavou stranou do dírek 4, 2, a do dírek 1, 3, se zapojí keramika 470nF na dlouhých vývodech a připájí se na vývody + a – Graetz můstku ve vzduchu. Je to dost zvláštní zapojení, ale je tam fakt málo místa. To je jediná zvláštnost v zapojení u této varianty. Taky odpory jsou velmi male, pouze 0.125W / 12 k / grid 5mm. To jsou R2, R3 a R6. Odpor R4 je klasika 0.6 W s hodnotou 10R. Jsou použité 2 kondíky 100nF a 470nF.
Trosku je problém použití plošného spoje tloušťky 0.8 mm, protože jinak by se nedaly připájet vývody Graetz můstku ze strany součástek. Druha varianta může byt klasika 1.5mm.
Potenciometr se připojuje na X1, X2, X3, kde běžec pot. se zapojuje na X1. Procesor je vyndavací, protože tam opravdu není místo na 6-pinovou petici pro ISP.
Musel jsem vytvořit dvě varianty podle krabiček serva, které se mi dostaly do rukou. Je to tam jinak udělané a proto i plošné spoje musí být jinak vytvořené.
Varianty se liší podle toho, či se plošný spoj pájí přímo na vývody motorku anebo ne.
Obě varianty jsou obvodově naprosto totožné a dává se do nich stejný program.
Druha varianta má Graetz zapájeny na plošném spoji, jen není pro něj knihovna, proto je vytvořený prostor na připájení. Ne že bych neuměl vytvořit prvek knihovny, ale je to cesta menšího odporu a nechtělo se mi. ;-)
Funkce obvodu:
Obvod přijímá signál DCC na PD5,6 a je přivedeny přes odpor R6 (12k) na vstup Attiny25 (pin 6), kde je omezený vnitřními diodami na úroveň, která nepoškodí procesor. Je to naprosto bezpečné a zatím se mi nestalo, že by se procesor poškodil. Dále se signál DCC usměrní na Graetz můstku a zastabilizuje se na 78L05 pro napájení procesoru. Může se použít obyčejný 78L05, protože tento obvod si nemusí hlídat spotřebu proudu.
Podle přijatého příkazu na DCC se nastavuje (zapíná) příslušný vývod procesoru a teda i výstup výkonového operačního zesilovače L2722M (SMD), který ovládá přímo motorek serva. Pohybem serva se zároveň natáčí potenciometr a výstup z něho se vyhodnocuje na ADC(1). Pokud se dosáhne hodnoty dorazu uvedeného v EEPROM, tak se motorek vypne. Toto zapojení je naprosto blbuvzdorné, nekmitá a bez příkazu se prostě nepohne. To je společné pro obě varianty.
Je tu ale jedna zvláštnost a to analogové ovládání, kdy pomocí křížového páčkového přepínače (2x3) se může připojovat stejnosměrné napájení +8 až +12V a tak se ovládá vyhybka. Musí být vyhlazené (stabilizované) v tomto rozmezí, teda nesmí být jen usměrněné. Takže pokud prohodíme napájení na vstupu (PD5,6), tak se vyhybka přestaví a přitom se řídí nastavením v EEPROM, teda dorazy a rychlost. Tato vychytávka vlastně nic nestojí a přitom může sloužit jako mezistupeň ovládání, při postupném budování kolejiště.
Čaro nechtěného je v tom, že indikace stavu vyhybky se dá odvodit z polarity napájení a teda přímo napájet LED diody, přes omezovací odpor, na panelu obsluhy. U ovládání přes DCC to pochopitelně nejde, tam se na to musí udělat jinak.
Pokud má vyhybka izolovanou srdcovku, tak se může obvod připojit beze změny. Pokud má kovovou srdcovku, tak se na vrch serva přilepí mikrospínač s delším ramenem a použije se na přepínání srdcovky.
Programové vybavení:
Protože nemám dobré zkušenosti s lepiči kódů, kteří si myslí, že dokáží všechno, tak přikládám jen HEX kód, které jsou odladěné a odvšivené. Stejně se mi potvrdilo, že většinou jen vše pokazí a pak jen nadávají.
Co je důležité, jsou jen hodnoty v EEPROM, které se dají nastavovat přes programátor CV pro lokodekodéry na programovací koleji. Teda tento obvod umí číst a zapisovat hodnoty do EEPROM, například s pomocí JMRI a nějaké centrály, která obsahuje výstup na programovací kolej a má zapojenou komunikaci s počítačem.
Popis adres a hodnot CV v EEPROM :
Adresování obvodu je poněkud zmatečné, ale však norma DCC je taky pěkně prasácká. Tím myslím, ze adresa 1 je vlastně 0 a bity “/a“ jsou negované. A to nepíši o párovém řízení, které je celé poplatné magnetickým přestavníkům, které se už moc nepoužívají. Ale kde je vůle, tak se cesta vždycky najde a nikomu neuškodí, když si trošku procvičí mozkové závity. Odkazuji na normy NMRA, konkrétně S-9.2.1, odrážka 420.
Ještě dodám, že adresa musí být sudá, protože lichý bit „d“ je natvrdo použitý jako příkazový, teda určuje, či je vyhybka rovno nebo do odbočky. Teda bit.0 (d) na adrese 9 v EEPROM musí být vždy nula.
Pohyb serva je okolo středové polohy a délku pohybu určuje byte 11 z EEPROM, který stanoví, o kolik se pohne servo doleva nebo doprava. Limitní stavy jsou 110 a 20, protože musíme nechat místo na doběhy, aby servo neslo na mechanické dorazy uvnitř serva.
Při vlastní stavbě je trošku problém prvotní nastavení, kdy musíme pomocí CV programátoru nahrát provozní hodnoty. Trošku předpokládám, že kdo se pustí do stavby, tak je už pokročilý modelář a nějaký programátor CV má doma. Pokud ne, tak si musí někoho najít.
Stavba:
Stavba není složitá, teda kromě toho, že to je strašně maličké a musí se dát pozor na přetečení cínu tam, kde nepatří. Podle mne si bez mikropájky a nějakého držáku neporadíte. Montáž dvou SMD prvků je celkem v pohodě, doporučuji je osazovat jako prvé.
Jediné, co může dělat problémy je opačná polarita motorku, teda nevypínají dorazy podle EEPROM. Pak se musí prohodit + a – na vývodech potenciometru anebo motorku. Pokud je motor napevno jako u první varianty, tak je jediná možnost prohodit + a – u potenciometru. Neexistuje nastavení dopředu, protože potenciometry bývají osazované i naopak a potom je to jinak.
Oživení:
Opravdu doporučuji to při prvním zapojení dát na programátor CV s malým proudem a vyzkoušet rty, či se někde něco nehřeje a následně naprogramovat všechny CV podle tabulky. Pokud se to nedaří, tak jenom hledat chyby, které bývají nejvíce ve špatném spájkování. Teda studeny spoj nebo zatečený cín tam, kde být nemá.
preambule 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1
CV2 – adresa < 1, 0, A7, A6, A5, A4, A3, A2 >
CV9 – adresa < 1, /A10, /A9, /A8, 1, A1, A0, D >
Příklady :
adresa 1 = <1, 0, 0, 0, 0, 0, 0, 0 > < 1, 1, 1, 1, 1, 0, 1, 0>
adresa 4 = <1, 0, 0, 0, 0, 0, 0, 1 > < 1, 1, 1, 1, 1, 0, 0, 0>
adresa 5 = <1, 0, 0, 0, 0, 0, 0, 1 > < 1, 1, 1, 1, 1, 0, 1, 0>
adresa 12 = <1, 0, 0, 0, 0, 0, 1, 1 > < 1, 1, 1, 1, 1, 0, 0, 0>
CV3 – rychlost serva, 5 – 250, tady je problém v tom, že příliš malé PWM nerozběhne motorek a teda minimální hodnota je asi 30 a je dost individuální podle kvality převodovky. Maximální hodnota je okolo 120, kdy už je to nemodelově rychlé.
CV7 - 13 zařazeno do kategorie DIY
CV8 - 90 první písmeno pachatele, teda Zdeno.
CV10 - 2 až 50 hodnota, která se symetricky +/- připočítá ke hodnotě 64, teda střed pohybu serva. Je nutné nechat nějakou hodnotu do 0 a do 128 na doběhnutí motorku. Celkem stačí asi 10, teda max hodnoty jsou 10 a 118. To ovšem zase záleží na rychlosti přestavování, kdy při větších rychlostech, je doběh delší.
To jsou všechny použité CV, potřebné na chod obvodu s vykuchaným servo.
Ovládání: Analog je jednoduchý, pouze se přehodí napájení pomoci páčkového 2x3 křížového přepínače. Ovládání pomoci DCC spočívá v poslání paketů, které musí být totožné s těma uloženými v EEPROM, kde se jen mění příkazový bit D, který určuje nastavení vyhybky.
upozornil mne jeden ctenar,
ze nemusim prepajet vyvody na potenciometru, ale je snazsi otocit motorek v servu o 180st.