Innehållsförteckning:

Arduino luftkonditioneringsmodell: 6 steg
Arduino luftkonditioneringsmodell: 6 steg

Video: Arduino luftkonditioneringsmodell: 6 steg

Video: Arduino luftkonditioneringsmodell: 6 steg
Video: Amazing arduino project 2024, Juli
Anonim
Arduino luftkonditioneringsmodell
Arduino luftkonditioneringsmodell

Som en del av en demonstration av vårt teams förmåga att skapa en modell av en smart tåganordning för marknadsföringsändamål var målet att skapa ett system där en temperatursensor läser data från kretsen och omvandlar informationen till ett temperaturvärde som är både visas på en upplyst skärm och fokuserar på om en fläkt slås på eller av. Syftet är att hjälpa till att anpassa passagerarnas ridförhållanden med ett automatiserat system som också visar temperaturen i omedelbar närhet.

Genom att använda ett Arduino mikrokontroller kit och MATLAB versioner 2016b och 2017b kunde vi demonstrera dessa resultat med relativ framgång.

Steg 1: Utrustning

Utrustning
Utrustning

Mikrocontroller -kit med följande:

-Sparkfun Red Board

-Sparkfun brödbräda

-LCD -styrelse

-Potentiometer

-Temperatursensor

-Servo

-USB/Arduino -adapter

-Tröjor (minst 25)

Bärbar dator (Windows 10) med USB -ingång

3D -utskrivet objekt (tillval)

Steg 2: Inställning av mikrokontroller

Inställning av mikrokontroller
Inställning av mikrokontroller
Inställning av mikrokontroller
Inställning av mikrokontroller
Inställning av mikrokontroller
Inställning av mikrokontroller
Inställning av mikrokontroller
Inställning av mikrokontroller

Tänk på detta: hela systemet består av enstaka enheter som var och en tillämpar en betydande faktor för det slutliga resultatet. Av denna anledning rekommenderas det starkt att du sätter upp en bild av kretsen innan du ansluter ledningar i en förvirrad röra.

Bilder av varje enskild modell finns i handboken för Microcontroller -verktyget eller på dess webbplats på

Börja med att fästa temperaturgivaren, potentiometern, servokontakterna och LCD -skärmen på kortet. Det rekommenderas att på grund av LCD -skärmens storlek och krav på antalet ledningar för den ska den placeras på sin egen hälft av brödbrädan med de andra bitarna på den andra halvan och för att potentiometern ska vara i ett område för någon att enkelt vrida på ratten.

Som referens:

LCD: c1-16

Servo: i1-3 (GND + -)

Tempsensor: i13-15 (- GND +)

Potentiometer: g24-26 (- GND +)

Börja sedan med att ansluta bygelkablar till varje stift i mikrokontrollenheterna; även om det är godtyckligt i det övergripande stora schemat, skapades designen med dessa viktiga anslutningar:

Anslutning av potentiometer till LCD: f25 - e3

Servo GND -kabel: j1 - Digital ingång 9

Temp Sensor GND: j14 - Analog ingång 0

LCD-ingångar: e11-e15-digital ingång 2-5

e4 - Digital ingång 7

e6 - Digital ingång 6

(Obs! Om det lyckas bör båda lamporna på LCD -skärmen blinka och potentiometern kan hjälpa till att justera ljusstyrkan när den får ström från adaptern.)

Valfritt: Ett 3D -tryckt objekt användes som en del av ett krav. För att undvika potentiella skador på de mer ömtåliga delarna placerades ett förlängt hölje som en hylsa runt LCD -skärmen. Mätningar av LCD-skärmen visade sig vara ungefär 2-13/16 "x 1-1/16" x 1/4 ", och därmed ändrades endast höjden avsevärt. Om en 3D-skrivare är lättillgänglig, överväg att lägga till ett personligt objekt även om det är onödigt. Var också medveten om att mätningarna kan skilja sig åt.

Steg 3: MATLAB -inställning

MATLAB -inställning
MATLAB -inställning
MATLAB -inställning
MATLAB -inställning

Installera en mer uppdaterad version av MATLAB (2016a och senare), tillgänglig på MathWorks webbplats https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. När du har öppnat, gå till tillägg på fliken Hem och ladda ner "MATLAB Support Package for Arduino Hardware" för att mikrokontrollkommandona ska vara tillgängliga.

När det är klart kan ett test göras för att hitta mikrokontrollerens anslutning till en dator/bärbar dator. När du har anslutit dem med USB -adaptern från verktygssatsen, sätter du in kommandot "fopen (serial ('nada'))."

Ett felmeddelande kommer att dyka upp som anger anslutningen som "COM#", vilket kommer att behövas för att skapa ett arduino-objekt så länge det är samma ingång hela tiden.

Eftersom LCD -skärmen inte har en direkt anslutning till Arduino -biblioteket måste ett nytt bibliotek skapas för att kunna visa meddelanden. En rekommendation är att skapa en LCDAddon.m -fil från LCD -exemplet som finns i MATLAB -hjälpfönstret efter att ha sökt "Arduino LCD" och placerat den i mappen +arduinoioaddons, eller använda den bifogade komprimerade mappen och kopiera allt innehåll till ovannämnda mapp.

Om det lyckas är koden för att skapa ett Arduino -objekt i MATLAB enligt nedan.

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

Steg 4: Funktioner

Funktioner
Funktioner
Funktioner
Funktioner

Skapa en MATLAB -funktion. För ingångarna använder vi variablerna "eff" och "T_min"; för utdata, men onödigt i den övergripande designen, använde vi variabeln "B" som ett sätt att innehålla data från resultaten. "Eff" -ingången möjliggör hantering av servos maximala hastighet, och "T_min" -ingången styr den önskade minimitemperaturen. Värdet "B" bör således producera en matris som innehåller tre kolumner för tiden, temperaturen och effektiviteten hos fläkten. Som en bonus för detaljer har koden som anges nedan också ett if-uttalande så att fläkthastigheten kommer att reduceras med femtio procent när den närmar sig önskad minimitemperatur.

Om alla ingångar och bygelkablar är placerade exakt och förutsatt att porten på arduino -anslutningen är COM4 och funktionsnamnet är "fanread", bör följande kod vara tillräcklig:

funktion [B] = fläktläsning (Tmin, eff)

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

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

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

initializeLCD (lcd, 'rader', 2, 'kolumner', 2);

om eff> = 1 || e <0

fel ('Fläkten aktiveras inte om inte eff är inställt mellan 0 och 1.')

slutet

för t = 1: 10 % antal slingor/intervaller

klart c; % förhindra att fel upprepas

v = readVoltage (a, 'A0');

TempC = (v-0,5)*100; % uppskattning för spänningsområden 2,7-5,5 V

om TempC> Tmin om TempC

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

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

spd = 50;

annan

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

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

spd = 100;

slutet

annan

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

writePWMDutyCycle (a, 'D9', 0); % stäng av om det redan är på

spd = 0;

slutet

printLCD (lcd, c);

paus (3); % tre sekunder går per slinga

tid (t) = t.*3;

tempplot (t) = TempC;

agera (t) = spd;

delplan (2, 1, 1)

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

axel ([0 33 0 40])

xlabel ('Tid (sekunder)')

ylabel ('Temperatur (C)')

vänta

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

vänta

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

delplan (2, 1, 2)

stapel (tid, akt) % stapeldiagram

xlabel ('Tid (sekunder)')

ylabel ('Effektivitet (%)')

slutet

B = transponera ([tid; tempplot; agera]);

slutet

Nu när funktionen är klar är det dags att testa.

Steg 5: Testning

Testning
Testning
Testning
Testning

Testa nu funktionen i kommandofönstret genom att infoga "function_name (input_value_1, input_value_2)" och titta. Var säker på att inget Arduino -objekt redan finns; Använd i så fall kommandot "clear a" för att ta bort det. Om det uppstår fel, kontrollera och se om några kontakter är på fel plats eller om fel digitala eller analoga ingångar används. Resultaten förväntas variera, även om detta kan orsakas av placering av vissa bygelkablar och temperatursensorn.

Förväntningarna på resultaten bör ge förändringar i servos prestanda och data på LCD -skärmen. För varje tre sekunders intervall bör en textrad visa temperaturen i Celsius och om fläkten är aktiv medan fläkten går med full hastighet, halv eller ingen hastighet. Data bör sannolikt inte vara konsekventa, men om du önskar fler olika resultat, placerar "Tmin" -värdet nära den genomsnittliga temperaturen som kretsen producerar.

Steg 6: Slutsats

Slutsats
Slutsats

Även om det var en svår uppgift att utföra genom försök och fel, visade sig de slutliga resultaten vara ganska intressanta och tillfredsställande. Ett system som sådant hjälper till att illustrera hur många komplicerade maskiner, eller till och med några av deras delar, kan ses som en samling oberoende delar placerade tillsammans för att uppnå ett specifikt mål.

På grund av den ganska förenklade utformningen av det slutliga projektet kan de som har ett intresse av att förbättra dess prestanda göra justeringar och ändringar i den slutliga produkten som kan göra projektet bättre och mer genomarbetat. Det avslöjar dock svagheter i kretsen, till exempel att servon aktiveras, vilket resulterar i sporadiska fluktuationer i kretsens spänningsavläsning, vilket kan få systemet att aldrig producera identiska resultat. Det har också uppstått problem med att se en förändring i servohastigheten när "eff" är inställd på 0,4 och högre. Om en temperatur- och luftfuktighetssensor hade använts skulle den slutliga modellen vara mer komplicerad men ändå ge mer konsekventa värden. Ändå är detta en upplevelse som visar att en komplex maskin kan fungera som en kombination av dess enkla delar.

Rekommenderad: