Articole similare

BobProg - Programator ICSP pentru microcontrolere PIC

Programator PIC - BobProg

BobProg este un programator pentru microcontrolere PIC produse de Microchip. Aceasta varianta de programator este compatibila cu majoritatea familiilor de microcontrolere PIC care au implementata facilitatea de progamare in circuit (ICSP). Programatorul se conecteaza printr-un cablu la portul serial al PC-ului si trebuie alimentat de la o sursa externa de tensiune.

Varianta cu alimentare externa este o imbunatatire fata de varianta programatorului JDM clasic, care nu functioneaza corect la unele calculatoare mai noi sau cu unele microcontrolere. Acest programator ICSP are avantajul ca permite programarea microcontrolerelor direct in circuitul unde sunt folosite, fara a mai fi nevoie de un soclu pentru a muta microcontrolerul din sistem in programator, facilitate foarte utila in cazul in care microcontrolerul este de tip SMD. BobProg se conecteaza la sistemul cu microcontroler printr-un cablu scurt cu 5 fire.

Schema si PCB

Schema BobProg - Programator PIC

Schema este o varianta modificata a progrmamtorului JDM. Circuitul trebuie alimentat de la o sursa externa de tensiune de 12V...14V curent alternativ (direct de la un transformator ~220V -> ~12V) sau de la sursa de +16V...+18V curent continuu (tensiune redresata si filtrata). Regulatorul de tensiune 78L12 (+12V 100mA) este conectat la masa prin doua diode pentru a obtine la iesire tensiunea de 13,4V folosita pentru programarea microcontrolerelor PIC. Regulatorul 78L05 (+5V 100mA) este folosit pentru obtinerea tensiunii de +5V necesara alimentarii microcontrolerului. Circuitul cu doua tranzistoare NPN si PNP este folosit pentru a controla aplicarea tensiunii de programare la pinul VPP (MCLR) al microcontrolerului, comandata de semnalul TxD al portului serial. Celelalte semnale ale portului serial (RTS, CTS si DTR) sunt folosite la generarea semnalelor de CLOCK si DATA la pinii ICSP ai microcontrolerlelor PIC.

Conectorul JP4 (ICSP_Power) are acelasi rol cu JP2 (Power), dar este folosit pentru a alimenta programatorul direct din sistemul cu microcontroler, daca acesta dispune de o tensiune de +16V...+18Vcc, eliminand astfel necesitatea unei o a doua alimentari externe numai pentru programator. Diodele D1 si D5 au rol de protectie in cazul conectarii gresite a tensiunii de alimentare. LED-ul verde POWER indica prezenta tensiunii de alimentare de +5V, iar LED-ul rosu PROG indica prezenta tensiunii de programare de +13,4V.

Majoritatea componentelor folosite sunt de tip SMD (Surface Mount Device). Acestea pot fi inlocuite cu echivalente TH (Through Hole), dar in acest caz trebuie reproiectat cablajul. Componetenele echivalentele pentru varianta TH (cu pini) sunt urmatoarele: BC807=BC557, BC817=BC547, FS1J=1N4001, MMBD7000= 1N4148 x 2.

Programatorul a fost testat cu urmatoarele microcontrolere:

  • PIC12C508
  • PIC12C509
  • PIC12F629
  • PIC12F675
  • PIC16F84
  • PIC16F627
  • PIC16F628

BobProg poate programa toate tipurile de microcontrolere PIC suportate de aplicatia IC-Prog.

Cablajul si plasarea componentelor

BobProg BobProg - Cablaj fata BobProg - Cablaj spate

 

Cablajul folosit este pe o singura parte. Fisierele in format PDF sunt disponibile mai jos.

Software si conectarea programatorului la sistemul cu microcontroler

alt alt

 

Pentru programare se foloseste aplicatia IC-Prog, care ruleaza pe PC si comunica pe portul serial cu programatorul prezentat. IC-Prog trebuie configurat cu urmatoarele optiuni:

  • Hardware:
    • Programmer: JDM Programmer
    • Interface: Windows API
  • Options:
    • Misc: Enable NT/2000/XP Driver
    • Interface: Verify After Programming

Download

comentarii

  • Vlad

    Salut, am o nedumerire la această schemă. În colectorul lui Q2 este -13v de unde îi ia? Programatorul merge perfect de exemplu într-un circuit fără a alimenta circuitul respectiv? Suportă pic16f876A?

    2012-08-19 21:45:20

    Raspunde

    • Radu

      Este o greseala in schema, e +13V, nu -13V. Scuze.
      Da, poti programa un microcontroler PIC dintr-un circuit extern fara a alimenta circuitul respectiv. Chiar poti folosi programatorul ca sursa de alimentare 5V pentru circuitul extern.
      Suporta PIC16F876A sau orice alt PIC. Toate se programeaza prin interfata ICSP . Depinde doar de aplicatia de pe PC daca suporta toate PIC-urile (unele au memorie mai mare si poate aplicatia de programare este limitata la o memorie mai mica)

      2012-08-20 09:48:33

      Raspunde

  • Vlad

    am construit acest programator dar nu merge! Am 13.1v tensiune de programare. E ok? cum ar trebui să fie led-ul de programare atunci când este citit mcu?

    2012-08-24 18:58:04

    Raspunde

    • Radu

      E OK. Nu mai tin minte de cand foloseam programatorul asta, dar cel putin la inceputul programrii (daca nu chiar tot timpul programarii) trebuie sa fie aprins.

      2012-08-24 19:09:10

      Raspunde

      • Vlad

        E OK. Nu mai tin minte de cand foloseam programatorul asta, dar cel putin la inceputul programrii (daca nu chiar tot timpul programarii) trebuie sa fie aprins.

        Este aprins dar slab, abia se observă că e aprins. Am folosit bc556 în loc de 557, eroare pe care o primesc e 0000h.
        Soft-ul e configurat cum a-ţi spus.

        2012-08-24 19:25:32

        Raspunde

    • Radu

      Si la citire si la scriere LED-ul rosu se comporta la fel, trebuie sa fie aprins macar la inceput (ca sa activeze modul de programare ICSP). Ce mesaj de eroare primesti ? Ai configurat ICprog ca mai sus ?

      2012-08-24 19:16:57

      Raspunde

  • Vlad

    în colectorul lui Q2 am 2.9v e în regulă?

    2012-08-24 19:27:54

    Raspunde

    • Radu

      Nu, trebuie sa fie aceeasi tensiune ca in emitor, aprox 13V. Poate ai un scurt pe placa pe circuitul din colector sau poate Q1 nu trage destul R5 la masa. Pune colectorul lui Q1 cu fortat la masa. Daca tot n-ai 13V la Q2, atunci problema e dupa Q1, altfel e inainte de Q2 (Q1, R5, R1, R2, D2) in conditiile in care pe TXD trebuie sa ai minim 5V (am testat doar cu >9V cat are un port standard). Daca folosesti un port serial din convertor USB-RS232, atunci micsoreaza rezistorii R1, R3, R3 (1K) si mareste R2 (10K). Circuitul a fost proiectat pentru un port standard, care are tensiuni de minim +/-9V pe iesiri.

      2012-08-24 19:39:19

      Raspunde

  • Vlad

    Observ că nu am deloc tensiuni pe portul serial. CE tensiuni ar trebui să am şi unde?

    2012-08-24 20:20:38

    Raspunde

    • Radu

      Pe TXD, DTR si RTS ar trebui sa ai -5..-12V cand softul nu e pornit si +5V...+12V cand softul e pornit sau cel putin in timpul programarii (scriere/citire). Se masoara fata de masa (pinul 5) al mufei seriale. Asigura-te ca portul e functional: fa scurt intre pinii 2 si 3 ai mufei seriale si ce trimiti ar trebui sa primesti inapoi folosind terminalul http://www.bobtech.ro/terminal

      2012-08-24 20:26:26

      Raspunde

  • Vlad

    Deci cu colectorul lui Q1 la masă acum am doar 6v pe Q2 la colector. Pe dioda zener D2 am 1.4v când se chinuie să programeze , la intrare pe port am pe TXD, DTR si RTS câte 9.5v.Ce ar mai putea fi? Q2 se încinge

    2012-08-24 20:49:58

    Raspunde

  • Vlad

    Am făcut după schema de aici,
    http://s18.postimage.org/5itji7y9l/dadadadadada.jpg

    2012-08-24 21:05:44

    Raspunde

  • Vlad

    Am rezolvat circuitul am 13v acum. dar tot îmi dă aceaşi eroare 0000h după ce verifică programarea. ce trebuie să fac?

    2012-08-25 13:19:58

    Raspunde

    • Radu

      Care a fost problema ? Da-mi mai multe detalii: OS, tip port serial, putere sursa alimentare externa, model PIC, ...

      2012-08-25 13:24:03

      Raspunde

      • Vlad

        Care a fost problema ? Da-mi mai multe detalii: OS, tip port serial, putere sursa alimentare externa, model PIC, ...

        eu programam circuitul în montaj direct cu fire(VA meter) dar observasem că se consuma undeva prea mult(se încingeau stabilizatoarele) aşa că l-am scos din circuit(pic-ul) şi l-am pus pe o bearboard. Problema cu programaorul era Q1 pus invers. Am 12.9v.
        Folosesc windows xp, pic16f876A, îi dau 16v din sursă externă. port serial de la pc care merge(am testat cu o telecomandă pc pe port serial). Să fie o problemă cu fişierul hex? simulat cu proteus merge

        2012-08-25 13:30:48

        Raspunde

        • Vlad

          asa este eroarea care o primesc.
          http://s10.postimage.org/rvkdd1pkp/eroare.jpg

          Cum pot vedea dacă e conectat pic-ul la pc?

          2012-08-25 13:31:44

        • Radu

          Nu conteaza daca HEX-ul e functional. Pune la masa pinul PGM (RB3) cat e programatorul conectat si debifeaza LVP la fuses. Daca tot nu merge, modifica I/O delay. Foloseste un osciloscop http://www.zelscope.com sa vezi daca exista comunicatie pe liniile PGD si PGC (si fara PIC conectat). Alte idei n-am :(

          2012-08-25 13:46:13

  • Vlad

    am încercat cu ponyprog şi când să programez îmi zice :`comunication port not avaible` Să fie problemă de programator?

    2012-08-25 13:46:57

    Raspunde

    • Radu

      N-am testat cu ponyprog, decat ICprog exact cum este descris aici. Asta pare sa aiba legatura cu portul serial, nu cu programatorul. LED-ul rosu se aprinde si ai 13V cand pui Q2 la masa manual sau cand folosesti softul de programare ? Adica softul ICprog deschide portul si aprinde LED-ul rosu cand dai sa scrie/citeasca ?

      2012-08-25 17:33:21

      Raspunde

      • Vlad

        N-am testat cu ponyprog, decat ICprog exact cum este descris aici. Asta pare sa aiba legatura cu portul serial, nu cu programatorul. LED-ul rosu se aprinde si ai 13V cand pui Q2 la masa manual sau cand folosesti softul de programare ? Adica softul ICprog deschide portul si aprinde LED-ul rosu cand dai sa scrie/citeasca ?

        E tot timpul aprins chiar dacă nu e conectat la port Ledu-l roşu

        2012-08-25 18:28:26

        Raspunde

        • Radu

          TXD trebuie sa fie aprox -8V cand nu faci nimic, si +8V cand portul e deschis si aplicatia trimite date. Deci Q1 e blocat in mod normal, la fel si Q2 si LED-ul e stins. Daca ramane arpins si cand nu conectez placa la PC, atunci e ceva eroare pe placa, altfel verifica tensiunea pe TXD cand aplicatia nu e pornita sau e pornita dar nu face nimic.

          2012-08-25 18:33:19

          • Vlad

            TXD trebuie sa fie aprox -8V cand nu faci nimic, si +8V cand portul e deschis si aplicatia trimite date. Deci Q1 e blocat in mod normal, la fel si Q2 si LED-ul e stins. Daca ramane arpins si cand nu conectez placa la PC, atunci e ceva eroare pe placa, altfel verifica tensiunea pe TXD cand aplicatia nu e pornita sau e pornita dar nu face nimic.

            am înţeles, în port am tensiunea deci portul e ok cred că placa e cu probleme. o să mă mai uit la ea.

            2012-08-25 18:36:19

  • Vlad

    E incredibil tot nu îmi merge nu înţeleg de ce se deschide Q1 chiar dacă nu am conectat la portul serila montajul, problema e undeva în zona Q1 pentru că dacă îl scot din circuit nu se mai aprinde ledul de programare.

    2012-08-30 17:07:23

    Raspunde

    • Radu

      Poate e defect tranzistorul sau nu e de tipul care trebuie (NPN). Vezi aici cum se verifica http://talkingelectronics.com/pay/BEC-3/PNP-or-NPN.html

      2012-08-31 09:11:02

      Raspunde

      • Vlad

        Folosesc bc547npn şi bc556-pnp

        2012-08-31 12:34:34

        Raspunde

        • Radu

          masoara tensiunile, cu si fara portul serial conectat, in urmatoarele puncte: TXD, B-Q1, E-Q1, C-Q1, B-Q2, E-Q2, C-Q2

          2012-08-31 12:41:54

          • Vlad

            Deci fără port neconectat:
            TXD:0.62v
            B-Q1:0.63v
            E-Q1:0vv
            C-Q1:6.79v
            B-Q2:11.33v
            E-Q2:13.14v
            C-Q2:13.13v
            Deci cu port neconectat fără aplicaţie deschisă:
            TXD:-9,43v
            B-Q1:0.52v
            E-Q1:0vv
            C-Q1:9v
            B-Q2:12.35v
            E-Q2:13.14v
            C-Q2:13.13v

            2012-08-31 13:02:41

            • Vlad

              Ceva ce e greu de crezut am înlocuit de vreo 10 ori Q1 cu bc547 măsuraţi - buni, dar nu a mers , am pus bd139. merge cum trebui, se aprinde ledul de programare când programează, în rest e stins. Încerc să programez acum

              2012-08-31 13:40:37

  • Constantiu Soare

    Buna ziua,

    Nu inteleg unde se conecteaza JP4?
    Nu este prea clar din desene. In imaginea cu PC-ul este figurat doar cablul cu 5 fire...
    Multumesc

    2012-09-22 16:48:35

    Raspunde

    • Radu

      Placa mea cu microcontroler era alimentata cu o sursa externa de 16V si ca sa nu mai folosesc o a doua sursa pentru microcontroler, am conectat sursa placii la JP4, iar la JP2 n-am mai conectat nimic.

      2012-09-22 16:58:38

      Raspunde

  • Constantiu

    Multumesc pentru raspunsul rapid!

    Acum e clar, dar mai am o intrebare :)
    In desenul din dreapta celui cu PC-ul (cel care arata conetarea la uController) care este rolul bornei VDD conectata la VDDP din conector si prin 10K si dioda la VPP?
    Este o modificare a placii pe care va lucra controllerul pentru a putea folosi programatorul?

    Multumesc

    2012-09-22 17:49:08

    Raspunde

    • Radu

      VDDP e tensiune de alimentare de la programator si alimenteaza microcontrolerul la pinul VDD. Rezistorul si dioda la MCLR formeaza un circuit de reset extern (fara el nu porneste singur softul in microcontroler). Dioda impiedica impulsul de 13V de la VPP sa ajunga la VDD si restul sistemului, dar ulterior am observat ca functioneaza OK si daca nu se pune (nu intru in detalii), deci ramane doar rezistorul de 10K conectat intre VDD si MCLR.

      2012-09-22 18:06:12

      Raspunde

  • Bogdan

    Salut. Cu acest progreamator se poate programa si PIC16F887?

    2012-12-05 12:02:27

    Raspunde

  • florin

    Se poate programa cu acest programator 18f1320 ?

    2012-12-20 02:41:28

    Raspunde

  • Nicolae

    Buna ziua. Pentru inceput va multumesc pentru ceea ce faceti, dar ca de obicei incepatorii au probleme. Deci am dorit sa realizez o aplicatie cu un PIC 16F870 si pentru aceasta am facut programatorul JDM simplu pe portul serial. Dupa mai multe probleme am reusit sa programez picul cu acel programator (deci functioneaza bine), dar acum doresc sa fac o alta aplicatie cu PIC 16F84, dupa mai multe incercari nereusite am inteles ca nu o sa reusesc cu programatorul JDM deoarece tensiunea era prea mica 10,4 V. Deci am realizat programatorul acesta cu alimentare separata. Si acum problema, icprog si PICPgm nu vad picul 16F84, programatorul cred ca functioneaza corect deoarece am incercat sa programez 16F870 si merge bine se programeaza este ok. Incep sa cred ca picul este defect (dar am trei, noi acum comandate de la Timisoara) si nici unul nu il vede. Conectorul ICSP cred ca e legat corect VPP-4, PGC-12, PGD-13, VDDP-14, GND-5, VDDP conectat la VPP prin rezistenta si dioda. Ceva nu fac bine sau acest lot de PIC sa fie defect, se poate cumva sa le verific picurile daca sunt bune ? (am asteptat 2 saptamani sa vina de la Timisoara) Ce sa mai fac, ceva idei, solutii - astept ceva sfaturi ca m-am blocat.
    Va multumesc anticipat. O zi minunata tuturor.

    2013-01-30 19:06:24

    Raspunde

  • Daniel

    Am programat un PIC16F690 cu acest programator si WinPic800 si a functionat perfect.

    2013-03-24 21:42:50

    Raspunde

  • drgomir florin

    Buna ziua,
    Se poate programa pic16F684?
    multumesc

    2013-04-02 22:01:38

    Raspunde

    • Radu

      Poate programa orice PIC, depinde doar de softul pe care-l folosesti pentru programare: sa fie compatibil cu JDM si sa suporte PIC-ul tau

      2013-04-03 09:45:00

      Raspunde