Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:56
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
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ı
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ı
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
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
İ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ə
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ə:
DIY Kova Kondisioner: 13 Addım (Şəkillərlə birlikdə)
DIY Bucket Kondisioner: Hindistanın cənubunda olduqca isti bir yerdə yaşayıram və iş yerim tıxanır. Köhnə bir kovanı DIY kondisionerinə çevirərək bu problemə səliqəli bir həll tapdım. AC modeli çox sadə, ucuz olsa da təsirlidir
Avtomatik Kondisioner Anahtarı: 5 addım
Avtomatik Kondisioner Şalteri: İnsanların gündəlik həyatlarında etməli olduqları müxtəlif fərqli şeylər olduğu üçün, bəzi kiçik detalları tez -tez unuduruq, bəzən ağır nəticələrə səbəb oluruq, kondisioneri söndürməyi unutmaq da onlardan biridir. İnsanlar təsadüfən
Avtomatik Fan/Kondisioner Sistemi: 6 Addım
Avtomatik Fan/Kondisioner Sistemi: Xoş gəldiniz! Bu Təlimat kitabında sizə öz şəxsi Fan/Kondisioner Sisteminizi necə quracağınızı izah edəcəyəm. Bu Təlimat yazın istisində otaqları sərinləmək üçün istifadə olunan bir pəncərə fanatı ilə məşğul olur. Bu layihənin məqsədi
İş və Təmiri ilə Kondisioner PCB Təlimatı: 6 Addım
Kondisioner PCB Təlimatı İşi və Təmiri ilə: Hey, nə var, uşaqlar! Akarsh burada CETech -dən. Kondisionerlərinizin içərisində nə baş verdiyini heç düşündünüzmü? Bəli, onda bu məqaləni keçməlisiniz, çünki bu gün əlaqələr və əlaqələr haqqında bir fikir verəcəyəm
Avtomatik Kondisioner Cihazı: 5 addım
Avtomatik Kondisioner Cihazı: Bu cihaz Avtomatik Açma Kondisioner Cihazı adlanır. İsti otağınızda olanda və məktəbi yeni bitirmiş olsanız, kondisioneri açmaq üçün çox yoruldunuz, bu cihaz sizin üçün idealdır. Bu cihazın mexanizmi çox sadədir. W