This shows you the differences between two versions of the page.
pm:prj2021:alazar:programmablesolderingstation [2021/06/03 19:16] radu_leonard.rica |
pm:prj2021:alazar:programmablesolderingstation [2021/06/10 12:12] (current) radu_leonard.rica |
||
---|---|---|---|
Line 28: | Line 28: | ||
* Un buzzer activ | * Un buzzer activ | ||
* Un coborator de tensiune, LM2596 (Pentru a alimenta arduino de la sursa de 24V) | * Un coborator de tensiune, LM2596 (Pentru a alimenta arduino de la sursa de 24V) | ||
- | ==== Schema Electrica ==== | + | |
- | {{:pm:prj2021:alazar:ss3.jpg?200|}} | + | === Schema Electrica === |
+ | {{:pm:prj2021:alazar:ss3.jpg?600|}} | ||
+ | Din schema lipseste sursa de 24V 5A, coboratorul de tensiune, heaterul(un rezistor), si circuitul de comanda cu mosfetul IRLB8743. | ||
=== Software Design === | === Software Design === | ||
- | * PID algorithm | + | Citirea de la modului MAX6675K necesita un delay de 200ms. Am realizat acest lucru non-blocant cu ajutorul functiei millis().\\ |
- | * 2 Buttons | + | Toate butoanele au debounce, iar butonul principal, cel al encoderului rotativ suporta si long-press, pentru a schimba intre meniuri.\\ |
- | * Multipage menu | + | Pentru termostatare am folosit algoritmul PID. Am adaugat erorile la integrala cu 5 grade inainte de temperatura setata, pentru a nu aparea overshoot puternic la incalzirea de la temperatura mica la temperatura mare(de exemplu de la 50 la 350). Perioada intre sample-uri este de 0.15s.\\ |
+ | Factorii de proportionala-derivata stabilizeaza temperatura fara overshoot la aproximativ SET_TEMP-5.\\ | ||
+ | Termenul integralei stabilizeaza temperatura la SET_TEMP+-1.\\ | ||
+ | Encoderul rotativ este atasat unei intreruperi. Astfel, am obtinut o interfata foarte fluida, care raspunde foarte bine la comenzi.\\ | ||
+ | Temperaturile butoanelor se pot seta din meniul de setari si se salveaza in EEPROM.\\ | ||
+ | Compilarea am facut-o cu flag-ul -O2. | ||
=== Rezultate obtinute === | === Rezultate obtinute === | ||
- | {{:pm:prj2021:alazar:ss1.jpeg?200|}} | + | |
- | {{:pm:prj2021:alazar:ss2.jpeg?200|}} | + | {{:pm:prj2021:alazar:diablo50002.jpg?600| Montaj in carcasa}} |
+ | |||
+ | |||
+ | {{:pm:prj2021:alazar:diablo50001.jpeg?600| Rezultatul final}} | ||
=== Concluzii === | === Concluzii === | ||
+ | In urma acestui proiect mi-am consolidat cunostiintele de programare, am invatat mai multe despre algoritmul PID, | ||
+ | despre realizarea unei interfete eficiente, non-blocante, foarte placute estetic si cel mai important am realizat un aparat foarte | ||
+ | robust, compatibil cu orice letcon de pe piata care are termocupla de tip K, foarte bun pentru a realiza in continuare alte proiecte de acest tip. | ||
+ | Majoritatea testelor le-am realizat cu o sursa liniara cu transformatoare. | ||
+ | |||
+ | === Link Github === | ||
+ | [[https://github.com/raduleo19/Soldering-Station | Github]] | ||
=== Download === | === Download === | ||
{{:pm:prj2021:alazar:solderingstation.zip| Cod sursa}} | {{:pm:prj2021:alazar:solderingstation.zip| Cod sursa}} | ||
+ | |||
=== Jurnal === | === Jurnal === | ||
* 25 Aprilie -> Alegerea temei proiectului | * 25 Aprilie -> Alegerea temei proiectului | ||
Line 51: | Line 69: | ||
* 3 Iunie -> Crearea logicii principale a codului, proiectare interfata | * 3 Iunie -> Crearea logicii principale a codului, proiectare interfata | ||
* 5-6 Iunie -> Montaj final si programarea completa | * 5-6 Iunie -> Montaj final si programarea completa | ||
+ | * 9 Iunie -> Adaugare setari temperatura butoane, rezolvare bug derivata cu semn inversat, adaugare sampling time 0.15s | ||
+ | * 10 Iunie -> Calibrare PID precizie +-1, varianta finala | ||
=== Bibliografie/Resurse === | === Bibliografie/Resurse === | ||
- | [[https://ocw.cs.pub.ro/courses/pm/prj2021/alazar/programmablesolderingstation?do=export_pdf |Download pagina asta]] | + | [[https://ocw.cs.pub.ro/courses/pm/prj2021/alazar/programmablesolderingstation?do=export_pdf |Download PDF]] |