ICD Nachbau

Auf meine Anfrage bei Microchip München wurde mir folgendes mitgeteilt:

“Wir stimmen einer Veröffentlichung zu unter der Voraussetzung, dass alle Schaltungsteile, Layout ...etc., die nicht aus Originaldokumenten von Microchip stammen klar und deutlich als [solche] gekennzeichnet sind und Sie dafuer die technische Unterstuetzung uebernehmen.”

So sei es...


Halt! Kurz durchatmen...
Bevor sich jetzt jemand hinsetzt und die auf dieser Seite beschriebene, erste Version des ICD von anno 2000 nachbaut, sollte er sich noch den Nachfolger ICD2 zu Gemüte führen. Der unterstützt deutlich mehr moderne PICs, wird selbst auch von den aktuellen MPLAB-Versionen unterstützt (was für den hier beschriebenen ICD nicht zutrifft) und wird per USB an den Rechner angeschlossen, was zumindest die Stromversorgung des eigenen Projektes (unter bestimmten Voraussetzungen) vereinfacht.


So, nachdem ich das losgeworden bin, kann es weiter gehen...

Das nachfolgend gezeigte Schaltbild des MPLABTM-ICD für PIC16F87x wurde aus der Microchip- Dokumentation zum ICD entnommen und zum nicht kommerziellen Nachbau in das EAGLE-Format übertragen. Die Dokumentation selbst sowie die zugehörige MPLAB-IDE in der jeweils aktuellen Version (zur Zeit V5.2) ist auf den Seiten von Microchip zu finden.

Microchip übernimmt für die hier veröffentlichte Schaltung keine Haftung und keinen Support. Die Rechte von Microchip an der Schaltung bleiben durch die Veröffentlichung auf meiner Homepage unberührt.

Microchip ICD Schaltbild
Wer auf dem Bild nicht alles erkennen kann, muss nicht gleich zum Augenarzt rennen. Das Schaltbild des  Microchip ICD in voller Auflösung kann ebenfalls angesehen werden ;-)

Die EAGLE-Dateien für Schaltbild und Layout können natürlich, wie versprochen, ebenfalls geladen werden.

Mittlerweile sind auch Bilder des ICD und des Demo-Boards vorhanden.

Das Layout ist zweiseitig. Beim Kauf der Bauteile ist besonders auf die Größe der Widerstände zu achten, denn um den Platzbedarf der Schaltung gering zu halten und um das Layout so nah wie möglich an das Original von Microchip anzulehnen, wurden Typen der Größe 0204 verwendet. Das entspricht im wirklichen Leben der Widerstände einer Länge von 4 mm und einem Durchmesser von 2 mm. Diese Winzlinge waren nicht zu bekommen, aber die “Metallschicht-Widerstände, 1%” von Fa. Reichelt in der Größe 0206 passen in die Schaltung, wenn die Drähte vorsichtig ganz dicht am Widerstandskörper abgebogen wurden. Zerbrochen ist mir dabei keiner.

Achtung !! Die Oberseite der Platine ist vollflächig mit Kupfer belegt und stellt die Masseverbindung für alle Bauteile dar. In der Layoutdarstellung von EAGLE wird diese Massefläche der Übersichtlichkeit halber normalerweise nicht dargestellt und die Bauteile scheinen keine Masseverbindung zu haben. Um die Massefläche “einzuschalten” muss der Autorouter gestartet werden. Daraufhin wird der Innenbereich des hellroten Rahmens gefüllt und man sieht auch die Anschlüsse der "frei" im Raum stehenden GND-Pins. Die  Pins sind nicht vollflächig an die Kupferfläche angeschlossen, sondern nur über 4 schmale Streifen. Dieses Verfahren nennt man "Wärmefalle" und bewirkt, dass beim Löten nicht die gesamte Wärme des Lötkolbens in die umliegende Kupferfläche abgeleitet wird, sondern tatsächlich den Anschluss erhitzt und so eine gute Lötverbindung schafft.

Um die Massefläche wieder auszuschalten (damit man den Rest der Schaltung wieder besser erkennen kann) irgendwo auf eine “freie” Stelle (ohne Bauteile) der Massefläche clicken und den “Ripup”-Befehl aufrufen.

Reichelt liefert übrigens auch den PIC 16F876 in 4 MHz-Ausführung für knapp über DM 20,-- und alle anderen benötigten Bauteile für zusammen ca. DM 30-35,-- (ohne den PIC, der kommt dazu).

Ein kleines Geheimnis hat Microchip in der Schaltung auch versteckt: Der verwendete PIC16F876 ist ein 20MHz-Typ, der Quarz auf der Platine hat aber 4 MHz. Ich habe jedenfalls einen 20 MHz Typ in der ICD eingesetzt.

Die Firmware für diesen PIC auf dem ICD liegt in der MPLAB V5.0 und höher als “mpl876.hex” im Installationsverzeichnis der MPLAB-IDE vor. Wie der Code in den PIC kommt ist in der Microchip Technical Note etn21d.pdf beschrieben (siehe dazu auch hier).

Zusätzlich hier noch die Stückliste. EAGLE liefert sie durch Aufruf von “File->Run...->BOM.ULP” (Bill Of Materials). Ich habe die BOM etwas formatiert und entsprechend der Microchip Technical Note etn21d.pdf 3 Widerstandswerte gegenüber dem Schaltbild geändert (bitte beim Nachbau beachten !).

Bauteile-Infos

Die Zenerdiode D6 hat außer der Typbezeichnung natürlich auch einen Wert. Man muss eine BZX55 mit 5,6 V Durchbruchspannung besorgen.

Eine weitere “Falle” ist der (bzw. sind die) Modular-Stecker zur Verbindung von ICD und Demo-Board. Bei Reichelt gibt es zwei Typen dieser 6poligen Stecker. Der korrekte Typ ist der MEBP 6-6S . Man erkennt den richtigen Typ leicht an der Anordnung des Ausbruchs für die "Rastnase" des Steckers auf der Platinenseite, also näher zu den Lötanschlüssen. Wenn man den falschen Typ bekommen hat, dann passt der nur von der Unterseite der Platine.

Bitte für diese Dateien obige Hinweise zu Urheberrechten, Haftung und Support beachten.

 

Neu ! Einseitiges Layout für ICD

Ich habe für Nachbauwillige ohne professionelles Labor noch ein einseitiges Layout für den ICD erarbeitet, das im heimischen Keller wohl einfacher herzustellen ist.

Bitte hier beachten, dass ich diese Schaltung nicht selbst ausprobiert habe !!

Ich habe zwar lediglich das Schaltbild leicht geändert (notwendige Brücken eingefügt), aber da durch die mechanischen Änderungen auch die elektrischen Eigenschaften der Schaltung beeinflusst worden sein können, kann ich nicht versprechen, dass es funktioniert. Sorry.

Falls sich jemand an den Nachbau wagt, bitte ich um Rückmeldung, ob der ICD mit diesem alternativen Layout ebenfalls funktioniert. Danke !

Bitte auch für diese Dateien obige Hinweise zu Urheberrechten, Haftung und Support beachten.

 

Hardwareänderung an dem ICD

In seltenen Fällen kann es vorkommen, dass beim Versuch den ICD zu initialisieren keine Verbindung zum zu programmierenden PIC aufgenommen werden kann und die IDE die Meldung “No Target” bringt.

In den meisten Fällen kann Abhilfe geschaffen werden, indem das Signal RB3 des zu programmierenden PIC durch einen Pull down-Widerstand von 10k gegen Masse gezogen wird.

Um diese Änderung, die sich nur beim programmieren oder debuggen auswirkt, nicht auf jeder Zielhardware einbringen zu müssen, drängt sich der Gedanke auf, diesen Pull down auf dem ICD selbst anzubringen.

Dazu ist etwas Gehirnakrobatik notwendig, denn RB3 auf der Zielhardware geht auf die RJ-45-Buchse (6polige Telefonbuchse) an Pin 6, wird über ein 1:1 verdrahtetes Kabel mit dem ICD verbunden, kommt dort dann also an Pin 1 an.

Eine mögliche Stelle, den zusätzlichen Widerstand unterzubringen ist folgende:

ICD-PlatineBlick von der Bestückungsseite auf den ICD. Rechts ist der RJ-45 Verbinder, links der Sub-D-Stecker für die serielle Kopplung zum PC.

 

 

 

 

Dann ist unten (beim Betrachter) Pin 1 des Verbinders, von dem eine Leiterbahn auf der Bestückungsseite nach links zu einer Durchkontaktierung führt. An dieser Durchkontaktierung (unterer Kreis im Bild rechts) wird der eine Anschluss des 10k Widerstandes angelötet. Direkt oberhalb dieser Durchkontaktierung liegen 5 Widerstände und eine Diode dicht neben einander gegenüber. Der obere der beiden linken Widerstände, R27 (der direkt neben der Diode D3) ist am rechten Ende mit Masse verbunden.

 

Hier (obere Ellipse im Bild oben) wird der andere Anschluss des neuen 10k Widerstandes angelötet. Fertig.

 

 

 

 

 

Nachtrag zur beschriebenen Hardwareänderung

Einige Tage (ich will ehrlich sein...einige Wochen) nach Durchführung der Änderung habe ich meinen ICD mal wieder in Betrieb genommen. Leider hat der “No Target”-Fehler wieder zugeschlagen :-((

Offenbar kann man sich den Umbau mit dem zusätzlichen Widerstand sparen. Schaden tut er aber auch nicht, wer schon fleißig war, kann den Widerstand drin lassen.

 

Das Demo-Board des ICD

Zuerst hatte ich Skrupel das Layout des ICD-Demo-Boards zu veröffentlichen, weil verschiedene “Unsauberkeiten” vorhanden sind (siehe unten). Nachdem ich jetzt aber doch von mehreren Leuten darauf angesprochen wurde, lege ich die Unterlagen zum Download bereit. In dem ZIP sind alle Dateien (Layout und Schaltplan im EAGLE-Format sowie die Stückliste) enthalten. Gegenüber den bereits auf Anfrage per Mail verschickten Unterlagen ist jetzt noch eine Steckbrücke im RC7-Signal eingefügt (siehe unten).

Das Demo-Board ist funktionsfähig, nur müssen einige Kleinigkeiten beachtet werden:

Wenn der MAX232 bestückt ist und R28 ebenfalls, dann kann es passieren, dass der Ausgang R2OUT des MAX232 gegen den Ausgang RC7 des PIC arbeitet. Wenn RC7 im PIC als Ausgang geschaltet ist, ist dabei mit keinen Problemen zu rechnen, da die Ausgangsstufen der PICs recht kräftig sind. Anders sieht es aus, wenn RC7 Eingang spielen soll. In diesem Fall kann je nach Beschaltung ein Einfluss des MAX232 nicht ausgeschlossen werden (recht eindrucksvoll demonstriert durch die immer leuchtende LED D9 :-). Deshalb habe ich in die Verbindung RC7 - R28 eine Steckbrücke eingefügt.

Die anderen Punkte sind reine Kosmetik. An einigen Stellen enden z.B. Leiterbahnen als “Antennen”, führen also ins Nichts...Überbleibsel von abgebrochenen Routingläufen.

Als nächstes gibt es die Signale XXX und YYY aus dem Originalschaltbild, für die ich kein Ziel gefunden habe. Die dem MAX232 abgewandten Enden von R25 und R27 sind also nicht beschaltet.

Falls einer der geneigten Leserschaft weiß, wo man diese Signale geschickter Weise an die PICs führen könnte, der möge sich bitte melden. Danke !

Das ist eigentlich schon alles.

Halt ! Fast hätte ich vergessen, dass ich noch eine Änderung vorgenommen habe:

Der GND-Pin (Pin 11) von JP3B war nicht angeschlossen. Die Nachbauer, die die Unterlagen per Mail von mir bekommen haben müssen also noch diesen Pin mit einem kurzen Stück Draht mit Pin 12 von JP3A verbinden. Achtung , die Anschlüsse 1 der beiden Pinreihen liegen nicht nebeneinander.

In der herunterladbaren Version der Schaltung ist diese Verbindung schon enthalten.

Gegenüber dem Original sind auf meinem Demo-Board 8 zusätzliche LEDs vorhanden, die jeweils über einen DIP-Schalter mit  Port D des PIC verbunden sind. Ja, diese LEDs lassen sich nur mit dem 40poligen Derivat des 16F8xx ansprechen. Über einen Trick besteht auch bei Verwendung des 16F876 (28polig) die Möglichkeit , diese LEDs anzusprechen. Dazu müssen lediglich die korrespondierenden Pins am 40poligen Sockel eines beim 16F876 vorhandenen Ports mit den entsprechenden Pins des Port D verbunden werden. Geeignet sind dafür kurze Leitungen aus flexiblem Draht mit je einem einzelnen “Header-Pin” an jedem Ende. Diese Pins lassen sich schön in den 40poligen Sockel einstecken. “Patchen” nennt man das wohl in Fachkreisen ;-)

 

Nach dem Testen

Wenn nach der erfolgreichen Programmentwicklung die Zielhardware (hier das Demoboard) stand alone betrieben werden soll, muss die Verbindung zum ICD gelöst werden, sonst zieht der ICD den MCLR-Pin des Target-PIC auf Low und der PIC kann nicht anlaufen.

 

Feedback

Mittlerweile habe ich auch Rückmeldung über die einseitige Version der Schaltung. Fabian Fessler ist nicht vor der Pioniertat zurückgeschreckt und hat das einseitige Layout geätzt, gebohrt, bestückt und nach zähem Kampf (ein defekter Mehrfach-Widerstand hat uns wochenlang genarrt :-( erfolgreich in Betrieb gesetzt.

Danke Fabian !

Sein Erfahrungsbericht kann auf seiner eigenen Homepage demnächst bestaunt werden.

Inzwischen hat auch Wilfried Fedtke einen ICD nach meinen und Fabians Unterlagen gebaut, aber vorher noch Änderungen durchgeführt. Seinen Erfahrungsbericht hat er auf seiner RC-Hobby-Site veröffentlicht.


Peter Kaemmerling hat beim Nachbau und der anschließenden Inbetriebnahme des Demoboards einen weiteren Fehler gefunden.

Der 40polige Sockel hat keine Versorgungsspannung. Die Pins 11 und 32 sind zwar miteinander aber nicht mit dem Rest der Schaltung verbunden. Erstaunlicherweise hat der PIC in Teilen trotz fehlender Versorgungsspannung funktioniert. Erst als Peter den Analogteil in Betrieb nahm, traten Probleme auf die hiermit ihre Erklärung fanden. Danke für den Hinweis !

Peter will das Layout überarbeiten und mir dann zur Veröffentlichung zur Verfügung stellen. Ich habe zwischenzeitlich die mir bekannten (und oben beschriebenen) Änderungen auch in meine Unterlagen eingebracht und zum Download zur Verfügung gestellt.


Volkmar Heinz hat ebenfalls einen Nachbau des Microchip ICD designed.
Seine Version verwendet einen 16F877, hat zusätzlich eine Spannungsversorgung on board und wurde in großen Teilen mit SMD-Bauelementen bestückt. Ich habe die Unterlagen zum Nachbau hier abgelegt.

Auch Volkmar hat die Oberseite seiner Platine vollflächig mit Kupfer belegt, es gelten die gleichen Regeln zum Betrachten der Platine in EAGLE, wie bereits oben angegeben.

Fragen zur Schaltung seines ICD (und zu Modelleisenbahnelektronik oder Motorradelektrik) beantwortet Volkmar selbst.


(ICD = In Circuit Debugger, IDE = Integrated Development Environment)

 


Den nachfolgenden Satz muss ich hier so oder ähnlich auch noch loswerden:

    Der Nachbau der Schaltungen anhand der Pläne auf meiner Homepage sowie der Betrieb der Schaltungen erfolgt auf eigene Gefahr. Eine Haftung seitens Microchip oder mir für die ordnungsgemäße Funktion der nachgebauten Schaltungen ist ausgeschlossen.

Jeder sei aber beruhigt, die Schaltungen (im doppelseitigen Layout) funktionieren bei mir bisher tadellos :-)


 

Über eine Suchmaschine hier gelandet? Dann bitte mit Click Navigations Schaltflächen anzeigen

[Home] [Modelle] [Eisenbahn TT] [Was ist neu ?] [Elektronik] [Kontakt] [Links] [Tipps+Tricks]