DCC Lok Decoder met Atmel Tiny5 Beschrijving: decoder volgens de NMRA DCC standaard eenvoudige opbouw, SMD formaat 0805 dubbelzijdige printplaat * 8 mm met een beetje soldeer ervaring in SMD eenvoudig na te bouwen goedkoop Bootloaderfunctie, -wire softwareupdate mogelijk hierdoor functieuitbreidingen op elk moment mogelijk actuele functies: korte en lange adressen,8 en 8 rijstappen via CV/5 of bij /8FS via snelheidscurve in CV67-9 rem en optrek-vertraging CV/ motor PWM frequentie met: 6kHz of khz in CV9 optioneel opslaan van de laatste snelheidstrap en richting in EEprom (is geen DCC norm) frontverlichting richtingsafhankelijk met 80Hz in 0 stappen dimbaar in CV50 lastregling met stap-afstanden, max. correctie grootte, kleinste afwijking in CV5,5,5 kickstart: tijd en spanning in CV 65,66 snelheidscurve voor /8 rijstappen in -9 programmering via servicemode momenteel alleen CVByte schrijven programmering op hoofdrail (POM) momenteel alleen CVByte schrijven bedrijfsspannung 8-7V (DCC norm is vanaf 7V) lichtuitgangen ieder 90mA duurbelasting mogelijk motorstroom tot A 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
Hardware: Het DCC railsignaal komt via de klemmen K en K aan de gelijkrichter. K K Gleis IC +5V +UB K Gleis K R 7k D ZMY7 C +,7µF C 0,µF IN C GND OUT TS80CX50 0,µF +5V C 0,µF IC OUT GND VCC VCC OUT VREF FIN RIN BD6 R R 0k 0k K8 Motor K9 Motor Li v T K5 Li h SN700 T SN700 IC PB5 PB PB GND TINY5 VCC PB PB PB0 C5 0,7µF R,8k K6 -wire K7 GND Änderung Ausgabe 96,00% 06.0..0. 09:59 :59 T5lokdec_bd6_.T00 De 5V spanning voor de Atmel wordt met behulp van een lineaire spanningsregelaar gevormd. Voor de programma afhandeling wordt een Atmel Tiny5 gebruikt, zonder bootloader is ook een Tiny5 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 7Kohm aan de Tiny5 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 BD60F (0,5A) of BD6F (A) van Rohm ingezet. Verder zijn er nog een GND en een - wire aansluitpunt voor de decoder programmering voorhanden. Maßstab Datei Firma Zeichner Titel Projekt Blatt
Print: Versie T5-8 7 6 5 8 7 6 5
Print : Versie T5-a In versie T5- is een fout geslopen. De behuizing van de Tiny5 is in de target bibliotheek van het ontwerpprogramma fout opgeslagen. Versie T5-a is gecorrigeerd. 8 7 6 5 5 6 7 8
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 Tiny5 gebruikt worden en daardoor de reset pin niet meer ter beschikking staat, is de bootloader mee geïntegreerd. Daarom is gekozen voor een Tiny5 met K programmageheugen en niet de kleinere Tiny5 met slechts K 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/9589#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 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 6 Bit timer in fast PWM Modus, een 8 Bit ADC kanaal, 50 Byte SRAM en ca. 00 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 0us CTC Modus lopende timer gestuurd. Zijn hoofdfunctie is, alle 0us de DCC pin te testen en hieruit de DCC Bitstroom te filteren. Na 8 oproepen ( alle,8ms) wordt bovendien eerst de rijrichtings- verlichting per softwaredimmer met 0 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 -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,v 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: $D en Fuse LowByte: $C 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 T5lokdec.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: $5). Hierna is er geen ISP programmeren meer mogelijk! De AVR op de decoderprint solderen. De een -wire verbinding (Kabel zie bijlage-t5lokdecoder-/bootloader/avrootloader-- Wire.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 T5lokdec.hex uitkiezen, de knop Connect to device drukken en dan de programmafiles flashen Klaar! De -wire verbinding verbreken en de decoder testen Wie eerst de decodersoftware testen wil, kan ook zonder bootloader direct de T5lokdec.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: GL MBS/HD0 darisusgmbh.de 0. Euro D,5W 7V SMA darisusgmbh.de 0.8 Euro C,7uF5V SMD Tantal 0% darisusgmbh.de 0.0 Euro C// 00nF/50V 0805 it-wns.de 0.0 Euro darisusgmbh.de 0.0 Euro C5 70nF/50V 0805 it-wns.de(0nf) 0.0 Euro darisusgmbh.de 0.07 Euro R 7kohm 0805 it-wns.de(k) 0.0 Euro darisusgmbh.de 0.09 Euro R/ 0kohm 0805 it-wns.de 0.0 Euro darisusgmbh.de 0.09 Euro R,8kohm 0805 it-wns.de 0.0 Euro darisusgmbh.de 0.09 Euro T/ SN700,BSS8N darisusgmbh.de 0.0 Euro IC LM80IM-5 rs-online.com.5 Euro farnell.de.0 Euro IC Tiny5 it-wns.de.9 Euro darisusgmbh.de.99 Euro IC BD6F rs-online.com.70 Euro farnell.de.66 Euro Platine.60 Euro Alle prijzen zijn van maart 0 en zijn per stuk incl. BTW maar zonder verzendkosten. Vaak zijn er kwantumkortingen mogelijk bij meer dan 0 of 5 stuks. U kunt dan op een decoder prijs van minder dan 8,00 komen. De eerste serie printplaatjes heeft een package-fout van de Tiny5. Deze worden alleen met kant en klaar geprogrammeerde en gesoldeerde Tiny5 voor,00 aangeboden. Vanaf de tweede serie zijn de printplaatjes afzonderlijk leverbaar. Voor ieder die zich niet aan het programmeren van de Tiny5 waagt bied ik op aanvraag een programmeer service aan. De aanvragen per mail naar toralfwilhelm@web.de 7