İçindekiler:

Arduino Klima Modeli: 6 Adım
Arduino Klima Modeli: 6 Adım

Video: Arduino Klima Modeli: 6 Adım

Video: Arduino Klima Modeli: 6 Adım
Video: Arduino Nedir? Nasıl Kurulur ve Neler Yapılabilir? #1 2024, Temmuz
Anonim
Arduino Klima Modeli
Arduino Klima Modeli

Ekibimizin pazarlama amaçları için bir akıllı tren cihazı modeli oluşturma becerisinin bir gösteriminin parçası olarak amaç, bir sıcaklık sensörünün devreden veri okuduğu ve bilgiyi bir sıcaklık değerine dönüştürdüğü bir sistem oluşturmaktı. ışıklı bir ekranda görüntülenir ve bir fanın açılıp kapanmadığına odaklanılır. Amaç, yakın çevredeki sıcaklığı da gösteren otomatik bir sistem kullanarak yolcuların sürüş koşullarına uyum sağlamaya yardımcı olmaktır.

Bir Arduino mikrodenetleyici kiti ve 2016b ve 2017b MATLAB sürümlerini kullanarak, bu sonuçları göreceli başarı ile gösterebildik.

Adım 1: Ekipman

Teçhizat
Teçhizat

Aşağıdakilere sahip Mikrodenetleyici Kiti:

-Sparkfun Kırmızı Tahta

-Sparkfun Ekmek Tahtası

-LCD Kartı

-Potansiyometre

-Sıcaklık sensörü

-Servo

-USB/Arduino adaptörü

-Jumper Telleri (25, minimum)

USB girişli dizüstü bilgisayar (Windows 10)

3B Basılı Nesne (isteğe bağlı)

Adım 2: Mikrodenetleyici Kurulumu

Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu
Mikrodenetleyici Kurulumu

Şunu düşünün: tüm sistem, her biri nihai sonuca yönelik önemli bir faktör uygulayan tek birimlerden oluşur. Bu nedenle, kabloları karışık bir şekilde bağlamadan önce devrenin bir görüntüsünü kurmanız şiddetle tavsiye edilir.

Her bir modelin görüntüleri, Mikrodenetleyici araç kitinin kılavuzunda veya https://learn.sparkfun.com/tutorials/tags/arduino?page=all adresindeki web sitesinde bulunabilir.

Sıcaklık sensörünü, potansiyometreyi, servo konektörleri ve LCD'yi panoya takarak başlayın. LCD'nin boyutu ve kablo sayısı gerekliliği nedeniyle, devre tahtasının kendi yarısına, diğer parçalar ise diğer yarısına yerleştirilmesi ve potansiyometrenin birisinin görebileceği bir alanda olması önerilir. düğmesini kolayca çevirin.

Referans için:

LCD: c1-16

Servo: i1-3 (GND + -)

Sıcaklık Sensörü: i13-15 (- GND +)

Potansiyometre: g24-26 (- GND +)

Ardından, mikrodenetleyici birimlerinin her bir pimine atlama telleri bağlamaya başlayın; genel şemada keyfi olsa da, tasarım şu önemli bağlantılarla oluşturuldu:

Potansiyometreyi LCD'ye Bağlama: f25 -- e3

Servo GND kablosu: j1 -- Dijital Giriş 9

Sıcaklık Sensörü GND: j14 -- Analog Giriş 0

LCD girişleri: e11-e15 -- Dijital Giriş 2-5

e4 -- Dijital Giriş 7

e6 -- Dijital Giriş 6

(Not: Başarılı olursa, LCD'nin kenarındaki her iki ışık da yanıp sönmelidir ve adaptörden güç verildiğinde potansiyometre parlaklığını ayarlamaya yardımcı olabilir.)

İsteğe bağlı: Bir gereksinimin parçası olarak 3B yazdırılmış bir nesne kullanıldı. Daha kırılgan parçalara gelebilecek olası hasarı önlemek için, LCD'nin etrafına kılıf olarak uzatılmış bir kasa yerleştirildi. LCD ekranının ölçümlerinin yaklaşık 2-13/16" x 1-1/16" x 1/4" olduğu kanıtlandı ve bu nedenle yalnızca yükseklik önemli ölçüde değişti. Bir 3D yazıcı hazırsa, kişisel bir nesne eklemeyi düşünün, gereksiz olsa da, ölçümlerin farklılık gösterebileceğini de unutmayın.

Adım 3: MATLAB Kurulumu

MATLAB Kurulumu
MATLAB Kurulumu
MATLAB Kurulumu
MATLAB Kurulumu

MathWorks web sitesinde https://www.mathworks.com/products/matlab.html?s_tid=srchtitle bulunan MATLAB'ın (2016a ve sonrası) daha güncel bir sürümünü yükleyin. Açıldıktan sonra, Ana Sayfa sekmesindeki Eklentiler'e gidin ve mikrodenetleyici komutlarının erişilebilir olması için "Arduino Donanımı için MATLAB Destek Paketi"ni indirin.

Tamamlandığında, mikrodenetleyicinin kişinin bilgisayarına/dizüstü bilgisayarına bağlantısını bulmak için bir test yapılabilir. Bunları alet takımındaki USB adaptörüyle bağladıktan sonra "fopen(serial('nada'))" komutunu girin.

Her zaman aynı giriş olduğu sürece bir arduino nesnesi oluşturmak için gerekli olacak bağlayıcıyı "COM#" olarak belirten bir hata mesajı açılır.

LCD'nin Arduino kütüphanesine doğrudan bağlantısı olmadığından, mesajları görüntülemek için yeni bir kütüphane oluşturulmalıdır. Bir tavsiye, "Arduino LCD"yi aradıktan ve +arduinoioaddons klasörüne yerleştirdikten sonra MATLAB yardım penceresinde bulunan LCD örneğinden bir LCDAddon.m dosyası oluşturmak veya ekteki sıkıştırılmış klasörü kullanmak ve tüm içeriğini yukarıda belirtilen klasöre kopyalamaktır. dosya.

Başarılı olursa, MATLAB'da bir Arduino nesnesi oluşturma kodu aşağıda gösterildiği gibidir.

a=arduino('com#', 'uno', 'Kütüphaneler', 'ÖrnekLCD/LCDAddon');

Adım 4: Fonksiyonlar

Fonksiyonlar
Fonksiyonlar
Fonksiyonlar
Fonksiyonlar

Bir MATLAB işlevi oluşturun. Girişler için "eff" ve "T_min" değişkenlerini kullanıyoruz; çıktılar için, genel tasarımda gereksiz olsa da, sonuçlardan veri içermenin bir yolu olarak "B" değişkenini kullandık. "eff" girişi, servonun maksimum hızını yönetmeye izin verir ve "T_min" girişi, istenen minimum sıcaklığı kontrol eder. Dolayısıyla "B" değeri fanın süresi, sıcaklığı ve verimliliği için üç sütun içeren bir matris üretmelidir. Ayrıca, ayrıntıya bir bonus olarak, aşağıda listelenen kodda ayrıca, istenen minimum sıcaklığa yaklaştığında fan hızının yüzde elli oranında azalacağı bir if ifadesi vardır.

Tüm girişler ve jumper kabloları tam olarak yerleştirilmişse ve arduino bağlantısının portunun COM4 ve fonksiyon adının "fanread" olduğu varsayılarak aşağıdaki kod yeterli olacaktır:

fonksiyon [B] = fanokuma(Tmin, eff)

temizle a; clear lcd;a=arduino('com4', 'uno', 'Kütüphaneler', 'ÖrnekLCD/LCDAddon');

t=0; t_maks=15; saniye cinsinden % zaman

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

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

eğer eff>=1 || e<0

error('eff, 0 ile 1 arasında ayarlanmadıkça fan devreye girmez.')

son

t=1:10 % döngü/aralık sayısı için

temizle c; % tekrarlanan hatayı engelle

v=readVoltage(a, 'A0');

SıcaklıkC=(v-0.5)*100; 2,7-5,5 V voltaj aralıkları için % tahmini

eğer TempC>Tmin ise TempC ise

c=['Temp ', num2str(TempC, 3), 'C Açık'];

writePWMDutyCycle(a, 'D9', eff/2); % servoyu yarım hızda aç

spd=50;

Başka

c=['Temp ', num2str(TempC, 3), 'C Açık'];

writePWMDutyCycle(a, 'D9', eff); % servoyu verilen hızda açın

spd=100;

son

Başka

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

writePWMDutyCycle(a, 'D9', 0); % zaten açıksa kapat

spd=0;

son

printLCD(lcd, c);

duraklat(3); Döngü başına geçen % üç saniye

zaman(t)=t.*3;

tempplot(t)=TempC;

act(t)=spd;

alt grafik(2, 1, 1)

arsa(zaman, tempplot, 'b-o') % çizgi grafiği

eksen([0 33 0 40])

xlabel('Zaman (saniye)')

ylabel('Sıcaklık (C)')

devam etmek

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

devam etmek

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

alt grafik(2, 1, 2)

çubuk(zaman, hareket) % çubuk grafik

xlabel('Zaman (saniye)')

ylabel('Verimlilik (%)')

son

B=devir([zaman;tempplot;eylem]);

son

Artık fonksiyon tamamlandı, test zamanı.

Adım 5: Test Etme

Test yapmak
Test yapmak
Test yapmak
Test yapmak

Şimdi "function_name(input_value_1, input_value_2)" ekleyerek komut penceresinde işlevi test edin ve izleyin. Hiçbir Arduino nesnesinin mevcut olmadığından emin olun; öyleyse, kaldırmak için "temizle a" komutunu kullanın. Hatalar meydana gelirse, herhangi bir konektörün yanlış yerde olup olmadığını veya yanlış dijital veya analog girişlerin kullanılıp kullanılmadığını kontrol edin. Sonuçların değişmesi beklenir, ancak buna bazı atlama tellerinin ve sıcaklık sensörünün yerleştirilmesi neden olabilir.

Sonuçların beklentileri, servo performansında ve LCD'deki verilerde değişiklikler üretmelidir. Her üç saniyelik aralıklarla, bir metin satırı, sıcaklığı Santigrat cinsinden ve fanın tam hızda, yarım hızda veya hızsız çalışırken etkin olup olmadığını göstermelidir. Veriler büyük olasılıkla tutarlı olmamalıdır, ancak daha çeşitli sonuçlar isteniyorsa, "Tmin" değerini devre tarafından üretilen ortalama sıcaklığa yakın yerleştirin.

6. Adım: Sonuç

Çözüm
Çözüm

Deneme yanılma yoluyla başarılması zor bir görev olsa da, nihai sonuçların oldukça ilginç ve tatmin edici olduğu ortaya çıktı. Böyle bir sistem, kaç tane karmaşık makinenin veya hatta bazı parçalarının belirli bir amacı gerçekleştirmek için bir araya getirilmiş bağımsız parçaların bir koleksiyonu olarak görülebileceğini göstermeye yardımcı olur.

Nihai projenin oldukça basit tasarımı nedeniyle, performansını iyileştirmeye ilgi duyanlar, nihai üründe projeyi daha iyi ve daha ayrıntılı hale getirebilecek ince ayar ve değişiklikler yapabilir. Bununla birlikte, devrenin voltaj okumasında düzensiz dalgalanmalara neden olan servo aktivasyonu gibi devredeki zayıflıkları ortaya çıkarır ve bu da sistemin hiçbir zaman aynı sonuçları vermemesine neden olabilir. Ayrıca, "eff" 0,4 ve daha yüksek olarak ayarlandığında servo hızında bir değişiklik görmeyle ilgili sorunlar olmuştur. Bir sıcaklık ve nem sensörü kullanılmış olsaydı, nihai model daha karmaşık olurdu, ancak daha tutarlı değerler sunardı. Yine de bu, karmaşık bir makinenin basit parçalarının bir kombinasyonu olarak işlev görebileceğini gösteren bir deneyimdir.

Önerilen: