Kazalo:

Model klimatske naprave Arduino: 6 korakov
Model klimatske naprave Arduino: 6 korakov

Video: Model klimatske naprave Arduino: 6 korakov

Video: Model klimatske naprave Arduino: 6 korakov
Video: Проблема Управление кондиционером с arduino 2024, November
Anonim
Model klimatske naprave Arduino
Model klimatske naprave Arduino

Kot del prikaza sposobnosti naše ekipe, da ustvari model pametne vlakovne naprave za tržne namene, je bil cilj ustvariti sistem, v katerem temperaturni senzor bere podatke iz vezja in podatke pretvarja v vrednost temperature, ki je prikazano na osvetljenem zaslonu in osredotočeno na to, ali se ventilator vklopi ali izklopi. Namen je pomagati prilagoditi pogoje vožnje potnikov z uporabo avtomatiziranega sistema, ki deluje tudi za prikaz temperature v neposredni bližini.

Z uporabo kompleta mikrokrmilnikov Arduino in različic MATLAB 2016b in 2017b smo te rezultate lahko pokazali relativno uspešno.

1. korak: Oprema

Oprema
Oprema

Komplet mikrokrmilnika z naslednjim:

-Sparkfun Red Board

-Sparkfun Breadboard

-LCD plošča

-potenciometer

-Senzor temperature

-Servo

-USB/Arduino adapter

-Premostne žice (najmanj 25)

Prenosni računalnik (Windows 10) z USB vhodom

3D natisnjeni predmet (neobvezno)

2. korak: Namestitev mikrokrmilnika

Namestitev mikrokrmilnika
Namestitev mikrokrmilnika
Namestitev mikrokrmilnika
Namestitev mikrokrmilnika
Namestitev mikrokrmilnika
Namestitev mikrokrmilnika
Namestitev mikrokrmilnika
Namestitev mikrokrmilnika

Upoštevajte to: celoten sistem je sestavljen iz enot, od katerih vsaka upošteva pomemben dejavnik pri končnem rezultatu. Iz tega razloga je zelo priporočljivo, da nastavite podobo vezja, preden pritrdite žice v zmedeni nered.

Slike vsakega posameznega modela najdete v priročniku kompleta orodij za mikrokrmilnik ali na njegovem spletnem mestu na naslovu

Začnite tako, da na ploščo pritrdite temperaturni senzor, potenciometer, servo priključke in LCD. Priporočljivo je, da ga zaradi velikosti LCD -ja in zahteve glede števila žic zanj postavite na svojo polovico plošče z drugimi kosi na drugi polovici, potenciometer pa mora biti v prostoru, kjer lahko nekdo zlahka zavrtite gumb.

Za referenco:

LCD: c1-16

Servo: i1-3 (GND + -)

Senzor temp: i13-15 (- GND +)

Potenciometer: g24-26 (- GND +)

Nato začnite povezovati mostične žice z vsakim zatičem enot mikrokrmilnika; Čeprav je bil v celotni veliki shemi poljuben, je bil dizajn ustvarjen s temi pomembnimi povezavami:

Priključitev potenciometra na LCD: f25 - e3

Servo GND žica: j1 - digitalni vhod 9

Senzor temp. GND: j14 - Analogni vhod 0

Vhodi LCD: e11-e15-digitalni vhod 2-5

e4 - digitalni vhod 7

e6 - digitalni vhod 6

(Opomba: Če bo uspelo, morata utripati obe lučki na robu LCD -ja, potenciometer pa lahko pomaga prilagoditi svetlost, ko dobi napajanje iz adapterja.)

Izbirno: kot del zahteve je bil uporabljen 3D natisnjen predmet. Da bi se izognili morebitnim poškodbam na bolj krhkih delih, smo okrog LCD -ja namestili podaljšano ohišje. Meritve zaslona LCD so se izkazale za približno 2-13/16 "x 1-1/16" x 1/4 ", zato se je bistveno spremenila le višina. Če je na voljo 3D tiskalnik, razmislite o dodajanju osebnega predmeta, čeprav ni potrebno. Upoštevajte tudi, da se lahko meritve razlikujejo.

3. korak: Nastavitev MATLAB -a

Nastavitev MATLAB -a
Nastavitev MATLAB -a
Nastavitev MATLAB -a
Nastavitev MATLAB -a

Namestite posodobljeno različico programa MATLAB (2016a in naprej), ki je na voljo na spletnem mestu MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Ko odprete, pojdite na Dodatki na zavihku Domov in prenesite »Podporni paket MATLAB za strojno opremo Arduino«, da bodo ukazi mikrokrmilnika dostopni.

Po končanem preizkusu lahko ugotovite, ali je mikrokrmilnik povezan z računalnikom/prenosnikom. Ko jih povežete z adapterjem USB iz kompleta orodij, vstavite ukaz "fopen (serijski (" nada "))."

Pojavilo se bo sporočilo o napaki, ki povezuje priključek kot "COM#", kar bo potrebno za ustvarjanje arduino predmeta, če je ves čas isti vhod.

Ker LCD nima neposredne povezave s knjižnico Arduino, je treba za prikaz sporočil ustvariti novo knjižnico. Priporočilo je, da ustvarite datoteko LCDAddon.m iz primera LCD, ki ga najdete v oknu za pomoč MATLAB, potem ko poiščete »Arduino LCD« in jo postavite v mapo +arduinoioaddons, ali uporabite stisnjeno mapo in kopirate vso njeno vsebino v prej omenjeno mapo.

Če je uspešen, je koda za ustvarjanje predmeta Arduino v MATLAB -u, kot je prikazano spodaj.

a = arduino ('com#', 'uno', 'Knjižnice', 'PrimerLCD/LCDAddon');

4. korak: Funkcije

Funkcije
Funkcije
Funkcije
Funkcije

Ustvarite funkcijo MATLAB. Za vhode uporabljamo spremenljivki "eff" in "T_min"; za izhode, čeprav v celotni zasnovi nepotrebni, smo uporabili spremenljivko "B" kot način za shranjevanje podatkov iz rezultatov. Vhod "eff" omogoča upravljanje največje hitrosti servo, vhod "T_min" pa nadzoruje želeno najnižjo temperaturo. Vrednost "B" naj bi tako ustvarila matriko, ki vsebuje tri stolpce za čas, temperaturo in učinkovitost ventilatorja. Kot bonus do podrobnosti ima spodnja koda tudi izjavo if, da se bo hitrost ventilatorja zmanjšala za petdeset odstotkov, ko se približa želeni najnižji temperaturi.

Če so vsi vhodi in mostične žice natančno nameščeni in ob predpostavki, da so vrata arduino povezave COM4 in je ime funkcije "fanread", mora zadoščati naslednja koda:

funkcija [B] = ventilatorsko branje (Tmin, eff)

počisti a; clear lcd; a = arduino ('com4', 'uno', 'Knjižnice', 'PrimerLCD/LCDAddon');

t = 0; t_max = 15; % časa v sekundah

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

initializeLCD (lcd, 'Vrstice', 2, 'Stolpci', 2);

če je eff> = 1 || e <0

napaka ('Ventilator se ne bo aktiviral, razen če je eff nastavljen med 0 in 1.')

konec

za t = 1: 10 % število zank/intervalov

jasno c; % prepreči ponavljanje napak

v = readVoltage (a, 'A0');

TempC = (v-0,5)*100; % ocena za napetostna območja 2,7-5,5 V

če je TempC> Tmin, če je TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % vklopite servo pri polovični hitrosti

spd = 50;

drugače

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

writePWMDutyCycle (a, 'D9', eff); % vklopite servo pri dani hitrosti

spd = 100;

konec

drugače

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

writePWMDutyCycle (a, 'D9', 0); % zaustavljeno, če je že vklopljeno

spd = 0;

konec

printLCD (lcd, c);

premor (3); % traja tri sekunde na zanko

čas (t) = t.*3;

tempplot (t) = TempC;

act (t) = spd;

podplet (2, 1, 1)

grafikon (čas, časovni prikaz, 'b-o') % linijski graf

os ([0 33 0 40])

xlabel ('Čas (sekunde)')

ylabel ('Temperatura (C)')

počakaj

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

počakaj

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

podplet (2, 1, 2)

stolpec (čas, dejanje) % stolpčni graf

xlabel ('Čas (sekunde)')

ylabel ('Učinkovitost (%)')

konec

B = prenos ([čas; tempplot; dejanje]);

konec

Zdaj, ko je funkcija dokončana, je čas za preizkus.

5. korak: Testiranje

Testiranje
Testiranje
Testiranje
Testiranje

Zdaj preizkusite funkcijo v ukaznem oknu tako, da vstavite "ime_funkcije (vnos_vrednost_1, vnos_vrednost_2)" in si oglejte. Prepričajte se, da Arduino objekt že obstaja; če je tako, uporabite ukaz "počisti a", da ga odstranite. Če pride do napak, preverite, ali so priključki na napačnem mestu ali so uporabljeni napačni digitalni ali analogni vhodi. Pričakuje se, da bodo rezultati različni, čeprav je to lahko posledica namestitve nekaterih mostičnih žic in temperaturnega senzorja.

Pričakovanja rezultatov bi morala povzročiti spremembe v zmogljivosti servomotorja in podatkih na LCD -prikazovalniku. V vsakem intervalu treh sekund mora vrstica besedila prikazati temperaturo v stopinjah Celzija in ne glede na to, ali je ventilator aktiven, medtem ko ventilator deluje s polno hitrostjo, s pol hitrosti ali brez. Podatki najverjetneje ne bi morali biti dosledni, čeprav če želite več različnih rezultatov, postavite vrednost "Tmin" blizu povprečne temperature, ki jo ustvari vezje.

6. korak: Zaključek

Zaključek
Zaključek

Čeprav so bile težke naloge, ki jih je bilo treba opraviti s poskusi in napakami, so se končni rezultati izkazali za precej zanimive in zadovoljive. Sistem kot tak pomaga ponazoriti, koliko zapletenih strojev ali celo nekaterih njihovih delov je mogoče razumeti kot zbirko neodvisnih delov, postavljenih skupaj za dosego določenega cilja.

Zaradi precej poenostavljene zasnove končnega projekta lahko tisti, ki želijo izboljšati njegovo uspešnost, spremenijo in spremenijo končni izdelek, zaradi česar je lahko projekt boljši in podrobnejši. Vendar pa odkrije pomanjkljivosti v vezju, kot je aktiviranje servomotorja, kar povzroči občasna nihanja napetosti v vezju, kar lahko povzroči, da sistem nikoli ne bo dal enakih rezultatov. Prišlo je tudi do težav pri opazovanju spremembe hitrosti servomotorja, ko je "eff" nastavljen na 0,4 in več. Če bi uporabili senzor temperature in vlažnosti, bi bil končni model bolj zapleten, vendar bi imel bolj dosledne vrednosti. Kljub temu je to izkušnja, ki kaže, da kompleksen stroj lahko deluje kot kombinacija njegovih preprostih delov.

Priporočena: