BobProg - Programator ICSP pentru microcontrolere PIC
- 28 August 2004
- , autor Radu
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 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
Cablajul folosit este pe o singura parte. Fisierele in format PDF sunt disponibile mai jos.
Software si conectarea programatorului la sistemul cu microcontroler
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
- (schema si cablaje in format PDF)
- IC-Prog (software pentru programatorul BobProg)
- Programator JDM (varianta veche a programatorului JDM)
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
Radu
DA
2012-12-24 11:43:19
Raspunde
florin
Se poate programa cu acest programator 18f1320 ?
2012-12-20 02:41:28
Raspunde
Radu
DA
2012-12-24 11:42:48
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
Radu
super! mersi de feedback
2013-03-25 09:27:44
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
Barabu
va rog frumos schema
2015-08-28 18:59:20
Raspunde
Adauga un comentariu ...