Aufbauanleitung zu OpenDecoder (Var. 2)

Vorbemerkung:

    Zuerst mal der übliche Sums: Elektroniklötkolben (nicht über 300W;-), geeignetes Lötzinn (kein Tiffany-Bleilot), Dioden und Kondensatoren richtig polen (kleiner Strich oder + im Layout), ICs sind statisch gefährdet, kurzum: wer's nicht kann, soll nicht mit dieser Schaltung das Üben anfangen. Die Werte der Widerstände und C's sind in der Regel unkritisch.
    Hinweis: einfacher zu bauen ist die Variante 1

Vorgehensweise:


    Es sollte zuerst der der Atmega8515 (im 44-lead TQFP Gehäuse, Pitch 0,8mm) auf der Bauteilseite bestückt werden.
      Hinweis zum Löten des Prozessors: Der ATmega ist im 44-poligen Gehäuse mit 0,8mm Pitch. Hier wird zuerst nur ein Eckpin auf der Leiterplatte verzinnt, dann wird der Chip darüber gelegt. Jetzt wird dieses Pad und der Pin erhitzt und verlötet. Danach wird der Chip exakt auf die Pads ausgerichtet.

      Nun kann man alle anderen Pins verlöten - feine Lötspitze und 0.5mm Lötzinn sind hilfreich ;-).
      Keine Panik, wenn Pins mit Lötzinn kurzgeschlossen sind: nicht lange rumbruzeln, sondern abkühlen lassen und dann mit dünner Lötsauglitze das überschüssige Zinn aufnehmen.
    Anschließend werden die SMD-Bauteile auf der Lötseite bestückt; Die Widerstände sind nur zu bestücken, falls ein Feedback-Decoder gebaut werden soll, bei einer LED Ansteuerung stören sie!

    Zum Schluß werden der Reihe nach Fassungen, Widerstände, IC's, Stecker und Kondensatoren bestückt.
    Hinweis zum Optokoppler OK3: Wird statt 6N136 der 6N137 verwendet, so muß beim 6N137 noch zusätzlich der Pin 7 (Freigabeeingang) mit dem Pin 8 verbunden werden. (nicht im Layout). Beim 6N136 muß dieser Pin frei bleiben!
    Wird statt 6N136 (8-polig) der 4N25 (6-polig) verwendet, so ist der Pin 1 des 4N25 auf Pin 2 des Layout zu platzieren.



    Bilder der bestückten Platine

Inbetriebnahme und Test:

  • Nach dem Bestücken alles nochmal genau optisch kontrollieren und Flußmittelreste mit Alkohol abwaschen.

  • Nun wird zum ersten Mal Spannung angelegt (aus einem geregelten Labornetzteil, Strombegrenzung auf 50mA).

    Die 5V und die Stromaufnahme kontrollieren. Wenn der Prozessor schon programmiert ist, dann sollte die LED 5x mal schnell blinken, dann eine Pause machen (Gesamtzykluszeit 2s). Nach dem Drücken der Programmiertaste sollte die LED permanent leuchten. Dieser 5-fach Kontrollblinker ist nach dem Programmieren der Adresse abgeschaltet.

Prozessor programmieren:

    Nachdem die Hardware fertig aufgebaut ist, muß der Prozessor noch passend konfiguriert und mit der Firmware geladen werden. Das kann leicht mit einem selbst gebauten Adapter (ein paar Widerstände und Dioden plus RS232 Stecker sowie 6-poliger Schneidklemmstecker) und einem Programmiertool durchgeführt werden. Ein frei erhältliches Programmiertool ist z.B. ponyprog.
    ponyprog adapter
    Hinweis: Bei diesem Adapter ist der Reset in der Ponyprog-Konfiguration als invertiert zu markieren.


    Dieser Adapter wird an JP2 angeschlossen und dann wird der Prozessor programmiert; anschließend kann der Adapter wieder abgezogen werden. Mit dem Adapter können auch andere Prozessoren programmiert werden.

    Im Programmiertool wird der Chip ATmega8515 aus der AVR-Familie ausgewählt.
    Bei der Programmierung sind die folgenden drei Inhalte in den Chip einzuschreiben:
    1. Chip Konfiguration: wie sich der Chip in der Platine verhalten soll (Frequenz, Spannung, Start)
    2. Programm: Welches Programm der Chip ausführen soll, also z.B. OpenDecoder.hex
    3. EEPROM: welche vordefinierten Daten in Chip hinterlegt werden, z.B. OpenDecoder.eep
  • Chip Konfiguration:
    Wichtig: vor dem Konfigurieren des Chips die exteren Ausgänge 6, 7 und 8 abklemmen, diese schalten sonst mit der Programmierung mit! (das macht nichts bei LEDs, aber bei Weichenantrieben geht's rund :-)
    Der Atmel ATmega8515 verfügt über mehrere Möglichkeiten der Taktung und verschiedene Bootmodi. Diese werden mit sog. Fuses gesetzt. Im Menüpunkt Command->Configuration können diese selektiert werden. Für den in OpenDecoder2 eingesetzten Prozessor (interner RC-Oszillator) sind folgend Fusebits zu setzen:
    Fusebits
    CKSEL3...0 =0100 Häkchen bei CKSEL3, CKSEL1 und CKSEL0, bedeutet interner RC-Oszillator mit 8 MHz
    CKSEL3...0 =1110 Alternative nur ein Häkchen bei CKSEL0, bedeutet Brownout Detector on Crystal mit 10MHz
    SUT1..0 =0 0 Häkchen bei SUT1 und SUT0 (Power Up Delay)
    EESAVE =1 kein Häkchen bei EESAVE, bedeutet EEPROM Inhalt wird beim Update überschrieben.
    BODLEVEL =0 Häkchen, bedeutet Threshold bei 4V, kein Häkchen bedeutet Threshold bei 2,7V (erfordert Atmega8515L)
    BODEN =0 Häkchen, Brown Out Detection enabled
      Noch ein wichtiger Hinweis: bitte diesen Vorgang recht sorgfältig machen und nicht einfach rumprobieren. Wenn nämlich dabei auf externen Takt konfiguriert wird und kein externer Takt an XTAL1 angeschlossen ist, dann kann man nicht mehr mit dem Prozessor reden.
    Nachfolgend ist die Programmierung mit ponyprog (Version 2.06f) beschrieben.

  • Programm:
    Zum Laden des Programms wird nun opendecoder2.hex geöffnet und dann mit dem Befehl write program an den Atmel übertragen. Logischerweise muß das Programmfile zur oben eingestellten Frequenz passen.
  • Daten (EEPROM):
    Jetzt müssen noch die Daten in den Chip geschrieben werden. Dies erfolgt mit dem EEPROM-File, hierzu muß man bei der Dateiauswahl auf .eep umschalten.

Platinenoptionen / Jumper / Lötbrücken / Änderungen:

  • Quarz:
    Optional kann ein übliche HCU49 Quarz bestückt werden - logischerweise muß die CPU auch so schnell sein und das geladene Programm muß für die Frequenz angepaßt ein. Zum Quarz sind die Kondensatoren C4 und C5 erforderlich.
  • DMX Schnittstelle:
    Wenn IC1 (RS485 Treiber) bestückt wird, so entfallt X5 (gleicher Platinenplatz).
    Zugleich ist SJ4 zu schließen und SJ3 bleibt offen - damit ist der mittlere Pin von X6 auf GND.
  • Feedback:
    Wird keine Rückmeldung per Endlagenschalter benötigt, dann sollten die Zenerdiode D2 bis D10 (Melf) sowie die SMD-Widerstände auf der Platinenunterseite entfallen.
  • ACK (CV-Programmierung):
    Wenn diese nicht benötigt wird, so kann OK4, R13, R14, D14 und D15 (BAV99 auf der Lötseite) entfallen.
  • SJ1 und SJ2:
    Sind diese geschlossen, so wird das Feedback (Acknowledge-Puls) auf den DCC-Eingang gekoppelt - damit ist DCC-Programmieren (CV-Werte) des Decoders möglich. (Natürlich müssen auch die entsprechenden Bauteile bestückt sein)
  • SJ3 und SJ4:
    Damit kann der mittlere Pin von X6 entweder auf +15V oder auf GND gelegt werden. Für alle normalen Anwendungen ist SJ3 zu schließen und SJ4 offen zu lassen, nur bei DMX ist es invertiert. Keinesfalls dürfen beide geschlossen sein - KURZSCHLUSS!
  • SJ5:
    Dieser Jumper ist zu schliessen, wenn statt des PC817 Optokopplers ein CNY17 bestückt werden soll.
    Hinweis: In diesem Fall muß die Brücke zwischen Pin 4 und 5 durchgetrennt werden.
  • SJ6 und SJ7:
    Sind diese geschlossen, so ist der DCC-Eingang und der Powereingang verbunden. DCC ist dann an X2 anzuschliessen.
  • Stromversorgung:
    Sollte ein Servo mit versorgt werden, so ist der 5V Regler zu kühlen.
  • Zusatztransistor beim ACK-Puls: (nur bei alten Platinen!)
    Für die Rückmeldung im Servicemode muß mindestens ein Strom von 60mA fließen. Dieser kann mit dem Optokoppler OK4 nicht allein bewältigt werden. Hier wird ein PNP-Transistor als Emitterfolger nachgeschaltet.
    In V2.0 des Layout ist dieser Transistor
    manuell nachzuverdrahten.
    Auf der Platinenoberseite ist die Leitung
    von R13 zum Pin 4 des OK4 zu trennen.
    Tipp zur Nachverdrahtung:
    Wenn der Transistor kopfüber montiert wird,
    dann kann man ihn direkt zwischen Pin 3
    und Pin 4 des Optokopplers einlöten.
    Es ist dann nur ein Draht zum
    Widerstand R13 erforderlich.

Versionen, Änderungen:

    Version 2.0:
  • 12.04.2007: Wertänderung R2, R4, R6, R7, R9, R10, R11, R12 von 10k auf 22k
  • 21.04.2007: Transistor T1 (BC560 oder BC860) als Emitterfolger auf der ACK dazu, damit wird der normgerechte Strom bei DCC-ACK gezogen.

Was tun, wenn es nicht funktioniert?

    Zuerst mal Ruhe bewahren :-)
    Dann folgende Dinge kontrollieren:
  • Kontrolle der Bauelemente, ob überall das richtige Bauteil mit der richtigen Polung steckt. Das hätte man schon vor dem Einschalten machen sollen!
  • Sichtprüfung der Lötstellen und der Leiterbahnen - am besten mit der Optikerlupe.
  • Kontrolle der 5V und der Ruhestromaufnahme.
  • Kontrolle ob das Programmieren geht - und falls ja, mit Ponyprog wieder zurücklesen. Auch das EEPROM kontrollieren.
  • Kontrolle von Reset (hat die Leitung +5V) und des Taktoszillators (falls externer Quarz): an XTAL2 müssen 8MHz anliegen.
    Ein (in der Adresse) unprogrammiertes Design blinkt -x-x-x-x-x-----x-x-x-x-x---- wobei die 5 Blinker recht schnell aufeinander folgen, die Zykluszeit etwa 2s ist.
  • Sollte nach dem Prozessor programmieren der Dekoder zwar auf den Taster reagieren, aber nicht blinken, so ist vermutlich der EEPROM Inhalt nicht geschrieben worden.
  • Wird die Polyfuse heiß? Dann ist ein Kurzschluß auf einem Ausgang
  • Wenn soweit alles gut aussieht, aber der Decoder nicht auf DCC reagiert: Testdesign mit aktiven Ausgängen laden und die Ausgänge kontrollieren. (Kontrolle: R15 und C11 sind nicht bestückt - n.f. = 'not fitted')

Weiter zu: