{home}Li-Pro.Net{/home}
Das Familiennetzwerk
Home | Stephan Linz | Projekte | Hobby | Kontakt | Nutzerzugang


Inhalt

>
> Das Projekt OpenDCC
> Internetreferenzen

OpenDCC Dekoder V2

Nachbau und Änderungen

Der fertige Aufbau

Erstinbetriebnahme (elektrisch)

Hält man sich an die vorgegebene Aufbauanleitung und die hier gemachten Hinweise (TODO), so hat man in weniger als einer Stunde einen fertigen Aufbau der Dekoderplatine vor sich liegen. Bis auf die Bestückung des Prozessors bietet die Baugruppe eine sehr gute Nachbausicherheit. Ich selber habe den Prozessor bei einem professionellen Bestücker auflöten lassen und bin mit dem Resultat mehr als zufrieden – besser hätte ich es mit der Hand nicht machen können. Die Inbetriebnahme gestaltet sich ebenfals als sehr einfach.

Zunächst schließt man die Baugruppe über X2-1 und X2-2 an ein Labornetzteil an, stellt an diesem eine Spannung von 12V ein und begrenzt den Strom auf maximal 50mA. Mit dem Einschalten kontrolliert man die Strombegrenzung und den Stromverbrauch. Dieser sollte mit Fabrik neuem Prozessor und ohne Optokoppler und ohne ULN2803 so um die 20mA liegen. Sollte die Strombegrenzung zuschlagen, dann liegt mit sehr hoher Wahrscheinlichkeit ein Kurzschluss vor, der zu beseitigen ist.

Nach der Stromkontrolle werden die zwei wichtigen Versorgungsspannungen auf der Platine kontrolliert, VCC für den Digitalteil und die Spannung im Leistungsteil am ULN2803. Die VCC mißt man am besten zwischen Pin 1 und 2 an den Stiftleisten JP4 oder JP5 (für SERVO1/2). VCC muss 5,0V betragen. Der Regler 7805 liefert immer seine exakte Nominalspannung. Am ULN2803 muss zwischen Pin 9 und Pin 10 eine Spannung von ca. 10V messbar sein. Dieser Wert kann je nach Typ und Streuung des eingesatzten Gleichrichters schwanken. Als Richtwert gilt die Faustformel 12V (Labornetzteil) minus 2 mal Flusspannung der Gleichrichterdioden, also 2 x 0,7..1,2V = 1,4..2,4V. Spannungen unter 10V sollte man genauer untersuchen.

Prozessorkonfiguration

Nun wird der Zugriff auf den Prozessor über ISP geprüft. Hierzu empfehle ich die Nutzung des AVRISP-mkII Clone auf einem USBprog Adapter und das Programmierwerkzeug avrdude. Im ersten Schritt wird die Gerätesignatur des verbauten AVR ATMEGA 8515 ausgelesen (0x1E 0x93 0x06). Damit kann man sicherstellen, dass der Zugriff über ISP funktioniert. Auf der Kommandozeile gibt man folgendes ein:

[user@host]> avrdude -c avrispv2 -P usb -B 8 -p m8515

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9306

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

[user@host]> _

Zu beachten ist der Parameter -B 8. Damit wird der Firmware im USBprog mitgeteilt, dass die ISP Taktrate von etwa 125kHz eingestellt werden soll. Das ist bei Fabrik neuen Prozessoren unbedingt zu beachten, da diese immer auf eine interne Taktversorgung mit 1MHz ausgelegt sind und der ISP Takt niemals größer als 1/4 des Systemtaktes sein darf, also in diesem Fall nicht gößer als 1MHz / 4 = 250kHz.

Im nächsten Schritt werden die FUSE Bits entsprechend den Vorgaben von Wolfgang Kufer eingestellt:

  • interner RC Oszillator mit 8MHz
  • Unterspannungserkennung bei 4,0V (Brown-out Detection)
  • ohne Einschaltverzögerung (Start-up Time)
  • serielle Programmierung über SPI (!!! niemals deaktivieren !!!)

Für die Berechnung der FUSE Bits empfehle ich den online AVR Fuse Calulator von Mark Hämmerling. Nach der Auswahl des richtigen Prozessors und Änderung der notwendigen Werte erhält man dann ganz nunten links den Wert 0x04 für die LOW und 0xD9 für die HIGH FUSE Bits. Rechts daneben steht eine fertige Parameterliste für avrdude:

[user@host]> avrdude -c avrispv2 -P usb -B 8 -p m8515 \
> -U lfuse:w:0x04:m -U hfuse:w:0xd9:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9306
avrdude: reading input file "0x04"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x04:
avrdude: load data lfuse data from input file 0x04:
avrdude: input file 0x04 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xd9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xd9:
avrdude: load data hfuse data from input file 0xd9:
avrdude: input file 0xd9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

[user@host]> _

TODO: Welche Software und woher. Für einen ersten Test wird …

[user@host]> avrdude -c avrispv2 -P usb -B 1 -p m8515 \
> -U eeprom:w:OpenDecoder2.eep:a

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9306
avrdude: verifying eeprom memory against OpenDecoder2.eep:
avrdude: load data eeprom data from input file OpenDecoder2.eep:
avrdude: input file OpenDecoder2.eep auto detected as Intel Hex
avrdude: input file OpenDecoder2.eep contains 279 bytes
avrdude: reading on-chip eeprom data:

Reading | ################################################## | 100% 0.58s

avrdude: verifying ...
avrdude: 279 bytes of eeprom verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

[user@host]> _
[user@host]> avrdude -c avrispv2 -P usb -B 1 -p m8515 \
> -U flash:w:OpenDecoder2.hex:a

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9306
avrdude: verifying flash memory against OpenDecoder2.hex:
avrdude: load data flash data from input file OpenDecoder2.hex:
avrdude: input file OpenDecoder2.hex auto detected as Intel Hex
avrdude: input file OpenDecoder2.hex contains 7216 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.47s

avrdude: verifying ...
avrdude: 7216 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

[user@host]> _

Bild 10 und Bild 11 zeigen die fertig aufgebauten Leiterplatten. In Bild 10 (von oben) ist deutlich zu erkennen, dass sich unter dem abgewinkelten Kühlkörper der Optokoppler OK2 verbirgt. Um diesen wechseln zu können, muss man von der Außenseite an die Grundplatine heran (siehe Bild 12). Das bedeutet im Ernstfall die komplette Demontage aus dem Gehäuse, insofern der Gesamtaufbau schon fertig verbaut ist. Es ist also ratsam, diesen Teil der Schaltung zumindest elektrisch zu Überprüfen, bevor alle Baugruppen im Gehäuse verbaut werden.


Autor:Stephan Linz
Revision:2021/01/14 - 00:00 - © Li-Pro.Net