Schaltung funktioniert nicht, wenn Hall-Sensor anstatt Reedsensor verwendet wird

Hallo,
Folgender Sketch funktioniert bei mir mit Reedensor:

/* Nach zwei Impulsen am Input-Pin erfolgt ein Impuls am Output-Pin.
   Impuls-Dauer (Output): onTime

   Eine Kombination der Beispiele zur Flankenerkennung (StateChangeDetection):
   https://www.arduino.cc/en/Tutorial/StateChangeDetection
   und BlinkWithoutDelay:
   https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/

const byte INPUT_PIN  =  5;     // Reed Kontakt. Anderes Ende an GND.
const byte OUTPUT_PIN = 13;  // Die eingebaute LED - nach eigenen Gegebenheiten ändern.

bool reedState = true;
bool lastReedState = true;

const unsigned long onTime = 100;
unsigned long currentMillis;
unsigned long lastMillis;

int zaehler;

void setup() {
  pinMode(INPUT_PIN, INPUT_PULLUP);
  pinMode(OUTPUT_PIN, OUTPUT);
}

void loop() {
  // Eingabe:
  reedState = digitalRead(INPUT_PIN);
  currentMillis = millis();

  // Verarbeitung: Flankenerkennung (state change detection)
  if (reedState != lastReedState) {
    delay(30);                 // Entprellen, quick & dirty
    if (reedState == LOW) {    // Reed-Kontakt wurde geschlossen
      zaehler++;
      lastMillis = currentMillis;
    }
    if (reedState == HIGH) {   // Reed-Kontakt wurde geöffnet
      // Einstweilen passiert hier nichts...
    }
    lastReedState = reedState;
  }

  // Ausgabe:
  if (zaehler >= 2) {
    digitalWrite(OUTPUT_PIN, HIGH);
    if (currentMillis - lastMillis >= onTime) {
      digitalWrite(OUTPUT_PIN, LOW);
      zaehler = 0;
    }
  }
}

Wenn ich anstatt des Reedsensors, der GND auf Pin 5 schaltet, einen Hallsensor verwende, der auch GND auf Pin 5 schaltet, reagiert der Arduino nicht auf den Impuls.
Daraufhin prüfte ich mittels Multimeter Pin 5, indem ich die rote Messpitze auf 5v und die schwarze Spitze auf Pin5 legte und Magneten erneut an Hallsensor anlegte. Wenn das Multimeter wie beschrieben anliegt, erkennt der Arduino den Impuls des Hallsensors, wenn ich die Messspitze wieder entferne, werden die Impulse wieder nicht erkannt. <wie kann das sein und warum unterscheidet sich anscheinend das GND vom Reed- und Hallsensor?

Welcher?
Type, Datenblatt?

Welchen Hallsensor? Typ, Link zum Datenblattdes Sensors, Gutes Foto des realen Aufbaus, also so wie der Hallsensor an den arduino angeschlossen IST , nicht wie Du denkst, das er angeschlossen sein müsste.

edit: my_xy_project war schneller

Kann ichn nicht sagen weil er vergossen ist. Ist aber kein Analoger Hallsensor. Es ist ein originaler Shimano Tachosensor, der halt GND auf Pin 5 schaltet, wenn Magnet vorbeizieht. ich messe an Pin 5 auch GND, wenn ich den Magneten am Hallsensor halte.

wieviele Anschlüsse hat denn der Hallsensor?

Ich denke dein Multimeter simuliert ein PullUp.

Es könnte sein, dass der Hallsensor KEIN digitaler Sensor, und auch KEIN Reedkontakt, sondern eine SPULE ist, die einen Spannungsimpuls abgibt, wenn der Magnet daran vorbei geht. Das kann man prüfen, wenn man das Multimeter im Milivolt-Bereich (AC) an den Sensor anschliesst, und dann mit dem Magneten drüberfährt. Wird beim drüberfahren ein Spannungsimpuls erzeugt dann ist es eine Spule.

Den Eingangspin 5 hat er ja als INPUT_PULLUP deklariert, also müsste ein GND an Pin 5 zuverlässig erkannt werden, wenn sein Sensor nach GND schaltet. Höchstens der HIGH-Pegel könnte bei langen Kabeln, oder zu grossem PULLUP-Widerstand gestört werden, so dass es Fehlauslösungen gibt.

Stimmt. Mir kam nur der Verdacht, da das Multimeter dort auch nur wie ein großer Widerstand fungiert.

Das klingt nach open Drain/Collektor.
Hast Du den INPUT_PULLUP aktiviert?

Gruß Tommy

ich vemute eher, dass die Prüfspannung des Multimeters mit der von der Spule erzeugten Spannung interagiert. Als mir die Bezeichnung 'Shimano' richtig auffiel, musste ich an Fahrad-Tachos denken. und da gibt es welche mit vergossenem Reedkontakt, aber eben auch welche, die eine Spule als sensor nutzen. Und falls es wirklich eine Spule ist, muss das Signal aufbereitet werden, damit keine Negativen Spannungen in den Arduino gelangen. Und evt. muss das Signal auch noch etwas verstärkt werden.

1 Like

Also meine Herrn,
zunächst einmal vielen Dank für den Support eines Newbies.
Es handelt sich nicht um einen Shimano, sondern um einen Yamaha Sensor:

Auf grün lag GND, auf blau 5v und kein Signal auf rot.
Bei 3 Adern lag es für mich nahe, von einem Hall auszugehen - wie naiv von mir. Es ist ein Reed mit einer überflüssigen roten Ader. Da 2-polige Stecker bereits für Licht verwendet werden, kann ich mir vorstellen, dass man für den Tachosensor nicht auch einen 2 poligen Stecker verwenden wollte, damit user etwas falsch anschließt, so dass man ein 3 poliges Steckergehäuse benutzt hat. Chinesische Tachosensoren aus entsprechenden Umbausätzen hingegen werden meist aus Hallsensoren gemacht. Ich hätte aber vermutlich früher darauf kommen müssen, weil bei Hallsensoren die 3 Pins 5v, GND und nochmal 5v am Signalpin (wegen Pullup)betragen müsste.

es sei den, der Signal-Pin sei eine open-Colector Ausführung, dann muss man eben am Signal-Eingang selbst für einen PullUp sorgen. Hat aber den Vorteil, dass ein Sensor, unabhängig von der Logik-Spannung am Eingang des Steuergerätes mit unterschidlichen Betriebsspannungen kompatibel ist oder zumindest sein kann. (z.B. 12v Versorgung des Sensors, jedoch nur ein 5V toleranter Steuregerät - Eingang, oder ein Sensor an 5V an einem 3,3V Steuereingang.)

ps. Yamaha bin ich lange Zeit gefahren. Meine waren immer sehr zuverlässig.

Hi,

ich schätze mal, es geht immer noch um das gleiche Problem :wink:

nein, das Poblem ist hier anders gelagert - aber auch gelöst Sherlock

Ok, mal zu Anfang recherchieren was man in den Händen hat hilft ungemein das Teil richtig zu verwenden.

Einige Hintergrundinfo zu Hallsensoren:
Es gibt analoge Hallsensoren, die einfach die Stärke des Magnetfeldes messen.
Es gibt digitale Hallsensoren mit definierten Schaltpunkten.
Von diesen gibt es bipolare und unipolare:
Bipolare. Die schalten bei einer gewissen Magnetfeldstärke ein und bei einer niedrigeren aus und das unabhängig ob daas Feld Positiv oder Negativ ist ( Süd bzw Nordpol eines Magneten)
Unipolar machen das gleiche aber nur in einer Richtung also nur für Positive Magnetfelder. Bei diesem ist es wichtig daß die richtige Seite des Sensors zum Magneten zeigt.
Es gibt noch solche die bei einer Magnetfeldstärke einschalten aber bei einer negativen Feldstärke ausschalten. Man braucht also ein N-S Magnetfeld.
Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.