====== Proximity Hall sensor - NJK-5002C ====== It is powered with the voltage from 6 V to 36 V. Type: NPN. ===== Savienojum===== - {{pasted:20251102-211157.png}} - {{pasted:20251102-211751.png}} - Mūsu gadījumā izveidot USB savienojums ērtākai konstrukcijai - USB pins {{pasted:20251102-212034.png}} - 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; }