İçindekiler:

STM32 ile RPM Metre: 8 Adım
STM32 ile RPM Metre: 8 Adım

Video: STM32 ile RPM Metre: 8 Adım

Video: STM32 ile RPM Metre: 8 Adım
Video: STM32 TACHOMETER | MEASURE RPM | #33 2024, Kasım
Anonim
STM32 ile RPM Metre
STM32 ile RPM Metre

Satın almak biraz zahmetli olsa da (çünkü birçok internet mağazasında mevcut değil), STM32 L432KC'yi tartışmayı gerekli buluyorum. Bu çip, ULTRA DÜŞÜK GÜÇ olduğundan özel ilgiyi hak ediyor. Ancak STM32'ye sahip olmayanlar için bu projede Arduino Uno ile değiştirilebilir. Bunu yapmak için, Kesme girişinin pinini değiştirmeniz yeterlidir.

Ardından STM32 L432KC ve bir kızılötesi sensör kullanarak bir RPM ölçer oluşturalım. Aynı program rüzgar hızını ölçmek için de kullanılabilir. Bu mikro denetleyicinin düşük güç özelliği, IOT için mükemmeldir.

Adım 1: Modüller

Modüller
Modüller
Modüller
Modüller

Bugünkü projemiz için Kızılötesi Modülün yanı sıra 8 haneli MAX7219CWG'yi kullanıyoruz.

2. Adım: STM32 NÜKLEO-L432KC

STM32 NÜKLEO-L432KC
STM32 NÜKLEO-L432KC

3. Adım: Gösteri

Gösteri
Gösteri

Montajımızda STM32, 8 haneli ekran ve darbe girişi var. Kızılötesi kartta bir fototransistör ve beyaz bir şeritten sıçrayarak ışığı yakalayan bir LED bulunur. Bu bant bir tekerleğe bağlıdır ve her dönüşte STM32 kesintisi tarafından yakalanacak bir darbe üretecektir.

Montajda, bant okuma sinyalinin gürültüsünün STM32'ye ulaşmasını önlemek için kullanılan bir diyot ve bir kondansatörümüz var, bu da açık ve kapalı yorumlamasını sağlayacak.

Gösteri, projemizi ve Minipa sayacını (her ikisi de çalışır durumda) gösterir.

Adım 4: Montaj

toplantı
toplantı

Adım 5: Program

Kızılötesi modülün her "dönüşte" STM32 L432KC'de bir kesinti tetikleyeceği bir program yapacağız ve ekranda RPM'yi görüntülemek için hesaplamalar yapacağız.

Adım 6: Kitaplıklar

Kütüphaneler
Kütüphaneler

Aşağıdaki "DigitLedDisplay" kitaplığını ekleyin.

Basitçe "Çizim >> Kitaplıkları Dahil Et >> Kitaplıkları Yönet …" seçeneğine erişin.

7. Adım: Kaynak Kodu

Kitaplıklar ve Değişkenler

DigitLedDisplay kitaplığını içeren kaynak kodunu başlatalım. Görüntüleme nesnesini göstereceğiz. Kesinti pinini 12 olacak şekilde ayarladım. Ayrıca herhangi bir çarpışma sorunu yaşamamak için hem RPM sayacı hem de süre için volatile bir operatör giriyorum.

/* DigitLedDisplay Kitaplığını Dahil Et */#include "DigitLedDisplay.h" /* Görüntülemek için Arduino Pin 7 - DIN, 6 - CS, 5 - CLK */ //DigitLedDisplay ld = DigitLedDisplay(7, 6, 5); //arduino DigitLedDisplay ld = DigitLedDisplay(4, 2, 3); //STM32 L432KC int pin = 12; //pino de interrupção (módulo IR) uçucu işaretsiz int rpm; //contador de rpm volatile imzasız uzun timeold; //tempo

Kurmak

Setup'ta görüntüleme işlemini yapılandırıyoruz, ayrıca kesintiyi Rising olarak yapılandırıyoruz.

geçersiz kurulum() {Serial.begin(115200); /* Parlaklığı min:1, max:15 olarak ayarla */ ld.setBright(10); /* Rakam sayısını ayarla */ ld.setDigitLimit(8); ld.printDigit(0); AttachInterrupt(dijitalPinToInterrupt(pin), interruptPin, RISING); devir = 0; timeold = millis(); }

Döngü

Son olarak ekranın güncellenmesi için 1 dakikada 1 aralığı belirliyoruz. Ekranı temizledikten sonra RPM'yi yazdırıyoruz. Kesmenin çağıracağı işlevi gerçekleştiriyoruz. RPM ve güncelleme süresini hesaplıyoruz.

geçersiz döngü() {gecikme(1000); ld.clear(); ld.printDigit(rpm); } void interruptPin() { rpm = 60*1000/(millis() - zaman aşımı); timeold = millis(); }

8. Adım: Dosyalar

Dosyaları indirin:

PDF

BEN HAYIR

Önerilen: