Arduino Pic Programmer

Übersicht

Es gibt diverse Bauanleitungen zu Pic Programmern im Internet. Diese benötigen jedoch oftmals entweder eine der inzwischen ausgestorbenen seriellen oder parallelen Schnittstellen oder einen bereits programmierten Controller – und setzen damit wiederum einen Programmer voraus.

Einen interessanten dritten Weg bietet die Verwendung eines Arduino als Controller (s. ArdPicProg). Mit dem Arduino Sketch “ProgramPic”, einem PC-Programm und mit einer sehr überschaubaren Anzahl von Bauteilen wird der Arduino mit wenig Aufwand zum Pic Programmer, der neben einem Programmiersockel auch eine ICSP- und eine ICD-2 (RJ-11) Schnittstelle bietet. Alle erforderlichen Lösungskomponenten einschließlich der Hardware Dokumentation sind als Open Source sowie als Bausatz verfügbar.

Einen weitergehenden Eindruck zum Aufbau und dem Einsatz des ArdPicProg sowie einen Überblick der unterstützten Controller bietet der User’s Guide (in Englisch).

Host-Software für ArdPicProg

Zur Programmierung eines Pic Controllers wird ein Host Program benötigt. Hierzu stehen zwei Programme zur Verfügung: das zeilenorientierte Programm “Ardpicprog” oder das Programm “Arduino Pic Programmer (ArdPicProgHost)” mit einer grafischen Bedieneroberfläche. Beide Programme sind als Open Source auf Github verfügbar.

Arduino Pic Programmer (ArdPicProgHost)

Das Programm bietet die Möglichkeit zur zeitgemäßen und intuitiven Bedienung des Arduino Pic Programmers über eine Windows-Bedieneroberfläche.

Pic-Controller, die der Arduino Programmer unterstützt, können ausgelesen, gelöscht und programmiert werden. Die Programmbedienung ist ebenfalls im User’s Guide erläutert.

ArdPicProgHost ist Open Source und wurde mit Microsoft VB2010 Express realisiert. Der Source Code wird unter den Bedingungen der GNU General Public License Version 3 über ein entsprechendes Github Repository zur Verfügung gestellt. Die aktuelle ablauffähige Version dieses Programms (Release 0.2.7) für Windows 7 ArdPicProgHost.exe kann hier heruntergeladen werden:

 

Eine Softwareinstallation ist nicht erforderlich: nach dem Download und dem Auspacken des Programms kann dieses direkt ausgeführt werden.

PicProgHost (Terminalprogramm)

Das Programm PicProgHost basiert auf dem Open Source Projekt Ardpigprog, ist auf den ArdPicProg-Projektseiten dokumentiert und dort auch als Open Source verfügbar.

Der Sourcecode wurde inzwischen in Qt 5 migriert und die aktuelle Version 1.0 unterstützt nun auch die COM ports > 9. Die ablauffähige und aktuelle Programmversion für Windows 7 kann hier heruntergeladen werden:

 

Der Sourcecode ist im PicProgHost github Repository verfügbar. Die Programmparameter sind rückwärtskompatibel zu Ardpicprog und daher ebenfalls den ArdPicProg-Projektseiten zu entnehmen.

Eine Programminstallation ist nicht erforderlich. Die Programmbedienung wird ebenfalls im User’s Guide erläutert.

Arduino Sketch “ProgramPic”

Der Sketch “ProgramPic” ist im ProgramPic github Repository verfügbar.

ArdPicProg Leiterplatte

Im Shop können Sie die unbestückte Leiterplatte erwerben und die Bauanleitung herunterladen.

22 Gedanken zu „Arduino Pic Programmer“

  1. Super Sache, aber leider brauch ich einen ZIF Sockel mit 40 Pins anstatt nur 24! Gibt es da eine fertige Platine bzw. ein anderes DIY Projekt dazu mit dem Arduino?

    Vielen Dank!

    1. Leider habe ich keine fertige Platine und kenne auch kein anderes Projekt. Ich habe in solchen Fällen – z.B. bei der Sketchanpassung für den 16F877a im 40 poligen Gehäuse – den Controller in ein Experimentierboard gesteckt und über die ICSP Schnittstelle programmiert (s. Bild).

        1. Den Aufbau habe ich nicht dokumentiert. Aber es sind ja auch nur fünf Kabel, die von der ICSP Schnittstelle mit den entsprechenden PINs des Controllers verbunden werden müssen.

  2. Hallo!

    Noch eine andere Frage:

    operiert das ganze System mit 12V oder 5V? Warum ich frage: soll ich die LED’s mit 5V oder 12V nehmen?
    Weiters würde ich gerne wissen unter welchem Begriff ich den Reset Taster auf zB Reichelt finde? Hab schon alles versucht!

    Danke und LG

    PS: Zur Buchse: einmal ist von RJ11 und einmal von RJ12 die Rede; was stimmt nun?
    PPS: Achja den TME512S gibt es auf Reichelt nicht (mehr), sondern ich hab den TMA512S gewählt!

    1. Das System arbeitet mit Standard-LED beispielsweise von Reichelt (“LED 3MM RT” bzw. “LED 3MM GN”). Der Reset Taster ist ebenfalls ein Standardteil, das auch von Reichelt unter der Bezeichnung “TASTER 9302” bezogen werden kann. Eine geeignete Buchse findet man u.a. bei Conrad als “MODULARBUCHSE 6-POLIG FLACHE BAUFORM”, Bestell-Nr. 716172.

      1. Alles klar! Danke!

        Vielleicht solltet ihr in der Beschreibung auf RJ12 ausbessern bei der Buchse (da 6 Kontakte)!

        Hier nun die Bauteilliste (Reichelt):

        1/4W 10K Widerstand, Kohleschicht, 10 kOhm, 0207, 250 mW, 5%
        1/4W 1,0K Widerstand, Kohleschicht, 1,0 kOhm, 0207, 250 mW, 5%
        1/4W 4,7K Widerstand, Kohleschicht, 4,7 kOhm, 0207, 250 mW, 5%
        1/4W 390 Widerstand, Kohleschicht, 390 Ohm, 0207, 250 mW, 5%
        X7R-5 100N Vielschicht-Keramikkondensator 100N, 10%
        BC 548A Bipolartransistor, NPN, 30V, 0,1A, 0,5W, TO-92
        LED 3MM 5V GN LED, 3 mm, bedrahtet, 5 V, grün, 20 mcd, 60°
        LED 3MM 5V RT LED, 3 mm, bedrahtet, 5 V, rot, 20 mcd, 60°
        MEBP 6-6S Modular Einbaubuchse 6/6, schwarz
        BL 1X20W 2,54 20pol. Buchsenleiste, gewinkelt, RM 2,54
        SL 1X50G 2,54 50pol. Stiftleiste, gerade, RM 2,54
        TMA 0512S DC/DC-Wandler TMA, 1 W, 12 V, 80 mA, SIL-7
        TEX 24 IC-Sockel, 24-polig, Burn-in-Sockel, Nullkraft
        TASTER 9302 Kurzhubtaster 6x6mm, Höhe: 5,0mm, 12V, vertikal

        1. Vielen Dank für die Zusammenstellung der Bauteileliste. Damit wird der Nachbau viel einfacher! Allerdings ist die Schaltung auf den Einsatz “normaler” LED ausgelegt. Von daher bitte statt der 5V Version die “LED 3MM GN” bzw. “LED 3MM RT” verwenden (ansonsten müssten die Vorwiderstände angepasst werden). Als Transistor habe ich in meinem Aufbau den BC548C verwendet.

          Vielen Dank auch für den Hinweis bezüglich der Buchse – eine verbesserte Bauanleitung kommt kurzfristig.

  3. Hier nun die korrigierte und vollständige (getestete) Bauteilliste:

    Reichelt:

    1/4W 10K Widerstand, Kohleschicht, 10 kOhm, 0207, 250 mW, 5%
    1/4W 1,0K Widerstand, Kohleschicht, 1,0 kOhm, 0207, 250 mW, 5%
    1/4W 4,7K Widerstand, Kohleschicht, 4,7 kOhm, 0207, 250 mW, 5%
    1/4W 390 Widerstand, Kohleschicht, 390 Ohm, 0207, 250 mW, 5%
    X7R-2,5 100N :: Vielschicht-Keramikkondensator 100N, 10%
    BC 548A Bipolartransistor, NPN, 30V, 0,1A, 0,5W, TO-92
    LED 3MM GN :: LED, 3 mm, bedrahtet, grün, 18 mcd, 60°
    LED 3MM RT :: LED, 3 mm, bedrahtet, rot, 4,5 mcd, 60°
    MEBP 6-6S Modular Einbaubuchse 6/6, schwarz
    BL 1X20W 2,54 20pol. Buchsenleiste, gewinkelt, RM 2,54
    SL 1X50G 2,54 50pol. Stiftleiste, gerade, RM 2,54
    TASTER 9302 Kurzhubtaster 6x6mm, Höhe: 5,0mm, 12V, vertikal

    Conrad:

    154397 DC/DC-WANDLER 1W TME 0512S
    1366936 TESTSOCKEL 24PIN GRUEN RM7.62MM/B14.9MM

    (vielleicht in die Anleitung aufnehmen)

    1. Es gibt keine Möglichkeit, die Konfigurationsbits direkt zu bearbeiten. Allerdings werden die Werte im Hex-File übernommen und die Bits entsprechend gesetzt.

      1. Danke für die Info! Ich könnte das in das Programm einbauen! Müsste nur die Adressbereiche der Cfg.-Bits der einzelnen unterstützen IC’s wissen! (das GUI Prg. ist aber nicht von dir, oder?)

        LG

  4. Interessant wäre auch ein Arduino-sketch, mit dem der Programmer standalone betrieben werden kann, also die .hex für den PIC in einer SD-Karte oder im Arduino Programmspeicher abgelegt ist.
    Ansonsten eine tolle Sache!

  5. Hallo Gregor,
    würde es prinzipiell auch mit einem PIC18F25K80 funktionieren, wenn man den Baustein in der devices[] struckt deklariert?
    Schöne Grüße, Markus

    1. Hallo Markus,
      ich habe mich bisher noch nicht mit weiter dieser PIC-Familie befasst, aber wenn es keine Besonderheiten gibt, dann sollte es prinzipiell funktionieren.
      Viele Grüße, Gregor

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert