Cuptoarele de reflow sunt un echipament special folosit pentru lipirea pieselor de tip SMD (Surface Mount Devices) pe placute de circuit imprimate (in engleza Printed Circuit Board - PCB). Lipirea acestor piese se realizeaza prin tratarea termica a unui lipici special ce contine cositor, care se topeste direct pe pinii componentelor electronice, proces cunoscut in industrie sub denumirea de soldering. Deoarece acest proces presupune aplicarea unui profil specific de temperatura (determinat de compozitia lipiciului, specificatiile PCB-ului, precum si ale pieselor SMD), este necesar un control precis al temperaturii, care sa asigure urmarirea cat mai fidela a profilului de temperatura dorit.
Proiectul de fata isi propune astfel crearea unui cuptor de reflow “homemade”, ca alternativa mai ieftina pentru echipamentele folosite in industrie (mult mai scumpe), destinata pentru asamblarea circuitelor simple, proiectate de studenti sau de orice electronist amator. Trebuie mentionat totusi faptul ca acest proiect nu poate acoperi functionalitatile unui cuptor industrial special, astfel incat pentru realizarea unor produse in scop comercial sau industrial, utilizarea echipamentelor standard consacrate este imperativa.
Acestea fiind zise, sa trecem la treaba!
In realizarea proiectului, este necesar sa apelam la notiuni ce tin de teoria sistemelor. Observam mai sus diagrama bloc specifica unui sistem de reglare automata, cruciala pentru controlul precis al temperaturii pe care ni-l propunem. In acest proiect a fost utilizat un microcontroller ESP32S3 Super Mini, datorita capacitatii sale sporite de calcul si a posibilitatii de paralelizare pe nuclee a taskurilor. Acesta, impreuna cu releul solid-state, formeaza compensatorul pentru cuptor, denumit in continuare proces. Pentru masurarea temperaturii in interiorul cuptorului se foloseste un modul MAX6675 cu termocupla de tip K, cu intervalul de masurare de 0 - 1024 grade Celsius. Modulul reprezinta traductorul sistemului, prin care se inchide astfel bucla de reglare cu reactie negativa pentru cuptorul electric.
De asemenea, controlul procesului a fost realizat cu ajutorul notiunii de compensator PID (Proportional - Integral - Derivativ), implementat numeric pe microcontroller, care sa asigure urmarirea referintei (profilul de temperatura) in anumiti parametrii de performanta ce ii vom defini ulterior. Pe langa functionalitatea sa de compensator, microcontrollerul ales asigura de asemenea interfatarea cu procesul controlat cu ajutorul unui touchscreen TFT, prin care se poate seta profilul de temperatura dorit si se poate urmari grafic evolutia temperaturii in sistem.
Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html
Schema electrica a circuitului de comanda este prezentata mai jos in aplicatia KiCAD. Pentru realizarea acestui proiect este absolut necesar ca pinii alesi sa poata fi utilizati in protocolul de comunicatie SPI. Acest lucru este necesar deoarece atat traductorul, cat si interfata grafica cu utilizatorul folosesc acest protovcol de comunicare. Din fericire, microcontrollerul ESP32S3 Super Mini are aproape toti pinii configurati pentru acest protocol, ceea ce ofera foarte multa flexibilitate pentru design.
Lista componentelor utilizate sunt:
Am testat cuptorul pentru intrare egala cu treapta unitata (echivalenta cu duty-cycle = 100%), obtinand urmatorul grafic
Se observa cateva caracteristici importante, precum:
Vom presupune in continuare ca procesul de reflow se poate aproxima un sistem de ordin I cu timp mort sau FOPDT (en. First Order Plus Dead Time), dat de reprezentarea ca functie de transfer:
unde L este valoarea timpului mort, T este constanta de timp a sistemului, iar K este un factor de amplificare ce da valoarea de temperatura a sistemului maxima.
Desi acest sistem este extrem de problematic in practica, din fericire exista tehnici speciale de identificare a sistemului si de acordare a controllerului, dar inainte sa ne punem problema cum controlam sistemul, este necesar sa stabilim mai intai urmatorul aspect: poate acest sistem sa ofere performantele de proces dorite ? Care sunt macar acele cerinte de performanta?
Pentru proiecte de amatori, sunt 3 aspecte cheie ce influenteaza calitatea lipirii componentelor de placa de circuit:
Daca in plus avem si o rata de incalzire a cuptorului suficienta (in cazul nostru un grad/s), putem concluziona ca sistemul poate furniza performantele dorite. Prin urmare, in proiect vom pleca de la un profil simplu al temperaturii, de tip “slump” (adica panta crescatoare pana la referinta) cu referinta 150 C. De precizat ca racirea a fost efectuata prin deschiderea usii cuptorului si ventilarea manuala a acestuia (acesta este un posibil aspect de imbunatatit pe viitor).
Implementarea software a proiectului a fost realizata in mediul de dezvoltare Arduino IDE datorita functiilor generice, disponibile pentru toate microcontrollerele, precum si pentru varietatea de biblioteci implementabile.
Vorbind tot de biblioteci, proiectul foloseste functiile standard din libraria <Arduino.h>, dar si biblioteci pentru taskuri specifice:
Am implementat de asemenea doua biblioteci proprii, cu atribute si metode specifice pentru testarea si implementarea strategiei de control:
Elementul de noutate al proiectului ar fi, in primul si in primul rand, realizarea controlului automat al temperaturii pentru reflow. Desi exista, intr-adevar, multe astfel de cuptoare realizate de amatori, majoritatea realizeaza controlul temperaturii manual sau, in cel mai bun caz cu un controller PID din comert. Ambele sunt variante complet valide pentru regularea acestui proces, insa dificil de realizat fara a avea cunostinte de reflow profiling si, mai ales, fara a cunoaste comportamentul sistemului, ceea ce poate crea dificultati in cazul acordarii parametrilor controllerului.
Desigur aceste functionalitati sunt puse la dispozitie si de acest controller, dar in plus fata de acestea, probabil al doilea si probabil cel mai important element de noutate al proiectului este constituit de posibilitatea acordarii automate a cuptorului prin metode specifice. In acest sens, am implementat in scheletul de cod:
Alte functii utilizate in cod sunt:
Legat de scheletul de cod utilizat, fisierul principal .ino contine doua functii principale:
unde interactiunea cu butoanele este realizata in functiile handleScreen, separat fata de functiile de afisare a paginilor drawScreen. Modalitatea in care este implementata aceasta schema este bazata pe un indice de pagina, denumit in cod sindex. Totodata, acest AFD contine pentru fiecare optiune aleasa metoda de calcul a comenzii - pentru modul manual, aprinderea/stingerea cuptorului prin apasarea unui buton pe ecran; pentru modul automat, configurarea parametrilor, precum si calculul comenzii cu metoda clasei Controller PID_update() si afisarea acesteia in pagina de monitorizare; iar pentru modul de acordare automata, determinarea parametrilor optimi pentru punctul de referinta dorit cu ajutorul functiei relayFeedback()
In ceea ce priveste senzorii, calibrarea a fost realizata conform datasheetului, prin citirea “manuala” a temperaturii prin SPI in format de 16 biti, dintre care MSB reprezinta semnul, urmatorii 12 biti reprezinta valoare propriu-zisa a temperaturii, iar urmatorii 3 biti sunt biti de status pentru a valida temperatura primita. Temperatura se obtine asadar prin shiftarea la dreapta cu 3 biti a datelor brute, urmata de multiplicarea acestora cu 0.25, care reprezinta precizia traductorului in grade Celsius.
Rezultatele sunt multumitoare pentru obiectivele propuse acestui proiect, anume de lipire a circuitelor pentru amatori.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.