chinesisches hall sensor module

hallo!
ich hab dieses hall modul gekauft
http://www.ebay.com.au/itm/Hall-Sensor-Module-M44-Switch-for-Magnetic-Field-Detecting-16mA-DC-0-15V-/130566462673
nachdem ich neu bin mit arduino und elektronik habe ich folgende frage:
das modul hat
vcc
gnd
a0
d0
ich habe folgende schaltung gebastelt
vcc - +5V
gnd - gnd
d0 - digital pin12
a0 - analog pin A0

in meiner sketch lese ich nun die werte aus.
das erstaunlich ist, dass ohne magnet sowohl der digitale als auch der analoge input wie verrückt zählt.
digital geht von 0 auf 1
analog hat unnachvollziehbare werte - immer was neues.
zusätzlich ist auf dem modul eine power led und eine sensor led verbaut.... da leuchtet aber rein gar nichts
eigentlich sollte nur wenn ein magnet vorbeikommt der wert verändert werden?
sketch:

const int sensorPin = 12;
const int analogPin =0;
const int ledPin = 13;

int sensorState = 0;
float sensorAnalogValue = 0;

void setup() {
  pinMode(ledPin, OUTPUT);      
  pinMode(sensorPin, INPUT);  
  pinMode(analogPin, INPUT);  
  Serial.begin(9600);
}

void loop(){
  sensorState = digitalRead(sensorPin);
  sensorAnalogValue = analogRead(analogPin);
  Serial.println(514-sensorAnalogValue);
  Serial.print("Digital");
  Serial.println(sensorState);
  delay(250);

  if (sensorState == LOW) {        
    digitalWrite(ledPin, HIGH); // Turn on LED
  } 
  else {
    digitalWrite(ledPin, LOW);  // Turn off LED
  }
}

was mache ich da falsch?
danke für eure hilfe!

Hast du bereits den Verkäufer angeschrieben? Das deine Werte so zappeln, liegt vermutlich daran, dass du die DO falsch angeschlossen hast. Ist es hier ein OpenKollektor Ausgang?

pinMode(analogPin, INPUT); ist falsch für einen Analoge Eingang. So definierst Du ihn als digitalen Eingang.
Laß diese Zeile weg.
Grüße Uwe

hallo uwe, erstmal danke für die antwort, habe soeben die analoge geschichte entfernt. resultat ist, dass nun der digitale input zwischen 0 und 1 springt - ohne dass ich was mache????
also 0,1,1,1,0,1,.......

@sschulte....
nein ich habe d0 und a0 nicht verwechselt. hatte bisher nur d0 vcc und gnd verbunden. mit dem gleichen resultat. nämlich, dass der input in einer tour läuft und nicht auf ein schaltereignis wartet.
ob das modul ein open collector ist weiss ich nicht, ich bin elektronik neuling und wollte lediglich eine art drehzahlmesser bauen.
tx peter

epeter:
ob das modul ein open collector ist weiss ich nicht, ich bin elektronik neuling und wollte lediglich eine art drehzahlmesser bauen.

Erstmal ein Tipp: Kaufe Dir keine Hardware, zu der Du keine technischen Angaben, keine Datenblätter und keine Programmierbeispiele finden kannst!

Wenn Dein Sensor mit 5V Betriebsspannung arbeitet (steht das irgendwo?) und wenn er einen Open-Collector Ausgang hat, dann müßtest Du in Deiner Schaltung wenigstens noch einen PullUp-Widerstand am Digitalpin verwenden. Notfalls zum Ausprobieren erstmal den internen PullUp aktivieren, statt:

 pinMode(sensorPin, INPUT);

setze:

 pinMode(sensorPin, INPUT_PULLUP);

Auf den PullUp muss nur dann verzichtet werden, wenn der Ausgang des Sensors ein Push-Pull-Ausgang ist.
Welcher Art der Ausgang des Moduls ist, sollte aus der Schaltung, Dokumentation oder dem Datenblatt hervorgehen.

Geht denn die "Sensor" LED auf dem Modul an, wenn Du einen starken Magneten nah am Sensor vorbeiführst?

BTW: Testen von Hardware in Unkenntnis des Datenblatts: Immer auf eigene Gefahr des Experimentators!

const int analogPin =0;

Ist das nicht der digitale Pin 0? Analog-Pin 0 ist A0.

Man kann glaube ich auch die Analog Pins mit Zahlen ansprechen, aber die haben dann andere Werte. Ich glaube ab dem höchsten Digital Pin. Aber da bin ich mir nicht sicher.

EDIT:
Laut Visual Studio ist die Konstante A0 als static const A0 = (uint8_t)'6' definiert, was 54 wäre. Das wäre dann eins über dem höchsten Pin des Mega
EDIT2:
Das gilt nur für den Mega. Auf dem UNO ist A0 '\016'

A0 - A5 enspricht D14-D19.

const int analogPin =0; ist somit falsch.

Entweder

const int analogPin = A0;

oder

const int analogPin = D14

Wobei ich hier aber A0 vorziehen würde aufgrund der eindeutigen Beschriftung auf dem Arduino Board.

@ jurs @sschulte...

danke für de A0, das war natürlcih falsch. habe ich korrigiert - nichts anderes.

@ jurs

INPUT_PULLUP ... auf meiner installation ist INPUT_PULLUP nicht definiert..... muss ich morgen reparieren wie in den diversen threads beschrieben.

zum datenblatt: ich war davon ausgegangen ein solches zu erhalten (amazon subhändler ... aber nix) jedenfalls ist es das Recommendations For You - DealeXtreme
die beschreibung ist:

  • Color: Black
  • Material: PCB
  • AO: Sensor analog output
  • GND: Ground
  • VCC: Power input (3~24V)
  • DO: Digital output (comparator output)
  • Suitable for testing magnetic field

mehr gibts dazu leider nicht.

@jurs: nein die led geht nicht an. magnet stammt von meinem motorrad tacho und sollte stark genug sein ????

das alles auf eigene gefahr ist, und der tester auch coden können muss .... da muss ich durch :wink:

?????
peter

epeter:
INPUT_PULLUP ... auf meiner installation ist INPUT_PULLUP nicht definiert..... muss ich morgen reparieren wie in den diversen threads beschrieben.

Was ist das für eine "Installation"?
Arduino-Software 1.0.5 oder was anderes?
Und was für ein "Arduino-Board" verwendest Du?

Auf einem Arduino-UNO und der Arduino-Software 1.0.x wäre es bei analogRead beispielsweise vollkommen egal, ob Du "0" oder "A0" als Parameter verwendest. Aber das ist nicht bei jedem Board der Fall. Und bei der Arduino-Version für den DUE 1.5.x glaube ich auch nicht.

Was bedeutet es, dass der DIGITALE Ausgang als Comperator genutzt wird? Ein Comperator ist für mich eigentlich ein Ausgang, der je nach dem AN oder AUS geht, ob Wert1 größer Wert2 oder Wert 2 größer Wert1 ist. Was soll dieser hier vergleichen, bzw. zurückliefern?

Edit: Datenblätter werden meist bei solchen Angeboten nicht mitgeschickt. Auch ist die Beschreibung meist doch recht fehlerhaft! Das beste ist es, vor dem Kauf genau zu schauen, ob das Modul überhaupt eingesetzt werden kann. "Modul + Arduino" sollte bei Google meist ausreichen. Die entsprechenden Thread haben dann auch meist irgendwo die Datenblätter hinterlegt.

sschultewolter:
Was bedeutet es, dass der DIGITALE Ausgang als Comperator genutzt wird? Ein Comperator ist für mich eigentlich ein Ausgang, der je nach dem AN oder AUS geht, ob Wert1 größer Wert2 oder Wert 2 größer Wert1 ist. Was soll dieser hier vergleichen, bzw. zurückliefern?

Nein, der Operationsverstärker auf der Platine wird als Komparator verwendet. Er vergleicht das analoge Signal des Sensors mit einer Referenz (eine Spannung die mittels Spannungsteiler prodziert wird) und gibt LOW bzw HIGH aus jenachdem ob die Sensorsannung kleiner oder Größer der Referenzspannng ist.
Grüße Uwe

Das beste ist es, vor dem Kauf genau zu schauen, ob das Modul überhaupt eingesetzt werden kann. "Modul + Arduino" sollte bei Google meist ausreichen.

Die freundlichen Chinesen bei ebay wissen, dass sie viel mehr Käufer finden, wenn sie das Wort "Arduino" im Titel angeben.
Für unsereins ist es ein Hinweis, dass es oft ein Nachbau ( oder sagt man second source ?) von etwas ist, was es auch sauber dokumentiert bei adafruit etc. gibt. Was beim Nachbau dann eingespart wurde, bleibt dann das spannende

das alles auf eigene gefahr ist, und der tester auch coden können muss .... da muss ich durch :wink:

Amazon - Beschreibung beschränkt sich gern auf "Geben Sie die erste Bewertung für diesen Artikel ab"
Hier in deinem Link sind immerhin ein paar Kundenkommentare:

Beware it's a digital sensor, so no strength of field is reported, but uses the Hall efect to trigger a Schmidtt circuitry and give the output.

Nachtrag: Die einfachere Variante sieht klarer aus ( ein open Collector Ausgang ):
http://club.dx.com/reviews/photos/135033/231635