Hi Leute,
ich habe 9 Leitungen von je einem Hall Sensor. Wenn einer der Sensoren
ein Magnetfeld detektiert, soll mein Atmega2560 reagieren. Dabei ist es
ganz egal, welcher Sensor etwas detektiert.
Um Ports zu sparen, kann ich die neun Sensorsignale doch sicherlich
"Oder"-verschalten. Wie mache ich das am elegantesten? Gibt es dafür ein
spezielles IC?
Als Hall Sensor kommt ein TLE4905 mit integriertem Schmitttrigger zum
Einsatz. Sollte also saubere 0V (kein Magnet da) bzw 5V (Magnet ist da)
auf den Leitungen haben.
Grüße, 007
An jeden Sensor-Ausgang die Anode einer Diode anschließen.
Alle Katoden parallelschalten und über einen Schutzwiderstand (z.B. 1k)
auf den Eingang des µC geben. Den µC-Eingang über 100k gegen GND
schalten (Pulldown).
Funktion: Der Eingang wird über den Pulldown auf LOW gehalten. Wenn
einer (oder mehrere) Sensoren ein HIGH ausgeben, wird der µC-Eingang
über die Diode auf HIGH gezogen.
Normalerweise haben Hall-Sensoren OC-Ausgänge (das muss nicht so sein,
ist aber bei allen, die ich kenne so)
Falls ja: alle zusammenschalten, gemeinsamen pull-up, fertig.
007 schrieb:> Also kämen> von logisch 5 Volt nur 4,3V an, oder bin ich da auf dem Holzweg?
Ja, aber CMOS erkennt ab 2/3*Ub (3.333V @Ub=5V) sicher als High.
007 schrieb:> Sieht sehr elegant aus. Super hinweis! Ich hätte jetzt verzweifelt etwas> mit Logik ICs gebastelt...
Schau' halt das Datenblatt an, durch den Open Collector kann man alle
zusammenschalten, da braucht's nur einen PullUp und kein Diodengrab.
H.Joachim Seifert schrieb:> Normalerweise haben Hall-Sensoren OC-Ausgänge (das muss nicht so> sein,> ist aber bei allen, die ich kenne so)> Falls ja: alle zusammenschalten, gemeinsamen pull-up, fertig.
Richtig, du hast recht. Ich habe mir gerade mal das Datenblatt
angesehen. Die Ausgänge sind OC.
Also alle Ausgänge parallel und an den µC-Eingang. Der Pullup sollte
auch problemlos mit dem internen Pullup des µC funktionieren.
Ich hatte mich nur auf die Aussage von 007 verlassen, daß da 0 und 5V
rauskommen.
@007: Also nochmals zur Erklärung:
Kein Magnet: 5V über den Pullup liegen an
Magnet erkannt: Ausgang schaltet gegen GND, also LOW.
ich schrieb:> Kein Magnet: 5V über den Pullup liegen an> Magnet erkannt: Ausgang schaltet gegen GND, also LOW.
Vielen Dank, dass wäre natürlich die einfachste Beschaltung. Werde es so
realisieren. Also alle Signale an einen Eingang des Mikrocontrollers.
Den entsprechenden Pin schalte ich auf Eingang.
Aber bitte nicht nur mit dem internen pullup, der ist zu gross dafür.
Wahrscheinlich hast du auch etwas an Leitungslänge, da gibts schnell
Störungen. Nimm einen externen dazu, 1k oder 2k2.
Meint ihr das klappt so wie im Anhang zu sehen?
Oder muss ich die Beschaltung ändern, da ich ja 9 Sensoren an einander
schalte.
Die Hall-Sensoren liefern, wenn kein Magnetfeld wirkt 5V.
Erkennt einer oder mehrere der Sensoren ein Magnetfeld so zieht er die
gemeinsame Leitung auf 0V.
Kann ich mir da nicht pull-Ups sparen? Die liegen je immerhin parallel.
007 schrieb:> Ihr meint so,007 schrieb:> Kann ich mir da nicht pull-Ups sparen? Die liegen je immerhin parallel.
Einer reicht, am Besten am Eingang des µC platzieren.
007 schrieb:> Die Hall-Sensoren liefern, wenn kein Magnetfeld wirkt 5V.
Fast richtig :-)
Die 5V kommen nicht vom Hallsensor, sondern vom Pullup. Und zwar so
lange, bis mindestens einer der Hallsensoren diese Leitung gegen GND
zieht.
Und den Pullup brauchst du nur einmal am Eingang des µC.