Indholdsfortegnelse:

Arduino Air Conditioning Model: 6 trin
Arduino Air Conditioning Model: 6 trin

Video: Arduino Air Conditioning Model: 6 trin

Video: Arduino Air Conditioning Model: 6 trin
Video: 06 Starter Kit: Light Theremin 2024, Juli
Anonim
Arduino klimaanlæg model
Arduino klimaanlæg model

Som en del af en demonstration af vores teams evne til at oprette en model af en smart train -enhed til marketingformål, var formålet at oprette et system, hvor en temperatursensor læser data fra kredsløbet og konverterer oplysningerne til en temperaturværdi, der både er vises på en oplyst skærm og fokuseret på, om en ventilator tænder eller slukker. Formålet er at hjælpe med at imødekomme køreforholdene for passagerer ved hjælp af et automatiseret system, der også virker til at vise temperaturen i umiddelbar nærhed.

Ved at bruge et Arduino mikrokontroller kit og MATLAB versioner 2016b og 2017b kunne vi demonstrere disse resultater med relativ succes.

Trin 1: Udstyr

Udstyr
Udstyr

Mikrocontrollersæt med følgende:

-Sparkfun Red Board

-Sparkfun brødbræt

-LCD -bord

-Potentiometer

-Temperatur måler

-Servo

-USB/Arduino adapter

-Jumper Wires (25, minimum)

Bærbar computer (Windows 10) med USB -indgang

3D -printet objekt (valgfrit)

Trin 2: Opsætning af mikrokontroller

Opsætning af mikrokontroller
Opsætning af mikrokontroller
Opsætning af mikrokontroller
Opsætning af mikrokontroller
Opsætning af mikrokontroller
Opsætning af mikrokontroller
Opsætning af mikrokontroller
Opsætning af mikrokontroller

Overvej dette: hele systemet er sammensat af enkelte enheder, der hver især anvender en væsentlig faktor i retning af det endelige resultat. Af denne grund anbefales det stærkt at opsætte et billede af kredsløbet, før ledninger sættes i et snoet rod.

Billeder af hver enkelt model findes i manualen til Microcontroller -værktøjssættet eller på dets websted på

Start med at fastgøre temperatursensoren, potentiometeret, servostik og LCD på kortet. Det anbefales, at på grund af LCD -størrelsen og kravet til antallet af ledninger til det, skal det placeres på sin egen halvdel af brødbrættet med de andre stykker på den anden halvdel og for, at potentiometeret er i et område, hvor nogen kan let dreje på knappen.

Til reference:

LCD: c1-16

Servo: i1-3 (GND + -)

Temp Sensor: i13-15 (- GND +)

Potentiometer: g24-26 (- GND +)

Begynd derefter at forbinde jumper -ledninger til hver pin på mikrokontroller -enhederne; selvom det er vilkårligt i den overordnede storslåede ordning, blev designet skabt med disse vigtige forbindelser:

Tilslutning af potentiometer til LCD: f25 - e3

Servo GND wire: j1 - Digital indgang 9

Temp Sensor GND: j14 - Analog indgang 0

LCD-indgange: e11-e15-Digital indgang 2-5

e4 - Digital indgang 7

e6 - Digital indgang 6

(Bemærk: Hvis det lykkes, skal begge lamper på LCD -kanten blinke, og potentiometeret kan hjælpe med at justere lysstyrken, når den får strøm fra adapteren.)

Valgfrit: Et 3D -printet objekt blev brugt som en del af et krav. For at undgå potentiel skade på de mere skrøbelige dele blev en forlænget kuffert anbragt som et ærme omkring LCD'et. Målinger af LCD-skærmen viste sig at være cirka 2-13/16 "x 1-1/16" x 1/4 ", og dermed blev kun højden ændret betydeligt. Hvis en 3D-printer er let tilgængelig, kan du overveje at tilføje et personligt objekt selvom det er unødvendigt. Vær også opmærksom på, at målinger kan variere.

Trin 3: MATLAB -opsætning

MATLAB opsætning
MATLAB opsætning
MATLAB opsætning
MATLAB opsætning

Installer en mere opdateret version af MATLAB (2016a og fremefter), tilgængelig på MathWorks -webstedet https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Når den er åbnet, skal du gå til tilføjelsesprogrammer på fanen Startside og downloade "MATLAB-supportpakke til Arduino-hardware", så mikrokontrollerkommandoerne er tilgængelige.

Når den er afsluttet, kan der foretages en test for at finde mikrokontrollerens forbindelse til ens computer/bærbare computer. Når du har tilsluttet dem med USB -adapteren fra værktøjssættet, skal du indsætte kommandoen "fopen (seriel ('nada'))."

Der vises en fejlmeddelelse, der angiver stikket som "COM#", hvilket er nødvendigt for at oprette et arduino-objekt, så længe det hele tiden er det samme input.

På grund af at LCD'en ikke har en direkte forbindelse til Arduino -biblioteket, skal der oprettes et nyt bibliotek for at vise meddelelser. En anbefaling er at oprette en LCDAddon.m -fil fra LCD -eksemplet, der findes i MATLAB -hjælpevinduet efter at have søgt efter "Arduino LCD" og placeret den i mappen +arduinoioaddons, eller bruge den vedhæftede komprimerede mappe og kopiere alt dets indhold til ovennævnte folder.

Hvis det lykkes, er koden til oprettelse af et Arduino -objekt i MATLAB som vist nedenfor.

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

Trin 4: Funktioner

Funktioner
Funktioner
Funktioner
Funktioner

Opret en MATLAB -funktion. Til input bruger vi variablerne "eff" og "T_min"; for output, selvom det var unødvendigt i det overordnede design, brugte vi variablen "B" som en måde at indeholde data fra resultaterne. "Eff" -indgangen gør det muligt at styre servoens maksimale hastighed, og "T_min" -indgangen styrer den ønskede minimumstemperatur. Værdien "B" skal således producere en matrix, der indeholder tre kolonner for tiden, temperaturen og effektiviteten af blæseren. Som en bonus for detaljer har nedenstående kode også en if-statement, så ventilatorhastigheden reduceres med 50 procent, når den kommer tæt på den ønskede minimumstemperatur.

Hvis alle indgange og jumperkabler er placeret nøjagtigt, og hvis porten til arduino -forbindelsen er COM4, og funktionsnavnet er "fanread", skal følgende kode være tilstrækkelig:

funktion [B] = fanread (Tmin, eff)

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

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

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

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

hvis eff> = 1 || e <0

fejl ('Ventilator aktiveres ikke, medmindre eff er indstillet mellem 0 og 1.')

ende

for t = 1: 10 % antal sløjfer/intervaller

klar c; % forhindre gentagelse af fejl

v = readVoltage (a, 'A0');

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

hvis TempC> Tmin hvis TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % tænder servoen ved halv hastighed

spd = 50;

andet

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

writePWMDutyCycle (a, 'D9', eff); % tænder servoen med den angivne hastighed

spd = 100;

ende

andet

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

writePWMDutyCycle (a, 'D9', 0); luk %, hvis den allerede er tændt

spd = 0;

ende

printLCD (lcd, c);

pause (3); % tre sekunder forløber pr. loop

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)')

hold fast

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

hold fast

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

delplot (2, 1, 2)

søjle (tid, handling) % søjlediagram

xlabel ('Tid (sekunder)')

ylabel ('Effektivitet (%)')

ende

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

ende

Nu hvor funktionen er færdig, er det tid til at teste.

Trin 5: Test

Test
Test
Test
Test

Test nu funktionen i kommandovinduet ved at indsætte "function_name (input_value_1, input_value_2)" og se. Vær sikker på, at der ikke allerede er noget Arduino -objekt; i så fald skal du bruge kommandoen "clear a" for at fjerne den. Hvis der opstår fejl, skal du kontrollere, om der er stik på det forkerte sted, eller om de forkerte digitale eller analoge indgange bruges. Resultaterne forventes at variere, selvom dette kan skyldes placering af visse jumperwires og temperatursensoren.

Forventningerne til resultaterne bør medføre ændringer i servoens ydelse og dataene på LCD -skærmen. For hvert tre sekunders interval skal en tekstlinje vise temperaturen i Celsius, og om blæseren er aktiv, mens blæseren kører med fuld hastighed, halv hastighed eller ingen hastighed. Data bør højst sandsynligt ikke være konsistente, men hvis du ønsker flere forskellige resultater, placerer "Tmin" -værdien tæt på den gennemsnitlige temperatur produceret af kredsløbet.

Trin 6: Konklusion

Konklusion
Konklusion

Selvom det var en vanskelig opgave at udføre ved forsøg og fejl, viste de endelige resultater sig at være ret interessante og tilfredsstillende. Et system som sådant hjælper med at illustrere, hvor mange komplicerede maskiner eller endda nogle af deres dele, der kan ses som en samling af uafhængige dele, der er placeret sammen for at nå et specifikt mål.

På grund af det temmelig forenklede design af det endelige projekt kan de, der har en interesse i at forbedre dets ydeevne, foretage justeringer og ændringer i det endelige produkt, der kan gøre projektet bedre og mere detaljeret. Det afslører imidlertid svagheder i kredsløbet, såsom servoens aktivering, hvilket resulterer i sporadiske udsving i kredsløbets spændingsaflæsning, hvilket kan få systemet til aldrig at producere identiske resultater. Der har også været problemer med at se en ændring i servohastighed, når "eff" er indstillet 0,4 og højere. Havde der været brugt en temperatur- og fugtighedsføler, ville den endelige model være mere kompliceret, men alligevel præsentere mere konsistente værdier. Ikke desto mindre er dette en oplevelse, der viser, at en kompleks maskine kan fungere som en kombination af dens enkle dele.

Anbefalede: