hall_sensor
Table of Contents
Proximity Hall sensor - NJK-5002C
It is powered with the voltage from 6 V to 36 V. Type: NPN.
Savienojum
- Mūsu gadījumā izveidot USB savienojums ērtākai konstrukcijai
- 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



