User Tools

Site Tools


hall_sensor

Proximity Hall sensor - NJK-5002C

It is powered with the voltage from 6 V to 36 V. Type: NPN.

Savienojum

  1. Mūsu gadījumā izveidot USB savienojums ērtākai konstrukcijai
  2. USB pins
  3. Dotā gadījuma USB dati saslēgti ar D+ kontaktu

ARDUINO PINS

  • PIN2
  • GND
  • 5V

ARDUINO CODE

// Hall sensor wheel speed calculator (auto-zero)
// Arduino MKR NB 1500 + NJK-5002C
// 7 cm radius, 4 magnets = 0.10996 m per pulse

const int sensorPin = 2;
const int ledPin = LED_BUILTIN;

const float pulseDistance = 0.10996;  // meters per magnet pulse
unsigned long lastDetectTime = 0;
unsigned long lastPrint = 0;
float speed_kmh = 0.0;
int lastState = HIGH;

void setup() {
  Serial.begin(9600);
  pinMode(sensorPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
  Serial.println("Wheel speed calculation running...");
}

void loop() {
  int state = digitalRead(sensorPin);

  // detect magnet arrival edge (HIGH → LOW)
  if (lastState == HIGH && state == LOW) {
    unsigned long now = millis();

    if (lastDetectTime > 0) {
      unsigned long delta = now - lastDetectTime; // time between pulses (ms)
      float delta_s = delta / 1000.0;             // convert to seconds

      float speed_mps = pulseDistance / delta_s;  // m/s
      speed_kmh = speed_mps * 3.6;                // km/h
    }

    lastDetectTime = now;
    digitalWrite(ledPin, HIGH); // blink LED when detected
  }

  // turn LED off shortly after detection
  if (digitalRead(ledPin) == HIGH && (millis() - lastDetectTime > 50)) {
    digitalWrite(ledPin, LOW);
  }

  // auto-zero speed if no pulse for 1 second
  if (millis() - lastDetectTime > 1000) {
    speed_kmh = 0.0;
  }

  // print speed every 0.5 s
  if (millis() - lastPrint > 500) {
    lastPrint = millis();

    Serial.print("Speed: ");
    Serial.print(speed_kmh, 2);
    Serial.println(" km/h");
  }

  lastState = state;
}
hall_sensor.txt · Last modified: by 46.109.187.144