Inhaltsverzeichnis:

Arduino Klimaanlage Modell - Gunook
Arduino Klimaanlage Modell - Gunook

Video: Arduino Klimaanlage Modell - Gunook

Video: Arduino Klimaanlage Modell - Gunook
Video: Как сделать модуль Пельтье кондиционера Пельтье своими руками 2024, Juli
Anonim
Arduino-Klimaanlagenmodell
Arduino-Klimaanlagenmodell

Als Teil einer Demonstration der Fähigkeit unseres Teams, ein Modell eines intelligenten Zuggeräts für Marketingzwecke zu erstellen, bestand das Ziel darin, ein System zu entwickeln, in dem ein Temperatursensor Daten aus der Schaltung liest und die Informationen in einen Temperaturwert umwandelt, der beides ist auf einem beleuchteten Bildschirm angezeigt und darauf fokussiert, ob sich ein Lüfter ein- oder ausschaltet. Der Zweck besteht darin, die Fahrbedingungen der Passagiere durch ein automatisiertes System zu unterstützen, das auch die Temperatur in der unmittelbaren Umgebung anzeigt.

Durch die Verwendung eines Arduino-Mikrocontroller-Kits und der MATLAB-Versionen 2016b und 2017b konnten wir diese Ergebnisse relativ erfolgreich demonstrieren.

Schritt 1: Ausrüstung

Ausrüstung
Ausrüstung

Mikrocontroller-Kit mit folgenden Komponenten:

-Sparkfun Rotes Brett

-Sparkfun-Breadboard

-LCD-Platine

-Potentiometer

-Temperatursensor

-Servo

-USB/Arduino-Adapter

-Überbrückungsdrähte (mindestens 25)

Laptop (Windows 10) mit USB-Eingang

3D-gedrucktes Objekt (optional)

Schritt 2: Mikrocontroller-Setup

Mikrocontroller-Setup
Mikrocontroller-Setup
Mikrocontroller-Setup
Mikrocontroller-Setup
Mikrocontroller-Setup
Mikrocontroller-Setup
Mikrocontroller-Setup
Mikrocontroller-Setup

Bedenken Sie Folgendes: Das gesamte System besteht aus einzelnen Einheiten, die jeweils einen signifikanten Faktor für das Endergebnis haben. Aus diesem Grund wird dringend empfohlen, ein Bild der Schaltung zu erstellen, bevor Sie Drähte in einem verworrenen Durcheinander anbringen.

Bilder jedes einzelnen Modells finden Sie im Handbuch des Microcontroller-Toolkits oder auf seiner Website unter

Beginnen Sie mit dem Anbringen des Temperatursensors, des Potentiometers, der Servoanschlüsse und des LCD auf der Platine. Aufgrund der Größe und der Anforderungen an die Anzahl der Drähte des LCDs wird empfohlen, es auf seiner eigenen Hälfte des Steckbretts mit den anderen Teilen auf der anderen Hälfte zu platzieren und das Potentiometer in einem Bereich zu platzieren, in dem sich jemand befinden kann leicht den Knopf drehen.

Als Referenz:

LCD: c1-16

Servo: i1-3 (GND + -)

Temperatursensor: i13-15 (- GND +)

Potentiometer: g24-26 (- GND +)

Beginnen Sie als Nächstes mit dem Anschließen von Überbrückungsdrähten an jeden Pin der Mikrocontroller-Einheiten; Obwohl im Gesamtkonzept willkürlich, wurde das Design mit diesen wichtigen Verbindungen erstellt:

Potentiometer an LCD anschließen: f25 -- e3

Servo-GND-Draht: j1 -- Digitaleingang 9

Temperatursensor GND: j14 -- Analogeingang 0

LCD-Eingänge: e11-e15 -- Digitaleingang 2-5

e4 -- Digitaleingang 7

e6 -- Digitaleingang 6

(Hinweis: Bei Erfolg sollten beide Lichter am Rand des LCDs aufleuchten und das Potentiometer kann helfen, seine Helligkeit anzupassen, sobald es vom Adapter mit Strom versorgt wird.)

Optional: Als Teil einer Anforderung wurde ein 3D-gedrucktes Objekt verwendet. Um eine mögliche Beschädigung der zerbrechlicheren Teile zu vermeiden, wurde ein verlängertes Gehäuse als Hülle um das LCD gelegt. Die Abmessungen des LCD-Bildschirms ergaben ungefähr 2-13/16" x 1-1/16" x 1/4", und daher wurde nur die Höhe signifikant geändert. Wenn ein 3D-Drucker verfügbar ist, ziehen Sie in Betracht, einen persönlichen Gegenstand hinzuzufügen Beachten Sie außerdem, dass die Maße abweichen können.

Schritt 3: MATLAB-Setup

MATLAB-Setup
MATLAB-Setup
MATLAB-Setup
MATLAB-Setup

Installieren Sie eine aktualisierte Version von MATLAB (2016a und höher), verfügbar auf der MathWorks-Website https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Gehen Sie nach dem Öffnen zu Add-Ons auf der Registerkarte Home und laden Sie "MATLAB Support Package for Arduino Hardware" herunter, damit die Mikrocontrollerbefehle zugänglich sind.

Nach Abschluss kann ein Test durchgeführt werden, um die Konnektivität des Mikrocontrollers mit dem Computer/Laptop zu ermitteln. Nachdem Sie sie mit dem USB-Adapter aus dem Toolkit verbunden haben, fügen Sie den Befehl "fopen(serial('nada'))" ein.

Eine Fehlermeldung wird angezeigt, die den Connector als "COM#" angibt, der zum Erstellen eines Arduino-Objekts erforderlich ist, solange es sich zu jeder Zeit um dieselbe Eingabe handelt.

Da das LCD keine direkte Verbindung zur Arduino-Bibliothek hat, muss eine neue Bibliothek erstellt werden, um Meldungen anzuzeigen. Eine Empfehlung ist, eine LCDAddon.m-Datei aus dem LCD-Beispiel im MATLAB-Hilfefenster zu erstellen, nachdem Sie "Arduino LCD" gesucht und im Ordner +arduinoioaddons abgelegt haben, oder verwenden Sie den angehängten komprimierten Ordner und kopieren Sie den gesamten Inhalt in das oben genannte Mappe.

Bei Erfolg ist der Code zum Erstellen eines Arduino-Objekts in MATLAB wie unten gezeigt.

a=arduino('com#', 'uno', 'Bibliotheken', 'BeispielLCD/LCDAddon');

Schritt 4: Funktionen

Funktionen
Funktionen
Funktionen
Funktionen

Erstellen Sie eine MATLAB-Funktion. Für die Eingänge verwenden wir die Variablen "eff" und "T_min"; für Ausgaben, obwohl im Gesamtdesign unnötig, haben wir die Variable "B" verwendet, um Daten aus den Ergebnissen zu enthalten. Der Eingang "eff" ermöglicht die Steuerung der maximalen Geschwindigkeit des Servos und der Eingang "T_min" steuert die gewünschte minimale Temperatur. Der Wert „B“sollte also eine Matrix ergeben, die drei Spalten für die Zeit, die Temperatur und den Wirkungsgrad des Ventilators enthält. Als Bonus zum Detail enthält der unten aufgeführte Code auch eine if-Anweisung, sodass die Lüfterdrehzahl um fünfzig Prozent reduziert wird, wenn sie sich der gewünschten Mindesttemperatur nähert.

Wenn alle Eingänge und Jumperdrähte genau platziert sind und der Port der Arduino-Verbindung COM4 ist und der Funktionsname "fanread" ist, sollte der folgende Code ausreichen:

Funktion [B] = Fanread(Tmin, eff)

klar a; clear lcd;a=arduino('com4', 'uno', 'Bibliotheken', 'BeispielLCD/LCDAddon');

t=0; t_max=15; % Zeit in Sekunden

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

initializeLCD(lcd, 'Zeilen', 2, 'Spalten', 2);

wenn eff>=1 || e<0

error('Lüfter wird nicht aktiviert, wenn eff nicht zwischen 0 und 1 eingestellt ist.')

Ende

für t=1:10 % Anzahl Schleifen/Intervalle

klar c; % verhindern Wiederholungsfehler

v = Lesespannung (a, 'A0');

TemperaturC = (v-0,5)*100; % Schätzung für Spannungsbereiche 2,7-5,5 V

wenn TempC>Tmin wenn TempC

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

writePWMDutyCycle(a, 'D9', eff/2); % Servo mit halber Geschwindigkeit einschalten

Drehzahl = 50;

anders

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

writePWMDutyCycle(a, 'D9', eff); % Servo mit der angegebenen Geschwindigkeit einschalten

Drehzahl = 100;

Ende

anders

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

writePWMDutyCycle(a, 'D9', 0); % herunterfahren, wenn bereits eingeschaltet

spd=0;

Ende

printLCD (LCD, c);

Pause(3); % drei Sekunden vergehen pro Schleife

Zeit (t) = t.*3;

tempplot(t)=TempC;

Akt(t)=spd;

Nebenhandlung(2, 1, 1)

plot(time, tempplot, 'b-o') % Liniendiagramm

Achse([0 33 0 40])

xlabel('Zeit (Sekunden)')

ylabel('Temperatur (C)')

festhalten

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

festhalten

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

Nebenhandlung(2, 1, 2)

bar(Zeit, Akt) % Balkendiagramm

xlabel('Zeit (Sekunden)')

ylabel('Effizienz (%)')

Ende

B=transponieren([Zeit;Tempplot;Akt]);

Ende

Nun, da die Funktion abgeschlossen ist, ist es Zeit zu testen.

Schritt 5: Testen

Testen
Testen
Testen
Testen

Testen Sie nun die Funktion im Befehlsfenster, indem Sie "function_name(input_value_1, input_value_2)" einfügen und beobachten. Stellen Sie sicher, dass noch kein Arduino-Objekt vorhanden ist; Wenn ja, verwenden Sie den Befehl "clear a", um es zu entfernen. Wenn Fehler auftreten, prüfen Sie, ob Stecker an der falschen Stelle sitzen oder ob die falschen digitalen oder analogen Eingänge verwendet werden. Es wird erwartet, dass die Ergebnisse variieren, obwohl dies durch die Platzierung bestimmter Überbrückungsdrähte und des Temperatursensors verursacht werden kann.

Die Erwartungen an die Ergebnisse sollten zu Änderungen in der Leistung des Servos und der Daten auf dem LCD führen. In jedem 3-Sekunden-Intervall sollte eine Textzeile die Temperatur in Celsius anzeigen und ob der Lüfter aktiv ist oder nicht, während der Lüfter mit voller, halber oder keiner Geschwindigkeit läuft. Die Daten sollten höchstwahrscheinlich nicht konsistent sein. Wenn Sie jedoch verschiedene Ergebnisse wünschen, platzieren Sie den "Tmin" -Wert nahe der durchschnittlichen Temperatur, die von der Schaltung erzeugt wird.

Schritt 6: Fazit

Abschluss
Abschluss

Obwohl es eine mühsame Aufgabe war, die durch Versuch und Irrtum zu bewältigen war, erwiesen sich die Endergebnisse als ziemlich interessant und zufriedenstellend. Ein System als solches hilft zu veranschaulichen, wie viele komplizierte Maschinen oder sogar einige ihrer Teile als eine Ansammlung unabhängiger Teile betrachtet werden können, die zusammengefügt werden, um ein bestimmtes Ziel zu erreichen.

Aufgrund des eher vereinfachten Designs des endgültigen Projekts können diejenigen, die daran interessiert sind, seine Leistung zu verbessern, Optimierungen und Änderungen am Endprodukt vornehmen, die das Projekt besser und aufwendiger machen können. Es zeigt jedoch Schwächen in der Schaltung auf, wie z. B. die Aktivierung des Servos, die zu sporadischen Schwankungen der Spannungsanzeige der Schaltung führt, die dazu führen können, dass das System niemals identische Ergebnisse liefert. Außerdem gab es Probleme mit der Anzeige einer Änderung der Servogeschwindigkeit, wenn "eff" auf 0,4 und höher eingestellt ist. Wäre ein Temperatur- und Feuchtigkeitssensor verwendet worden, wäre das endgültige Modell komplizierter, hätte aber konsistentere Werte. Dies ist jedoch eine Erfahrung, die zeigt, dass eine komplexe Maschine als Kombination ihrer einfachen Teile funktionieren kann.

Empfohlen: