Mündəricat:

Arduino Kondisioner Modeli: 6 addım
Arduino Kondisioner Modeli: 6 addım

Video: Arduino Kondisioner Modeli: 6 addım

Video: Arduino Kondisioner Modeli: 6 addım
Video: Простое руководство по подключению электропроводки для электродвигателя вентилятора переменного тока 2024, Iyul
Anonim
Arduino Kondisioner Modeli
Arduino Kondisioner Modeli

Komandamızın marketinq məqsədləri üçün ağıllı bir qatar cihazı modelini qurma qabiliyyətinin bir hissəsi olaraq, məqsəd bir temperatur sensörünün dövrədən məlumatları oxuduğu və məlumatları hər ikisi olan bir temperatur dəyərinə çevirən bir sistem yaratmaq idi. işıqlı bir ekranda göstərilir və fanatın açılıb -açılmamasına diqqət yetirilir. Məqsəd, yaxınlıqdakı istiliyi göstərmək üçün də hərəkət edən avtomatlaşdırılmış sistemdən istifadə edərək sərnişinlərin minmə şəraitini təmin etməkdir.

Arduino mikro nəzarətçi dəsti və MATLAB 2016b və 2017b versiyalarını istifadə edərək, bu nəticələri nisbi uğurla nümayiş etdirə bildik.

Addım 1: Avadanlıq

Avadanlıq
Avadanlıq

Aşağıdakı mikro nəzarətçi dəsti:

-Sparkfun Red Board

-Sparkfun Çörək Paneli

-LCD lövhəsi

-Potansiyometr

-İstilik sensoru

-Servo

-USB/Arduino adapteri

-Jumper Wires (minimum 25)

USB girişi olan noutbuk (Windows 10)

3D çap obyekti (isteğe bağlı)

Addım 2: Mikrokontrolörün Qurulması

Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması
Mikro nəzarətçi qurulması

Bunu düşünün: bütün sistem, hər birinin son nəticə üçün əhəmiyyətli bir amil tətbiq etdiyi vahidlərdən ibarətdir. Bu səbəbdən, telləri qarışıq bir qarışıqlığa bağlamadan əvvəl bir dövrə görüntüsü qurmaq çox tövsiyə olunur.

Hər bir fərdi modelin şəkillərini Microcontroller alət dəstinin təlimatında və ya https://learn.sparkfun.com/tutorials/tags/arduino?page=all ünvanındakı veb saytında tapa bilərsiniz.

İstilik sensoru, potansiyometr, servo bağlayıcılar və LCD -ni lövhəyə bağlamaqla başlayın. LCD -nin ölçüsünə və tellərin sayına olan tələbə görə, digər yarısında digər hissələrlə çörək taxtasının öz yarısına yerləşdirilməsi və potansiyometrin kiminsə istədiyi yerdə olması tövsiyə olunur. düyməsini asanlıqla çevirin.

İstinad üçün:

LCD: c1-16

Servo: i1-3 (GND + -)

Temperatur Sensoru: i13-15 (- GND +)

Potansiyometr: g24-26 (- GND +)

Sonra, mikro nəzarət cihazlarının hər bir pininə tullanan telləri bağlamağa başlayın; Ümumi möhtəşəm sxemdə ixtiyari olsa da, dizayn bu vacib əlaqələrlə yaradılmışdır:

Potensiometrin LCD -yə qoşulması: f25 - e3

Servo GND teli: j1 - Rəqəmsal Giriş 9

Temp Sensoru GND: j14 - Analog Giriş 0

LCD girişləri: e11-e15-Rəqəmsal Giriş 2-5

e4 - Rəqəmsal Giriş 7

e6 - Rəqəmsal Giriş 6

(Qeyd: Uğurlu olarsa, LCD -nin kənarındakı hər iki işıq yanıb -sönməlidir və potensiometr, adapterdən güc aldıqdan sonra parlaqlığını tənzimləməyə kömək edə bilər.)

İsteğe bağlı: Tələbin bir hissəsi olaraq 3D çap obyekti istifadə edilmişdir. Daha kövrək hissələrə potensial ziyan vurmamaq üçün LCD ətrafına bir qol olaraq uzadılmış bir çanta qoyulmuşdur. LCD ekranın ölçülərinin təxminən 2-13/16 "x 1-1/16" x 1/4 "olduğu sübut edildi və beləliklə yalnız hündürlüyü əhəmiyyətli dərəcədə dəyişdirildi. 3D printer hazırdırsa, şəxsi bir obyekt əlavə etməyi düşünün. ölçüsünün fərqli ola biləcəyini də unutmayın.

Addım 3: MATLAB Quraşdırması

MATLAB Quraşdırması
MATLAB Quraşdırması
MATLAB Quraşdırması
MATLAB Quraşdırması

MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle saytında mövcud olan daha yenilənmiş MATLAB (2016a və sonrakı) versiyasını quraşdırın. Açıldıqdan sonra, Ev sekmesindeki Əlavələrə gedin və əlçatan olması üçün mikro nəzarətçi əmrləri üçün "Arduino Donanımı üçün MATLAB Dəstək Paketi" ni yükləyin.

Tamamlandıqdan sonra mikrokontrolörün kompüterə/noutbuka olan bağlantısını tapmaq üçün bir test edilə bilər. Alətlər dəstindən USB adapteri ilə bağladıqdan sonra "fopen (serial ('nada'))" əmrini daxil edin.

Hər zaman eyni giriş olduğu müddətdə arduino obyekti yaratmaq üçün lazım olacaq konnektorun "COM#" olduğunu bildirən bir səhv mesajı görünəcək.

LCD -nin Arduino kitabxanası ilə birbaşa əlaqəsi olmadığı üçün mesajları göstərmək üçün yeni bir kitabxana yaradılmalıdır. "Arduino LCD" axtarışından sonra +arduinoioaddons qovluğuna yerləşdirdikdən sonra MATLAB yardım pəncərəsində tapılan LCD nümunəsindən bir LCDAddon.m faylı yaratmaq və ya əlavə edilmiş sıxılmış qovluqdan istifadə etmək və bütün məzmununu yuxarıda göstərilənlərə kopyalamaq tövsiyə olunur. qovluq.

Uğurlu olarsa, MATLAB -da bir Arduino obyekti yaratmaq kodu aşağıda göstərildiyi kimidir.

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

Addım 4: Funksiyalar

Funksiyalar
Funksiyalar
Funksiyalar
Funksiyalar

MATLAB funksiyası yaradın. Girişlər üçün "eff" və "T_min" dəyişənlərindən istifadə edirik; Çıxışlar üçün ümumi dizaynda lazımsız olsa da, nəticələrdən alınan məlumatları ehtiva etmək üçün "B" dəyişənindən istifadə etdik. "Eff" girişi servonun maksimum sürətini idarə etməyə imkan verir və "T_min" girişi istədiyiniz minimum temperaturu idarə edir. "B" dəyəri beləliklə, vaxt, temperatur və fanın səmərəliliyi üçün üç sütundan ibarət bir matris istehsal etməlidir. Ayrıca, detallara əlavə olaraq, aşağıda göstərilən kod, istədiyiniz minimum temperatura yaxınlaşdıqda fan sürətinin yüzdə 50 azaldılacağı bir if-ifadəsinə də malikdir.

Bütün girişlər və tullanan tellər tam olaraq yerləşdirilərsə və arduino bağlantısının portunun COM4 olduğunu və funksiyanın adını "fanread" olduğunu qəbul etsəniz, aşağıdakı kod kifayət olmalıdır:

funksiya [B] = fan oxu (Tmin, eff)

aydın a; aydın lcd; a = arduino ('com4', 'uno', 'Kitabxanalar', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; saniyə ərzində % vaxt

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

initializeLCD (lcd, 'Satırlar', 2, 'Sütunlar', 2);

əgər eff> = 1 || e <0

səhv ('eff 0 ilə 1 arasında ayarlanmadıqda fanat aktiv olmayacaq')

bitmək

t = 1 üçün: 10 % döngə/fasilə sayı

aydın c; % xətanın təkrarlanmasının qarşısını alır

v = readVoltage (a, 'A0');

TempC = (v-0.5)*100; 2.7-5.5 V gərginlik aralığının qiymətləndirilməsi

əgər TempC> Tmin TempC olarsa

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

writePWMDutyCycle (a, 'D9', eff/2); yarı sürətlə servo yandırın

spd = 50;

başqa

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

writePWMDutyCycle (a, 'D9', eff); verilən sürətlə servo yandırın

spd = 100;

bitmək

başqa

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

writePWMDutyCycle (a, 'D9', 0); artıq aktivdirsə % bağlayın

spd = 0;

bitmək

printLCD (lcd, c);

fasilə (3); Döngü başına üç saniyə keçir

vaxt (t) = t.*3;

tempplot (t) = TempC;

hərəkət (t) = spd;

alt plan (2, 1, 1)

süjet (vaxt, temprlot, 'b-o') % xətt qrafiki

ox ([0 33 0 40])

xlabel ('Zaman (saniyə)')

ylabel ('Temperatur (C)')

gözlə

süjet ([0 33], [Tmin Tmin], 'r-')

gözlə

süjet ([0 33], [Tmin+2 Tmin+2], 'g-')

alt plan (2, 1, 2)

bar (vaxt, hərəkət) % bar qrafiki

xlabel ('Zaman (saniyə)')

ylabel ('Effektivlik (%)')

bitmək

B = köçürmə ([vaxt; temprlot; hərəkət]);

bitmək

İndi funksiya tamamlandıqdan sonra sınamaq vaxtıdır.

Addım 5: Test

Test
Test
Test
Test

İndi "function_name (input_value_1, input_value_2)" daxil edərək əmr pəncərəsindəki funksiyanı yoxlayın və baxın. Artıq heç bir Arduino obyektinin olmadığından əmin olun; belədirsə, onu silmək üçün "a" silin. Səhvlər baş verərsə, hər hansı bir konnektorun yanlış yerdə olub -olmadığını yoxlayın və ya yanlış rəqəmsal və ya analoq girişlərin istifadə olunduğunu yoxlayın. Nəticələrin fərqli olacağı gözlənilir, baxmayaraq ki, bunun səbəbi müəyyən tullanan tellərin və temperatur sensorunun yerləşdirilməsidir.

Nəticələrin gözləntiləri servonun performansında və LCD -də olan məlumatlarda dəyişikliklərə səbəb olmalıdır. Hər üç saniyəlik fasilədə bir sətir temperaturu Selsi ilə göstərməli və fan tam sürətlə, yarım sürətlə və ya heç bir sürətlə işləyərkən fanın aktiv olub -olmamasını göstərməlidir. Məlumat çox güman ki, ardıcıl olmamalıdır, baxmayaraq ki, daha çox fərqli nəticə əldə etmək istəsəniz, "Tmin" dəyərini dövrənin istehsal etdiyi orta temperatura yaxın qoyun.

Addım 6: Nəticə

Nəticə
Nəticə

Sınaq və səhv yolu ilə yerinə yetirilməsi çətin bir iş olsa da, son nəticələr olduqca maraqlı və məmnun oldu. Bu cür bir sistem, müəyyən bir məqsədə çatmaq üçün bir araya gətirilmiş müstəqil hissələrin toplusu olaraq nə qədər mürəkkəb maşınların və hətta onların bəzi hissələrinin olduğunu göstərməyə kömək edir.

Son layihənin olduqca sadə dizaynı sayəsində, performansını yaxşılaşdırmaqda maraqlı olanlar, layihəni daha yaxşı və daha detallı edə biləcək son məhsula düzəlişlər və dəyişikliklər edə bilərlər. Bununla birlikdə, sistemin eyni nəticələr verməməsinə səbəb ola biləcək dövrənin gərginlik oxunuşunda sporadik dalğalanmalarla nəticələnən servonun aktivləşdirilməsi kimi dövrə zəifliklərini ortaya qoyur. Ayrıca, "eff" 0.4 və daha yüksək olaraq təyin edildikdə servo sürətində bir dəyişiklik görməklə bağlı problemlər var. Bir temperatur və rütubət sensoru istifadə olunsaydı, son model daha mürəkkəb olsa da daha ardıcıl dəyərlər təqdim edərdi. Buna baxmayaraq, bu, mürəkkəb bir maşının sadə hissələrinin birləşməsi kimi işləyə biləcəyini göstərən bir təcrübədir.

Tövsiyə: