hall_sensor
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| hall_sensor [2025/11/02 21:07] – created 46.109.187.144 | hall_sensor [2025/11/02 21:21] (current) – [Savienojum] 46.109.187.144 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Proximity Hall sensor - NJK-5002C ====== | ====== Proximity Hall sensor - NJK-5002C ====== | ||
| <WRAP center round alert 60%> | <WRAP center round alert 60%> | ||
| - | Instrukcijas soļus izpildam **OBLIGĀTI ar TeamViewer pieslēgumu!!!** | + | It is powered with the voltage from 6 V to 36 V. Type: NPN. |
| </ | </ | ||
| + | |||
| + | ===== Savienojum===== | ||
| + | - {{pasted: | ||
| + | - {{pasted: | ||
| + | - Mūsu gadījumā izveidot USB savienojums ērtākai konstrukcijai | ||
| + | - USB pins {{pasted: | ||
| + | - 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; | ||
| + | unsigned long lastDetectTime = 0; | ||
| + | unsigned long lastPrint = 0; | ||
| + | float speed_kmh = 0.0; | ||
| + | int lastState = HIGH; | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | pinMode(sensorPin, | ||
| + | pinMode(ledPin, | ||
| + | Serial.println(" | ||
| + | } | ||
| + | |||
| + | 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; | ||
| + | float delta_s = delta / 1000.0; | ||
| + | |||
| + | float speed_mps = pulseDistance / delta_s; | ||
| + | speed_kmh = speed_mps * 3.6; // km/h | ||
| + | } | ||
| + | |||
| + | lastDetectTime = now; | ||
| + | digitalWrite(ledPin, | ||
| + | } | ||
| + | |||
| + | // turn LED off shortly after detection | ||
| + | if (digitalRead(ledPin) == HIGH && (millis() - lastDetectTime > 50)) { | ||
| + | digitalWrite(ledPin, | ||
| + | } | ||
| + | |||
| + | // 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(" | ||
| + | Serial.print(speed_kmh, | ||
| + | Serial.println(" | ||
| + | } | ||
| + | |||
| + | lastState = state; | ||
| + | } | ||
| + | |||
| + | </ | ||
hall_sensor.1762117663.txt.gz · Last modified: by 46.109.187.144
