Turinys:

„Arduino“oro kondicionavimo modelis: 6 žingsniai
„Arduino“oro kondicionavimo modelis: 6 žingsniai

Video: „Arduino“oro kondicionavimo modelis: 6 žingsniai

Video: „Arduino“oro kondicionavimo modelis: 6 žingsniai
Video: Lituotų plokštelinių šilumokaičių (karštam vandeniui) gedimai ir problemų sprendimo būdai 2024, Liepa
Anonim
„Arduino“oro kondicionavimo modelis
„Arduino“oro kondicionavimo modelis

Demonstruodami mūsų komandos sugebėjimą sukurti išmaniojo traukinio įrenginio modelį rinkodaros tikslais, tikslas buvo sukurti sistemą, kurioje temperatūros jutiklis nuskaitytų grandinės duomenis ir paverstų informaciją į temperatūros vertę, kuri yra rodomas apšviestame ekrane ir sutelkiamas dėmesys į tai, ar ventiliatorius įjungiamas, ar išjungiamas. Tikslas yra padėti pritaikyti keleivių važiavimo sąlygas naudojant automatinę sistemą, kuri taip pat rodo temperatūrą artimiausioje vietoje.

Naudodami „Arduino“mikrovaldiklio rinkinį ir MATLAB 2016b ir 2017b versijas, mes sugebėjome santykinai sėkmingai parodyti šiuos rezultatus.

1 žingsnis: įranga

Įranga
Įranga

Mikrovaldiklių rinkinys su:

-„Sparkfun Red Board“

-„Sparkfun“duonos lenta

-LCD plokštė

-Potenciometras

-Temperatūros jutiklis

-Servo

-USB/Arduino adapteris

-trumpieji laidai (mažiausiai 25)

Nešiojamasis kompiuteris („Windows 10“) su USB įvestimi

3D spausdintas objektas (neprivaloma)

2 žingsnis: mikrovaldiklio sąranka

Mikrovaldiklio sąranka
Mikrovaldiklio sąranka
Mikrovaldiklio sąranka
Mikrovaldiklio sąranka
Mikrovaldiklio sąranka
Mikrovaldiklio sąranka
Mikrovaldiklio sąranka
Mikrovaldiklio sąranka

Apsvarstykite tai: visa sistema yra sudaryta iš atskirų vienetų, kurių kiekvienas turi reikšmingą faktorių galutiniam rezultatui pasiekti. Dėl šios priežasties labai rekomenduojama sukurti grandinės vaizdą prieš prijungiant laidus į susivėlusią netvarką.

Kiekvieno modelio vaizdus galima rasti mikrokontrolerio įrankių rinkinio vadove arba jo svetainėje adresu

Pradėkite nuo plokštės pritvirtinimo temperatūros jutiklio, potenciometro, servo jungčių ir LCD. Rekomenduojama, kad dėl LCD dydžio ir reikalaujamo laidų skaičiaus jis turėtų būti dedamas ant savo duonos lentos pusės, o kitos dalys - kitoje pusėje, o potenciometras turi būti tokioje vietoje, kur kas nors gali lengvai pasukite rankenėlę.

Nuoroda:

LCD: c1-16

Servo: i1-3 (GND + -)

Temperatūros jutiklis: i13-15 (- GND +)

Potenciometras: g24-26 (- GND +)

Tada pradėkite jungti trumpiklius su kiekvienu mikrovaldiklio bloko kaiščiu; nors ir savavališkas bendroje didžiojoje schemoje, dizainas buvo sukurtas naudojant šiuos svarbius ryšius:

Potenciometro prijungimas prie LCD: f25 - e3

Servo GND laidas: j1 - skaitmeninis įėjimas 9

Temperatūros jutiklis GND: j14 - analoginis įėjimas 0

LCD įėjimai: e11-e15-2-5 skaitmeninė įvestis

e4 - skaitmeninė įvestis 7

e6 - skaitmeninė įvestis 6

(Pastaba: jei pavyks, abi LCD lemputės turi užsidegti, o potenciometras gali padėti sureguliuoti jo ryškumą, kai tik gauna maitinimą iš adapterio.)

Neprivaloma: kaip reikalavimas buvo naudojamas 3D spausdintas objektas. Siekiant išvengti pažeidžiamesnių pažeidžiamų dalių, aplink LCD ekraną buvo uždėtas prailgintas dėklas. Pasirodė, kad LCD ekrano matmenys yra maždaug 2-13/16 "x 1-1/16" x 1/4 ", todėl labai pasikeitė tik aukštis. Jei 3D spausdintuvas yra lengvai prieinamas, apsvarstykite galimybę pridėti asmeninį objektą Be to, atminkite, kad matavimai gali skirtis.

3 žingsnis: MATLAB sąranka

MATLAB sąranka
MATLAB sąranka
MATLAB sąranka
MATLAB sąranka

Įdiekite naujesnę MATLAB versiją (2016a ir vėliau), kurią rasite „MathWorks“svetainėje https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Atidarę eikite į „Priedai“skirtuke „Pagrindinis“ir atsisiųskite „MATLAB Support Package for Arduino Hardware“, kad būtų pasiekiamos mikrovaldiklio komandos.

Užbaigus, galima atlikti bandymą, kad būtų galima rasti mikrovaldiklio prijungimą prie kompiuterio/nešiojamojo kompiuterio. Prijungę juos prie USB adapterio iš įrankių rinkinio, įveskite komandą „fopen (serial ('nada'))“.

Atsidarys klaidos pranešimas, kuriame nurodoma, kad jungtis yra „COM#“, kuri bus reikalinga norint sukurti „arduino“objektą, jei jis visada yra tas pats.

Kadangi LCD ekranas neturi tiesioginio ryšio su „Arduino“biblioteka, norint sukurti pranešimus, reikia sukurti naują biblioteką. Rekomenduojama sukurti LCDAddon.m failą iš LCD pavyzdžio, esančio MATLAB pagalbos lange, atlikus paiešką „Arduino LCD“ir įdėjus jį į aplanką +arduinoioaddons, arba naudokite pridėtą suspaustą aplanką ir nukopijuokite visą jo turinį į pirmiau minėtą aplanką.

Jei pavyks, tada „Arduino“objekto kūrimo MATLAB kodas yra toks, kaip parodyta žemiau.

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

4 žingsnis: Funkcijos

Funkcijos
Funkcijos
Funkcijos
Funkcijos

Sukurkite MATLAB funkciją. Įvestims naudojame kintamuosius „eff“ir „T_min“; išėjimams, nors ir nereikalingi bendrame projekte, mes panaudojome kintamąjį „B“kaip būdą, kaip įvesti duomenis iš rezultatų. Įvestis „eff“leidžia valdyti maksimalų servo greitį, o „T_min“įvestis valdo norimą mažiausią temperatūrą. Taigi reikšmė „B“turėtų sudaryti matricą, kurioje būtų trys laiko, temperatūros ir ventiliatoriaus efektyvumo stulpeliai. Be to, kaip smulkmena, toliau išvardytame kode taip pat yra teiginys „if-“, kad ventiliatoriaus greitis sumažėtų penkiasdešimt procentų, kai jis priartės prie norimos minimalios temperatūros.

Jei visi įėjimai ir jungiamieji laidai yra tiksliai išdėstyti ir darant prielaidą, kad arduino jungties prievadas yra COM4, o funkcijos pavadinimas yra „fanread“, pakanka šio kodo:

funkcija [B] = fanread (Tmin, eff)

išvalyti a; aiškus LCD; a = arduino ('com4', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; % laiko sekundėmis

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

initializeLCD (LCD, 'Eilutės', 2, 'Stulpeliai', 2);

jei eff> = 1 || e <0

klaida („Ventiliatorius neįsijungs, jei efektas nebus nustatytas nuo 0 iki 1.“)

galas

t = 1: 10 % kilpų/intervalų skaičius

aiškus c; % neleidžia kartotis klaidai

v = skaitymo įtampa (a, 'A0');

TempC = (v-0,5)*100; % įvertinimas 2,7–5,5 V įtampos diapazonams

jei TempC> Tmin, jei TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % įjunkite servo pusę greičio

spd = 50;

Kitas

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

writePWMDutyCycle (a, 'D9', eff); % įjunkite servo nustatytu greičiu

spd = 100;

galas

Kitas

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

writePWMDutyCycle (a, 'D9', 0); % išjungti, jei jau įjungtas

spd = 0;

galas

printLCD (LCD, c);

pauzė (3); Kiekviena kilpa praeina % trijų sekundžių

laikas (t) = t.*3;

tempplot (t) = TempC;

aktas (t) = spd;

papildomas sklypas (2, 1, 1)

grafikas (laikas, tempplot, 'b-o') % linijinė diagrama

ašis ([0 33 0 40])

xlabel („Laikas (sekundėmis)“)

ylabel („Temperatūra (C)“)

palauk

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

palauk

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

papildomas sklypas (2, 1, 2)

juosta (laikas, veiksmas) % juostinė diagrama

xlabel („Laikas (sekundėmis)“)

ylabel („Efektyvumas (%)“)

galas

B = perkelti ([laikas; templot; veiksmas]);

galas

Dabar, kai funkcija baigta, atėjo laikas išbandyti.

5 žingsnis: bandymas

Testavimas
Testavimas
Testavimas
Testavimas

Dabar patikrinkite funkciją komandų lange, įterpdami „function_name (input_value_1, input_value_2)“ir žiūrėkite. Įsitikinkite, kad jokio „Arduino“objekto jau nėra; jei taip, naudokite komandą „išvalyti“, kad ją pašalintumėte. Jei įvyksta klaidų, patikrinkite, ar jungtys yra netinkamoje vietoje, ar naudojamos netinkamos skaitmeninės ar analoginės įvestys. Tikimasi, kad rezultatai skirsis, nors tai gali lemti tam tikrų jungiamųjų laidų ir temperatūros jutiklio išdėstymas.

Lūkesčiai dėl rezultatų turėtų pakeisti servo veikimą ir duomenis LCD ekrane. Su kiekvienu trijų sekundžių intervalu teksto eilutėje turėtų būti rodoma temperatūra Celsijaus laipsniais ir tai, ar ventiliatorius yra aktyvus, kai ventiliatorius veikia visu greičiu, puse greičio arba be greičio. Duomenys greičiausiai neturėtų būti nuoseklūs, nors, norint gauti daugiau įvairių rezultatų, „Tmin“reikšmę priartinkite prie vidutinės grandinės temperatūros.

6 žingsnis: Išvada

Išvada
Išvada

Nors galutiniai rezultatai buvo sunkūs bandymų ir klaidų būdu, jie pasirodė gana įdomūs ir patenkinti. Sistema pati savaime padeda parodyti, kiek sudėtingų mašinų ar net kai kurių jų dalių galima laikyti nepriklausomų dalių, sujungtų tam tikram tikslui, rinkiniu.

Dėl gana supaprastinto galutinio projekto plano tie, kurie nori pagerinti jo našumą, gali atlikti galutinio produkto pakeitimus ir pakeitimus, kurie gali padaryti projektą geresnį ir sudėtingesnį. Tačiau tai atskleidžia grandinės trūkumus, tokius kaip servo įjungimas, dėl kurio atsitiktinai gali svyruoti grandinės įtampos rodmenys, dėl kurių sistema niekada neduos vienodų rezultatų. Be to, iškilo problemų, kai pasikeitė servo greitis, kai „eff“nustatytas 0,4 ir didesnis. Jei būtų naudojamas temperatūros ir drėgmės jutiklis, galutinis modelis būtų sudėtingesnis, tačiau jo vertės būtų nuoseklesnės. Nepaisant to, tai yra patirtis, rodanti, kad sudėtinga mašina gali veikti kaip paprastų jos dalių derinys.

Rekomenduojamas: