Inhoudsopgave:
- Stap 1: Apparatuur
- Stap 2: Microcontroller instellen
- Stap 3: MATLAB-configuratie
- Stap 4: Functies
- Stap 5: Testen
- Stap 6: Conclusie
Video: Arduino airconditioningmodel - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Als onderdeel van een demonstratie van het vermogen van ons team om een model van een slim treinapparaat te maken voor marketingdoeleinden, was het doel om een systeem te creëren waarin een temperatuursensor gegevens van het circuit leest en de informatie omzet in een temperatuurwaarde die zowel weergegeven op een verlicht scherm en gericht op het feit of een ventilator in- of uitgeschakeld wordt. Het doel is om de rijomstandigheden van passagiers aan te passen met behulp van een geautomatiseerd systeem dat ook de temperatuur in de directe omgeving weergeeft.
Door een Arduino-microcontrollerkit en MATLAB-versies 2016b en 2017b te gebruiken, konden we deze resultaten met relatief succes demonstreren.
Stap 1: Apparatuur
Microcontrollerkit met het volgende:
-Sparkfun Rood Bord
-Sparkfun Breadboard
-LCD-bord
-Potentiometer
-Temperatuursensor
-Servo
-USB/Arduino-adapter
-Jumperdraden (25, minimum)
Laptop (Windows 10) met USB-ingang
3D-geprint object (optioneel)
Stap 2: Microcontroller instellen
Overweeg dit: het hele systeem is samengesteld uit afzonderlijke eenheden die elk een significante factor zijn voor het uiteindelijke resultaat. Om deze reden wordt het ten zeerste aanbevolen om een afbeelding van het circuit in te stellen voordat u draden in een ingewikkelde puinhoop bevestigt.
Afbeeldingen van elk afzonderlijk model zijn te vinden in de handleiding van de Microcontroller-toolkit of op de website op
Begin met het bevestigen van de temperatuursensor, potentiometer, servoconnectoren en LCD op het bord. Het wordt aanbevolen dat vanwege de grootte van het LCD-scherm en het vereiste aantal draden ervoor, het op zijn eigen helft van het breadboard moet worden geplaatst met de andere stukken op de andere helft en dat de potentiometer zich in een gebied bevindt waar iemand kan gemakkelijk aan de knop draaien.
Als referentie:
LCD: c1-16
Servo: i1-3 (GND + -)
Temperatuursensor: i13-15 (- GND +)
Potentiometer: g24-26 (- GND +)
Begin vervolgens met het aansluiten van jumperdraden op elke pin van de microcontroller-eenheden; hoewel willekeurig in het algehele grote schema, is het ontwerp gemaakt met deze belangrijke verbindingen:
Potentiometer aansluiten op LCD: f25 -- e3
Servo GND-draad: j1 -- Digitale ingang 9
Temp Sensor GND: j14 -- Analoge ingang 0
LCD-ingangen: e11-e15 -- Digitale ingang 2-5
e4 -- Digitale ingang 7
e6 -- Digitale ingang 6
(Opmerking: als dit lukt, moeten beide lampjes aan de rand van het LCD-scherm gaan branden en kan de potentiometer helpen de helderheid aan te passen zodra de adapter stroom krijgt.)
Optioneel: Een 3D-geprint object werd gebruikt als onderdeel van een vereiste. Om mogelijke schade aan de meer fragiele onderdelen te voorkomen, werd een verlengde behuizing als een hoes rond het LCD-scherm geplaatst. De afmetingen van het LCD-scherm bleken ongeveer 2-13/16" x 1-1/16" x 1/4" te zijn, en dus was alleen de hoogte significant veranderd. Als een 3D-printer direct beschikbaar is, overweeg dan om een persoonlijk object toe te voegen, hoewel onnodig. Houd er ook rekening mee dat metingen kunnen verschillen.
Stap 3: MATLAB-configuratie
Installeer een meer bijgewerkte versie van MATLAB (2016a en later), beschikbaar op de MathWorks-website https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Eenmaal geopend, ga naar Add-Ons op het tabblad Home en download "MATLAB Support Package for Arduino Hardware" om de microcontroller-opdrachten toegankelijk te maken.
Eenmaal voltooid, kan een test worden gedaan om de connectiviteit van de microcontroller met de computer/laptop te vinden. Nadat u ze met de USB-adapter uit de toolkit hebt verbonden, voert u het commando "fopen(serial('nada'))" in.
Er verschijnt een foutmelding met de connector als "COM#", die nodig is om een Arduino-object te maken, zolang het maar dezelfde invoer is.
Omdat het LCD-scherm geen directe verbinding heeft met de Arduino-bibliotheek, moet een nieuwe bibliotheek worden gemaakt om berichten weer te geven. Een aanbeveling is om een LCDAddon.m-bestand te maken van het LCD-voorbeeld in het MATLAB-helpvenster na het zoeken naar "Arduino LCD" en het in de map +arduinoioaddons te plaatsen, of gebruik de bijgevoegde gecomprimeerde map en kopieer alle inhoud naar de bovengenoemde map.
Als dit lukt, is de code om een Arduino-object in MATLAB te maken zoals hieronder weergegeven.
a=arduino('com#', 'uno', 'Bibliotheken', 'ExampleLCD/LCDAddon');
Stap 4: Functies
Maak een MATLAB-functie. Voor de invoer gebruiken we variabelen "eff" en "T_min"; voor uitvoer, hoewel onnodig in het algehele ontwerp, gebruikten we variabele "B" als een manier om gegevens uit de resultaten te bevatten. De "eff"-ingang zorgt voor het beheer van de maximale snelheid van de servo, en de "T_min"-ingang regelt de gewenste minimumtemperatuur. De waarde "B" zou dus een matrix moeten opleveren die drie kolommen bevat voor de tijd, de temperatuur en het rendement van de ventilator. Als bonus voor detail heeft de onderstaande code ook een if-statement, zodat de ventilatorsnelheid met vijftig procent wordt verlaagd wanneer deze in de buurt komt van de gewenste minimumtemperatuur.
Als alle ingangen en jumperdraden exact zijn geplaatst en aangenomen dat de poort van de arduino-verbinding COM4 is en de functienaam "fanread" is, zou de volgende code voldoende moeten zijn:
functie [B] = fanread(Tmin, eff)
duidelijk een; clear lcd;a=arduino('com4', 'uno', 'Bibliotheken', 'ExampleLCD/LCDAddon');
t=0; t_max=15; % tijd in seconden
lcd=addon (a, 'VoorbeeldLCD/LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});
initializeLCD(lcd, 'Rijen', 2, 'Kolommen', 2);
if eff>=1 || e<0
error('Ventilator wordt niet geactiveerd tenzij eff is ingesteld tussen 0 en 1.')
einde
voor t=1:10 % aantal lussen/intervallen
duidelijk c; % voorkomen herhalende fout
v=leesVoltage(a, 'A0');
TempC=(v-0,5)*100; % schatting voor spanningsbereiken 2,7-5,5 V
als TempC>Tmin als TempC
c=['Temp ', num2str(TempC, 3), 'C Aan'];
schrijfPWMDutyCycle(a, 'D9', eff/2); % zet servo aan op halve snelheid
snelheid = 50;
anders
c=['Temp ', num2str(TempC, 3), 'C Aan'];
schrijfPWMDutyCycle(a, 'D9', eff); % zet servo aan op gegeven snelheid
snelheid = 100;
einde
anders
c=['Temp ', num2str(TempC, 3), 'C Uit'];
schrijfPWMDutyCycle(a, 'D9', 0); % uitgeschakeld indien al aan
spd=0;
einde
printLCD(lcd, c);
pauze (3); % drie seconden verstrijken per lus
tijd(t)=t.*3;
tempplot(t)=TempC;
act(t)=spd;
subplot(2, 1, 1)
plot(time, tempplot, 'b-o') % lijngrafiek
as([0 33 0 40])
xlabel('Tijd (seconden)')
ylabel('Temperatuur (C)')
vasthouden
plot([0 33], [Tmin Tmin], 'r-')
vasthouden
plot([0 33], [Tmin+2 Tmin+2], 'g-')
subplot(2, 1, 2)
bar(tijd, handeling) % staafdiagram
xlabel('Tijd (seconden)')
ylabel('Efficiëntie (%)')
einde
B=transponeren([tijd;tempplot;act]);
einde
Nu de functie is voltooid, is het tijd om te testen.
Stap 5: Testen
Test nu de functie in het opdrachtvenster door "function_name(input_value_1, input_value_2)" in te voegen en te kijken. Zorg ervoor dat er al geen Arduino-object bestaat; zo ja, gebruik dan het commando "clear a" om het te verwijderen. Als er fouten optreden, controleer dan of er connectoren op de verkeerde plaats zitten of dat de verkeerde digitale of analoge ingangen worden gebruikt. De resultaten zullen naar verwachting variëren, hoewel dit kan worden veroorzaakt door de plaatsing van bepaalde jumperdraden en de temperatuursensor.
De verwachtingen van de resultaten moeten leiden tot veranderingen in de prestaties van de servo en de gegevens op het LCD-scherm. Met elk interval van drie seconden moet een regel tekst de temperatuur in Celsius weergeven en aangeven of de ventilator al dan niet actief is terwijl de ventilator op volle snelheid, halve snelheid of geen snelheid draait. De gegevens zouden hoogstwaarschijnlijk niet consistent moeten zijn, maar als u meer verschillende resultaten wenst, plaatst u de "Tmin" -waarde dicht bij de gemiddelde temperatuur die door het circuit wordt geproduceerd.
Stap 6: Conclusie
Hoewel het een zware taak was om met vallen en opstaan te volbrengen, bleken de uiteindelijke resultaten nogal interessant en bevredigend te zijn. Een systeem als zodanig helpt om te illustreren hoeveel gecompliceerde machines, of zelfs sommige van hun onderdelen, kunnen worden gezien als een verzameling onafhankelijke onderdelen die bij elkaar zijn geplaatst om een specifiek doel te bereiken.
Vanwege het nogal simplistische ontwerp van het uiteindelijke project, kunnen degenen die geïnteresseerd zijn in het verbeteren van de prestaties ervan tweaks en wijzigingen aanbrengen in het eindproduct die het project beter en uitgebreider kunnen maken. Het onthult echter zwakke punten in het circuit, zoals de activering van de servo, wat resulteert in sporadische fluctuaties in de spanningsaflezing van het circuit, waardoor het systeem nooit identieke resultaten kan produceren. Er zijn ook problemen geweest met het zien van een verandering in servosnelheid wanneer "eff" is ingesteld op 0,4 en hoger. Als er een temperatuur- en vochtigheidssensor was gebruikt, zou het uiteindelijke model ingewikkelder zijn en toch consistentere waarden opleveren. Toch is dit een ervaring die aantoont dat een complexe machine kan functioneren als een combinatie van zijn eenvoudige onderdelen.
Aanbevolen:
Hoe maak je RADAR met behulp van Arduino voor Science Project - Beste Arduino-projecten: 5 stappen
Hoe maak je RADAR met behulp van Arduino voor Science Project | Beste Arduino-projecten: Hallo vrienden, in deze instructable laat ik je zien hoe je een geweldig radarsysteem kunt maken dat is gebouwd met behulp van Arduino nano. Dit project is ideaal voor wetenschappelijke projecten en je kunt dit gemakkelijk doen met heel minder investeringen en kansen als het winnen van een prijs geweldig is om
Arduino als ISP -- Hex-bestand branden in AVR -- Zekering in AVR -- Arduino als programmeur: 10 stappen
Arduino als ISP || Hex-bestand branden in AVR || Zekering in AVR || Arduino als programmeur:…………………….. ABONNEER aub op mijn YouTube-kanaal voor meer video's…….. Dit artikel gaat helemaal over arduino als isp. Als u een hex-bestand wilt uploaden of als u uw zekering in AVR wilt plaatsen, hoeft u geen programmeur te kopen, u kunt dit doen
Arduino tekst-naar-spraak-converter met LM386 - Pratend Arduino-project - Talkie Arduino-bibliotheek: 5 stappen
Arduino tekst-naar-spraak-converter met LM386 | Pratend Arduino-project | Talkie Arduino-bibliotheek: Hallo allemaal, in veel projecten hebben we arduino nodig om zoiets als een pratende klok te spreken of wat gegevens te vertellen, dus in deze instructables zullen we tekst omzetten in spraak met behulp van Arduino
Pratende Arduino - Een MP3 afspelen met Arduino zonder enige module - Mp3-bestand afspelen vanaf Arduino met PCM: 6 stappen
Pratende Arduino | Een MP3 afspelen met Arduino zonder enige module | Mp3-bestand van Arduino afspelen met PCM: in deze instructie leren we hoe we een mp3-bestand met arduino kunnen spelen zonder een audiomodule te gebruiken, hier gaan we de PCM-bibliotheek voor Arduino gebruiken die 16 bit PCM van 8 kHz-frequentie speelt, dus laten we dit doen
Goedkoopste Arduino -- Kleinste Arduino -- Arduino Pro Mini -- Programmeren -- Arduino Neno: 6 stappen (met afbeeldingen)
Goedkoopste Arduino || Kleinste Arduino || Arduino Pro Mini || Programmeren || Arduino Neno:…………………………….. ABONNEER aub op mijn YouTube-kanaal voor meer video's……. Dit project gaat over hoe je een kleinste en goedkoopste arduino ooit kunt aansluiten. De kleinste en goedkoopste arduino is arduino pro mini. Het lijkt op arduino