User Tools

Site Tools


hall_sensor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
hall_sensor [2025/11/02 21:08] 46.109.187.144hall_sensor [2025/11/02 21:21] (current) – [Savienojum] 46.109.187.144
Line 4: Line 4:
 </WRAP> </WRAP>
  
-===== PINS =====+===== 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 ===== 
 +<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; 
 +
 + 
 +</code>
hall_sensor.1762117717.txt.gz · Last modified: by 46.109.187.144