Forum: Mikrocontroller und Digitale Elektronik Halleffektsensor


von Mark (Gast)


Lesenswert?

Hi,
ich habe mir den Halleffektsensor
http://www.conrad.de/ce/de/product/505287/Digitaler-PositionssensorHalleffektsensor-Honeywell-SS41-45-24-VDC-SIP?ref=list
von Conrad geholt. Den habe ich wie folgt angeschlossen
+ -> 5V
- -> GND
0 -> Widerstand->LED->GND
Wenn ich jetzt einen Magneten über den Sensor halte, passiert allerdings 
nichts. Habe ich da etwas falsch verstanden? oder was muss ich anders 
machen?

Mark

von Max D. (max_d)


Lesenswert?

Häng die LED mal gegen Plus
€dit: Also: Ausgang->Resi->LED-K..LED-A->Plus

: Bearbeitet durch User
von chris (Gast)


Lesenswert?

Mark schrieb:
> Habe ich da etwas falsch verstanden? oder was muss ich anders
> machen?

ja.
Der Sensor hat einen Open Collector Ausgang mit NPN Transistor gegen 
Masse.
D.h. LED Anode an Plus, Kathode an Ausgang des Sensors (mit 
Vorwiderstand dazwischen).
Zusätzlich die magnetische Polung des Magneten beachten.

lg
Chris

von Mark (Gast)


Lesenswert?

JA :):)
es läuft
vielen vielen dank :)

von Lötbohrer (Gast)


Lesenswert?

Moin,
es gibt verschiedene Möglichkeiten warums bei dir nicht funktioniert:
- Magnet zu schwach
- Magnet mal andersrum hinhalten (Stichwort release point)
- Versorgungsspannung nachmessen ob wirklich > 4,5 V
- Vielleicht hast du es auch schon geschafft den Sensor durch nen 
ESD-Impuls zu grillen.
- LED richtig rum gepolt? Der Strom muss in den Sensor reinfließen.

von Mark (Gast)


Lesenswert?

Ich habe da noch einmal eine Nachfrage.
Es funktioniert wie folgt. so lange ich den Magneten an den Sensor 
halte, leuchtet die LED. Aber eigentlich möchte ich das Signal an einen 
Controller senden, damit ich die LED 3 x blinken lassen kann, wenn ich 
mit dem MAgneten da war.
Allerdings fällt mir keine gescheite möglichkeit an, wie ich das 
verbinden soll.

von spess53 (Gast)


Lesenswert?

Hi

>Allerdings fällt mir keine gescheite möglichkeit an, wie ich das
>verbinden soll.

Schon mal eine Tastenabfrage programmiert?

MfG Spess

von Mark (Gast)


Lesenswert?

Ja, das war eines meiner ersten Übung.
5V->Taste->Eingang Controller und einen Widerstand zwischen Eingang 
Controller und 5V, damit die Spannung beim loslassen des Tasters sofort 
wegfällt.
Aber hier habe ich ja
5V->+(Sensor)
5V->Widerstand->0(des Sensors)
und einmal GND->-(Sensor)

Jetzt hätte ich eine Verbindung von -(Sensor) zum Eingang Controller 
gelegt, da tut sich aber nichts

Anbei meinen Code für Arduino
1
int hallPin=2;
2
int LED=13;
3
int statePin=LOW;
4
5
void setup() {
6
  pinMode(hallPin,INPUT);
7
  pinMode(LED,OUTPUT);
8
}
9
10
void loop() {
11
  statePin=digitalRead(hallPin);
12
  if(statePin==HIGH){
13
    digitalWrite(LED,HIGH);
14
  }
15
  else {
16
    digitalWrite(LED,LOW);
17
  }
18
}

von Max D. (max_d)


Lesenswert?

1. Wenn du mehr als die blinkende LED willst wirf bitte die Arduino IDE 
weg (die hw kannst du aber gut weiter verwenden).
2. Du verbindest den Pin des AVRs den du als Eingang gewählt hast mit 
dem O des Halls und schaltest den internen Pullup ein (Bei PORT des 
entsprechenden Pins auf eins, während DDr auf Eingang steht).

von Mark (Gast)


Lesenswert?

Ah, auch funktioniert das.
Allerdings genau anders herum, als ich es eigentlich wollte.
Also so wie es oben geschrieben ist, Leuchtet die LED am pin13 so lange, 
wie ich 'nicht' mit dem Magneten am Sensor bin. Bin ich mit dem MAgneten 
am Sensor, geht die LED am Sensor an, allerdings die am Controller aus. 
Dies liegt aber an der Art vom Sensor (da einen NPN Transistor als 
Ausgang) oder?

Was ist so schlecht an der Arduino IDE? Ich finde es sehr nett damit zu 
programmieren.

Allerdings wollte ich es hinterher sowieso auf einen Attiny45 
programmieren, dann würde ich auch in AVR-Studio Programmieren.

Aber noch einmal Herzlichen dank

von Max D. (max_d)


Lesenswert?

Das mit dem andersrum liegt (wie du richtig erkannt hast) daran, dass es 
ein Open-Collector Ausgang ist.
Das ist in Software aber ganz einfach umzudrehen.
Bei dir zb indem du aus "  if(statePin==HIGH){" ein "if(statePin==LOW){" 
machst.
Arduino ist deswegen suboptimal weil:
1. Die wirkliche Hardware hinter einer Ladung Funktionen und Objekten 
versteckt wird, da gehen viele Möglichkeiten bei drauf.
2. C++ verwendet wird. Das ist zwar auf dem Desktop das Mittel das Wahl, 
aber auf einem winzigen 8-Bit Controller einfach viel zu Speicherhungrig
3. Dadurch, dass man den C++ Code bis zum Erbrechen eindampfen muss 
bevor er überhaupt auf den AVR passt ist Debugging nahezu unmöglich 
(vlt. grade noch indem man paar Zeichen auf die UART schiebt.

von Mark (Gast)


Lesenswert?

Danke Max (und auch allen anderen)

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.