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
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
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.
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.
Hi >Allerdings fällt mir keine gescheite möglichkeit an, wie ich das >verbinden soll. Schon mal eine Tastenabfrage programmiert? MfG Spess
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 | } |
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).
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.