Indholdsfortegnelse:
- Trin 1: Udstyr
- Trin 2: Opsætning af mikrokontroller
- Trin 3: MATLAB -opsætning
- Trin 4: Funktioner
- Trin 5: Test
- Trin 6: Konklusion
Video: Arduino Air Conditioning Model: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
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
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
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
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
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 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
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:
Air - True Mobile Air Guitar (prototype): 7 trin (med billeder)
Air - True Mobile Air Guitar (Prototype): Okay, så det bliver en rigtig kort instruktion om den første del af endelig at komme tættere på min barndomsdrøm. Da jeg var en ung dreng, så jeg altid mine yndlingsartister og bands spille guitar perfekt. Da jeg voksede op, var jeg t
Programmering af Arduino Over the Air (OTA) - Ameba Arduino: 4 trin
Programmering af Arduino Over the Air (OTA)-Ameba Arduino: Der er mange Wi-Fi-mikrokontroller derude på markedet, mange producenter nyder at programmere deres Wi-Fi-mikrokontroller ved hjælp af Arduino IDE. En af de sejeste funktioner, som en Wi-Fi-mikrokontroller har at tilbyde, er dog tilbøjelig til at blive overset, det vil sige
Sådan opretter du en model Cubesat med en Arduino- og DHT11 -sensor: 7 trin
Sådan opretter du en model Cubesat med en Arduino- og DHT11-sensor: Målet med vores projekt er at lave en cubesat og konstruere en Arduino, der kan bestemme Mars luftfugtighed og temperatur. -Tanner
Arduino 2-i-1 Model Train Controller: 4 trin
Arduino 2-i-1 Model Train Controller: For fyrre år siden designede jeg en op-amp-baseret modeltog gasspjæld til et par venner, og derefter for cirka fire år siden genskabte jeg det ved hjælp af en PIC-mikrokontroller. Dette Arduino -projekt genskaber PIC -versionen, men tilføjer også muligheden for at bruge en
HRV (Home Air Exchanger) Arduino Controller With Air Economizer: 7 trin (med billeder)
HRV (Home Air Exchanger) Arduino Controller With Air Economizer: HRV Arduino Controller med Air Economizer Så min historie med dette projekt er, at jeg bor i Minnesota og mit printkort steges på min LifeBreath 155Max HRV. Jeg ville ikke betale $ 200 for en ny. Jeg ville altid have noget med en luftbesparende synd