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