DCC Lok Decoder met Atmel Tiny45 Beschrijving:
decoder volgens de NMRA DCC standaard eenvoudige opbouw, SMD formaat 0805 dubbelzijdige printplaat 12 * 18 mm met een beetje soldeer ervaring in SMD eenvoudig na te bouwen goedkoop Bootloaderfunctie, 1-wire softwareupdate mogelijk hierdoor functieuitbreidingen op elk moment mogelijk
actuele functies:
korte en lange adressen 14,28 en 128 rijstappen via CV2/5 of bij 14/28FS via snelheidscurve in CV67-94 rem en optrek-vertraging CV3/4 motor PWM frequentie met: 16kHz of 32kHz in CV9 optioneel opslaan van de laatste snelheidstrap en richting in EEprom (is geen DCC norm) frontverlichting richtingsafhankelijk met 80Hz in 10 stappen dimbaar in CV50 lastregling met stap-afstanden, max. correctie grootte, kleinste afwijking in CV52,53,54 kickstart: tijd en spanning in CV 65,66 snelheidscurve voor 14/28 rijstappen in -94 programmering via servicemode momenteel alleen CVByte schrijven programmering „op hoofdrail“ (POM) momenteel alleen CVByte schrijven bedrijfsspannung 8-27V (DCC norm is vanaf 7V) lichtuitgangen ieder 190mA duurbelasting mogelijk motorstroom tot 1A afhankelijk van de gelijkrichterbrug en uitgangstrap
wat niet kan: alleen analoog bedrijf (hardware-matig niet voorzien, software is momenteel nog niet ingebouwd) geen railcom (hardware-matig niet gepland) geen kortsluit beveiliging van de lichtuitgangen (hardware-matig niet gepland)
wat nog realiseerbaar is: verder DCC functies code verder optimeren beperkt analoog bedrijf vanaf ca. 7V analoog spanning
1
Hardware: Het DCC railsignaal komt via de klemmen K1 en K2 aan de gelijkrichter. K1
K3
Gleis
+UB +5V
IC1 D1
IN
C2
K8
TS3480CX50
0,1µF
Gleis
4,7µF
ZMY27
K2
OUT GND
+
C1
R4
C4
R2 10k
BD6231 0,1µF
+5V
10k
OUT1 GND VCC OUT2 VCC VREF FIN RIN
R1
Motor
IC3
K9 Motor
C3
47k 0,1µF
K4 T1 PB5 PB3 PB4 GND
K5 Li h
IC2
T2
VCC PB2 PB1 PB0
C5
TINY45
SN7002
K6 1-wire K7 GND
Maßstab
96,00%
Änderung
06.02.11
Firma 09:59
Ausgabe
14.03.11
21:59
Datei
T45lokdec_bd6231_2.T3001
Zeichner
R3
1,8k
SN7002
0,47µF
Li v
Blatt
Titel Projekt
De 5V spanning voor de Atmel wordt met behulp van een lineaire spanningsregelaar gevormd. Voor de programma afhandeling wordt een Atmel Tiny45 gebruikt, zonder bootloader is ook een Tiny25 mogelijk, maar niet aan te bevelen omdat de reset pin gebruikt wordt en daardoor geen ISP Programmering meer mogelijk is. Het DCC signaal wordt via de 47Kohm aan de Tiny45 gevoerd en door middel van zijn ingang-beschermings-dioden aan Ub respectievelijk GND begrensd . Voor het rijrichtingslicht worden MOS-FET transistors gebruikt. Als Motordriver wordt een BD6230F (0,5A) of BD6231F (1A) van Rohm ingezet. Verder zijn er nog een GND en een 1wire aansluitpunt voor de decoder programmering voorhanden.
2
Print:
Versie T45-2
1
1
1
2
2
1
8
7
6
5
1
2
3
4
1
3
2 1
1
2 4
1
1
4
5
3
6
2
7
1
8
2
1
1
1
1
1
3
2
1
2
2 2
1
1
1
1
1
2 1
1 3
3
2
2
3
2
2
1
Print :
Versie T45-2a
In versie T45-2 is een fout geslopen. De behuizing van de Tiny45 is in de target bibliotheek van het ontwerpprogramma fout opgeslagen. Versie T45-2a is gecorrigeerd.
1
1
1
2
2
1
8
7
6
5
1
2
3
4
1
3
2 1
1
2 4
1
1
4
5
3
6
2
7
1
8
2
1
1
1
1
3
2
1
1
2
2
2
1
1
1
1
1
2 1
1 3
3
2
2
4
2
2
1
Software: Algemeen:De Software is met AVR – Studio in assembler geschreven en is verdeeld in Bootloader en Decodersoftware. Omdat alle 6 IO – Pinnen van de Tiny45 gebruikt worden en daardoor de reset pin niet meer ter beschikking staat, is de bootloader mee geïntegreerd. Daarom is gekozen voor een Tiny45 met 4K programmageheugen en niet de kleinere Tiny25 met slechts 2K programmageheugen. Hierdoor is er ook nog genoeg plaats voor verdere functies in het geheugen. Als Bootloader wordt de versie van Hagen op het Mikrocontroller-Forum „http://www.mikrocontroller.net/topic/95839#new“ met kleine aanpassingen gebruikt (in de bijlage bijgevoegd). Omdat de Bootloader altijd bij programmastart uitgevoerd wordt en dit bij een wiel / rail contact van een locdecoder relatief vaak voorkomt, wordt deze in normale gevallen onmiddellijk weer verlaten. De eigenlijke functie van de softwareupdate kan alleen door een 1 in CV55 gestart worden. In dit geval stopt de normale decoderfunctie en de Bootloader wordt cyclisch door een Watchdog Reset opgeroepen (precieze afloop zie het hoofdstuk: Softwareupdate). Daar in de korte tijd, in welke de bootloader na iedere stroomonderbreking actief is, de lichtuitgangen niet flikkeren, worden deze ports als eerste na het starten van de Loaders op uitgang en op Low (→ uit) gezet (dit is ook de aanpassing van de Bootloader). De exacte Loaderconfiguratie is in de bijlage opgenomen. De Bootloader start dan de eigenlijke decoder-software (welke ook zonder bootloader functioneert). Decodersoftware: De decoder-software is modulair opgebouwd om eenvoudig aan andere AVR 's te kunnen aanpassen. De gebruikte hardware van de AVR staat een veelvoud van mogelijke types toe. Nodig zijn : minstens 8Mhz systeemtakt, een 8 Bit timer in CTC Modus, een 16 Bit timer in fast PWM Modus, een 8 Bit ADC kanaal, 50 Byte SRAM en ca. 100 Byte Eeprom. De Portpins behalve de PWM uitgangen (OCRpins) en de ADC ingang (maar ieder ADC kanaal is mogelijk) naar believen. De software is als volgt ingedeeld: Hardwareinit → Register Ports Timer Decoderinit → gegevens uit Eeprom laden en instellen Timergestuurd decoderbedrijf De decoderfunctie wordt door de in 10us CTC Modus lopende timer gestuurd. Zijn hoofdfunctie is, alle 10us de DCC pin te testen en hieruit de DCC Bitstroom te filteren. Na 128 oproepen (→ alle 1,28ms) wordt bovendien eerst de rijrichtings- verlichting per softwaredimmer met 10 Stappen gezet en dan een nieuwe is-waarde voor de motor-PWM. De normale hoofdlus bouwt het DCC commando op, test de waarde en zet de nieuw ontvangen functies om. Bovendien wordt voor de motorlastregeling de induktiespannung gemeten. Verdere details over de software is in de uitgebreid gedocumenteerde assembler code te vinden.
5
Programmeren van de AVR: Zoals al meerdere keren vermeld,beveel ik het gebruik van de bootloader aan. Dat is niet alleen noodzakelijk om de AVR in ingebouwde toestand zonder reset-pin en AVR – programmer nieuw te programmeren, maar ook heel erg praktisch, omdat voor de programmering in 1-wire modus alleen een GND en data verbinding noodzakelijk zijn. De volgende stappen zijn noodzakelijk: Voorbereiden van de AVR met de volgende FUSE-bits: SELFPRGEN → activeren RSTDISBL → blijft voorlopig inactief!! DWEN → inactief laten WDTON → inactief laten SPIEN → actief laten!! EESAVE → activeren BODLEVEL → op BOD aan met 4,3V zetten CKDIV8 → inactief zetten CKOUT → inactief laten SUT_CKSEL → op int 8 MHz RC snelste Start-up-time hieruit volgt: Fuse EXTENDED: $FE Fuse HighByte: $D4 en Fuse LowByte: $C2 De file „AVRootloader.hex“ uit de map „Bootloader6“ in de AVR programmeren. Wie wil kan ook onmiddellijk de EEPROM met de decoder gegevens laden, hiervoor de file „T45lokdec.eep“ in de EEPROM opslaan. Voor de veiligheid nog een keer een “verify” (vergelijken) van het programma geheugen met de „AVRootloader.hex“ uitvoeren, de FUSE – Bits nog een keer uitlezen en vergelijken, wanneer nu alles klopt kan de reset-pin gedeactiveerd worden. Hiervoor de FUSE: „RSTDISBL“ activeren (Fuse HighByte is dan: $54). Hierna is er geen ISP programmeren meer mogelijk! De AVR op de decoderprint solderen. De een 1-wire verbinding (Kabel zie bijlage-T45lokdecoder-2/Bootloader/AVRootloader-1Wire.png) met de decoder aanbrengen. Hagens Programma „AVRootloader.exe“ (in de aanhang bijgevoegd) starten, COM – Port instellen, Baudsnelheid en Sign laten staan, als programmafiles de file „T45lokdec.hex“ uitkiezen, de knop „Connect to device“ drukken en dan de programmafiles flashen Klaar! De 1-wire verbinding verbreken en de decoder testen Wie eerst de decodersoftware testen wil, kan ook zonder bootloader direct de „T45lokdec.hex“ in het programmageheugen schrijven. De Reset – Fuse kan ook actief blijven, dan is ISP programmeren verder mogelijk (de dan ontbrekende rijrichtings-verlichting-uitgang is voor deze functie niet nodig).
6
Onderdelenlijst: GL1 D1 C1 C2/3/4
MB2S/HD04 1,5W 27V SMA 4,7uF35V SMD Tantal 10% 100nF/50V 0805
C5
470nF/50V 0805
R1
47kohm 0805
R2/4
10kohm 0805
R3
1,8kohm 0805
T1/2 IC1
SN7002,BSS138N LM3480IM3-5
IC2
Tiny45
IC3
BD6231F
Platine
darisusgmbh.de darisusgmbh.de darisusgmbh.de it-wns.de darisusgmbh.de it-wns.de(330nF) darisusgmbh.de it-wns.de(33k) darisusgmbh.de it-wns.de darisusgmbh.de it-wns.de darisusgmbh.de darisusgmbh.de rs-online.com farnell.de it-wns.de darisusgmbh.de rs-online.com farnell.de
0.23 Euro 0.18 Euro 0.20 Euro 0.03 Euro 0.04 Euro 0.03 Euro 0.07 Euro 0.03 Euro 0.09 Euro 0.03 Euro 0.09 Euro 0.03 Euro 0.09 Euro 0.10 Euro 1.25 Euro 1.40 Euro 1.49 Euro 1.99 Euro 4.70 Euro 3.66 Euro 1.60 Euro
Alle prijzen zijn van maart 2011 en zijn per stuk incl. BTW maar zonder verzendkosten. Vaak zijn er kwantumkortingen mogelijk bij meer dan 10 of 25 stuks. U kunt dan op een decoder prijs van minder dan € 8,00 komen. De eerste serie printplaatjes heeft een package-fout van de Tiny45. Deze worden alleen met kant en klaar geprogrammeerde en gesoldeerde Tiny45 voor € 4,00 aangeboden. Vanaf de tweede serie zijn de printplaatjes afzonderlijk leverbaar. Voor ieder die zich niet aan het programmeren van de Tiny45 waagt bied ik op aanvraag een programmeer service aan. De aanvragen per mail naar
[email protected]
7