Innehållsförteckning:
- Steg 1: Utrustning
- Steg 2: Inställning av mikrokontroller
- Steg 3: MATLAB -inställning
- Steg 4: Funktioner
- Steg 5: Testning
- Steg 6: Slutsats
Video: Arduino luftkonditioneringsmodell: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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
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
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
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
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
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
Ä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:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
RC -spårad robot med Arduino - Steg för steg: 3 steg
RC -spårad robot med Arduino - Steg för steg: Hej killar, jag är tillbaka med ett annat häftigt robotchassi från BangGood. Hoppas att du har gått igenom våra tidigare projekt - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms och The Badland Braw
DIY Arduino robotarm, steg för steg: 9 steg
DIY Arduino robotarm, steg för steg: Denna handledning lär dig hur du bygger en robotarm själv