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:12] – [PINS] 46.109.187.144hall_sensor [2025/11/02 21:21] (current) – [Savienojum] 46.109.187.144
Line 4: Line 4:
 </WRAP> </WRAP>
  
-===== PINS ===== +===== Savienojum===== 
-  - Savienojums +  - {{pasted:20251102-211157.png}} 
-{{pasted:20251102-211157.png}} +  - {{pasted:20251102-211751.png}} 
-  - Ordered List Item+  - 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 ===== ===== 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.1762117967.txt.gz · Last modified: by 46.109.187.144