Forum: Mikrocontroller und Digitale Elektronik Auslesen von Hall Sensor nicht möglich - Ratlos


von Nils (Gast)


Lesenswert?

Hallo ich kann mir selber nicht erklären warum es nicht funktioniert.
Ich habe einen HallSensor 49E den ich an meinen Arduino angeschlossen 
habe. - Pin and GND, 5V an + und S Pin an Interrupt Pin 2.

Die Datenleitung S und 5V habe ich über einen 10 kOhm Widerstand auf 
einem Breadboard miteinander verbunden

Mein Code ähnlich den kursierenden Beispielen sieht wie folgt aus:

void setup() {
  pinMode(2, INPUT);                    // Eingangspin auf Eingang 
stellen
 // digitalWrite(2, HIGH);              // und Pullup-Widerstand 
einschalten

  Serial.begin(115200);

  // Interrupt 0 auf Routine readmicros setzen
  attachInterrupt(digitalPinToInterrupt(2), detectMagnet, FALLING);

  Serial.println("Hall-Effekt-Sensor Test");
}


void loop() {

Serial.println(digitalRead(2));
delay(1000);


}


// Interrupt-Routine
// Diese Funktion wird immer dann aufgerufen, wenn ein Magnet vom 
Arduino erkannt wird
void detectMagnet() {
  Serial.println("Magnet erkannt");
}


Mein Problem ist, dass immer eine logische 1 ausgegeben wird. Entferne 
ich aber den 10kOHM Widerstand wird ununterbrochen das "Magnet erkannt" 
Event aufgerufen und ausgegeben - sobald ich dann einen Magnet 
dranhalte, wird das event nicht mehr aufgerufen und eine logische 1 
ausgegeben.

Die Preisfrage ist jetzt warum zum Teufel es nicht andersrum mit dem 
Pullup Widerstand funktioniert (den input PIN als Pullup Widerstand zu 
deklarieren hab ich auch schon versucht ohne Erfolg).

Für jede Hilfe dankbar.

von Fast (Gast)


Lesenswert?

Nach kurzer Recherche ist der 49E ein linearer Sensor, den du direkt an 
einen ADC Input ( Ohne PullUp) anschließen musst.

Die Höhe der Spannung ist proportional des Magnetfelds.

von Einer K. (Gast)


Lesenswert?

Nils schrieb:
> Serial.println("Magnet erkannt");

Serielle Ausgaben in einer ISR können zur Totalblockade führen.
Da Serial selber Interrupts benötigt/verwendet.
Tipp: Vermeiden.

von fuffzig (Gast)


Lesenswert?

> den du direkt an
> einen ADC Input ( Ohne PullUp) anschließen musst.

Der Widerstand scheint schon in Ordnung zu sein, laut Datenblatt ist es 
ein Open Drain Output.

von Einer K. (Gast)


Lesenswert?

fuffzig schrieb:
> laut Datenblatt ist es
> ein Open Drain Output.

? eher nicht ?

von fuffzig (Gast)


Lesenswert?


von Nils (Gast)


Lesenswert?

Also wie gesagt mit Widerstand krieg ich gar kein Signal. Aber ohne 
sendet er permanent ein Signal, was ja nicht Sinn der Sache sein kann.
Er stoppt dann praktisch nur wenn ein Magnet detektiert wird.

Es ist auch vollkommen unabhängig davon ob ich im event FALLING, RISING 
oder etwas Anderes reinschreibe.

Für mich macht das keinen Sinn. Ich dachte immer das sind Opencollector 
weshalb man den Widerstand braucht...

von Nils (Gast)


Lesenswert?


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nils schrieb:
> Die Preisfrage ist jetzt warum zum Teufel es nicht andersrum mit dem
> Pullup Widerstand funktioniert (den input PIN als Pullup Widerstand zu
> deklarieren hab ich auch schon versucht ohne Erfolg).
Hast du da einfach mal ein Messgerät an den Pin gehalten und die 
Spannung kontrolliert? Welche Spannungen hast du in welcher 
Konstellation bei welcher Belegung gemessen? Der AVR funktioniert 
nämlich nur, wenn die Eingangsspannung an seinem Pin so ist, wie es im 
Datenblatt verlangt wird. Wenn das funktioniert, dann kannst du 
anfangen zu programmieren.

: Bearbeitet durch Moderator
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ist es nur der eigentliche lineare Sensor oder eine Platine mit 
Analogkomparator von Waveshare?
https://www.waveshare.com/w/upload/2/28/Hall-Sensor-Schematic.pdf
Letztere kann man entweder analog über ADC-Eingang am Ardino auswerten 
oder digital nur die Überschreitung einer mit Poti eingestellten 
Schwelle auswerten.

https://sensing.honeywell.com/index.php?ci_id=50359
vermutlich das Original von Honeywell
https://p.globalsources.com/IMAGES/PDT/SPEC/440/K1139513440.pdf
das Datenblatt zum chinesischen Sensor 49E
http://www.hallsensors.de/CYL49E.pdf
dito, anderer Firmenname
https://www.sunrom.com/get/324700
noch ein Chinese

von Einer K. (Gast)


Lesenswert?

Nils schrieb:
> Ich habe einen HallSensor 49E

Nils schrieb:
> Also ich hab diesen hier gekauft:
> 
https://www.amazon.de/ARCELI-Effekt-Magnetisches-Sensormodul-Arduino/dp/B07CB1ZW93/ref=sr_1_3?keywords=Hall-Sensor&qid=1563888986&s=gateway&sr=8-3

Das ist ein A3141 und kein 49E

Ja, dann ist ein Pullup nötig.

von Nils (Gast)


Lesenswert?

Ich habe leider kein Spannungsmessgerät.

Ja es ist diese Platine bei Amazon, heißt analog auswerten das ich es 
nicht über eine Interruptroutine des Arduinos benutzen kann? Oder wie 
genau ist das zu interpretieren. Eigentlich will ich ja über die 
fallende Flanke auslesen....

von c-hater (Gast)


Lesenswert?

Nils schrieb:
> Also ich hab diesen hier gekauft:
>
> 
https://www.amazon.de/ARCELI-Effekt-Magnetisches-Sensormodul-Arduino/dp/B07CB1ZW93/ref=sr_1_3?keywords=Hall-Sensor&qid=1563888986&s=gateway&sr=8-3

So wie's aussieht, ist das ein rein analoger Hallsensor. Der muss völlig 
anders angesprochen werden. Allerdings wüsste ich auch erstmal nicht, 
wie genau. Die Beschriftung der Anschlüsse ist nicht gerade 
selbsterklärend.

War da nicht noch wenigstens noch irgend so'n Zettel im Lieferumfang?

von Nils (Gast)


Lesenswert?

Nein nichts. Allerdings steht ja unten in der Beschreibung:

4. Es ist durch den Spannungsregler, Hall Voltage Generator, 
Differentialverstärker, Schmidt Trigger, Temperaturkompensation und die 
Open Collector Output Stage Circuit bestehend aus magnetisch 
empfindlichen Sensor Circuit
5. Sein Eingang für die magnetische Induktionsintensität ist der Ausgang 
ein digitales Spannungssignal


Die PINS sind meines Erachtens nach GND(-),5V und Daten (S)

von c-hater (Gast)


Lesenswert?

Nils schrieb:

> 4. Es ist durch den Spannungsregler, Hall Voltage Generator,
> Differentialverstärker, Schmidt Trigger, Temperaturkompensation und die
> Open Collector Output Stage Circuit bestehend aus magnetisch
> empfindlichen Sensor Circuit
> 5. Sein Eingang für die magnetische Induktionsintensität ist der Ausgang
> ein digitales Spannungssignal

Lausig übersetzt, das ist ja kaum verständlich.

Mal anders: Ist auf dem Chip wie auf dem Foto bei Amazon die Bezeichnung 
A3141 zu lesen?

Falls ja: Dann passt, was man der "Beschreibung" entnehmen kann, recht 
gut. Also doch Digital und braucht einen Pullup.

Datenblatt für den Sensor ist im Internet zu finden. Sehr viel besser 
als diese lausige Beschreibung bei Amazon.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Das ist ein "Switch", also ein digitaler Ausgang, der nur das 
Überschreiten einer bestimmten Magnetfeldstärke anzeigt.

https://arduinomodules.info/ky-003-hall-magnetic-sensor-module/
"The KY-003 Hall Magnetic Sensor consists of a 3144EUA-S sensitive 
Hall-effect switch for high-temperature operation, a 680Ω resistor and a 
LED."

https://www.mpja.com/download/A3144EUl.pdf
Das Datenblatt von Allegro. 3,3V ist anscheinend zu wenig, ab 4,5V 
Betriebsspannung brauchbar und ein pull-Up ist nötig, da er nur einen 
open-collector Ausgang hat. Der (680 Ohm) sitzt aber schon auf der 
Platine.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

c-hater schrieb:
> So wie's aussieht, ist das ein rein analoger Hallsensor.

Laut dieser Seite nicht:
http://sensorkit.joy-it.net/index.php?title=KY-003_Hall_Magnetfeld-Sensor_Modul
(auch wenn da "wieder" was von analog auslesen steht)

Vielleicht mal mit der Lupe da ran gehen.
Denn, ohne genau zu wissen, was das jetzt für eine Kröte ist, würde ich 
mir die nicht in den Mund (an den Arduino) stecken.

von Nils (Gast)


Angehängte Dateien:

Lesenswert?

Also auf dem Sensor selbst steht 49E und darunter 419.
Deswegen kam ich auf die Bezeichnung. Auf dem Chip selber steht nix, ich 
hab mal ein Bild angehängt.


Mein Problem ist aber das ich inzwischen alle Varianten durchhabe. Mit 
Pullup, ohne, zich programmatische Varianten. Kann mir jemand vllt auch 
eine Alternative empfehlen die auf jeden Fall funktioniert?

von Nils (Gast)


Lesenswert?

Ok ich hab den Fehler gefunden, anscheinend waren auf mehreren der 
Module wie im Bild ersichtlich keine LEDs bzw die Widerstände montiert. 
Kann ja nicht funktionieren.... Danke für die Hilfe euch allen

Beitrag #5916812 wurde von einem Moderator gelöscht.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nils schrieb:
> anscheinend waren auf mehreren der Module wie im Bild ersichtlich keine
> LEDs bzw die Widerstände montiert.
Nett.
Das hätte man mit dem Messgerät innerhalb einiger Minuten festgestellt.

Nils schrieb:
> Ich habe leider kein Spannungsmessgerät.
Ändere das.
Für drei Euronen hat die Raterei ein Ende: Ebay 362439762108

Elektronik zusammenzubasteln ohne Multimeter ist wie einen Reifen 
wechseln nur mit Zange und Hammer. Mit ein wenig Glück und Zufall geht 
das schon...

von Rudi (Gast)


Lesenswert?

Du hast kein Spannungsmessgerät ?

Häng dein Hobby anden Nagel!

von Roland F. (rhf)


Lesenswert?

Hallo,
Lothar M. schrieb:
> Elektronik zusammenzubasteln ohne Multimeter ist wie einen Reifen
> wechseln nur mit Zange und Hammer.

Eher wie kochen ohne Messer. Und beim Kochen sollte man auch immer 
mehrere Messer zur Hand haben.

rhf

: Bearbeitet durch User
von GEKU (Gast)


Angehängte Dateien:

Lesenswert?

Der 49E liefert eine analoges Signal. Daher benötigt man für die 
Auswertung einen analogen Eingang.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.