Jindra Fučík

Lokomotivní DCC Dekodér pro nízko-napěťové motory

Tento projekt je poněkud zvláštní, neboť se vůbec nejedná o můj projekt. Před nějakou dobou jsem dostal email od Hannera Meinholda s následujícím textem (volný překlad):

Ahoj,

Žili v USA, ale pocházím z Německa
Někdy kolem roku 2008 jsem navrhl a postavil vlastní DCC dekodér pro malé lokomotivy. V té době jsem byl ve spojení s Georgem Zeiglerem. Nabízel mi svůj návrh, ale mně se moc nelíbila metoda "počítání cyklů".
Můj návrh je založen na dekódování DCC signálu s použitím přerušení, takže se všechny zbývající akce mohou odehrávat v hlavním programu. Díky tomu může být program snadno rozšiřován. Já jsem svůj dekodér postavil pro malé lokomotivy, které používají nízkonapěťové motory a ukládají si energii v jednom superkondenzátoru. Dekodér je také vybaven čtením EMF feedback pro excelentní práci v malých rychlostech.
Podívej se na příklad sem:

Nyní začínám být starý a začínám mít problémy s letováním malých SMD součástek. Myslím si že by byla škoda, kdyby dekodér zmizel někde v nirváně: zajímalo by tě umístit na svou stránku software/schema a další z tohoto dekodéru?

Jedná se o dekodér pro zvláštní případy. Vytvořil jsem jej pro Roco H0e dieselovou lokomotivu, aby opravdu dobře jezdila
Dekodér interně pracuje na 3V, takže stačí jeden Gold-Cap (použitý trochu mimo specifikaci) pro napájení lokomotivy při přerušení signálu (naříklad na srdcovkách výhybek). Motor musí být typu coreles (Faulhaber/Maxon) 2-4V s nízkou spotřebou. Díky rezistoru v sérii a regulátoru napětí lze použít běžnou centrálu. Výstupní napětí musí být nastaveno pro měřítka "N" nebo "Z"(<15V). Pokud lokomotiva dostane příkaz pro zastavení a zastaví v místě bez napájení, začne se plížit, dokud není detekováno napájení a DCC signál. Doposud není implementován žádný timeout.

S úctou
Henner

Takže jsem se rozhodl umístit text na mou stránku "tak jak je". Zeptal jsem se na pár detailů, které by umožnili ostatním zopakovat tento dekodér (nebo jeho princip).

Schema/plošňák je vytvořený v programu protel, což je starý program pro DOS.
Myslím, že budeš mít ještě spoustu dalších otázek. Nestyď se zeptat. Určitě napíši příští týden nebo později nějaký popis dekodéru.
Motor, který jsem použil je Fulhaber coreless motor nebo podobný. Přebytky lze koupit u LEMO Solar v Německu. Součástky jsem koupil v Digi-Key a plošňák mi dělali v Bulharsku. Pro pájení malého čipu mikro-řadiče jsem si upravil páječku; řídím jí pomocí doma udělaného ramp generátoru pro přetavované pájení (omlouvám se, ale ani to neumím říci česky). Ostatní součástky jsou připájené ručně.

Low voltage DCC loco decoder

This project is little curious for me. It is not my project. Long time ago I received email from Henner Meinhold with following text:

Hi,

I live in the USA but am originally from Germany.
Around 2008 I designed and built my own DCC decoder for small locos. At this time I was in touch with Georg Ziegler. He offered me his design, but I did not like the "cycle counting".
My design is based on the DCC signal being decoded during an interrupt while all the remaining processing is done in the main program. Thus the functionality can easily be extended. I built my decoder for small locos with low voltage motors and energy storage via a single double layer capacitor. The decoder also features EMF feedback for excellent low speed operation.
See an example here:

Now I am getting older and I have problems soldering the tiny SMD components. As I think it would be a pity if this decoder would disappear in nirvana: Are you guys interested in hosting the software/schematics etc. of this decoder?

This is a special purpose decoder. I developed it for a HOe diesel from Roco to get excellent operating performance.
The decoder runs internally on 3V, so one single Gold-Cap (used slightly out of spec) can power the loco when interruptions e.g. on frogs happen. The motor must be a coreless type (Faulhaber/Maxon) 2..4V with low current consumption. Due to a series resistor and a voltage regulator a standard command station can be used. The output voltage should be set for "N" or "Z" gauge (<15V). In case the loco is commanded to halt and happens to stop at a location without power it starts creeping until power and DCC signal is detected. No timeout is yet implemented.

Regards
Henner


So, I decided to put it to my webpage "as is". I ask for more details, to allow someone replicate the decoder (or it's principle).

The schematics/layout was done with an old protel DOS based package.
I guess you will have lots of questions. Do not hesitate to ask. I will also write a description of the decoder within the next week or so.
The motors I use are the coreless ones from Faulhaber etc. Surplus is available from LEMO Solar in Germany. I bought the electronic components from Digi-Key and the PCBs were done in Bulgaria. For soldering the small controller chip I modified a soldering iron and controlled it with a home-made ramp generator for reflow soldering. The other chips are hand soldered.

Download:Compiled file ZIP

Zde jsou nějaké fotky. Na první je dekodér v lokomotivě. Zde jsem se pokoušel připojit dva 2,7V kondenzátory v sérii aby pracovali podle specifikace. S novými 3V kondenzátory to již není nutné.

Here is some pictures. First the decoder in a loco. Here I tried to connect two 2.7V capacitors in series to run them within spec. With the new 3V capacitors this is no longer necessary.

Další obrázek ukazuje mou improvizovanou přetavovací páječku založenou na staré páječce, snímači teploty, triaková regulace s průchodem nulou a ramp řadič. Funguje to opravdu dobře:

The next picture shows my improvised reflow heater based on an old soldering iron, thermocouple, zero crossing Triac and ramp controller. It works quite well:

Bližší pohled na pájecí plochu:

Mimochodem: Obrázek ukazuje všechny spoje nutné pro programování/debugování čipu GND, VDD, Reset(C2CLK), Pin 0.7(C2D).
A také: čip C8051F300 je dostupný v pouzdře SOIC-14, který je snažší pro prototypy. Nicméně před nedávnem jsem přešel na C8051F330 a 530, protože mají více pinů a možností.

A close-up of the heater pad:

By the way: This shows all the connections necessary to program/debug the chip. GND, VDD, Reset(C2CLK), Pin 0.7(C2D).
Also: the C8051F300 is available as SOIC-14, which is easier for prototyping. However, recently I switched to C8051F330 and 530, as they have more pins/capabilities.

Jsou implementována nejdůležitější CV vyžadovaná NMRA, mohou být programována na standardní programovací koleji. Zápis CV je potvrzovaný krátkým cuknutím motoru a probliknutím předních světel. Implementována jsou následující CV:

The most important CVs according to NMRA are implemented and can be programmed on a standard programming track. Writing CVs is acnowledged with a short burst of the motor and flashing of thr headlight. The following CVs are implemented:


CV Values
CV#min-maxvýznammeaning
11-128Krátká adresaShort address
20-255minimální rychlostmin speed
30-255zrychleníacceleration
40-255zpomalenídeceleration
50-255maximální rychlosttop speed
91-255šířka EMF pauzy (nepoužito)EMF pause width (not used)
17192-231dlouhá adresa 1long address 1
180-255dlouhá adresa 2long address 2
190-127soupravaconsist
210-255mapování funkcí pro soupravu (neotestováno)function mapping for consist (not tested)
220-3mapování F0 pro soupravu (neotestováno)F0 mapping for consist (not tested)
290-3konfigurace; Bit 0 = směr; a Bit 1 = 14/28 rychlostních krokůconfiguration; Bit 0 = direction; and Bit 1 = 14/28 speed steps
520-255KP parametr pro řízení rychlosti (zkus 200)KP Parameter for speed control (try 200)
530-255KI parametr pro řízení rychlosti (zkus 20)KI Parameter for speed control (try 20)
540-255KFr parametr pro řízení rychlosti (nepoužito)KFr Parameter for speed control (not used)
550-255Rychlost plazení, aby se zabránilo zastavení v místě bez signálu (zkus 20)Creep speed to avoid stop without signal (try 20)
67ff0-255Rychlostní tabulkaspeed table

Pouze pár mých (Jindřich Fučík) poznámek:

Můžete si všimnout, že plošňák je vytvořený jako dvě jednostranné desky. Může však být vytvořen jako jeden oboustranně osazený, nebo dvě samostatné desky propojené dráty (dvě desky jsou na fotografii). Stejné vodiče se používají pro programování MCU.
Software má definované výstupy pro světla, ale ty nejsou vyvedeny na schématu.
Použitý procesor je typu C51
Schema používá tranzistory, které se již nevyrábí, ale v přiloženém ZIPu můžete najít vhodné náhrady. Je nutné používat samostatné tranzistory namísto integrovaných H-můstků, aby bylo možné číst Back EMF.

Only few of my (Jindřich Fučík) notes:

You can see, the PCB is done as two single sided boards. It can be done as one folded or as two separated boards connected by wires (two boards are on photo). The same wires are used for for programming of MCU.
Software have defined outputs for lights, but they are not populated on schematic.
Used MCU is C51 style
The schematic using transistors they are out of production, then in attached ZIP file you can find some alternatives. It is necessary to use separate transistors instead integrated H-bridge, to be able read Back EMF.



Hosted: