Talaan ng mga Nilalaman:

Modelo ng Arduino Air Conditioning: 6 Mga Hakbang
Modelo ng Arduino Air Conditioning: 6 Mga Hakbang

Video: Modelo ng Arduino Air Conditioning: 6 Mga Hakbang

Video: Modelo ng Arduino Air Conditioning: 6 Mga Hakbang
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Hulyo
Anonim
Modelo ng Arduino Air Conditioning
Modelo ng Arduino Air Conditioning

Bilang bahagi ng isang pagpapakita ng kakayahan ng aming koponan na lumikha ng isang modelo ng isang aparato ng matalinong tren para sa mga layunin sa marketing, ang layunin ay lumikha ng isang sistema kung saan binabasa ng isang sensor ng temperatura ang data mula sa circuit at binago ang impormasyon sa isang halaga ng temperatura na pareho ipinakita sa isang ilaw na screen at nakatuon sa kung ang isang tagahanga ay nakabukas o naka-off. Ang layunin ay upang matulungan ang mga kondisyon ng pagsakay ng mga pasahero gamit ang isang awtomatikong sistema na kumikilos din upang maipakita ang temperatura sa agarang paligid.

Sa pamamagitan ng paggamit ng isang Arduino microcontroller kit at mga bersyon ng MATLAB 2016b at 2017b, naipakita namin ang mga resulta na ito na may medyo tagumpay.

Hakbang 1: Kagamitan

Kagamitan
Kagamitan

Microcontroller Kit na may mga sumusunod:

-Sparkfun Red Board

-Sparkfun Breadboard

-Lupon ng LCD

-Potentiometer

-Temperature Sensor

-Servo

-USB / Arduino adapter

-Jumper Wires (25, minimum)

Laptop (Windows 10) na may USB input

3D na Naka-print na Bagay (opsyonal)

Hakbang 2: Pag-setup ng Microcontroller

Pag-setup ng Microcontroller
Pag-setup ng Microcontroller
Pag-setup ng Microcontroller
Pag-setup ng Microcontroller
Pag-setup ng Microcontroller
Pag-setup ng Microcontroller
Pag-setup ng Microcontroller
Pag-setup ng Microcontroller

Isaalang-alang ito: ang buong sistema ay binubuo ng mga solong yunit na ang bawat isa ay naglalapat ng isang makabuluhang kadahilanan patungo sa pangwakas na resulta. Para sa kadahilanang ito, lubos na inirerekumenda na mag-set up ng isang imahe ng circuit bago ilakip ang mga wires sa isang nakakulong na gulo.

Ang mga imahe ng bawat indibidwal na modelo ay matatagpuan sa manu-manong tool ng kit ng Microcontroller o sa website nito sa

Magsimula sa paglakip ng sensor ng temperatura, potensyomiter, mga konektor ng servo at LCD sa pisara. Inirerekumenda na dahil sa laki at kinakailangan ng LCD para sa bilang ng mga wires para dito, dapat itong ilagay sa sarili nitong kalahati ng breadboard kasama ang iba pang mga piraso sa kabilang kalahati at para sa potensyomiter na nasa isang lugar para sa isang tao madaling paikutin ang knob nito.

Para sa sanggunian:

LCD: c1-16

Servo: i1-3 (GND + -)

Temp Sensor: i13-15 (- GND +)

Potensyomiter: g24-26 (- GND +)

Susunod, simulang ikonekta ang mga wire ng jumper sa bawat pin ng mga unit ng microcontroller; kahit na arbitrary sa pangkalahatang grand scheme, ang disenyo ay nilikha sa mga mahahalagang koneksyon na ito:

Pagkonekta ng Potensyomiter sa LCD: f25 - e3

Servo GND wire: j1 - Digital Input 9

Temp Sensor GND: j14 - Analog Input 0

Mga input ng LCD: e11-e15 - Digital Input 2-5

e4 - Digital Input 7

e6 - Digital Input 6

(Tandaan: Kung matagumpay, ang parehong mga ilaw sa gilid ng LCD ay dapat na naka-flash at ang potensyomiter ay maaaring makatulong na ayusin ang ningning nito nang bigyan ng lakas mula sa adapter.)

Opsyonal: Ang isang naka-print na bagay na 3D ay ginamit bilang bahagi ng isang kinakailangan. Upang maiwasan ang mga potensyal na pinsala sa mas marupok na mga bahagi, isang pinalawak na kaso ay inilagay bilang isang manggas sa paligid ng LCD. Ang mga sukat sa screen ng LCD ay napatunayan na humigit-kumulang na 2-13 / 16 "x 1-1 / 16" x 1/4 ", at sa gayon ang taas lamang ang makabuluhang binago. Kung ang isang 3D printer ay madaling magagamit, isaalang-alang ang pagdaragdag ng isang personal na object, kahit na hindi kinakailangan. Gayundin, magkaroon ng kamalayan na ang mga sukat ay maaaring magkakaiba.

Hakbang 3: Pag-setup ng MATLAB

Pag-set up ng MATLAB
Pag-set up ng MATLAB
Pag-set up ng MATLAB
Pag-set up ng MATLAB

Mag-install ng isang mas nai-update na bersyon ng MATLAB (2016a at pataas), magagamit sa website ng MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Kapag nabuksan, pumunta sa Mga Add-On sa tab na Home at i-download ang "MATLAB Support Package para sa Arduino Hardware" para ma-access ang mga utos ng microcontroller.

Kapag nakumpleto, ang isang pagsubok ay maaaring gawin upang mahanap ang pagkakakonekta ng microcontroller sa isang computer / laptop. Matapos ikonekta ang mga ito sa USB adapter mula sa tool kit, ipasok ang utos na "fopen (serial ('nada'))."

Ang isang mensahe ng error ay pop-up na nagsasaad ng konektor bilang "COM #", na kakailanganin upang lumikha ng isang arduino object hangga't ito ang parehong input sa lahat ng oras.

Dahil sa walang direktang koneksyon ang LCD sa Arduino library, dapat lumikha ng isang bagong silid-aklatan upang maipakita ang mga mensahe. Ang isang rekomendasyon ay upang lumikha ng isang file ng LCDAddon.m mula sa halimbawang LCD na matatagpuan sa MATLAB help window pagkatapos maghanap ng "Arduino LCD" at ilagay ito sa folder na + arduinoioaddons, o gamitin ang naka-compress na folder na nakakabit at kopyahin ang lahat ng nilalaman nito sa nabanggit na folder.

Kung matagumpay, kung gayon ang code upang lumikha ng isang Arduino object sa MATLAB ay tulad ng ipinakita sa ibaba.

a = arduino ('com #', 'uno', 'Mga Aklatan', 'HalimbawaLCD / LCDAddon');

Hakbang 4: Mga Pag-andar

Mga pagpapaandar
Mga pagpapaandar
Mga pagpapaandar
Mga pagpapaandar

Lumikha ng isang pagpapaandar sa MATLAB. Para sa mga input, gumagamit kami ng mga variable na "eff" at "T_min"; para sa mga output, kahit na hindi kinakailangan sa pangkalahatang disenyo, ginamit namin ang variable na "B" bilang isang paraan upang maglaman ng data mula sa mga resulta. Pinapayagan ng input na "eff" para sa pamamahala ng maximum na bilis ng servo, at kinokontrol ng input na "T_min" ang minimum na nais na temperatura. Ang halagang "B" ay dapat na gumawa ng isang matrix na naglalaman ng tatlong mga haligi para sa oras, ang temperatura at ang kahusayan ng fan. Gayundin, bilang isang detalye sa bonus, ang code na nakalista sa ibaba ay mayroon ding if-statement na tulad na ang bilis ng fan ay mabawasan ng limampung porsyento kapag malapit na ito sa nais na minimum na temperatura.

Kung ang lahat ng mga input at jumper wires ay inilalagay nang eksakto at ipinapalagay na ang port ng koneksyon ng arduino ay COM4 at ang pangalan ng pagpapaandar ay "fanread", ang sumusunod na code ay dapat sapat:

pagpapaandar [B] = fanread (Tmin, eff)

malinaw na a; malinaw na lcd; a = arduino ('com4', 'uno', 'Mga Aklatan', 'HalimbawaLCD / LCDAddon');

t = 0; t_max = 15; % oras sa segundo

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

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

kung eff> = 1 || e <0

error ('Hindi maaandar ang tagahanga maliban kung ang eff ay itinakda sa pagitan ng 0 at 1.')

magtapos

para sa t = 1: 10% na bilang ng mga loop / agwat

malinaw na c; % maiwasan ang paulit-ulit na error

v = readVoltage (a, 'A0');

TempC = (v-0.5) * 100; % pagtatantya para sa mga saklaw ng boltahe 2.7-5.5 V

kung TempC> Tmin kung TempC

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

isulatPWMDutyCycle (a, 'D9', eff / 2); % i-on ang servo sa kalahating bilis

spd = 50;

iba pa

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

isulatPWMDutyCycle (a, 'D9', eff); % i-on ang servo sa bilis na ibinigay

spd = 100;

magtapos

iba pa

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

isulatPWMDutyCycle (a, 'D9', 0); % shut down kung naka-on na

spd = 0;

magtapos

printLCD (lcd, c);

i-pause (3); % tatlong segundo lumipas bawat loop

oras (t) = t. * 3;

tempplot (t) = TempC;

kilos (t) = spd;

subplot (2, 1, 1)

balangkas (oras, tempplot, 'b-o')% line graph

axis ([0 33 0 40])

xlabel ('Oras (segundo)')

ylabel ('Temperatura (C)')

hawakan mo

balangkas ([0 33], [Tmin Tmin], '----------------')

hawakan mo

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

subplot (2, 1, 2)

bar (oras, kumilos)% bar graph

xlabel ('Oras (segundo)')

ylabel ('Kahusayan (%)')

magtapos

B = transpose ([oras; tempplot; kumilos]);

magtapos

Ngayon na kumpleto na ang pagpapaandar, oras na upang subukan.

Hakbang 5: Pagsubok

Pagsubok
Pagsubok
Pagsubok
Pagsubok

Ngayon subukan ang pagpapaandar sa window ng utos sa pamamagitan ng pagpasok ng "function_name (input_value_1, input_value_2)" at panoorin. Siguraduhin na walang Arduino object ay mayroon na; kung gayon, gumamit ng utos na "limasin ang" upang alisin ito. Kung naganap ang mga pagkakamali, suriin at tingnan kung ang anumang mga konektor ay nasa maling lugar o kung maling maling input ng digital o analog ang ginamit. Ang mga resulta ay inaasahang mag-iiba, kahit na maaaring sanhi ito ng paglalagay ng ilang mga wire na lumulukso at ang sensor ng temperatura.

Ang mga inaasahan ng mga resulta ay dapat na makabuo ng mga pagbabago sa pagganap ng servo at ang data sa LCD. Sa bawat tatlong segundo na agwat, dapat ipakita ng isang linya ng teksto ang temperatura sa Celsius at kung aktibo o hindi ang tagahanga habang tumatakbo ang tagahanga sa buong bilis, kalahating bilis o walang bilis. Ang data ay malamang na hindi maging pare-pareho, kahit na kung nais ng mas maraming iba't ibang mga resulta, ang lugar na ang "Tmin" na halaga na malapit sa average na temperatura na ginawa ng circuit.

Hakbang 6: Konklusyon

Konklusyon
Konklusyon

Kahit na isang mahirap na gawain upang magawa sa pamamagitan ng pagsubok at error, ang panghuling resulta ay napatunayan na maging kawili-wili at kasiya-siya. Ang isang sistema tulad nito ay tumutulong upang ilarawan kung gaano karaming mga kumplikadong makina, o kahit na ang ilan sa kanilang mga bahagi, ang maaaring makita bilang isang koleksyon ng mga independiyenteng bahagi na magkakasama upang makamit ang isang tiyak na layunin.

Dahil sa medyo payak na disenyo ng panghuling proyekto, ang mga may interes na mapagbuti ang pagganap nito ay maaaring gumawa ng mga pag-aayos at pagbabago sa panghuling produkto na maaaring gawing mas mahusay at mas detalyado ang proyekto. Gayunpaman, inilalantad nito ang mga kahinaan sa circuit tulad ng pag-activate ng servo na nagreresulta sa sporadic fluctuations sa pagbasa ng boltahe ng circuit, na maaaring maging sanhi ng system na hindi gumawa ng magkatulad na mga resulta. Gayundin, may mga isyu sa pagtingin sa isang pagbabago sa bilis ng servo kapag ang "eff" ay itinakda 0.4 at mas mataas. Kung ginamit ang isang sensor ng temperatura at kahalumigmigan, ang panghuling modelo ay magiging mas kumplikado ngunit nagpapakita ng mas pare-parehong mga halaga. Gayunpaman, ito ay isang karanasan na nagpapakita ng isang kumplikadong makina ay maaaring gumana bilang isang kumbinasyon ng mga simpleng bahagi nito.

Inirerekumendang: