Spisu treści:

Model klimatyzacji Arduino: 6 kroków
Model klimatyzacji Arduino: 6 kroków

Wideo: Model klimatyzacji Arduino: 6 kroków

Wideo: Model klimatyzacji Arduino: 6 kroków
Wideo: #6- Wyświetlacz - ARDUINO - Pierwsze kroki 2024, Lipiec
Anonim
Model klimatyzacji Arduino
Model klimatyzacji Arduino

W ramach demonstracji zdolności naszego zespołu do stworzenia modelu inteligentnego urządzenia pociągowego do celów marketingowych, celem było stworzenie systemu, w którym czujnik temperatury odczytuje dane z obwodu i konwertuje je na wartość temperatury, która jest jednocześnie wyświetlane na podświetlanym ekranie i skupiające się na tym, czy wentylator włącza się, czy wyłącza. Celem jest pomoc w dostosowaniu się do warunków jazdy pasażerów za pomocą zautomatyzowanego systemu, który również wyświetla temperaturę w bezpośrednim sąsiedztwie.

Korzystając z zestawu mikrokontrolera Arduino i wersji MATLAB 2016b i 2017b, byliśmy w stanie zademonstrować te wyniki ze względnym sukcesem.

Krok 1: Sprzęt

Ekwipunek
Ekwipunek

Zestaw mikrokontrolera z następującymi elementami:

-Sparkfun czerwona tablica

-Płyta chlebowa Sparkfun

-Płyta LCD

-Potencjometr

-Czujnik temperatury

-Serwo

-Adapter USB/Arduino

-Przewody połączeniowe (25, minimum)

Laptop (Windows 10) z wejściem USB

Drukowany obiekt 3D (opcjonalnie)

Krok 2: Konfiguracja mikrokontrolera

Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera
Konfiguracja mikrokontrolera

Rozważ to: cały system składa się z pojedynczych jednostek, z których każda ma istotny czynnik w kierunku końcowego wyniku. Z tego powodu zdecydowanie zaleca się skonfigurowanie obrazu obwodu przed podłączeniem przewodów w zawiłym bałaganie.

Obrazy każdego pojedynczego modelu można znaleźć w instrukcji zestawu narzędzi mikrokontrolera lub na jego stronie internetowej pod adresem

Zacznij od wpięcia na płytkę czujnika temperatury, potencjometru, złącz serwo oraz wyświetlacza LCD. Zaleca się, aby ze względu na wielkość wyświetlacza LCD i wymaganą liczbę przewodów, umieścić go na własnej połowie płytki stykowej z pozostałymi kawałkami na drugiej połowie i aby potencjometr znajdował się w miejscu, w którym ktoś może łatwo obrócić pokrętło.

Na przykład:

LCD: c1-16

Serwo: i1-3 (GND+-)

Czujnik temperatury: i13-15 (- GND +)

Potencjometr: g24-26 (-GND +)

Następnie rozpocznij podłączanie przewodów połączeniowych do każdego styku jednostek mikrokontrolera; choć arbitralny w ogólnym wielkim schemacie, projekt został stworzony z tymi ważnymi połączeniami:

Podłączanie potencjometru do LCD: f25 -- e3

Przewód serwo GND: j1 -- Wejście cyfrowe 9

GND czujnika temperatury: j14 -- Wejście analogowe 0

Wejścia LCD: e11-e15 -- Wejście cyfrowe 2-5

e4 -- Wejście cyfrowe 7

e6 -- Wejście cyfrowe 6

(Uwaga: Jeśli się powiedzie, obie kontrolki na krawędzi wyświetlacza LCD powinny migać, a potencjometr może pomóc w dostosowaniu jasności po podłączeniu zasilania z zasilacza.)

Opcjonalnie: wydrukowany obiekt 3D został użyty jako część wymagania. Aby uniknąć potencjalnego uszkodzenia bardziej delikatnych części, przedłużona obudowa została umieszczona jako rękaw wokół wyświetlacza LCD. Wymiary ekranu LCD okazały się być około 2-13/16" x 1-1/16" x 1/4", a więc tylko wysokość została znacząco zmieniona. Jeśli drukarka 3D jest łatwo dostępna, rozważ dodanie osobistego przedmiotu, choć niepotrzebne. Należy również pamiętać, że pomiary mogą się różnić.

Krok 3: Konfiguracja MATLAB

Konfiguracja MATLAB
Konfiguracja MATLAB
Konfiguracja MATLAB
Konfiguracja MATLAB

Zainstaluj bardziej zaktualizowaną wersję MATLAB (2016a i nowsze), dostępną na stronie MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Po otwarciu przejdź do Add-Ons na karcie Home i pobierz „MATLAB Support Package for Arduino Hardware”, aby uzyskać dostęp do poleceń mikrokontrolera.

Po zakończeniu można wykonać test, aby znaleźć połączenie mikrokontrolera z komputerem/laptopem. Po podłączeniu ich za pomocą przejściówki USB z zestawu narzędzi, wstawiamy polecenie „fopen(serial('nada')).”

Pojawi się komunikat o błędzie z informacją, że złącze to „COM#”, co będzie potrzebne do utworzenia obiektu arduino, o ile jest to zawsze to samo wejście.

Ponieważ wyświetlacz LCD nie ma bezpośredniego połączenia z biblioteką Arduino, należy utworzyć nową bibliotekę w celu wyświetlania komunikatów. Zaleca się utworzenie pliku LCDAddon.m z przykładu LCD znajdującego się w oknie pomocy MATLAB po wyszukaniu „Arduino LCD” i umieszczeniu go w folderze +arduinoioaddons lub skorzystanie z załączonego folderu skompresowanego i skopiowanie całej jego zawartości do wyżej wymienionego teczka.

Jeśli się powiedzie, kod do utworzenia obiektu Arduino w MATLAB jest pokazany poniżej.

a=arduino('com#', 'uno', 'Biblioteki', 'PrzykładowyLCD/LCDAddon');

Krok 4: Funkcje

Funkcje
Funkcje
Funkcje
Funkcje

Utwórz funkcję MATLAB. Jako dane wejściowe używamy zmiennych „eff” i „T_min”; dla wyników, choć niepotrzebnych w ogólnym projekcie, użyliśmy zmiennej „B” jako sposobu przechowywania danych z wyników. Wejście „eff” pozwala na zarządzanie maksymalną prędkością serwomechanizmu, a wejście „T_min” kontroluje minimalną żądaną temperaturę. Wartość „B” powinna zatem dawać macierz zawierającą trzy kolumny dla czasu, temperatury i wydajności wentylatora. Ponadto, jako bonus do szczegółów, poniższy kod zawiera również stwierdzenie „jeżeli”, tak że prędkość wentylatora zostanie zmniejszona o pięćdziesiąt procent, gdy zbliży się do pożądanej temperatury minimalnej.

Jeśli wszystkie wejścia i zworki są ułożone dokładnie i zakładając, że port połączenia arduino to COM4 i nazwa funkcji to „fanread”, wystarczy poniższy kod:

funkcja [B] = fanread(Tmin, eff)

jasne; clear lcd;a=arduino('com4', 'uno', 'Biblioteki', 'PrzykładowyLCD/LCDAddon');

t=0; t_maks=15; % czasu w sekundach

lcd=addon(a, 'Przykładowy LCD/LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

initializeLCD(lcd, 'Wiersze', 2, 'Kolumny', 2);

jeśli eff>=1 || e<0

error('Wentylator nie uruchomi się, jeśli eff nie zostanie ustawione między 0 a 1.')

kończyć się

dla t=1:10 % liczba pętli/interwałów

jasne c; % zapobiega powtarzającym się błędom

v=odczytaj napięcie(a, 'A0');

TempC=(v-0,5)*100; Oszacowanie % dla zakresów napięcia 2,7-5,5 V

jeśli TempC>Tmin jeśli TempC

c=['Temp', num2str(TempC, 3), 'C włączone'];

writePWMDutyCycle(a, 'D9', eff/2); % włącz serwo przy połowie prędkości

spd=50;

w przeciwnym razie

c=['Temp', num2str(TempC, 3), 'C włączone'];

writePWMDutyCycle(a, 'D9', eff); % włącz serwo przy podanej prędkości

spd=100;

kończyć się

w przeciwnym razie

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

writePWMDutyCycle(a, 'D9', 0); % wyłączony, jeśli jest już włączony

spd=0;

kończyć się

printLCD(lcd, c);

pauza(3); % trzy sekundy upływają na pętlę

czas(t)=t.*3;

wykres temp(t)=TempC;

akt(t)=spd;

działka podrzędna(2, 1, 1)

plot(czas, tempplot, 'b-o') % line graph

oś ([0 33 0 40])

xlabel('Czas (sekundy)')

ylabel('Temperatura (C)')

trzymać się

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

trzymać się

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

działka podrzędna(2, 1, 2)

bar(czas, akt) % wykres słupkowy

xlabel('Czas (sekundy)')

ylabel('Wydajność (%)')

kończyć się

B=transpozycja([czas;wykres temp;akt]);

kończyć się

Teraz, gdy funkcja jest gotowa, nadszedł czas na przetestowanie.

Krok 5: Testowanie

Testowanie
Testowanie
Testowanie
Testowanie

Teraz przetestuj funkcję w oknie poleceń, wstawiając „nazwa_funkcji(wartość_wejściowa_1, wartość_wejściowa_2)” i obserwuj. Upewnij się, że żaden obiekt Arduino nie istnieje; jeśli tak, użyj polecenia „clear a”, aby go usunąć. Jeśli wystąpią błędy, sprawdź i zobacz, czy jakieś złącza nie są w niewłaściwym miejscu lub czy nie użyto niewłaściwych wejść cyfrowych lub analogowych. Oczekuje się, że wyniki będą się różnić, chociaż może to być spowodowane umieszczeniem niektórych przewodów połączeniowych i czujnika temperatury.

Oczekiwania wyników powinny spowodować zmiany w wydajności serwomechanizmu i danych na wyświetlaczu LCD. Co trzy sekundy linia tekstu powinna wyświetlać temperaturę w stopniach Celsjusza oraz to, czy wentylator jest aktywny, gdy wentylator pracuje z pełną prędkością, połówkową prędkością lub bez prędkości. Dane najprawdopodobniej nie powinny być spójne, ale jeśli chcesz uzyskać więcej różnych wyników, umieść wartość „Tmin” zbliżoną do średniej temperatury wytwarzanej przez obwód.

Krok 6: Wniosek

Wniosek
Wniosek

Choć było to żmudne zadanie do wykonania metodą prób i błędów, efekt końcowy okazał się dość interesujący i satysfakcjonujący. System jako taki pomaga zilustrować, jak wiele skomplikowanych maszyn, a nawet niektórych ich części, można postrzegać jako zbiór niezależnych części umieszczonych razem, aby osiągnąć określony cel.

Ze względu na dość uproszczony projekt końcowego projektu, ci, którzy są zainteresowani poprawą jego wydajności, mogą wprowadzać poprawki i zmiany w produkcie końcowym, które mogą uczynić projekt lepszym i bardziej dopracowanym. Jednak ujawnia słabości w obwodzie, takie jak aktywacja serwomechanizmu, powodująca sporadyczne wahania odczytu napięcia w obwodzie, co może spowodować, że system nigdy nie uzyska identycznych wyników. Pojawiły się również problemy z widzeniem zmiany prędkości serwomechanizmu, gdy „eff” jest ustawione na 0,4 lub więcej. Gdyby zastosowano czujnik temperatury i wilgotności, ostateczny model byłby bardziej skomplikowany, ale prezentowałby bardziej spójne wartości. Niemniej jednak jest to doświadczenie, które pokazuje, że złożona maszyna może funkcjonować jako kombinacja jej prostych części.

Zalecana: