Sari la conținut
ELFORUM - Forumul electronistilor

Stație de lipit (atmega8, afișaj LED, encoder, PID)


XAN77

Postări Recomandate

Nu cred că mai era nevoie de încă o stație de lipit dar, la dorința colegului @RETY, am lucrat la acest montaj. S-a dorit un fel de stația rusului, adică aceasta:

Posted Image

dar cu unele modificări și mai ales cu acces la codul sursă pentru posibile viitoare modificări gen senzor standby etc.

Pentru că eu nu prea sunt în stare să dau 5 găuri centrate pe fața carcasei cu tastele de pe pcb  :rade:  am optat pentru encoder, care oferă un control multifuncțional. Cîteva poze:

La pornire stă în ”OFF” :

 

Posted Image

 

Fără letcon conectat, afișează:

Posted Image

 

În echilibru la 200 de grade:

Posted Image

Punctul zecimal de la digitul din dreapta indică umplerea PWM cu care este comandat letconul.

 

Cablajul în Sprint, ce se găsește și în arhivă:

Posted Image

 

E cam îngrămădit deși nu eram constrîns să-l fac să iasă cît mai mic, dar de, cine vrea îl mai editează. Nu am desenat și o schemă. Am păstrat schema identică pe partea cu LM358 de la schema rusului, la fel și la referința cu 431 (am folosit 431 smd), pentru că ceea ce merge bine lași așa. Doar tastele le-am eliminat și probabil la conectarea displayului semnalele sunt altfel. Am folosit un modul de digiți albaștri care sunt foarte strălucitori, permițînd rezistențe de limitare de 1K2. Recomand superbright red sau blue. Consumul montajului este de 30mA, afișarea e foarte strălucitoare.

Descrierea modului de funcționare: 

-pornirea/oprirea se face acționînd butonul encoderului.

-la rotirea encoderului cu stația pornită pot fi două moduri de lucru. 1.incrementare/decrementare în pași de 5 grade și 2.trecerea prin cele 7 temperaturi memorate în eeprom.

-pentru comutarea între cele două moduri de lucru ale encoderului, precum și pentru alte funcții, am folosit butonul encoderului care la apăsarea prelungită, emite cîte un bip la fiecare secundă trecută de cînd este apăsat butonul, fiecare bip însemnînd o altă funcție, după cum urmnează:

---Dacă după primul bip eliberăm butonul, se comută între cele două moduri de lucru cu encoderul (pași de 5 grade - memorii). 

---La eliberarea după bipul 2, temperatura curentă setată este salvată în eeprom pe locația ultimei memorii folosite. De exemplu encoderul este pe memorii și nu pe pași, (așa pornește default  stația) pe o memorie ce conține 200 și vrem să o salvam cu o altă valoare. Apăsăm encoderul iar după ce se aude un bip (durează o secundă) se eliberează butonul. Se reglează în pași de 5 grade o altă temperatură, 220 să zicem, și se apasă butonul și se așteaptă să se audă al 2-lea bip (durează 2 secunde), moment în care stația trece iar pe mod memorii iar memoria curentă a devenit 220 suprascriindu-se cea de 200.

---La eliberarea după bipul 3, treapta de memorie curentă devine treapta default de pornire la alimentarea stației. Am preferat așa decît să salvez mereu în eeprom poziția memorie folosite la fiecare modificare.

---La eliberarea după bipul 4, aici e mai cu dichis. La un letcon oarecare, sper eu, se reglează plecînd de jos pînă se ajunge la temperatura de topire a fludorului standard 60/40, care este de 190 grade. Eu această temperatură am luat-o ca etalon. E posibil ca temperatura necesară pentur acel punct să nu fie în jur de 190, dacă e e ok, nu avem grijă. Dar dacă nu e, se acționează funcția de la bipul 4, care va salva letconul folosit în eeprom. Practic modifică o variabilă ce diferă de la letcon la letcon pentru că nu au termocuple identice.

Se poate observa că am pus cele 4(deocamdată) funcții în ordinea în care este nevoie de ele în mod uzual. Comutarea dintre cele 2 moduri de lucru ale encoderului este evident cea mai des folosită.

 

Pentru a indica la punctul de topire 190 grade, la temperatura camerei stația pleacă de la 40-45 de grade, datorită neliniarității termocuplei. Pentru ca această valoare să nu fie 60, și pentru că nu îmi place să las offset-ul de la 358 să își facă de cap, am prevăzut posibilitatea scăderii acestui offset, astfel: dacă la punerea sub tensiune a stației, cu intrarea pentru termocuplă în scurt și butonul encoderului apăsat, se citește ADC care este offsetul și se salvează în eeprom pentru a fi mereu scăzut din viitoarele citiri. Momentul este semnalizat de 3 bipuri scurte. Se poate verifica pornind stația  cu intrarea de termocuplă în scurt cît arăta înainte și după corecția de offset.

 

La temperaturi de peste 340 grade, pentru a evita folosirea îndelungată cu această temperatură, după 15 minute de la ultimul reglaj (rotire de encoder) stația trece automat pe 200 grade emițînd 2 bipuri. La 60 minute după ultima acționare de encoder intră în OFF, semnalizînd cu 3 bipuri. Aici așa vrea RETY, eu aș opta pentru o semnalizare dar fără a trece în OFF, astfel dacă am uitat de stație, bipuruile îmi vor semnala asta, dar să am mult de treabă și să se oprească stația la fiecare oră, m-ar enerva.

 

Și la final 2 vorbe despre PID. Interesant sistem de control într-un sistem cu feed-back. Pînă la această aplicație nu știam decît aceste 3 litere. Am implementat PID-ul așa cum scrie la carte, cu tunningul însă e mai greu decî mă așteptam. Cu PID se calculează valoarea pentru PWM-ul ce comandă letconul via mosfet, pe ieșirea OCR2 (timer2). În forma actuală de reglaj a PID sunt mulțumit de cum merge, deși e perfectibil, dacă mai îmi vin idei și modific coeficienții din PID revin cu hexuri. De exemplu cu un letcon Gordak la 200 grade am o excursie totală de temperatură de 2 grade. La alte temperaturi e chiar de 1 grad, dar posibil să fie și 3 sau maxim 4 grade.

Pentru a nu fi nevoit să treci prin acel reglaj ca să salvezi letconul, în arhivă am pus 2 hexuri (fiecare conține și un fișier pentru eeprom) în care modul default de pornire este penuur letcon gordak respectiv solomon. Menționez că diferența între cele două este foarte mare, termocupla gordakului (probabil tip E da nu sunt sigur) dă tensiune aproape dublă față de termocupla solomonului.. Rezistența de 56k care dă cîștigul LM358-ului am ales-o pentur ca să pot folosi letconul gordak fără să fie necesară schimbarea rezistenței. Inițial era de 100k, dar datorită tensiunii mari a termocuplei gordak, tensiunea de la 358 ieșea din gama ADC-ului. Astfel fără modificări hard, pot folosi 2 letconuri fpoarte diferite și probabil și altele dar nu am la dispoziție.

 

Scuze de postarea lungă, atașez arhiva.

 

 

 

Nu editez să nu am probleme cu arhiva. O corecție. Afișajul este cu anod comun, văd că în denumirea folderelor unde sunt hexurile am greșit scriind CC.

Uitasem să mai zic că la atingerea temperaturii setate se emite acel bip precum la stația rusului.

inca o statie lipit.rar

Link spre comentariu

Adaug o poză cu partea plantată că uitasem și un clip care l-am făcut acum dimineață avînd conectat letconul Solomon și pornind pe temperatura de 200 iar după stabilizare schimb la 230. De urmărit punctul zecimal care indică comanda aplicată ce este cu PWM.

https://youtu.be/vLZN-WVzNBE

 

Posted Image

Destul de ”păruit” montajul, nu prea am reușit să pun un conector de programare și am preferat paduri împrăștiate unde am fire lipite pe perioada de testare. Mă rog, nu susțin că ar fi frumos, ci doar că funcționează  :rade:

 

Vreau să mai dau ceva teorie despre PID, pentru cei care nu știu evident și vor să afle amănunte. Pentru mine a fost mica provocare din acest proiect, mi-a plăcut să aflu ceva nou.

 

Pentru cine nu este interesat de teoria din spatele funcționării să facă abstracție de textul următor.

Sunt 3 parametrii P(progresiv), I(integral) și D(derivat) care se calculează separat după care se însumează și dau valoarea pentru PWM.

În fapt sistemul citește temperatura termocuplei, și scade din temperatura țintă (cea dorită) temperatura curentă măsurată. Diferența este considerată eroarea, diferența cît mai are pînă la țintă.

P este egal tocmai cu această eroare, astfel P va fi mai mic cu cît eroarea e mai mică, deci în rezultatul final P+I+D, P-ul va influența prin scăderea PWM-ului odată cu apropierea temperaturii de țintă.

I este un acumulator în care se adună permanent toate erorile, măsurate la intervale fixe de timp (la mine 1ms). Acestui acuumlator i se impun nișt limite maxime și minime altfel ajunge la valori foarte mari. la ce ajută el? După ce a ajuns la țintă, cînd va începe temperatura să scadă , acumulator va acumula rapid erori, generînd creșterea progresivă a PWM, întrucît P-ul nu mai este util deoarece la o eroare de 1 grad P-ul nu poate oferi o creștere mare de PWM. Dacă ar faceo, ar fi greu sau imposibil de ținut temperatura fixă la valori mici. Cînd temperatura urcă peste țintă I-ul va descrește rapid, erorile devenind negative.

D este simpatic și foarte util. Pentru a-l calcula se scade din eroarea curentă eroarea anterioară, deci se fac tot măsurători la intervale de timp egale, dar alt timp decît la I, revin la acest timp mai tîrziu. Deci dacă temperatura crește spre țintă, eroarea curentă va fi mai mică ca cea anterioară (țintă 200, anterior 198, curent 199, erorile erau de 2 apoi 1 iar 1-2=negativ) Acest negativ va influența rezultatul final al PID prin scăderea PWM, de aceea se observă pauzele de comandă de fiecare dată cînd temperatura crește. Practic oferă o decelerare a vitezei de creștere spre țintă. La fel face, comandînd invers, și cînd temperatura curentă e mult peste țintă (coborîm noi de la 300 la 250) cînd va oferi pulsuri de comandă la apropierea de țintă, pentru a decelera viteza de scădere a temperaturii. Pauzele sau pulsurile de comandă introduse de D sunt direct proporționale cu intervalul de timp la care să citesc erorile folosite la calcului acestui parametru. 

 

Intervalele de timp pentru erorile ce dau D-ul trebuiesc diferite datorită letconurilor diferite și din acest motiv cred că voi renunța la funcția de memorat letcon.

Pentru sistem contează 2 caracteristici ale letconului:

1-tensiunea pe grad celsius dat de termocuplă, ce poate fi foarte diferită.

2-viteza de răspuns a termocuplei la aplicarea tensiunii pe rezistență.

De exemplu la ale mele letconuri de studiu timpul în care acestea urcă cu 10 grade, pornind de la temperatura camerei, este de 3 secunde pentru gordak și 10 secunde solomon (folosind același alimentator de 19V).  Deci solomonu are un răspuns mult mai întîrziat, iar gordaku mult mai rapid. Cum pauzele/pulsurile datorate parametrului D pot fi mai lungi sau mai scurte, la letconurile cu răspuns rapid am văzut că sunt necesare să fie rapide iar la acel solomon trebuie să fie mai lungi că altfel intră în overshoot, care poate fi mărișor la temperaturi mai mici.

Editat de XAN77
Link spre comentariu
  • 4 săptămâni mai târziu...

Am reusit sa realizez cablajul, in curand vreau sa realizez si eu acest proiect. Am facut si o tentativa de a desena schema, am verificat-o dar va cer scuze pentru eventualele greseli.

 

Posted Image

 

Doua intrebari pentru @XAN77:

 

* Parametrii fuses sunt aceeasi ca in schema ruseasca?

 

Posted Image

 

* Buzzerul este un simplu difuzor sau are oscilator incorporat?

 

Mersi.

 

 

Link spre comentariu

... poate pune cineva un cablaj cu atmega8-ul smd şi restul componentelor tht?aş încerca eu, dar de fiecare dată greşesc la layere, şi nu am chef să mă enervez iar... cel puţin, nu astăzi!

 

mai am un mega8 din cele 3 cumpărate din greşeală (n-am fost atent dacă erau pu sau au, şi s-au dovedit a fi au), şi l-aş cam pune la treabă, dar nu am nici un fel de alte compnente smd, şi nu mă încântă deloc ca pentru un singur proiect să mă văd nevoit să cumpăr câteva sute de componente pe care e foarte probabil să nu le mai folosesc la altceva! :)

Link spre comentariu

Urmand sfatul autorului am modificat usor pcb-ul original inlocuind TL431 si C - 10uF din smd in tht, dupa care am suprascris pad-urile pentru rezistori fara a modifica lungimea, intentionez sa utilizez rezistori miniatura de 1/4w cu terminalele usor indoite.

 

LM358 a ramas in varianta smd pentru ca-l aveam; cablajul l-am realizat, urmeaza la sfarsitul saptamanii sa ma apuc de treaba.

sl_M8.pdf

Link spre comentariu

Pentru cei care doresc sa faca un cablaj cu componente tht (printre care si eu) am configurat o varianta de cablaj, cam inghesuita. Il rog pe colegul XAN77 sa se uite un pic pe ea, avand in vedere ca schema lui difera (sau gresesc eu?) fata de cea a rusului. Multumesc.

Posted Image

Link spre comentariu

Am aruncat un ochi. E greșit la pinii encoderului. Eu am folosit D.1 și D.2 pentru canalele A și B encoder, adică pinii 3 și 4 la capsula DIP, din care D.2(pin4) este INT0. La tine văd că ai omis pinul 4, e nefolosit, și e cel mai important că este întreruperea externă. Pentru întrerupătorul encoderului am folosit D.0, pinul 2 la DIP.

Link spre comentariu

O varianta interesanta este modificarea afisajului si adaugarea a 3 circuite CDB447 (sau MMC4543, CDB74141).Eventual si o modificare soft care la 30min. sa realizeze pentru 10-20sec o numarare rapida de la 0 la 9 pentru fiecare digit daca nu se modifica temp si la 15min in stand-by.Asta este practica pentru utilizarea de tuburi nixie.Daca nu se gasesc 12 pini la microcontroler atunci sa se elimine difuzorul. Sau varianta low cu un singur bus de 4pini pentru intrari paralele in 447 si iesiri multiplexate.

Link spre comentariu

Varianta corectata si buna (sper) partea tensiune 5v e in jurul lui Lm317. Cablajul l-am gandit sa incapa in carcasa unui incarcator baterii (18v) de la o bormasina portabila.

 

Edit>

Rog moderatorul sa stearga imaginea de mai sus (varianta gresita). Multumesc.

Posted Image

Editat de amudsen
Link spre comentariu
  • 2 săptămâni mai târziu...

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări