Cuprins:

Modelul de aer condiționat Arduino: 6 pași
Modelul de aer condiționat Arduino: 6 pași

Video: Modelul de aer condiționat Arduino: 6 pași

Video: Modelul de aer condiționat Arduino: 6 pași
Video: Fa-ti rapid aerul conditionat SMART cu aplicatie - iHunt Smart AC Controller 2024, Iulie
Anonim
Modelul de aer condiționat Arduino
Modelul de aer condiționat Arduino

Ca parte a unei demonstrații a capacității echipei noastre de a crea un model de dispozitiv de tren inteligent în scopuri de marketing, obiectivul a fost crearea unui sistem în care un senzor de temperatură să citească datele din circuit și să transforme informațiile într-o valoare de temperatură care este atât afișat pe un ecran luminat și concentrat asupra faptului dacă un ventilator pornește sau se oprește. Scopul este de a ajuta la acomodarea condițiilor de călătorie ale pasagerilor utilizând un sistem automat care acționează și pentru afișarea temperaturii în imediata apropiere.

Folosind un kit de microcontroler Arduino și versiunile MATLAB 2016b și 2017b, am putut demonstra aceste rezultate cu relativ succes.

Pasul 1: Echipament

Echipament
Echipament

Kit microcontroler cu următoarele:

-Sparkfun Red Board

-Sparkfun Breadboard

-Consiliu LCD

-Potentiometru

-Senzor de temperatura

-Servo

-Adaptor USB / Arduino

-Siruri jumper (25, minim)

Laptop (Windows 10) cu intrare USB

Obiect imprimat 3D (opțional)

Pasul 2: Configurarea microcontrolerului

Configurare microcontroler
Configurare microcontroler
Configurare microcontroler
Configurare microcontroler
Configurare microcontroler
Configurare microcontroler
Configurare microcontroler
Configurare microcontroler

Luați în considerare acest lucru: întregul sistem este compus din unități unice care aplică fiecare un factor semnificativ pentru rezultatul final. Din acest motiv, este foarte recomandat să configurați o imagine a circuitului înainte de a atașa fire într-o mizerie complicată.

Imaginile fiecărui model individual pot fi găsite în manualul kitului de instrumente Microcontroller sau pe site-ul său web la

Începeți cu atașarea senzorului de temperatură, potențiometrului, conectorilor servo și a ecranului LCD pe placă. Se recomandă ca, datorită dimensiunii și cerinței LCD-ului pentru numărul de fire pentru acesta, să fie așezat pe propria jumătate a panoului cu celelalte piese pe cealaltă jumătate și ca potențiometrul să fie într-o zonă pentru ca cineva să rotiți ușor butonul.

Pentru trimitere:

LCD: c1-16

Servo: i1-3 (GND + -)

Senzor de temperatură: i13-15 (- GND +)

Potențiometru: g24-26 (- GND +)

Apoi, începeți conectarea firelor jumper la fiecare pin al unităților de microcontroler; deși arbitrar în marea schemă generală, designul a fost creat cu aceste conexiuni importante:

Conectarea potențiometrului la LCD: f25 - e3

Sârmă Servo GND: j1 - Intrare digitală 9

Senzor de temperatură GND: j14 - Intrare analogică 0

Intrări LCD: e11-e15 - Intrare digitală 2-5

e4 - Intrare digitală 7

e6 - Intrare digitală 6

(Notă: dacă reușește, ambele lumini de pe marginea ecranului LCD ar trebui să aprindă, iar potențiometrul poate ajuta la reglarea luminozității acestuia, odată ce puterea este dată de adaptor.)

Opțional: un obiect tipărit 3D a fost utilizat ca parte a unei cerințe. Pentru a evita deteriorarea potențială a părților mai fragile, o carcasă extinsă a fost plasată ca un manșon în jurul ecranului LCD. Măsurătorile ecranului LCD s-au dovedit a fi de aproximativ 2-13 / 16 "x 1-1 / 16" x 1/4 "și, astfel, doar înălțimea a fost modificată semnificativ. Dacă o imprimantă 3D este ușor disponibilă, luați în considerare adăugarea unui obiect personal, deși inutilă. De asemenea, rețineți că măsurătorile pot diferi.

Pasul 3: Configurarea MATLAB

Configurare MATLAB
Configurare MATLAB
Configurare MATLAB
Configurare MATLAB

Instalați o versiune mai actualizată a MATLAB (2016a și în continuare), disponibilă pe site-ul web MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Odată deschis, accesați Add-Ons din fila Acasă și descărcați „MATLAB Support Package for Arduino Hardware” pentru ca comenzile microcontrolerului să fie accesibile.

Odată finalizat, se poate face un test pentru a găsi conectivitatea microcontrolerului la computer / laptop. După conectarea acestora cu adaptorul USB din trusa de instrumente, introduceți comanda „fopen (serial („ nada”))”.

Va apărea un mesaj de eroare care indică conectorul ca „COM #”, care va fi necesar pentru a crea un obiect arduino, atâta timp cât este aceeași intrare în orice moment.

Deoarece LCD-ul nu are o conexiune directă cu biblioteca Arduino, trebuie creată o nouă bibliotecă pentru a afișa mesajele. O recomandare este să creați un fișier LCDAddon.m din exemplul LCD găsit în fereastra de ajutor MATLAB după ce ați căutat „Arduino LCD” și l-ați plasat în folderul + arduinoioaddons sau utilizați folderul comprimat atașat și copiați tot conținutul acestuia în mențiunea menționată anterior. pliant.

Dacă are succes, atunci codul pentru a crea un obiect Arduino în MATLAB este așa cum se arată mai jos.

a = arduino ('com #', 'uno', 'Libraries', 'ExampleLCD / LCDAddon');

Pasul 4: Funcții

Funcții
Funcții
Funcții
Funcții

Creați o funcție MATLAB. Pentru intrări, folosim variabilele "eff" și "T_min"; pentru rezultate, deși inutile în proiectarea generală, am folosit variabila „B” ca modalitate de a conține date din rezultate. Intrarea „eff” permite gestionarea vitezei maxime a servo-ului, iar intrarea „T_min” controlează temperatura minimă dorită. Valoarea „B” ar trebui astfel să producă o matrice care conține trei coloane pentru timpul, temperatura și eficiența ventilatorului. De asemenea, ca bonus pentru detalii, codul enumerat mai jos are, de asemenea, o declarație if, astfel încât viteza ventilatorului să fie redusă cu cincizeci la sută atunci când se apropie de temperatura minimă dorită.

Dacă toate intrările și firele jumper sunt plasate exact și presupunând că portul conexiunii arduino este COM4 și numele funcției este "fanread", următorul cod ar trebui să fie suficient:

funcție [B] = fanread (Tmin, eff)

clar a; clear lcd; a = arduino ('com4', 'uno', 'Libraries', 'ExampleLCD / LCDAddon');

t = 0; t_max = 15; % timp în secunde

lcd = addon (a, 'ExampleLCD / LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

initializeLCD (lcd, 'Rows', 2, 'Coloane', 2);

dacă eff> = 1 || e <0

eroare („Ventilatorul nu se va activa decât dacă efectul este setat între 0 și 1.”)

Sfârșit

pentru t = 1: 10% număr de bucle / intervale

clar c; % preveni repetarea erorii

v = readVoltage (a, 'A0');

TempC = (v-0,5) * 100; % estimare pentru intervalele de tensiune 2,7-5,5 V

dacă TempC> Tmin dacă TempC

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff / 2); % porniți servo la jumătate de viteză

spd = 50;

altceva

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff); % porniți servo la viteza dată

spd = 100;

Sfârșit

altceva

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); % închideți dacă este deja activat

spd = 0;

Sfârșit

printLCD (lcd, c);

pauză (3); % trei secunde trec pe buclă

timp (t) = t. * 3;

tempplot (t) = TempC;

act (t) = spd;

subtrama (2, 1, 1)

grafic (timp, grafic temporal, „b-o”)% grafic liniar

axa ([0 33 0 40])

xlabel („Timp (secunde)”)

ylabel („Temperatura (C)”)

stai asa

complot ([0 33], [Tmin Tmin], 'r-')

stai asa

complot ([0 33], [Tmin + 2 Tmin + 2], 'g-')

subtrama (2, 1, 2)

bar (timp, act)% grafic de bare

xlabel („Timp (secunde)”)

ylabel („Eficiență (%)”)

Sfârșit

B = transpune ([timp; complot temporar; act]);

Sfârșit

Acum că funcția este completă, este timpul să testați.

Pasul 5: Testare

Testarea
Testarea
Testarea
Testarea

Acum testați funcția în fereastra de comandă inserând „nume_funcție (valoare_introducere_1, valoare_introducere_2)” și urmăriți. Asigurați-vă că niciun obiect Arduino nu există deja; dacă da, folosiți comanda „ștergeți” pentru a o elimina. Dacă apar erori, verificați și verificați dacă există conectori în locul greșit sau dacă sunt utilizate intrări digitale sau analogice greșite. Se așteaptă ca rezultatele să varieze, deși acest lucru poate fi cauzat de amplasarea anumitor fire jumper și a senzorului de temperatură.

Așteptările rezultatelor ar trebui să producă modificări ale performanței servo și a datelor de pe ecranul LCD. La fiecare interval de trei secunde, o linie de text ar trebui să afișeze temperatura în grade Celsius și dacă ventilatorul este sau nu activ în timp ce ventilatorul funcționează la viteză maximă, la jumătate sau fără viteză. Datele ar trebui să nu fie consecvente, deși dacă doriți mai multe rezultate diferite, plasați valoarea „Tmin” aproape de temperatura medie produsă de circuit.

Pasul 6: Concluzie

Concluzie
Concluzie

Deși o sarcină dificilă de realizat prin încercare și eroare, rezultatele finale s-au dovedit a fi destul de interesante și satisfăcătoare. Un sistem ca atare ajută să ilustreze câte mașini complicate, sau chiar unele dintre piesele lor, pot fi văzute ca o colecție de piese independente plasate împreună pentru a atinge un scop specific.

Datorită designului destul de simplist al proiectului final, cei care au un interes în îmbunătățirea performanței sale pot face modificări și modificări ale produsului final care pot face proiectul mai bun și mai elaborat. Cu toate acestea, dezvăluie puncte slabe ale circuitului, cum ar fi activarea servo-ului, rezultând fluctuații sporadice în citirea tensiunii circuitului, ceea ce poate face ca sistemul să nu producă niciodată rezultate identice. De asemenea, au apărut probleme cu modificarea vitezei servo atunci când „eff” este setat la 0,4 și mai mare. Dacă s-ar fi folosit un senzor de temperatură și umiditate, modelul final ar fi mai complicat, dar ar prezenta valori mai consistente. Cu toate acestea, aceasta este o experiență care arată că o mașină complexă poate funcționa ca o combinație a părților sale simple.

Recomandat: