Innholdsfortegnelse:

Arduino klimaanlegg modell: 6 trinn
Arduino klimaanlegg modell: 6 trinn

Video: Arduino klimaanlegg modell: 6 trinn

Video: Arduino klimaanlegg modell: 6 trinn
Video: Проблема Управление кондиционером с arduino 2024, Juli
Anonim
Arduino klimaanleggsmodell
Arduino klimaanleggsmodell

Som en del av en demonstrasjon av teamets evne til å lage en modell av et smart tog for markedsføringsformål, var målet å lage et system der en temperatursensor leser data fra kretsen og konverterer informasjonen til en temperaturverdi som er både vises på en opplyst skjerm og fokusert på om en vifte slås på eller av. Formålet er å hjelpe til med å imøtekomme kjøreforholdene til passasjerer som bruker et automatisert system som også fungerer for å vise temperaturen i umiddelbar nærhet.

Ved å bruke et Arduino mikrokontrollersett og MATLAB versjoner 2016b og 2017b, var vi i stand til å demonstrere disse resultatene med relativ suksess.

Trinn 1: Utstyr

Utstyr
Utstyr

Mikrokontrollersett med følgende:

-Sparkfun Red Board

-Sparkfun brødbrett

-LCD -bord

-Potensiometer

-Temperatur sensor

-Servo

-USB/Arduino -adapter

-Genserwires (25, minimum)

Bærbar datamaskin (Windows 10) med USB -inngang

3D -trykt objekt (valgfritt)

Trinn 2: Oppsett av mikrokontroller

Oppsett av mikrokontroller
Oppsett av mikrokontroller
Oppsett av mikrokontroller
Oppsett av mikrokontroller
Oppsett av mikrokontroller
Oppsett av mikrokontroller
Oppsett av mikrokontroller
Oppsett av mikrokontroller

Tenk på dette: hele systemet består av enkle enheter som hver spiller en vesentlig faktor mot det endelige resultatet. Av denne grunn er det sterkt anbefalt å sette opp et bilde av kretsen før du fester ledninger i et kronglete rot.

Bilder av hver enkelt modell finnes i håndboken for Microcontroller -verktøysettet eller på nettstedet på

Start med å feste temperatursensoren, potensiometeret, servokontaktene og LCD -en på kortet. På grunn av LCD -størrelsen og kravet til antall ledninger for den, anbefales det at den plasseres på sin egen halvdel av brødbrettet med de andre brikkene på den andre halvdelen og at potensiometeret er i et område for noen å enkelt vri på knappen.

For referanse:

LCD: c1-16

Servo: i1-3 (GND + -)

Temp Sensor: i13-15 (- GND +)

Potensiometer: g24-26 (- GND +)

Deretter begynner du å koble jumperkabler til hver pinne på mikrokontrollerenhetene; Selv om det var vilkårlig i den generelle storslåtte ordningen, ble designet designet med disse viktige forbindelsene:

Koble potensiometer til LCD: f25 - e3

Servo GND wire: j1 - Digital inngang 9

Temp Sensor GND: j14 - Analog inngang 0

LCD-innganger: e11-e15-digital inngang 2-5

e4 - Digital inngang 7

e6 - Digital inngang 6

(Merk: Hvis det lykkes, bør begge lysene på LCD -kanten blinke, og potensiometeret kan hjelpe til med å justere lysstyrken når den får strøm fra adapteren.)

Valgfritt: Et 3D -trykt objekt ble brukt som en del av et krav. For å unngå potensiell skade på de mer skjøre delene, ble et forlenget etui plassert som en hylse rundt LCD -skjermen. Målinger av LCD-skjermen viste seg å være omtrent 2-13/16 "x 1-1/16" x 1/4 ", og dermed ble bare høyden vesentlig endret. Hvis en 3D-skriver er lett tilgjengelig, bør du vurdere å legge til et personlig objekt Selv om det er unødvendig. Vær også oppmerksom på at målingene kan variere.

Trinn 3: MATLAB -oppsett

MATLAB -oppsett
MATLAB -oppsett
MATLAB -oppsett
MATLAB -oppsett

Installer en mer oppdatert versjon av MATLAB (2016a og fremover), tilgjengelig på MathWorks nettsted https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Når den er åpnet, går du til tilleggsprogrammer på fanen Hjem og laster ned "MATLAB Support Package for Arduino Hardware" for at mikrokontrollerkommandoene skal være tilgjengelige.

Når den er fullført, kan du teste for å finne tilkoblingen mellom mikrokontrolleren og datamaskinen/den bærbare datamaskinen. Etter at du har koblet dem til med USB -adapteren fra verktøysettet, setter du inn kommandoen "fopen (serial ('nada'))."

Det vil dukke opp en feilmelding som angir kontakten som "COM#", som vil være nødvendig for å lage et arduinoobjekt så lenge det er samme inngang til enhver tid.

På grunn av at LCD -skjermen ikke har en direkte forbindelse til Arduino -biblioteket, må et nytt bibliotek opprettes for å vise meldinger. En anbefaling er å lage en LCDAddon.m -fil fra LCD -eksemplet som finnes i MATLAB -hjelpevinduet etter å ha søkt etter "Arduino LCD" og plassert den i +arduinoioaddons -mappen, eller bruke den komprimerte mappen som er vedlagt og kopiere alt innholdet til ovennevnte mappe.

Hvis det lykkes, er koden for å lage et Arduino -objekt i MATLAB som vist nedenfor.

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

Trinn 4: Funksjoner

Funksjoner
Funksjoner
Funksjoner
Funksjoner

Lag en MATLAB -funksjon. For inngangene bruker vi variablene "eff" og "T_min"; for utdata, selv om det var unødvendig i den generelle utformingen, brukte vi variabelen "B" som en måte å inneholde data fra resultatene. "Eff" -inngangen tillater administrering av maksimal hastighet på servoen, og "T_min" -inngangen styrer ønsket minimumstemperatur. Verdien "B" skal dermed produsere en matrise som inneholder tre kolonner for tiden, temperaturen og effektiviteten til viften. Som en bonus for detaljer har koden nedenfor også en if-setning slik at viftehastigheten reduseres med femti prosent når den nærmer seg ønsket minimumstemperatur.

Hvis alle innganger og jumperkabler er plassert nøyaktig og forutsatt at porten på arduino -tilkoblingen er COM4 og funksjonsnavnet er "fanread", bør følgende kode være tilstrekkelig:

funksjon [B] = fanread (Tmin, eff)

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

t = 0; t_max = 15; % tid i sekunder

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

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

hvis eff> = 1 || e <0

feil ('Viften aktiveres ikke med mindre eff er satt mellom 0 og 1.')

slutt

for t = 1: 10 % antall sløyfer/intervaller

klar c; % forhindre gjentagelse av feil

v = readVoltage (a, 'A0');

TempC = (v-0,5)*100; % estimering for spenningsområder 2,7-5,5 V

hvis TempC> Tmin hvis TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % slår på servoen på halv hastighet

spd = 50;

ellers

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

writePWMDutyCycle (a, 'D9', eff); % slår på servoen med den oppgitte hastigheten

spd = 100;

slutt

ellers

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

writePWMDutyCycle (a, 'D9', 0); % slå av hvis den allerede er på

spd = 0;

slutt

printLCD (lcd, c);

pause (3); % tre sekunder går per sløyfe

tid (t) = t.*3;

tempplot (t) = TempC;

handling (t) = spd;

delplot (2, 1, 1)

plot (tid, tempplot, 'b-o') % linjediagram

akse ([0 33 0 40])

xlabel ('Tid (sekunder)')

ylabel ('Temperatur (C)')

vent litt

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

vent litt

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

delplot (2, 1, 2)

bar (tid, handling) % søylediagram

xlabel ('Tid (sekunder)')

ylabel ('Effektivitet (%)')

slutt

B = transponere ([tid; tempplot; handling]);

slutt

Nå som funksjonen er fullført, er det på tide å teste.

Trinn 5: Testing

Testing
Testing
Testing
Testing

Test nå funksjonen i kommandovinduet ved å sette inn "funksjonsnavn (input_value_1, input_value_2)" og se. Sørg for at ingen Arduino -gjenstander allerede finnes; i så fall, bruk kommandoen "clear a" for å fjerne den. Hvis det oppstår feil, sjekk og se om noen kontakter er på feil sted eller om feil digitale eller analoge innganger brukes. Resultatene forventes å variere, selv om dette kan skyldes plassering av visse hoppetråder og temperatursensoren.

Forventningene til resultatene bør gi endringer i ytelsen til servoen og dataene på LCD -skjermen. For hvert tre sekunders intervall bør en tekstlinje vise temperaturen i Celsius og om viften er aktiv mens viften går på full hastighet, halv eller ingen hastighet. Data bør mest sannsynlig ikke være konsistente, men hvis du ønsker flere forskjellige resultater, plasserer du "Tmin" -verdien nær gjennomsnittstemperaturen produsert av kretsen.

Trinn 6: Konklusjon

Konklusjon
Konklusjon

Selv om det var en vanskelig oppgave å utføre ved prøving og feiling, viste de endelige resultatene seg ganske interessante og tilfredsstillende. Et system som sådan hjelper til med å illustrere hvor mange kompliserte maskiner, eller til og med noen av delene deres, kan sees på som en samling av uavhengige deler som er satt sammen for å oppnå et bestemt mål.

På grunn av den ganske forenklede utformingen av sluttprosjektet, kan de som har interesse av å forbedre ytelsen gjøre tilpasninger og endringer i sluttproduktet som kan gjøre prosjektet bedre og mer forseggjort. Imidlertid avslører det svakheter i kretsen, for eksempel servoens aktivering, noe som resulterer i sporadiske svingninger i kretsens spenningsavlesning, noe som kan føre til at systemet aldri gir identiske resultater. Det har også vært problemer med å se en endring i servohastighet når "eff" er satt 0,4 og høyere. Hadde en temperatur- og fuktighetssensor blitt brukt, ville den siste modellen vært mer komplisert, men likevel presentert mer konsistente verdier. Likevel er dette en opplevelse som viser at en kompleks maskin kan fungere som en kombinasjon av de enkle delene.

Anbefalt: