DCC dekodér pro 1/2/4 modelářská serva

Tento dekodér vznikl jako rozšíření dekodéru Paco Cañada. Jedná se pouze o změnu firmware, zapojení a podstata je stále stejná.

Obr. 1 – 3 – Schéma a plošný spoj

  Existují dvě verze software. Verze 3.0 a 3.5. a dvě pod-verze 3.2 a 3.4 

  Verze 3.0 zastavuje čtení dat během pohybu serva, takže je možné, že nepřijme některý paket, nicméně pohyb serva je velmi přesný.
  Verze 3.5 naopak čte data neustále, takže může dojít ke chvění serva při pomalém pohybu.
  Verze 3.2 čte neustále, ovládá však pouze 2 serva, zato ve 4 polohách – Servo 1 dostává polohy A1,B1,A1 a B2, Servo 3 dostává polohy A3,B3,A4,B4 (serva 2 a 4 se nepodporují) – to je vhodné pro tří-cestné výhybky a pro CarSystem.
  Verze 3.4 čte neustále, ovládá však pouze 1 servo, zato v 8 polohách – to je vhodné pro ovládání šuplíkových nádraží nebo malé točny velikosti Z a menší.

  Hlavní změna spočívá v tom, že dekodér definuje zvlášť polohu serva pro pozici A(rovně) a pro pozici B(do oblouku).
  Dále je možné měnit směr otáčení ještě před dokončením otáčky.
  A také je možné nastavit rychlost otáčení na maximální rychlost serva.

Obr. 4

CV Values

CV# CV# default min-max význam meaning
513 1 1 (vyh. 5-8) 0-63 Primární adresa, spodní polovina Primary address, low half
515 3 1 0-255 Rychlost Serva 1 Speed of servo 1
516 4 1 0-255 Rychlost Serva 2 Speed of servo 2
517 5 1 0-255 Rychlost Serva 3 Speed of servo 3
518 6 1 0-255 Rychlost Serva 4 Speed of servo 4
  7 30(35) Verze Version
  8 13 (0D hex) ID Výrobce Manufacturer ID
521 9 0 0-7 Primární adresa, horní polovina Primary address, high half
541 29 128 (bit 7) 0/128 konfigurace – 128 = ukládat nastavení a po startu se vracet k minulému stavu Configuration – 128 = save last state and return after startup
545 33 78 (4E hex) 10-127 Délka mezery – doporučuji neměnit tohle je cca 50Hz (vzorec je CV546*256µs, takže cca 20ms) Spacing – it is recommended not change it – cca 50Hz (formula is CV546*256µs; it means cca 20ms)
546 34 1 1 Příznaky (nepoužívá se) Flags (not used)
547 35 100 (64 hex) 90-210 Pozice A pro servo 1 (čas pulsu *10µs, takže 100=1,00ms; 250=2,5ms) Position A for servo 1 (pulse time *10µs; it means 100=1,00ms; 250=2,5ms)
548 36 100 (64 hex) 90-210 Pozice A pro servo 2 Position A for servo 2
549 37 100 (64 hex) 90-210 Pozice A pro servo 3 Position A for servo 3
550 38 100 (64 hex) 90-210 Pozice A pro servo 4 Position A for servo 4
551 39 200 (C8 hex) 90-210 Pozice B pro servo 1 (čas pulsu *10µs, takže 100=1,00ms; 250=2,5ms) Position B for servo 1 (pulse time *10µs; it means 100=1,00ms; 250=2,5ms)
552 40 200 (C8 hex) 90-210 Pozice B pro servo 2 Position B for servo 2
553 41 200 (C8 hex) 90-210 Pozice B pro servo 3 Position B for servo 3
554 42 200 (C8 hex) 90-210 Pozice B pro servo 4 Position B for servo 4
555 43 4 4-10 Počet pulsů po dosažení pozice Number of pulses after position reach

  Programování CV je možné provádět ve stránkovém a v přímém režimu.
  Adresu lze naprogramovat také tak, že stisknete tlačítko a přehodíte příslušnou výhybku, dekodér si pak určí a uloží adresu.

  Pokud máte s programováním potíže, lze nastavit hodnoty CV již při nahrávání hex souboru do procesoru. Postup je zachycen na následujícím obrázku.

Obr. 5

Zelená je primární adresa
Červená – čas pro servo 1…4
Žlutá – A poloha pro serva 1…4
Modrá – B poloha pro serva 1…4
Fialová – ostatní
Také je možné si CV odpočítat od začátku, jejich poloha odpovídá jejich číslu

CV35=CV41: Je možné si všimnout, že pro každé servo se nastavuje pozice pro A (rovně) a B (do odbočky) samostatně. Je možné nastavit i hodnoty v obráceném pořadí – tedy A=200 a B=100, takže není nutné obracet servo.
Pozor: dekodér neprovádí žádnou kontrolu na hodnoty, většina serv funguje v rozsahu 0,9 – 2,1 ms (90-210). Překvapila mne serva blue-arrow (ta levná malá modrá), která se na blbé hodnoty začala točit dokola.

  Přidal jsem nové CV43 – udává počet pulsů po dosažení pozice. Tato hodnota je důležitá zejména pokud používáte maximální rychlost serva. Servo potřebuje ještě nějaký čas, aby se ustálilo na svojí pozici. Při pomalém běhu je ten čas velmi krátký, ale při rychlém přesunu se může stát, že servo ani nestihne na svojí pozici doběhnout. V takovém případě je možné tuto hodnotu zvětšit. Použitelné hodnoty jsou cca mezi 4 až 10, delší vedou ke chvění serva, kratší k nedobíhání na pozici.

  Určení rychlosti serva (CV3-CV6) – rychlost znamená kolikrát se použije každý puls. Takže pokud máme definované polohy A=100 a B=180 (1ms – 1,8ms), máme 80 kroků, takže při výchozím kmitočtu 50Hz je doba otáčení 80/50=1,6sec při rychlosti 1.
  Při rychlosti 2 to bude dvojnásobně dlouho – tedy cca 3,2sec, při rychlosti 3 to bude trojnásobek, tedy 4,8sec. Pokud nastavím rychlost 0, znamená to maximální rychlost serva. (tu najdete v dokumentaci k servu a znamená rychlost otočení o 60° – cca 67kroků dekodéru)
  Pokud nastavíme rychlost na hodnotu větší než 128, použije se jiná logika výpočtu. Namísto opakování kroků se použije přičítání větších čísel. Jednoduše řečeno pokud použijeme rychlost v rozsahu 128-255, dekodér odečte od zadaného čísla 127 a tolikrát rychleji servo poběží.

  Několik příkladů, vždy pro první servo, vždy pro: CV#35=A=100; CV#39=B=200; CV#33=78=50Hz

Příklad 1:
CV#3=1
CV#35-CV#39=200-100=100
čas=(100*1)/50=2sec

Příklad 2:
CV#3=2
CV#35-CV#39=200-100=100
čas=(100*2)/50=4sec

Příklad 3:
CV#3=3
CV#35-CV#39=200-100=100
čas=(100*3)/50=6sec

Příklad 4:
CV#3=128
CV#35-CV#39=200-100=100
128-127=1
čas=(100/1)/50=2sec

Příklad 5:
CV#3=129
CV#35-CV#39=200-100=100
129-127=2
čas=(100/2)/50=1sec
Pozor: pro případ kdy se používá dělení nesmí první podíl (v závorce) vycházet desetinné číslo, takže pro další příklad musíme provést korekci B pozice na 199

Příklad 6:
CV#3=130
CV#35-CV#39=199-100=99
130-127=3
čas=(99/3)/50=0,66sec

Příklad 7:
CV#3=131
CV#35-CV#39=200-100=100
131-127=4
čas=(100/4)/50=0,5sec

CV33 – kmitočet; jedná se o celkem zásadní hodnotu pro servo. Většina výrobců serv uvádí, že jejich serva jsou konstruovaná pro kmitočet 50Hz, některá (Multiplex) pro 40Hz. Pokud potřebujete větší rychlost, můžete experimentovat s kmitočty 60Hz a možná i 70Hz, víc vám servo asi nedovolí.

CV33 Values

CV33   f [Hz]  t [sec] (A=100, B=200, speed=1)
98 40 2,5
78 50 2
65 60 1,66
56 70 1,4

Překmitnutí serva
  U levných analogových serv se často stává, že při použití maximální rychlosti a velké výchylky dochází k „překmitnutí“. To je přirozená vlastnost serva, pokusím se jí demonstrovat na následujícím obrázku. Servo se nachází v pozici A a dostane příkaz k okamžitému přesunu do pozice B. To je pochopitelně daleko, takže servo připojí motoru plné napájení a čeká na další puls.
  Ten je stále ještě pro vzdálenou pozici, takže servo pokračuje plnou rychlostí.
  Když přijde třetí puls, servo zjistí, že přejelo a tak se začne vracet.
  Většinou se návrat povede na první pokus, ale může se stát, že i zde dojde k překmitu a tak servo zase provede korekci.

  Z toho důvodu je nutné, aby drátovody mezi servem a vyhybkou (závorami, vraty výtopny) byli dostatečně pružné, aby dokázali tento překmit vykompenzovat.

Obr. 6

Obr. 7 – Nastavení polohy

 Zdroj a poslední verze: http://www.fucik.name/masinky/x/dcc4servo_v3.x.html 

(Pro Honzíkovy vláčky převzato s laskavým svolením autora)

 

Rubrika: DIGI-CZ, Elektronika, TECHNIKA, ZPRÁVY

Vložit komentář

Text komentáře: