Sadržaj:

Arduino model klima uređaja: 6 koraka
Arduino model klima uređaja: 6 koraka

Video: Arduino model klima uređaja: 6 koraka

Video: Arduino model klima uređaja: 6 koraka
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Novembar
Anonim
Arduino model klima uređaja
Arduino model klima uređaja

Kao dio demonstracije sposobnosti našeg tima da stvori model pametnog vlaka u marketinške svrhe, cilj je bio stvoriti sistem u kojem senzor temperature čita podatke iz kruga i pretvara informacije u vrijednost temperature koja je prikazuje se na osvijetljenom ekranu i fokusira se na to hoće li se ventilator uključiti ili isključiti. Svrha je pomoći u prilagođavanju uslova vožnje putnika pomoću automatiziranog sistema koji također djeluje na prikaz temperature u neposrednoj blizini.

Korištenjem Arduino kompleta mikrokontrolera i MATLAB verzijama 2016b i 2017b uspjeli smo relativno uspješno pokazati ove rezultate.

Korak 1: Oprema

Oprema
Oprema

Komplet mikrokontrolera sa sljedećim:

-Sparkfun Red Board

-Sparkfun Breadboard

-LCD ploča

-Potenciometar

-Senzor temperature

-Servo

-USB/Arduino adapter

-Jamper žice (najmanje 25)

Laptop (Windows 10) sa USB ulazom

3D štampani objekat (opcionalno)

Korak 2: Postavljanje mikrokontrolera

Podešavanje mikrokontrolera
Podešavanje mikrokontrolera
Podešavanje mikrokontrolera
Podešavanje mikrokontrolera
Podešavanje mikrokontrolera
Podešavanje mikrokontrolera
Podešavanje mikrokontrolera
Podešavanje mikrokontrolera

Uzmite u obzir ovo: cijeli sistem se sastoji od pojedinačnih jedinica od kojih svaka primjenjuje značajan faktor prema konačnom rezultatu. Iz tog razloga, preporučuje se postavljanje slike kola prije pričvršćivanja žica u zamršen nered.

Slike svakog pojedinog modela mogu se pronaći u priručniku kompleta alata za mikrokontroler ili na njegovoj web stranici na adresi

Počnite s pričvršćivanjem osjetnika temperature, potenciometra, servo konektora i LCD -a na ploču. Preporučuje se da zbog veličine LCD -a i zahtjeva za brojem žica za njega, bude postavljen na vlastitu polovicu matične ploče s ostalim dijelovima na drugoj polovici i da potenciometar bude u području za nekoga lako okrenuti dugme.

Za referenciju:

LCD: c1-16

Servo: i1-3 (GND + -)

Senzor temperature: i13-15 (- GND +)

Potenciometar: g24-26 (- GND +)

Zatim počnite povezivati kratkospojne žice sa svakim pinom jedinica mikrokontrolera; iako proizvoljan u cjelokupnoj velikoj shemi, dizajn je nastao s ovim važnim vezama:

Povezivanje potenciometra s LCD -om: f25 - e3

Servo GND žica: j1 - digitalni ulaz 9

Senzor temperature GND: j14 - analogni ulaz 0

LCD ulazi: e11-e15-digitalni ulaz 2-5

e4 - digitalni ulaz 7

e6 - digitalni ulaz 6

(Napomena: U slučaju uspjeha, oba svjetla na rubu LCD -a bi trebala zasvijetliti, a potenciometar može pomoći u podešavanju svjetline nakon što dobije napajanje iz adaptera.)

Opcionalno: 3D ispisani objekt korišten je kao dio zahtjeva. Kako bi se izbjeglo potencijalno oštećenje osjetljivijih dijelova, produženo kućište postavljeno je kao omotač oko LCD -a. Mjere ekrana LCD-a pokazale su se otprilike 2-13/16 "x 1-1/16" x 1/4 ", pa je samo visina značajno promijenjena. Ako je 3D štampač odmah dostupan, razmislite o dodavanju ličnog predmeta, iako nepotrebno. Imajte na umu da se mjerenja mogu razlikovati.

Korak 3: Postavljanje MATLAB -a

MATLAB Setup
MATLAB Setup
MATLAB Setup
MATLAB Setup

Instalirajte ažuriraniju verziju MATLAB -a (2016a i dalje), dostupnu na web stranici MathWorksa https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Nakon otvaranja, idite na Dodaci na kartici Početna i preuzmite "MATLAB paket podrške za Arduino hardver" da bi naredbe mikrokontrolera bile dostupne.

Nakon što se završi, može se izvršiti test za utvrđivanje povezanosti mikrokontrolera sa računarom/laptopom. Nakon što ste ih povezali s USB adapterom iz kompleta alata, umetnite naredbu "fopen (serijski (" nada "))."

Pojavit će se poruka o grešci koja kaže da je konektor "COM#", što će biti potrebno za stvaranje arduino objekta sve dok je to isti ulaz u svakom trenutku.

Zbog toga što LCD nema izravnu vezu s Arduino knjižnicom, mora se stvoriti nova knjižnica za prikaz poruka. Preporuka je stvoriti datoteku LCDAddon.m iz primjera LCD -a koji se nalazi u prozoru za pomoć MATLAB -a nakon pretraživanja "Arduino LCD -a" i stavljanja u mapu +arduinoioaddons, ili upotrijebiti komprimiranu mapu u prilogu i kopirati sav njen sadržaj u prethodno spomenuto folder.

Ako je uspješno, kod za stvaranje Arduino objekta u MATLAB -u je prikazan ispod.

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

Korak 4: Funkcije

Funkcije
Funkcije
Funkcije
Funkcije

Kreirajte funkciju MATLAB. Za ulaze koristimo varijable "eff" i "T_min"; za izlaze, iako nepotrebni u cjelokupnom dizajnu, koristili smo varijablu "B" kao način za sadržavanje podataka iz rezultata. Ulaz "eff" omogućava upravljanje maksimalnom brzinom servo, a ulaz "T_min" kontrolira željenu minimalnu temperaturu. Vrijednost "B" bi stoga trebala proizvesti matricu koja sadrži tri stupca za vrijeme, temperaturu i učinkovitost ventilatora. Također, kao bonus detaljima, dolje navedeni kôd također sadrži if-naredbu tako da će se brzina ventilatora smanjiti za pedeset posto kada se približi željenoj minimalnoj temperaturi.

Ako su svi ulazi i kratkospojne žice točno postavljeni i pod pretpostavkom da je priključak arduino veze COM4, a naziv funkcije "fanread", sljedeći kôd bi trebao biti dovoljan:

funkcija [B] = čitač ventilatora (Tmin, eff)

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

t = 0; t_max = 15; % vremena u sekundama

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

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

ako je eff> = 1 || e <0

greška ('Ventilator se neće aktivirati osim ako je eff postavljeno između 0 i 1.')

kraj

za t = 1: 10 % broj petlji/intervala

jasan c; % sprečavanje ponavljanja greške

v = readVoltage (a, 'A0');

TempC = (v-0,5)*100; % procjena raspona napona 2,7-5,5 V

ako je TempC> Tmin ako je TempC

c = ['Temp', num2str (TempC, 3), 'C uključeno'];

writePWMDutyCycle (a, 'D9', eff/2); % uključite servo na pola brzine

spd = 50;

else

c = ['Temp', num2str (TempC, 3), 'C uključeno'];

writePWMDutyCycle (a, 'D9', eff); % uključite servo pri zadanoj brzini

spd = 100;

kraj

else

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

writePWMDutyCycle (a, 'D9', 0); % isključeno ako je već uključeno

spd = 0;

kraj

printLCD (lcd, c);

pauza (3); % prođu tri sekunde po petlji

vrijeme (t) = t.*3;

tempplot (t) = TempC;

act (t) = spd;

podcrt (2, 1, 1)

dijagram (vrijeme, grafički prikaz, 'b-o') % linijski grafikon

os ([0 33 0 40])

xlabel ('Vrijeme (sekunde)')

ylabel ('Temperatura (C)')

Čekaj

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

Čekaj

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

podcrt (2, 1, 2)

stupac (vrijeme, čin) % stupčasti grafikon

xlabel ('Vrijeme (sekunde)')

ylabel ('Efikasnost (%)')

kraj

B = transponiranje ([vrijeme; tempplot; čin]);

kraj

Sada kada je funkcija dovršena, vrijeme je za testiranje.

Korak 5: Testiranje

Testiranje
Testiranje
Testiranje
Testiranje

Sada testirajte funkciju u komandnom prozoru umetanjem "function_name (input_value_1, input_value_2)" i gledajte. Budite sigurni da već nema Arduino objekta; ako je tako, upotrijebite naredbu "clear a" da biste je uklonili. Ako dođe do grešaka, provjerite jesu li neki konektori na krivom mjestu ili se koriste pogrešni digitalni ili analogni ulazi. Očekuje se da će rezultati biti različiti, iako to može biti uzrokovano postavljanjem određenih kratkospojnih žica i temperaturnog senzora.

Očekivanja rezultata trebala bi proizvesti promjene u performansama serva i podacima na LCD -u. Sa svakim intervalom od tri sekunde, redak teksta trebao bi prikazivati temperaturu u Celzijusima i je li ventilator aktivan ili ne dok ventilator radi punom brzinom, polovinom ili bez brzine. Podaci najvjerojatnije ne bi trebali biti dosljedni, iako ako želite više različitih rezultata, postavite vrijednost "Tmin" blizu prosječne temperature koju proizvodi krug.

Korak 6: Zaključak

Zaključak
Zaključak

Iako mukotrpan zadatak koji je trebalo postići pokušajima i greškama, konačni rezultati pokazali su se prilično zanimljivim i zadovoljavajućim. Sustav kao takav pomaže ilustrirati koliko se složenih strojeva, pa čak i nekih njihovih dijelova, može vidjeti kao skup neovisnih dijelova smještenih zajedno radi postizanja određenog cilja.

Zbog prilično pojednostavljenog dizajna konačnog projekta, oni koji imaju interes poboljšati njegove performanse mogu napraviti izmjene i izmjene u konačnom proizvodu koje mogu učiniti projekt boljim i razrađenijim. Međutim, otkriva slabosti u krugu, kao što je aktiviranje servo -a, što rezultira sporadičnim fluktuacijama očitavanja napona u krugu, što može uzrokovati da sustav nikada ne daje identične rezultate. Također, bilo je problema s promjenom brzine servo servera kada je "eff" postavljeno 0,4 i više. Da je korišten senzor temperature i vlažnosti, konačni model bio bi složeniji, ali bi imao dosljednije vrijednosti. Ipak, ovo je iskustvo koje pokazuje da složena mašina može funkcionirati kao kombinacija njenih jednostavnih dijelova.

Preporučuje se: