Satura rādītājs:

Arduino gaisa kondicionēšanas modelis: 6 soļi
Arduino gaisa kondicionēšanas modelis: 6 soļi

Video: Arduino gaisa kondicionēšanas modelis: 6 soļi

Video: Arduino gaisa kondicionēšanas modelis: 6 soļi
Video: Обзор и конфигурация модуля EBYTE LoRa 2024, Jūlijs
Anonim
Arduino gaisa kondicionēšanas modelis
Arduino gaisa kondicionēšanas modelis

Demonstrējot mūsu komandas spēju mārketinga nolūkos izveidot viedās vilciena ierīces modeli, mērķis bija izveidot sistēmu, kurā temperatūras sensors nolasa ķēdes datus un pārvērš informāciju par temperatūras vērtību, kas ir tiek parādīts apgaismotā ekrānā un koncentrējas uz to, vai ventilators ieslēdzas vai izslēdzas. Mērķis ir palīdzēt pielāgot pasažieru braukšanas apstākļus, izmantojot automatizētu sistēmu, kas arī parāda temperatūru tiešā tuvumā.

Izmantojot Arduino mikrokontrolleru komplektu un MATLAB versijas 2016b un 2017b, mēs varējām šos rezultātus demonstrēt ar relatīviem panākumiem.

1. solis: aprīkojums

Aprīkojums
Aprīkojums

Mikrokontrolleru komplekts ar šādiem elementiem:

-Sparkfun Red Board

-Sparkfun maizes dēlis

-LCD panelis

-Potenciometrs

-Temperatūras sensors

-Servo

-USB/Arduino adapteris

-Džempera vadi (vismaz 25)

Klēpjdators (Windows 10) ar USB ieeju

3D drukāts objekts (pēc izvēles)

2. darbība: mikrokontrollera iestatīšana

Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana
Mikrokontrollera iestatīšana

Apsveriet to: visa sistēma sastāv no atsevišķām vienībām, un katra no tām piemēro nozīmīgu faktoru gala rezultātam. Šī iemesla dēļ ir ļoti ieteicams izveidot ķēdes attēlu, pirms piestiprināt vadus sarežģītā juceklī.

Katra modeļa attēlus var atrast mikrokontrolleru instrumentu komplekta rokasgrāmatā vai tā vietnē:

Sāciet ar temperatūras sensora, potenciometra, servo savienotāju un LCD piestiprināšanu pie tāfeles. Ieteicams LCD displeja izmēra un vajadzīgo vadu skaita dēļ to novietot uz savas maizes dēļa puses, bet pārējos gabalus - uz otru pusi, un lai potenciometrs atrastos vietā, kur kāds var viegli pagrieziet pogu.

Uzziņai:

LCD: c1-16

Servo: i1-3 (GND + -)

Temperatūras sensors: i13-15 (- GND +)

Potenciometrs: g24-26 (- GND +)

Pēc tam sāciet savienot džemperu vadus ar katru mikrokontrolleru bloku tapu; lai arī vispārējā shēmā patvaļīgs, dizains tika izveidots ar šādiem svarīgiem savienojumiem:

Potenciometra pievienošana LCD: f25 - e3

Servo GND vads: j1 - digitālā ieeja 9

Temperatūras sensors GND: j14 - analogā ievade 0

LCD ieejas: e11-e15-digitālā ieeja 2-5

e4 - digitālā ieeja 7

e6 - digitālā ieeja 6

(Piezīme: ja tas izdodas, abiem indikatoriem LCD ekrānā vajadzētu iedegties, un potenciometrs var palīdzēt pielāgot tā spilgtumu, tiklīdz no strāvas tiek piegādāts adapteris.)

Neobligāti: kā prasība tika izmantots 3D drukāts objekts. Lai izvairītos no trauslāku daļu bojājumiem, ap LCD uzmavu tika uzlikts pagarināts korpuss. LCD ekrāna izmēri izrādījās aptuveni 2-13/16 "x 1-1/16" x 1/4 ", un tādējādi tika būtiski mainīts tikai augstums. Ja 3D printeris ir viegli pieejams, apsveriet iespēju pievienot personisku objektu Jāņem vērā arī tas, ka mērījumi var atšķirties.

3. darbība: MATLAB iestatīšana

MATLAB iestatīšana
MATLAB iestatīšana
MATLAB iestatīšana
MATLAB iestatīšana

Instalējiet atjauninātu MATLAB versiju (2016a un jaunākas versijas), kas pieejama MathWorks vietnē https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Pēc atvēršanas cilnē Sākums dodieties uz Papildinājumi un lejupielādējiet "MATLAB atbalsta pakotni Arduino aparatūrai", lai būtu pieejamas mikrokontrollera komandas.

Kad tas ir pabeigts, var veikt pārbaudi, lai atrastu mikrokontrollera savienojamību ar datoru/klēpjdatoru. Pēc to pievienošanas ar USB adapteri no instrumentu komplekta ievietojiet komandu "fopen (serial ('nada'))".

Tiks parādīts kļūdas ziņojums, kurā norādīts, ka savienotājs ir "COM#", kas būs nepieciešams, lai izveidotu arduino objektu, ja vien tas vienmēr ir viens un tas pats.

Tā kā LCD nav tieša savienojuma ar Arduino bibliotēku, ir jāizveido jauna bibliotēka, lai parādītu ziņojumus. Ieteikums ir izveidot LCDAddon.m failu no LCD piemēra, kas atrodams MATLAB palīdzības logā pēc meklēšanas “Arduino LCD” un ievietošanas mapē +arduinoioaddons, vai izmantot pievienoto saspiesto mapi un nokopēt visu tās saturu iepriekš minētajā mape.

Ja tas ir veiksmīgs, kods Arduino objekta izveidei MATLAB ir tāds, kā parādīts zemāk.

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

4. solis: funkcijas

Funkcijas
Funkcijas
Funkcijas
Funkcijas

Izveidojiet MATLAB funkciju. Ievadiem mēs izmantojam mainīgos "eff" un "T_min"; attiecībā uz rezultātiem, lai gan tie nav nepieciešami vispārējā dizainā, mēs izmantojām mainīgo "B" kā veidu, kā saturēt datus no rezultātiem. Ievads "eff" ļauj pārvaldīt servo maksimālo ātrumu, un "T_min" ievade kontrolē vēlamo minimālo temperatūru. Tādējādi vērtībai "B" jāveido matrica, kurā ir trīs kolonnas par laiku, temperatūru un ventilatora efektivitāti. Turklāt, kā papildinājums detaļām, zemāk uzskaitītajam kodam ir arī paziņojums “if”, lai ventilatora ātrums tiktu samazināts par piecdesmit procentiem, kad tas sasniegs vēlamo minimālo temperatūru.

Ja visas ieejas un savienojuma vadi ir novietoti precīzi un pieņemot, ka arduino savienojuma ports ir COM4 un funkcijas nosaukums ir "fanread", pietiek ar šādu kodu:

funkcija [B] = fanread (Tmin, eff)

notīrīt a; skaidrs LCD; a = arduino ('com4', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; % laika sekundēs

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

initializeLCD (LCD, 'Rindas', 2, 'Kolonnas', 2);

ja eff> = 1 || e <0

kļūda ('Ventilators neaktivizēsies, ja efekts nav iestatīts no 0 līdz 1.')

beigas

t = 1: 10 % cilpu/intervālu skaits

skaidrs c; % novērš atkārtotu kļūdu

v = lasīt spriegumu (a, 'A0');

TempC = (v-0,5)*100; % novērtējums sprieguma diapazoniem 2,7-5,5 V

ja TempC> Tmin, ja TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % ieslēdziet servo ar pusi ātruma

spd = 50;

citādi

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

writePWMDutyCycle (a, 'D9', eff); % ieslēdziet servo ar norādīto ātrumu

spd = 100;

beigas

citādi

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

writePWMDutyCycle (a, 'D9', 0); % izslēgts, ja tas jau ir ieslēgts

spd = 0;

beigas

printLCD (LCD, c);

pauze (3); Katrai cilpai paiet % trīs sekundes

laiks (t) = t.*3;

temppplot (t) = TempC;

akts (t) = spd;

apakšplāksne (2, 1, 1)

diagramma (laiks, tempplot, 'b-o') % līniju grafiks

ass ([0 33 0 40])

xlabel ('Laiks (sekundes)')

ylabel ('Temperatūra (C)')

uzgaidi

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

uzgaidi

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

apakšplāksne (2, 1, 2)

josla (laiks, darbība) % joslu diagramma

xlabel ('Laiks (sekundes)')

ylabel ('Efektivitāte (%)')

beigas

B = transponēt ([laiks; tempplot; akts]);

beigas

Tagad, kad funkcija ir pabeigta, ir pienācis laiks pārbaudīt.

5. darbība: pārbaude

Testēšana
Testēšana
Testēšana
Testēšana

Tagad pārbaudiet funkciju komandu logā, ievietojot "function_name (input_value_1, input_value_2)" un skatieties. Pārliecinieties, ka neviens Arduino objekts jau nepastāv; ja tā, izmantojiet komandu "notīrīt", lai to noņemtu. Ja rodas kļūdas, pārbaudiet un pārbaudiet, vai kādi savienotāji nav ievietoti nepareizā vietā un vai tiek izmantotas nepareizas digitālās vai analogās ieejas. Paredzams, ka rezultāti būs atšķirīgi, lai gan to var izraisīt dažu džemperu vadu un temperatūras sensora novietošana.

Rezultātu cerībām vajadzētu mainīt servo veiktspēju un datus LCD. Katru trīs sekunžu intervālu teksta rindiņā jāparāda temperatūra Celsija grādos un tas, vai ventilators ir aktīvs, kamēr ventilators darbojas ar pilnu ātrumu, pusi ātruma vai bez ātruma. Dati, visticamāk, nedrīkst būt konsekventi, lai gan, ja vēlaties vairāk dažādu rezultātu, novietojiet "Tmin" vērtību tuvu ķēdes vidējai temperatūrai.

6. darbība. Secinājums

Secinājums
Secinājums

Lai gan galīgais rezultāts bija grūts uzdevums, kas jāveic izmēģinājumu un kļūdu ceļā, izrādījās diezgan interesants un apmierinošs. Sistēma kā tāda palīdz ilustrēt, cik sarežģītas mašīnas vai pat dažas to daļas var uzskatīt par neatkarīgu detaļu kolekciju, kas saliktas kopā, lai sasniegtu konkrētu mērķi.

Tā kā gala projekts ir diezgan vienkāršots, tie, kam ir interese uzlabot tā veiktspēju, gala produktā var veikt izmaiņas un izmaiņas, kas var padarīt projektu labāku un sarežģītāku. Tomēr tas atklāj ķēdes vājās vietas, piemēram, servo aktivizēšanu, kā rezultātā rodas sporādiskas ķēdes sprieguma rādījumu svārstības, kas var izraisīt to, ka sistēma nekad nesniedz identiskus rezultātus. Ir bijušas arī problēmas ar servo ātruma izmaiņu novēršanu, kad "eff" ir iestatīts uz 0,4 un augstāku. Ja tiktu izmantots temperatūras un mitruma sensors, galīgais modelis būtu sarežģītāks, taču tam būtu konsekventākas vērtības. Tomēr šī ir pieredze, kas parāda, ka sarežģīta mašīna var darboties kā tās vienkāršo daļu kombinācija.

Ieteicams: