Rev 1.0.3 2016-06-05 Side 1 af 10
Intro DCC/MM Udviklingsmodul Venligst læst denne guide HELT igennem en gang eller to, før du begynder at samle kit et, så du føler dig afklaret med hvordan det skal samles. Det er så ærgeligt hvis man får det samlet forkert, fordi man ikke har læst instruktionen ordentligt. DCC/MM udviklings modul startede med en ide om at bygge egne tilbehørsdekodere baseret på den fleksible platform Arduino. En Arduino er en i sig selv en lille mikrocomputer, som man kan programmere præcis som man lyster. Alt efter hvilken model Arduino man benytter, har de forskellig størrelse og specifikationer. De fleste benytter dog en chip der hedder AtMega328 som køre 16 Mhz, det vil sige den kan udføre noget 16 millioner gange i sekundet! I stedet for at sidde med fuglereder og hulprint, besluttede jeg mig for at udvikle et standard modul, hvor der allerede var alle de ting du skulle bruge, både med hensyn til at omdanne DCC/MM formatet til noget som Arduino kan forstå, dels en spændingsforsyning, så uanset om jeg lige havde den ene eller anden strømforsyning ved hånden, kunne den håndtere det, endda kan den tage strøm direkte fra sporet. Dernæst var det vigtigt at den let kunne bruges både til udvikling, men også til egentlige tilbehørsdekodere, der kunne dække ethvert behov. Siden starten har jeg så fundet på en måde at udvide standard udviklings/dekoder modulet med en række forskellige funktions moduler. På den måde behøver man kun én type tilbehørs dekoder, uanset hvad det er man gerne vil styre. Ud af boksen er den velegnet til at styre LED lys, eksempelvis lyssignaler, husbelysning og meget andet, men vil man hellere bruge den til noget andet, så kan man købe et billigt funktionsmodul, som er lige til at koble på. Dermed har man pludselig uanede muligheder, og kan lave styringer af sporskifter, servoer, avancerede lyseffekter, kranstyringer og flere moduler er på tegnebrædtet. Programmeringen af Arduino er det der afholder mange fra at gå i gang med Arduino, men det behøver faktisk ikke være så svært. Også i kodedelen er der færdige moduler man kan hente ned fra min hjemmeside som viser funktionaliteten, og som er lette at bygge videre på. Side 2 af 10
Opbygning DCC/MM Udviklingsmodul Modulet giver dig en nem mulighed for at udvikle din egen DCC/MM -dekoder (Digital Command and Control) og styre elektronik på lige fod med købte moduler fra f.eks. Uhlenbrock, Lenz og andre leverandører. På diagrammet kan du se: (1) DCC/MM styreenhed (2) Skinner (3) Udviklingsmodulet med Arduino Mini Pro (4) Eksempler på elektronik der styres af modulet (lysdioder, motorer, osv.) (5) Seriel kommunikation til PC (kun nødvendig under programmering og test) (6) PC med Arduino IDE udviklingsmiljø Desuden forbindelserne: (a) DCC/MM styreenhed <-> skinner (2 ledere) (b) Skinner <-> DCC/MM udviklingsmodul (2 ledere) (c) DCC/MM udviklingsmodul <-> elektronik (afhænger af hvad der styres) (d) DCC/MM udviklingsmodul <-> Seriel kommunikation (6 ledere) (e) Seriel kommunikation <-> PC (USB) Modulet er opbygget på et enkelt print, med en Arduino Mini Pro som styreenhed. Denne enhed kan du programmere på sædvanlig vis, og med brug af et særligt bibliotek kan du reagere på dit anlægs DCC/MMsignaler, og derved bruge din DCC/MM styreenhed til at styre dine egne elektroniske komponenter tilsluttet dit DCC/MM modul. Side 3 af 10
Selve modulet består af fire dele: C A D B A. Strømforsyningen, der omsætter 7-18V AC/DC til 5V DC, til brug for Arduinoen. Hvis du har det serielle kommunikationsmodul sluttet til via USB, behøver du kun at tilslutte særskilt strøm hvis din elektronik kræver mere end USB kan forsyne. B. DCC/MM-delen, der er elektrisk adskilt fra skinnesystemet via en optokobler C. Pin-header med de analoge og digitale ind- og udgange fra Arduinoen. Det er her du tilslutter din egen elektronik, såsom lysdioder, motorer, følere osv. Det er helt almindelige Arduino ind- og udgange, og du kan derfor finde mange eksempler på nettet på, hvordan man styrer forskellige elektroniske komponenter. D. Selve Arduinoen, der indeholder det program der styrer det hele. For at kunne programmere modulet, skal du have et serielt forbindelsesmodul f.eks. MB-SER001. af Martin ofte omtalt som et mellemled. Desuden skal du bruge en PC (Linux, Windows eller Mac) til Arduino IDE udviklingsmiljøet. Side 4 af 10
Indhold Sættet indeholder et print som er selve udviklingsmodulet, en stribe løse komponenter, der skal monteres samt en Arduino Mini Pro, der udgør hjernen i modulet. Du behøver ikke andet værktøj end en elektronikloddekolbe, men en tang og en skævbider vil nok være en god ide. P1 Print til udviklingsmodulet (rødt med hvide påskrifter på oversiden) B1 Brokobling (fire ben, SEP 2W10) C1 0.1 μf (lille rød mrk. 104) C2 22 pf (lille brun, mrk. 22) C3 D8 IC2 MINIPRO OK1 R1 R2 R3 TP1 220 μf (elektrolyt) 1N4148 (stregen er katoden) LM7805 med kølefinne Arduino Mini Pro 5V (blåt print) 6N137 (prik svarer til hak på tegningen) 1 kω (brun-sort-rød---guld) 10 kω (brun-sort-orange---guld) 10 kω (brun-sort-orange---guld) TPPAD1-13 to-polet klemrække TP2 PI TPPAD1-13 to-polet klemrække Pin-headers til montering af Arduino (2 x 12 pins) seriel kommunikation (6 hun pins) signaler til elektronikken (22 pins) Printet set fra oversiden med de hvide signaturer. Op er nord. Side 5 af 10
Monteringsvejledning Alle komponenter på nær selve Arduinoen stikkes igennem fra oversiden og loddes på undersiden af det røde print. Den lange pin-header kan dog placeres nedenunder, hvis du ønsker at forbinde din egen elektronik via et breadboard. Komponenterne loddes omhyggeligt på printet i følgende rækkefølge: Pin-rækker og Arduinoen 1. De to rækker pin-headers til Arduinoen loddes på det røde print den lange ende stikkes igennem fra oversiden og loddes på undersiden. Lod en enkelt pin fast for hver stribe, så du kan justere dem til at være helt lige. Prøv af, at Arduinoen passer ovenpå, før du lodder resten fast. 2. Lod pin-header til den serielle kommunikation på Arduinoen. Stik den korte ende ned fra oversiden og lod på undersiden. Mange vil hellere sætte en hun pin-header på, da man så ville kan sætte mellemstykket direkte ned i, uden ekstra ledninger. 3. Placer Arduinoen ovenpå de to pin-header rækker, med den serielle forbindelse pegende mod syd og lod alle 2x12 forbindelser. 4. Kort den lange pinrække af til 22, placer den efter ønske. Hvis du vil bruge den til breadboard (fumpleprint), så sæt den i fra neden, og lod på oversiden, hvis du vil have forbindelserne på oversiden, kan du montere pinrækken på oversiden og lodde på undersiden. Du behøver ikke at montere pinrækker hvis du vil bruge den som en fast dekoder til eksempelvis LED pærer, så kan du lodde ledninger direkte på printet. Strømforsyningsdelen Den nordlige del af modulet monteres som følger: 5. Monter brokoblingen B1 først. Husk at vende den rigtigt der er markeret +/- og 2x. Stik benene igennem, men ikke hele vejen placer den, så huset er ca. 5 mm ovenfor printet. 6. Klemrækken placeres ved siden af, med hullerne til ledninger udad (mod nord ). 7. C3 skal vende rigtigt. Minus (-) er markeret med en hvid streg på siden. 8. LM7805 skal vende med kølefinnen mod nord. 9. C1 skal ikke vende på nogen bestemt måde. DCC/MM-delen Den sydlige del (og en enkelt modstand midtfor) monteres i følgende rækkefølge: 10. R1, R2 og R3 skal ikke vende på nogen bestemt måde. 11. D8 skal vende med katoden (stregen) mod vest. 12. C2 skal ikke vende på nogen bestemt måde. 13. OK1 skal vende, så prikken for enden svarer til hakket vist på printet. Side 6 af 10
14. Klemrækken placeres ved siden af, med hullerne til ledninger udad (mod syd ). Side 7 af 10
Afprøvning Arduinoen 15. Forbind det serielle kommunikationsmodul med udviklingsmodulet. Her er vist en MB-SER001 baseret på FTDI232. Den leveres med et 6-leder båndkabel med hunstik i begge ender. Når kablet ligger helt flat, skal udviklingsmodulet have oversiden opad, mens det serielle modul har oversiden nedad. Hvis du har monteret hun header pins, på den serielle forbindelse, så skal du stikke mellemstykket i, således at chippen på mellemstykket peger mod syd. 16. Forbind det serielle kommunikationsmodul med en PC via et passende USB-kabel. Nu bør der lyse LED'er både på kommunikationsmodulet og udviklingsmodulet. (Kun for Windows-installationer) Installer en passende driver til det serielle kommunikationsmodul. Den kan hentes på http://arduino.bech.dk. (Kun for Linux-installationer) Sæt USB-porten så den kan anvendes uden privilegier. Lav en fil: /etc/udev/rules.d/52-arduino.rules med indholdet: SUBSYSTEM=="usb",SYSFS{idVendor}=="0403",MODE="0666",GROUP="XX" hvor XX er dit brugernavn. sudo chmod a+r /etc/udev/rules.d/52-arduino.rules sudo service udev reload 17. Installer Arduino udviklingsmiljøet (IDE'en) på PC'en. Hent den relevante udgave på https://www.arduino.cc/en/main/software 18. I Arduino IDE'en, luk eksemplet Blink op: Open -> Examples -> 01.Basics -> Blink 19. Kør det, og konstater at den grønne LED på udviklingsmodulet begynder at blinke med 1 sekund tændt, 1 sekund slukket. 20. Ret delay(1000) til delay(300) (to steder) og kør igen. Konstater at LED'en nu blinker noget hurtigere. Side 8 af 10
DCC/MM-delen Såvel DCC som Motorola formatet er egentlig et jævnstrømssignal, der dog opfører sig næsten som et vekselstrømssignal. Det som sker er at hver gang der skal sendes data til en dekoder, skifter signalet polaritet, det vil sige + bliver til 0 og 0 bliver til +. Ved at skifte polaritet en masse gange indenfor en bestemt mængde tid, med bestemte pauser imellem, kan man sende koder ud, som kan opfanges af dekoderen. Alle de informationer man har brug for at sende til en dekoder for at få den til at reagere kaldes en datapakke. En datapakke indeholder eksempelvis hvilken adresse dekoder vi vil nå, hvilket output på dekoderen vi gerne vil gøre noget med, og hvad vi ønsker at gøre. Alt sammen sendt som 1 og 0 taller eller den ene eller den anden polarisation. Som udgangspunkt lytter alle dekodere efter alle signaler, og når den så genkender en datapakke, deler den pakken op i de dele som den består i. Hvis adresse delen i datapakken er lig med den adresse som dekoderen har, så reagerer den, ellers ignoreres datapakken. Da signalet kommer ind med væsentlig højere spænding end de 5v en Arduino kan klare, bruges en hurtig optokobler der adskiller spændingen fra sporet til spændingen fra Arduino, men stadig tillader signalet at komme igennem. Herefter er det et spørgsmål om hvordan Arduino er programmeret, om det er en DCC dekoder eller en Motorola dekoder. Men uanset hvad, er der allerede andre der har lavet grundkoden, så du kan koncentrere dig om den funktionalitet din dekoder skal have. Side 9 af 10
Hvad så nu? Du kan finde mange Arduino-eksempler her: http://www.instructables.com og http://www.arduino.cc Eksempler på programmer der anvender DCC/MM-delen kan findes her: http://arduino.bech.dk Kontakt Hvis du har kommentarer eller spørgsmål, så skriv til info@mbhobby.com. Husk at dette er et hobby-projekt, så hav tålmodighed med svar. Jeg har planer om at lave supplerende funktionsmoduler, så hold øje med min hjemmeside www.mbhobby.com og med Facebook-gruppen modeltogs elektronik. Rigtig god fornøjelse! Martin Bech, Ringsted 2016 Side 10 af 10