İçindekiler:
Video: Arduino Kullanarak Motor Hız Ölçümü: 6 Adım
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Motor devrini ölçmek zor mu ???Sanmıyorum. İşte basit bir çözüm.
Kitinizdeki yalnızca bir IR sensörü ve Arduino bunu yapabilir.
Bu yazıda, IR sensörü ve Arduino UNO/nano kullanarak herhangi bir motorun RPM'sinin nasıl ölçüleceğini açıklayan basit bir eğitim vereceğim.
Gereçler:
1. Arduion uno(Amazon) / Arduion nano(Amazon)
2. IR Sensörü (Amazon)
3. DC motor herhangi bir (Amazon)
4. LCD 16*2 (Amazon)
Kullanılan aletler
1. Havya (Amazon)
2. Kablo Soyucu (Amazon)
Adım 1: Adım: 1 Sensörlerin ve Cihazların Çalışma Durumunu Sağlayın
IR Sensörü Nedir? IR sensörü, çevredeki bazı nesneleri algılamak için ışık yayan elektronik bir cihazdır. Bir IR sensörü, bir nesnenin ısısını ölçebilir ve hareketi algılayabilir. Genellikle, kızılötesi spektrumda, tüm nesneler bir tür termal radyasyon yayar. Bu tür radyasyonlar gözümüzle görülmez, ancak kızılötesi sensör bu radyasyonları algılayabilir.
DC Motor Nedir? Doğru akım (DC) motoru, elektrik enerjisini mekanik enerjiye dönüştüren bir elektrik makinesi türüdür. DC motorlar, elektrik gücünü doğru akım yoluyla alır ve bu enerjiyi mekanik dönmeye dönüştürür.
DC motorlar, çıkış miline sabitlenmiş bir rotorun hareketine güç sağlayan, üretilen elektrik akımlarından oluşan manyetik alanları kullanır. Çıkış torku ve hızı, hem elektrik girişine hem de motorun tasarımına bağlıdır.
Arduino nedir?
Arduino, kullanımı kolay donanım ve yazılıma dayalı açık kaynaklı bir elektronik platformdur. Arduino kartları girişleri okuyabilir - bir sensör üzerindeki ışık, bir düğmedeki parmak veya bir Twitter mesajı - ve bir çıkışa dönüştürebilir - bir motoru etkinleştirebilir, bir LED'i açabilir, çevrimiçi bir şeyler yayınlayabilir. Kart üzerindeki mikrodenetleyiciye bir dizi talimat göndererek kartınıza ne yapacağını söyleyebilirsiniz. Bunu yapmak için Arduino programlama dilini (Kablolama tabanlı) ve İşleme tabanlı Arduino Yazılımını (IDE) kullanırsınız.
ARDUINO IDE'yi indirin
Adım 2: Nasıl Çalışır?
Peki bunun mantığı nedir??
Kodlayıcıya çok benzer şekilde çalışır. Yeni başlayanlar için kodlayıcıları anlamak zordur. Bilmeniz gereken tek şey, IR sensörünün darbe ürettiği ve her darbe arasındaki zaman aralığını öğrendiğimizdir.
Bu durumda IR sensörü, IR ışını motor pervaneleri ile kesildiğinde Arduino'ya bir darbe gönderecektir. Normalde iki kanatlı pervaneler kullanıyoruz ama ben şekilde görüldüğü gibi üç kanatlı pervane kullandım. Pervane kanat sayısına bağlı olarak RPM'yi hesaplarken bazı değerleri değiştirmemiz gerekiyor.
iki kanatlı bir pervanemiz olduğunu düşünelim. Her devirli motor için bıçak, IR ışınını iki kez kesecektir. Böylece IR sensörü, kesiştiği zaman darbeler üretecektir.
Şimdi IR sensörü tarafından belirli bir zaman aralığında üretilen darbe sayısını ölçebilecek bir program yazmamız gerekiyor.
Bir sorunu çözmenin birden fazla yolu var ama bu kodlarda hangisi daha iyi onu seçmeliyiz. Kesintiler arasındaki süreyi ölçtüm (IR sensörü) Darbelerin süresini mikro saniye cinsinden ölçmek için micros() fonksiyonlarını kullandım.
RPMRPM = ((1/süre)*1000*1000*60)/bıçakları ölçmek için bu Formülü kullanabilirsiniz
nerede, süre - darbeler arasındaki zaman aralığı.
60 - saniye ila dakika
1000 - değirmenden saniyeye
1000 - mikrodan öğütmeye
kanatlar - pervanede kanat yok.
LCD Ekran - Arduino, LCD ekranın komut ve veri kayıtlarını günceller. Hangi ASCII karakterlerini LCD ekranda görüntüler.
Adım 3: Arduino'nuzu Arduino IDE Kullanarak Programlayın
#Dahil etmek
LiquidCrystal lcd (9, 8, 7, 6, 5, 4); const int IR_IN = 2; //IR sensörü INPUT imzasız uzun prevmicros; // İşaretsiz uzun süreyi saklamak için; // Zaman farkını imzasız uzun lcdrefresh saklamak için; // lcd'nin yenileme süresini kaydetmek için int rpm; // RPM değeri boolean akım durumu; // IR giriş taramasının mevcut durumu boolean prevstate; // Önceki tarama void kurulumundaki IR sensörünün durumu() { pinMode(IR_IN, INPUT); lcd.başla(16, 2); önceki mikrolar = 0; önceki durum = DÜŞÜK; } geçersiz döngü() { //////////////////////////////////////// ///////////////////////////////// RPM Ölçüm akımı durumu = digitalRead(IR_IN); // IR sensör durumunu oku if(prevstate != currentstate) // Girişte değişiklik varsa { if(currentstate == LOW) // Giriş sadece HIGH'dan LOW'a değişirse { süre = (micros() - prevmicros); // Mikrosaniye rpm cinsinden devir arasındaki zaman farkı = ((60000000/süre)/3); // rpm = (1/ milis zaman)*1000*1000*60; önceki mikrolar = mikrolar(); // nect devir hesaplaması için zamanı sakla } } prevstate = currentstate; // bu tarama (önceki tarama) verilerini sonraki tarama için sakla //////////////////////////////// ////////////////////////////////////////// ((millis()-lcdrefresh) >= 100) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Motor Hızı"); lcd.setCursor(0, 1); lcd.print("RPM = "); lcd.print(rpm); lcdrefresh = millis(); } }
Adım 4: Proteus Kullanarak Simülasyon
Bunu proteus yardımıyla simüle etmeye çalıştığımda bu proje gayet iyi çalıştı.
Kızılötesi sensörü kullanmak yerine, IR ışınları pervane kanatlarına çarptığında oluşturulana benzer IR darbesini simüle edecek DC darbe üreteci kullandım.
kullandığınız sensöre göre programınızda değişiklik yapmanız gerekir.
LM358'li IR sensörü bu komutu kullanmalıdır.
if(currentstate == HIGH) // Giriş sadece DÜŞÜK'ten YÜKSEK'e değişirse
LM359'lu IR sensörü bu komutu kullanmalıdır.
if(currentstate == LOW) // Giriş yalnızca YÜKSEK'ten DÜŞÜK'e değişirse
Adım 5: Donanım Yürütme
Şematik için simülasyon resimlerini kullanın veya program kodlarına bakın ve buna göre bağlantıları yapın. Program kodunu Arduino'ya yükleyin ve herhangi bir motorun RPM'sini ölçün. Bir sonraki gönderi için takipte kalın ve YouTube kanalımı izleyin.