10/27/2020

Arduino Devir/Hız Ölçümü Nasıl Yapılır?

LM393 Sensör Modülü ve Arduino ile devir nasıl ölçülür?

Bu sensör ve arduino ile bir motorun devri ve/veya hızı kolayca ölçülebilir. Aşağıdaki kod motorun devrini ölçmek içindir. Hız hesabı için motorun çevirdiği tekerleğin çapı ile devir sayısı çarpılarak bir dakikada ilerleyebileceği mesafe hesapalnabilir.

LM393 Hız Sensörünü 3.3 Volt ile kullanmanız tavsiye edilir. 5v ile kullanılacaksa D0 bcağı ile GND arasına 100nF kondansatör bağlayarak kararlı çalışma sağlanabilir.

Sensör Bacak bağlantıları:

Sensör VCC – Arduino 3.3V
Sensör GND – Arduino GND
Sensör D0 – Arduino Pin 2

OLED Ekran Bağlantıları:

OLED VCC – Arduino 5V
OLED GND – Arduino GND
OLED SCL – Arduino A5
OLED SDA – Arduino A4

Arduino Devir Ölçer Kodu:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

unsigned int rpm;
volatile byte pulses;
unsigned long timeold;
unsigned int pulsesperturn = 2; // kanat sayısı (Tek kanat varsa 1 olmalı). Eğer 20 gözlü devir tekerleği kullanılıyorsa bu değer 20 olmalıdır.

void counter()
{
  pulses++;
}

void setup()
{
  Serial.begin(115200);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  pinMode(2, INPUT); // 2 nolu pin giriş pini olarak kullanılıyor.
   
  attachInterrupt(0, counter, RISING);
  pulses  = 0;
  rpm     = 0;
  timeold = 0;
  
}

void loop()
{

  if (millis() - timeold >= 1000)
  {
  
    detachInterrupt(0);
    rpm = (60 * 1000 / pulsesperturn ) / (millis() - timeold) * pulses; // HC-020K sensorü için 30*500 -- LM393 sensörü için 60*1000 olmalı
    timeold = millis();
    pulses = 0;

display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(8,0);
display.print("DEVIR RPM");
display.setCursor(38,28);
display.setTextSize(3);
display.println(rpm);
display.display();

    attachInterrupt(0, counter, RISING);
  }  
}