Sisukord:

Arduino kliimaseadme mudel: 6 sammu
Arduino kliimaseadme mudel: 6 sammu

Video: Arduino kliimaseadme mudel: 6 sammu

Video: Arduino kliimaseadme mudel: 6 sammu
Video: cara membuat saklar sentuh dengan alat sederhana 2024, Juuli
Anonim
Arduino kliimaseadmete mudel
Arduino kliimaseadmete mudel

Osana meie meeskonna suutlikkusest luua turunduslikel eesmärkidel nutika rongiseadme mudelit, oli eesmärk luua süsteem, milles temperatuuriandur loeb ringkonnakoha andmeid ja teisendab teabe temperatuuriväärtuseks, mis on kuvatakse valgustatud ekraanil ja keskendutakse sellele, kas ventilaator lülitub sisse või välja. Eesmärk on aidata kohandada reisijate sõidutingimusi, kasutades automatiseeritud süsteemi, mis kuvab ka temperatuuri vahetus läheduses.

Kasutades Arduino mikrokontrolleri komplekti ja MATLABi versioone 2016b ja 2017b, suutsime neid tulemusi suhteliselt edukalt näidata.

Samm: varustus

Varustus
Varustus

Mikrokontrolleri komplekt koos järgmisega:

-Sparkfun Red Board

-Sparkfuni leivalaud

-LCD -plaat

-Potentsiomeeter

-Temperatuuriandur

-Servo

-USB/Arduino adapter

-hüppaja juhtmed (vähemalt 25)

USB -sisendiga sülearvuti (Windows 10)

3D -prinditud objekt (valikuline)

Samm: mikrokontrolleri seadistamine

Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine
Mikrokontrolleri seadistamine

Mõelge sellele: kogu süsteem koosneb üksikutest üksustest, millest igaüks rakendab lõpptulemuse saavutamiseks olulist tegurit. Sel põhjusel on tungivalt soovitatav luua vooluahela pilt enne juhtmete kinnitamist keerdunud jamas.

Iga üksiku mudeli pildid leiate mikrokontrolleri tööriistakomplekti kasutusjuhendist või selle veebisaidilt aadressil

Alustage temperatuurianduri, potentsiomeetri, servoklemmide ja LCD -plaadi külge kinnitamisega. LCD -ekraani suuruse ja selle jaoks vajalike juhtmete arvu tõttu on soovitatav paigutada see leivalauale oma poolele, teised tükid teisele poole ja potentsiomeeter peaks olema kohas, kus keegi saab keerake selle nuppu lihtsalt.

Viide:

LCD: c1-16

Servo: i1-3 (GND + -)

Temperatuuriandur: i13-15 (- GND +)

Potentsiomeeter: g24-26 (- GND +)

Seejärel alustage hüppajajuhtmete ühendamist mikrokontrollerite iga tihvtiga; kuigi üldises suures skeemis meelevaldne, loodi disain nende oluliste ühendustega:

Potentsiomeetri ühendamine LCD -ekraaniga: f25 - e3

Servo GND juhe: j1 - digitaalsisend 9

Temperatuuriandur GND: j14 - analoogsisend 0

LCD-sisendid: e11-e15-digitaalsisend 2-5

e4 - digitaalsisend 7

e6 - digitaalsisend 6

(Märkus. Kui see õnnestub, peaksid mõlemad LCD -serva tuled süttima ja potentsiomeeter aitab adapteri toite korral reguleerida selle heledust.)

Valikuline: nõude osana kasutati 3D -prinditud objekti. Et vältida nõrgemate osade võimalikku kahjustamist, asetati pikendatud ümbris varrukana LCD -ekraani ümber. LCD-ekraani mõõtmised osutusid ligikaudu 2-13/16 "x 1-1/16" x 1/4 "ja seega muudeti oluliselt ainult kõrgust. Kui 3D-printer on hõlpsasti saadaval, kaaluge isikliku objekti lisamist arvestage, et mõõtmised võivad erineda.

3. samm: MATLAB -i seadistamine

MATLABi seadistamine
MATLABi seadistamine
MATLABi seadistamine
MATLABi seadistamine

Installige MATLABi värskendatud versioon (2016a ja uuemad), mis on saadaval MathWorksi veebisaidil https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Pärast avamist minge vahekaardil Avaleht lisandmoodulitele ja laadige alla "MATLABi tugipakett Arduino riistvarale", et mikrokontrolleri käsud oleksid juurdepääsetavad.

Pärast lõpetamist saab teha testi, et leida mikrokontrolleri ühenduvus oma arvuti/sülearvutiga. Pärast nende ühendamist tööriistakomplekti USB -adapteriga sisestage käsk "fopen (serial ('nada'))."

Ilmub tõrketeade, milles konnektor on "COM#", mida on vaja arduino objekti loomiseks, kui see on kogu aeg sama sisend.

Kuna LCD -l pole otsest ühendust Arduino raamatukoguga, tuleb sõnumite kuvamiseks luua uus raamatukogu. Soovitatav on pärast faili "Arduino LCD" otsimist ja kausta +arduinoioaddons paigutamist luua LCDAddon.m -fail MATLAB -i abiaknast leitud LCD -näitest või kasutada lisatud tihendatud kausta ja kopeerida kogu selle sisu eelnimetatud kausta.

Kui see õnnestub, on MATLABis Arduino objekti loomise kood järgmine.

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

4. samm: funktsioonid

Funktsioonid
Funktsioonid
Funktsioonid
Funktsioonid

Looge funktsioon MATLAB. Sisendite jaoks kasutame muutujaid "eff" ja "T_min"; väljundite puhul, ehkki üldises kujunduses mittevajalikud, kasutasime tulemuste andmete sisaldamiseks muutujat "B". Sisend "eff" võimaldab reguleerida servo maksimaalset kiirust ja sisend "T_min" juhib soovitud minimaalset temperatuuri. Väärtus "B" peaks seega tootma maatriksi, mis sisaldab kolme veergu aja, temperatuuri ja ventilaatori efektiivsuse kohta. Lisaks on detailidena boonusena allpool loetletud koodil ka if-lause, nii et ventilaatori kiirus väheneb viiekümne protsendi võrra, kui see jõuab soovitud miinimumtemperatuurini.

Kui kõik sisendid ja hüppajajuhtmed on paigutatud täpselt ja eeldades, et arduino -ühenduse port on COM4 ja funktsiooni nimi on "fanread", peaks piisama järgmisest koodist:

funktsioon [B] = ventilaatori lugem (Tmin, eff)

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

t = 0; t_max = 15; % aeg sekundites

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

initializeLCD (lcd, 'Ridad', 2, 'Veerud', 2);

kui eff> = 1 || e <0

viga ('Ventilaator ei aktiveeru, kui eff ei ole seatud vahemikku 0 kuni 1.')

lõpp

t = 1: 10 % silmuste/intervallide arv

selge c; % takistab korduvat viga

v = lugemispinge (a, 'A0');

TempC = (v-0,5)*100; % hinnang pingevahemikele 2,7–5,5 V

kui TempC> Tmin kui TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % lülitage servo poole kiirusega sisse

spd = 50;

muidu

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

writePWMDutyCycle (a, 'D9', eff); % lülitage servo ette antud kiirusel sisse

spd = 100;

lõpp

muidu

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

writePWMDutyCycle (a, 'D9', 0); % välja lülitatud, kui see on juba sisse lülitatud

spd = 0;

lõpp

printLCD (LCD, c);

paus (3); % kolm sekundit kulub silmuse kohta

aeg (t) = t.*3;

temppplot (t) = TempC;

tegu (t) = spd;

alamplaan (2, 1, 1)

plot (aeg, temppplot, 'b-o') % joondiagramm

telg ([0 33 0 40])

xlabel ('Aeg (sekundites)')

ylabel ('Temperatuur (C)')

oota

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

oota

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

alamplaan (2, 1, 2)

tulp (aeg, tegu) % tulpdiagramm

xlabel ('Aeg (sekundites)')

ylabel ('Tõhusus (%)')

lõpp

B = ülevõtmine ([aeg; templlot; toiming]);

lõpp

Nüüd, kui funktsioon on valmis, on aeg testida.

Samm: testimine

Testimine
Testimine
Testimine
Testimine

Nüüd testige käsuaknas funktsiooni, sisestades "funktsiooni_nimi (sisendväärtus_1, sisendväärtus_2)" ja vaadake. Veenduge, et ühtegi Arduino objekti pole juba olemas; kui jah, kasutage selle eemaldamiseks käsku "kustuta a". Vigade ilmnemisel kontrollige ja kontrollige, kas mõni pistik on vales kohas või on kasutatud valesid digitaalseid või analoogsisendeid. Tulemused võivad olla erinevad, kuigi see võib olla põhjustatud teatud hüppajajuhtmete ja temperatuurianduri paigutusest.

Tulemuste ootused peaksid muutma servo jõudlust ja LCD -ekraanil olevaid andmeid. Iga kolme sekundilise intervalliga peaks tekstirida näitama temperatuuri Celsiuse järgi ja seda, kas ventilaator on aktiivne, kui ventilaator töötab täiskiirusel, poolel kiirusel või mitte. Andmed ei tohiks tõenäoliselt olla järjepidevad, kuigi kui soovite rohkem erinevaid tulemusi, asetage "Tmin" väärtus ahela toodetud keskmise temperatuuri lähedale.

6. samm: järeldus

Järeldus
Järeldus

Kuigi katse ja eksituse meetodil oli raske ülesanne, osutusid lõpptulemused üsna huvitavaks ja rahuldustpakkuvaks. Süsteem kui selline aitab illustreerida, kui palju keerulisi masinaid või isegi mõnda nende osa võib vaadelda kui kogumit sõltumatuid osi, mis on kokku pandud konkreetse eesmärgi saavutamiseks.

Lõppprojekti üsna lihtsa ülesehituse tõttu saavad need, kes on huvitatud selle toimivuse parandamisest, teha lõpptootes muudatusi ja muudatusi, mis muudavad projekti paremaks ja keerukamaks. Siiski näitab see vooluahela nõrkusi, nagu servo aktiveerimine, mille tulemuseks on vooluahela pinge näidu juhuslikud kõikumised, mis võivad põhjustada selle, et süsteem ei anna kunagi identseid tulemusi. Samuti on olnud probleeme servo kiiruse muutuse nägemisega, kui "eff" on seatud 0,4 ja kõrgemale. Kui oleks kasutatud temperatuuri- ja niiskusandurit, oleks lõplik mudel keerulisem, kuid näitaks ühtlasemaid väärtusi. Sellest hoolimata on see kogemus, mis näitab, et keeruline masin võib toimida selle lihtsate osade kombinatsioonina.

Soovitan: