This shows you the differences between two versions of the page.
pm:prj2023:alucaci:automatedcompressor [2023/05/25 14:18] petru.zincenco [Componente hardware] |
pm:prj2023:alucaci:automatedcompressor [2023/05/30 11:05] (current) petru.zincenco |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Compresor Auto ====== | ====== Compresor Auto ====== | ||
- | Petru Zincenco 333AC | + | <code> |
+ | Petru Zincenco | ||
+ | 333AC | ||
+ | </code> | ||
La început, nu mi-a fost clar cum să abordez acest proiect, deoarece ideile mele nu aveau aplicabilitate practică în utilizarea mea de zi cu zi. Totul s-a schimbat într-o zi, când mașină mea a făcut pană și am constatat că compresorul meu nu funcționa. Astfel, obiectivul acestui proiect este de a automatiza funcționarea compresorului, astfel încât să îmi fie mult mai ușor să îl operez. | La început, nu mi-a fost clar cum să abordez acest proiect, deoarece ideile mele nu aveau aplicabilitate practică în utilizarea mea de zi cu zi. Totul s-a schimbat într-o zi, când mașină mea a făcut pană și am constatat că compresorul meu nu funcționa. Astfel, obiectivul acestui proiect este de a automatiza funcționarea compresorului, astfel încât să îmi fie mult mai ușor să îl operez. | ||
====== Componente hardware ====== | ====== Componente hardware ====== | ||
- | |||
- | Componentele hardware utilizate în proiect sunt: | ||
- | |||
- | Microcontrollerul Arduino Nano\\ | ||
- | Senzor de presiune\\ | ||
- | Display LCD 16x2 I2C\\ | ||
- | Buton rotativ (OKY3431-4)\\ | ||
- | Releu (SSR-40DD)\\ | ||
- | Step down (LM2596)\\ | ||
Step-down joacă un rol crucial în acest proiect, deoarece Arduino Nano necesită o tensiune de alimentare de 5V, în timp ce tensiunea disponibilă în bateria mașinii variază între 12-14V. Prin intermediul acestei componente, tensiunea este convertită la nivelul necesar pentru a asigura funcționarea corectă a Arduino Nano.\\ | Step-down joacă un rol crucial în acest proiect, deoarece Arduino Nano necesită o tensiune de alimentare de 5V, în timp ce tensiunea disponibilă în bateria mașinii variază între 12-14V. Prin intermediul acestei componente, tensiunea este convertită la nivelul necesar pentru a asigura funcționarea corectă a Arduino Nano.\\ | ||
Line 22: | Line 16: | ||
Pe afișajul de 16x2 caractere vor fi afișate următoarele informații: presiunea în roată și presiunea dorită. Comunicarea între Arduino Nano și afișajul LCD este realizată prin intermediul protocolului I2C.\\ | Pe afișajul de 16x2 caractere vor fi afișate următoarele informații: presiunea în roată și presiunea dorită. Comunicarea între Arduino Nano și afișajul LCD este realizată prin intermediul protocolului I2C.\\ | ||
+ | ==Componentele hardware utilizate în proiect sunt: == | ||
+ | * Microcontrollerul Arduino Nano | ||
+ | * Senzor de presiune | ||
+ | * Display LCD 16x2 I2C | ||
+ | * Buton rotativ (OKY3431-4) | ||
+ | * Releu (SSR-40DD) | ||
+ | * Step down (LM2596) | ||
{{ :pm:prj2023:alucaci:electricalscheme.png?750 |}} | {{ :pm:prj2023:alucaci:electricalscheme.png?750 |}} | ||
+ | <note tip>Puteți obține o copie în format PDF a schemei electrice prin descărcare de aici. | ||
+ | {{:pm:prj2023:alucaci:schematic_carcompressor.pdf|}} | ||
+ | </note> | ||
Line 32: | Line 36: | ||
{{ :pm:prj2023:alucaci:blockscheme.png?450 |}} | {{ :pm:prj2023:alucaci:blockscheme.png?450 |}} | ||
- | Am scris codul în mediul Arduino IDE și am utilizat o singură bibliotecă externă, denumită "Adafruit_LiquidCrystal.h", pentru a implementa funcționalitatea I2C. | + | **Descrierea funcțiilor:** |
+ | |||
+ | În funcția setup(), se realizează inițializarea pinilor și a afișajului LCD. De asemenea, se configurează întreruperile pentru encoder și un timer pentru citirea valorii presiunii la fiecare 100 de milisecunde. \\ | ||
+ | |||
+ | Funcția shaftMoved() este apelată atunci când encoderul este rotit și ajustează presiunea țintă în funcție de direcția de rotație a encoderului. \\ | ||
+ | |||
+ | Funcția setPressure() afișează pe LCD valoarea presiunii țintă setată de utilizator. Dacă butonul de pe encoder este apăsat, se trece la următoarea etapă a procesului. \\ | ||
+ | |||
+ | Funcția pumpAir() afișează pe LCD valoarea presiunii țintă și presiunea reală citită. Se activează compresorul și se monitorizează presiunea. Dacă presiunea reală depășește valoarea țintă, compresorul se oprește și procesul se încheie. \\ | ||
+ | |||
+ | Funcția displayForceStop() afișează un mesaj de oprire forțată pe LCD și oprește compresorul. Apoi, se revine la meniul principal. \\ | ||
+ | |||
+ | Funcția forceStop() verifică dacă butonul a fost apăsat timp de cel puțin 1 secundă pentru a opri procesul de umflare în mod forțat. \\ | ||
+ | |||
+ | În funcția loop(), se verifică dacă procesul trebuie oprit în mod forțat sau dacă se continuă cu procesul de umflare. În funcție de valoarea variabilei panel, se apelează funcțiile corespunzătoare. \\ | ||
+ | |||
+ | Funcția getPressure() citește valoarea presiunii de la un senzor analog și o convertește într-un interval de la 0 la 10. \\ | ||
+ | |||
+ | În întreruperea TIMER1_COMPA_vect, se actualizează valoarea presiunii și se gestionează timpul de așteptare pentru citirea precisă a presiunii. \\ | ||
+ | <note tip>Această întrerupere controlează atât citirea presiunii din roată, cât și activarea compresorului. Pentru a asigura o citire corectă a presiunii, compresorul nu poate fi pornit în același timp, așadar compresorul va fi activ timp de 35 de secunde, urmat de o secundă în care se va efectua citirea presiunii. | ||
+ | </note> | ||
+ | == Mediu de dezvoltare == | ||
+ | |||
+ | * Ca mediu de dezvoltare am folosit Arduino IDE. | ||
+ | * Pentru controlul display-ului cu I2C am folosit biblioteca LiquidCrystal_I2C\\ | ||
+ | https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library | ||
- | ====== Constructie ====== | + | ====== Download ====== |
+ | Codul sursă pentru compresor poate fi descărcat de aici.// | ||
+ | {{:pm:prj2023:alucaci:automatedcompressor.zip|}}// | ||
+ | Puteți descărca o copie a paginii în format PDF de aici. | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||