Përmbajtje:

Modeli i kondicionimit Arduino: 6 hapa
Modeli i kondicionimit Arduino: 6 hapa

Video: Modeli i kondicionimit Arduino: 6 hapa

Video: Modeli i kondicionimit Arduino: 6 hapa
Video: BTT GTR v1.0/M5 v1.0 - configuration of A4988 and DRV8825 steppers 2024, Nëntor
Anonim
Modeli i kondicionimit Arduino
Modeli i kondicionimit Arduino

Si pjesë e një demonstrimi të aftësisë së ekipit tonë për të krijuar një model të një pajisje treni të zgjuar për qëllime marketingu, objektivi ishte krijimi i një sistemi në të cilin një sensor i temperaturës lexon të dhënat nga qarku dhe konverton informacionin në një vlerë të temperaturës që është shfaqet në një ekran të ndriçuar dhe fokusohet nëse një ventilator ndizet ose fiket. Qëllimi është të ndihmojë në akomodimin e kushteve të udhëtimit të udhëtarëve duke përdorur një sistem të automatizuar që gjithashtu vepron për të shfaqur temperaturën në afërsi të menjëhershme.

Duke përdorur një çantë mikrokontrolluesi Arduino dhe versionet MATLAB 2016b dhe 2017b, ne ishim në gjendje t'i demonstronim këto rezultate me sukses relativ.

Hapi 1: Pajisjet

Pajisjet
Pajisjet

Kompleti i mikrokontrolluesit me sa vijon:

-Sparkfun Red Board

-Sparkfun Breadboard

-Bord Bordi

-Potentiometër

-Sensor temperature

-Servo

-Përshtatës USB/Arduino

-Telat Jumper (25, minimumi)

Laptop (Windows 10) me hyrje USB

Objekt i printuar 3D (opsional)

Hapi 2: Konfigurimi i mikrokontrolluesit

Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit
Konfigurimi i mikrokontrolluesit

Konsideroni këtë: i gjithë sistemi përbëhet nga njësi të vetme që secila aplikon një faktor domethënës drejt rezultatit përfundimtar. Për këtë arsye, rekomandohet shumë të vendosni një imazh të qarkut para se të lidhni telat në një rrëmujë të ndërlikuar.

Imazhet e secilit model individual mund të gjenden në manualin e kompletit të veglave të Mikrokontrolluesit ose në faqen e tij në internet në

Filloni me bashkimin e sensorit të temperaturës, potenciometrit, lidhësit servo dhe LCD në tabelë. Rekomandohet që për shkak të madhësisë së LCD dhe kërkesës për numrin e telave për të, ajo duhet të vendoset në gjysmën e vet të pjatës së bukës me pjesët e tjera në gjysmën tjetër dhe që potenciometri të jetë në një zonë që dikush të kthejeni lehtë çelësin e tij.

Per referim:

LCD: c1-16

Servo: i1-3 (GND + -)

Sensori Temp: i13-15 (- GND +)

Potenciometër: g24-26 (- GND +)

Tjetra, filloni të lidhni telat e bluzave me secilën kunj të njësive të mikrokontrolluesit; edhe pse arbitrar në skemën e përgjithshme të madhe, dizajni u krijua me këto lidhje të rëndësishme:

Lidhja e Potenciometrit me LCD: f25 - e3

Teli Servo GND: j1 - Hyrja dixhitale 9

Sensori Temp GND: j14 - Hyrja Analog 0

Hyrjet LCD: e11-e15-Hyrja dixhitale 2-5

e4 - Hyrja dixhitale 7

e6 - Hyrja dixhitale 6

(Shënim: Nëse është i suksesshëm, të dy dritat në skajin e LCD -së duhet të ndizen dhe potenciometri mund të ndihmojë në rregullimin e shkëlqimit të tij pasi të ketë dhënë fuqinë nga përshtatësi.)

Opsionale: Një objekt i printuar 3D u përdor si pjesë e një kërkese. Për të shmangur dëmtimet e mundshme në pjesët më të brishta, një kuti e zgjatur u vendos si një mëngë rreth LCD. Matjet e ekranit LCD u vërtetuan se ishin afërsisht 2-13/16 "x 1-1/16" x 1/4 ", dhe kështu vetëm lartësia u ndryshua ndjeshëm. Nëse një printer 3D është i disponueshëm, merrni parasysh shtimin e një objekti personal, edhe pse e panevojshme. Gjithashtu, kini parasysh se matjet mund të ndryshojnë.

Hapi 3: Konfigurimi i MATLAB

Konfigurimi i MATLAB
Konfigurimi i MATLAB
Konfigurimi i MATLAB
Konfigurimi i MATLAB

Instaloni një version më të azhurnuar të MATLAB (2016a dhe në vazhdim), i disponueshëm në faqen e internetit të MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Pasi të hapet, shkoni te Shtesat në skedën Home dhe shkarkoni "Paketa Mbështetëse MATLAB për Arduino Hardware" që komandat e mikrokontrolluesit të jenë të arritshme.

Pasi të përfundojë, mund të bëhet një test për të gjetur lidhshmërinë e mikrokontrolluesit me kompjuterin/laptopin e dikujt. Pasi t'i lidhni me përshtatësin USB nga kompleti i veglave, futni komandën "hap (serial ('nada'))"."

Një mesazh gabimi do të shfaqet duke treguar lidhësin si "COM#", i cili do të jetë i nevojshëm për të krijuar një objekt arduino për sa kohë që ai është i njëjti hyrje në çdo kohë.

Për shkak të faktit se LCD nuk ka lidhje të drejtpërdrejtë me bibliotekën Arduino, duhet të krijohet një bibliotekë e re për të shfaqur mesazhe. Një rekomandim është të krijoni një skedar LCDAddon.m nga shembulli LCD i gjetur në dritaren e ndihmës MATLAB pasi të kërkoni "Arduino LCD" dhe ta vendosni në dosjen +arduinoioaddons, ose të përdorni dosjen e ngjeshur të bashkangjitur dhe të kopjoni të gjithë përmbajtjen e tij në të lartpërmendurat dosje.

Nëse është i suksesshëm, atëherë kodi për të krijuar një objekt Arduino në MATLAB është siç tregohet më poshtë.

a = arduino ('com#', 'uno', 'Bibliotekat', 'ShembullLCD/LCDAddon');

Hapi 4: Funksionet

Funksione
Funksione
Funksione
Funksione

Krijoni një funksion MATLAB. Për hyrjet, ne përdorim variablat "eff" dhe "T_min"; për daljet, edhe pse të panevojshme në modelin e përgjithshëm, ne përdorëm variablin "B" si një mënyrë për të përmbajtur të dhënat nga rezultatet. Hyrja "eff" lejon menaxhimin e shpejtësisë maksimale të servo, dhe hyrja "T_min" kontrollon temperaturën minimale të dëshiruar. Vlera "B" duhet të prodhojë kështu një matricë që përmban tre kolona për kohën, temperaturën dhe efikasitetin e ventilatorit. Gjithashtu, si një bonus për detajet, kodi i listuar më poshtë gjithashtu ka një deklaratë if nëse shpejtësia e ventilatorit do të ulet me pesëdhjetë për qind kur të afrohet me temperaturën minimale të dëshiruar.

Nëse të gjitha hyrjet dhe telat e kërcyesit janë vendosur saktësisht dhe duke supozuar se porta e lidhjes arduino është COM4 dhe emri i funksionit është "fanread", kodi i mëposhtëm duhet të jetë i mjaftueshëm:

funksioni [B] = fanread (Tmin, eff)

pastroj a; lcd qartë; a = arduino ('com4', 'uno', 'Bibliotekat', 'ShembullLCD/LCDAddon');

t = 0; t_max = 15; % kohë në sekonda

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

inicializoni LCD (lcd, 'Rows', 2, 'Columns', 2);

nëse eff> = 1 || e <0

gabim ('Tifozi nuk do të aktivizohet nëse eff nuk është vendosur midis 0 dhe 1.')

fund

për t = 1: 10 % numri i sythe/intervaleve

c e qartë; % parandalojnë përsëritjen e gabimit

v = readVoltage (a, 'A0');

TempC = (v-0.5)*100; % vlerësim për diapazonin e tensionit 2.7-5.5 V

nëse TempC> Tmin nëse TempC

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

shkruajPWMDutyCycle (a, 'D9', eff/2); % aktivizoni servo me gjysmën e shpejtësisë

spd = 50;

tjeter

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

shkruajPWMDutyCycle (a, 'D9', eff); % aktivizoni servo me shpejtësinë e dhënë

spd = 100;

fund

tjeter

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

shkruajPWMDutyCycle (a, 'D9', 0); % mbyllet nëse tashmë është aktiv

spd = 0;

fund

printLCD (LCD, c);

pauzë (3); % tre sekonda kalojnë për lak

koha (t) = t.*3;

tempplot (t) = TempC;

akt (t) = spd;

nënplot (2, 1, 1)

grafiku i grafikut (koha, tempplot, 'b-o') %

boshti ([0 33 0 40])

xlabel ('Koha (sekonda)')

ylabel ('Temperatura (C)')

prit

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

prit

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

nënplot (2, 1, 2)

bar (koha, veprimi) % grafiku i shiritit

xlabel ('Koha (sekonda)')

ylabel ('Efikasiteti (%)')

fund

B = transpozoj ([koha; tempplot; veproj]);

fund

Tani që funksioni është i plotë, është koha për të provuar.

Hapi 5: Testimi

Duke testuar
Duke testuar
Duke testuar
Duke testuar

Tani testoni funksionin në dritaren e komandës duke futur "emrin e funksionit (vlera hyrëse_, vlera hyrëse_2)" dhe shikoni. Sigurohuni që asnjë objekt Arduino nuk ekziston tashmë; nëse është kështu, përdorni komandën "clear a" për ta hequr atë. Nëse ndodhin gabime, kontrolloni dhe shihni nëse ndonjë lidhje është në vendin e gabuar ose nëse përdoren hyrje të gabuara dixhitale ose analoge. Rezultatet pritet të ndryshojnë, edhe pse kjo mund të shkaktohet nga vendosja e telave të caktuara të kërcyesit dhe sensorit të temperaturës.

Pritjet e rezultateve duhet të prodhojnë ndryshime në performancën e servo dhe të dhënat në LCD. Me çdo interval prej tre sekondash, një rresht teksti duhet të shfaqë temperaturën në Celsius dhe nëse ventilatori është aktiv ose jo ndërsa ventilatori funksionon me shpejtësi të plotë, gjysmë shpejtësie ose pa shpejtësi. Të dhënat ka shumë të ngjarë të mos jenë të qëndrueshme, megjithëse nëse dëshirojnë rezultate më të ndryshme, vendosni vlerën "Tmin" afër temperaturës mesatare të prodhuar nga qarku.

Hapi 6: Përfundimi

Përfundim
Përfundim

Megjithëse një detyrë e vështirë për tu realizuar me provë dhe gabim, rezultatet përfundimtare dolën të ishin mjaft interesante dhe të kënaqshme. Një sistem si i tillë ndihmon për të ilustruar se sa makina të ndërlikuara, apo edhe disa pjesë të tyre, mund të shihen si një koleksion i pjesëve të pavarura të vendosura së bashku për të arritur një qëllim specifik.

Për shkak të modelimit mjaft të thjeshtuar të projektit përfundimtar, ata që kanë interes të përmirësojnë performancën e tij mund të bëjnë ndryshime dhe ndryshime në produktin përfundimtar që mund ta bëjnë projektin më të mirë dhe më të përpunuar. Sidoqoftë, ai zbulon dobësi në qark, siç është aktivizimi i servo -s, duke rezultuar në luhatje sporadike në leximin e tensionit të qarkut, gjë që mund të bëjë që sistemi të mos prodhojë kurrë rezultate identike. Gjithashtu, ka pasur probleme me shikimin e një ndryshimi në shpejtësinë e servo kur "eff" është vendosur 0.4 dhe më e lartë. Sikur të ishte përdorur një sensor i temperaturës dhe lagështisë, modeli përfundimtar do të ishte më i komplikuar, por do të paraqiste vlera më të qëndrueshme. Sidoqoftë, kjo është një përvojë që tregon se një makinë komplekse mund të funksionojë si një kombinim i pjesëve të saj të thjeshta.

Recommended: