Hallo liebe Community!
Ich arbeite derzeit an meiner Diplomarbeit und hätte hierfür eine Matrix
aus Hallsensoren 41F benötigt. Ich habe bereits alles fertiggelötet und
mit LEDs getestet. Allerdings funktioniert es mit dem µC nicht.
Teilweise schalten die Sensoren obwohl kein Magnet oben ist. Ich habe
den Schaltplan und eine Ausgabe des µCs angehängt. In dem Testprogramm
frage ich im Sekundentakt ab und habe keinerlei Magneten oben.
Allerdings habe ich ein falsches Ergebnis.
Würde mich freuen, wenn jemand eine Lösung hat, bin schon am
Verzweifeln.
Gruß,
Sebastian
Ein Sensor, der keine Versorgung hat, wird mit seinen Bodydioden am
Ausgang die Signalleitung mehr oder weniger kontrolliert auf GND ziehen.
Ich würd einen echten Multiplexer für die Signale bauen und die Sensoren
ständig an der Versorgung lassen.
MfG Klaus
Klaus schrieb:> wird mit seinen Bodydioden am> Ausgang die Signalleitung mehr oder weniger kontrolliert auf GND ziehen.
Der hat aber keine Bodydioden, sonden OpenCollector Ausgang. Damit
sollte es klappen, das Ergebnis des TE spricht ja auch dafür, das nicht
alle Sensoren auf Masse ziehen, sondern nur ein paar. Logischerweise
kann man die Sensoren nicht mit hoher Geschwindigkeit abfragen, denn die
brauchen ein wenig Zeit nach dem Powerup.
Ich stimme aber mit dir überein, das es sinnvoller wäre, nur die
Ausgänge zu muxen, ist auf jeden Fall schneller. Wäre mit einem 4067 und
einem 4051 auch schnell erledigt.
Sebastian schrieb:> Wäre ein ungelatchter so einer hier?:> https://www.conrad.at/de/hallsensor-ah3144eua-45-vdc-bis-24-vdc-messbereich-0005-0022-t-to-92-loeten-1424999.html
Scheint so. Der spricht auf ein vorhandenes Magnetfeld an und wird
inaktiv, wenn keines da ist, bzw. unter Brp fällt.
Wenn du reichlich Magnete hast(1), könntest du deinen vorhandenen Aufbau
retten, indem du unter die Sensoren ein leicht in Abschaltpolarität
vorgespanntes Magnetfeld legst, das die Sensoren im Ruhezustand
zurückkippen lässt. Wenn du dann einen Magneten auflegst, sollte der
Sensor auf 'aktiv' kippen.
(1): Such dir einen Raucher, der mit Gizeh Papers dreht. An jeder
Packung ist ein kleiner kräftiger Magnet.
Matthias S. schrieb:> Such dir einen Raucher, der mit Gizeh Papers dreht. An jeder> Packung ist ein kleiner kräftiger Magnet.
Ich hatte in meinem Umfeld auch mal angesagt, dass ich diese Magneten
gerne hätte. Der Haupteffekt war, dass alle ganz erschrocken waren, wie
viele Magete so schnell zusammenkommen, dass ich nach kürzester Zeit
einen "halben Meter Magneter" zusammen hatte :) Das hat sicherlich den
ein oder anderen zum Aufhören bewegt.
Danke für eure Ratschläge. Ich habe mir nochmal mein Konstrukt angesehen
und bemerkt, dass die hinteren Spalten (5-12) einwandfrei funktionieren,
aber die vorderen eben nur teilweise. Kann es sei sein, dass irgemdwo in
einer Leituung die Magnetfelder den Sensor beeinflussen?
Sebastian schrieb:> Kann es sei sein, dass irgemdwo in> einer Leituung die Magnetfelder den Sensor beeinflussen?
Du müsstest ja etwa 40 Gauss erzeugen - das ist eher unwahrscheinlich.
Vllt. überprüfst du nochmal deine Abfrage Routine (kannst du ja mal
posten) und machst den Test mit dem umgepolten Magneten unter einem
fehlerhaften Sensor.
So hier ein Bild vom Aufbau. Die eingezeichnete Linie kennzeichnet die
Grenze von geht/geht nicht. Die Abfrage habe ich zurzeit mit der Arduino
IDE geschrieben, wird später mit AtmelStudio gemacht, aber zum Testen
geht es schneller. Ich habe auch mit dem Multimeter nachgemessen und es
ist ident mit den ermittelten Werten im Programm.
Ich habe auch bereits versucht einige Sensoren durch neue zu ersetzen,
hat leider nicht sehr viel gebracht.
Sebastian schrieb:> Die Unteren, sind in diesem Fall 5-12 und die funktionieren aber. Die> darüber hingegen nicht, obwohl sie viel kürzere Leitungen haben.
Anstatt zu Raten messe doch einfach mal die Signale in Deiner Schaltung
mit einem Oszilloskop.
Hmm, wenn deine Pullups wirklich bei 10k sind, könnte das schon zu viel
sein. Teste mal mit 4,7k oder 3,3k, zumindest an den betroffenen Zeilen.
In dem Kabelverhau will ich ein Übersprechen zwischen den Leitungen
nicht ausschliessen, so wenig wie einen Logikfehler. Poste doch mal den
Sketch.
Ausserdem ist es sinnvoll, die VCC für die MOSFet gut abzublocken (z.B.
mit 100µF) und an die VCC der Sensoren nochmal 0,1µF pro Zeile. Das
bedeutet zwar, das zum Aufladen des 0,1µF ein wenig umgeladen wird, aber
der 100µF wäre da ein ausreichendes Reservoir.
Der HC164 latch nicht, beim Umschalten erscheinen alle bit sofort so am
Ausgang, wie sie hineingeschoben werden. Könnte hier ein Fehler zu
finden sein?
Abblock-Cs sind natürlich immer hilfreich.
StromTuner
PS: sonst, also was am Foto erkennen kann, sauber aufgebaut. Sieht gut
aus.
Hoffe die Größe passt jetzt. Ich werde mal andere Widerstände und das
mit den Kondensatoren testen. Sketch lade ich nacher mit dem PC hoch.
Danke mal an alle die hier so hilfsbereit sind ??.
So an den Pullups liegt es nicht, habe gerade 4,7k und 3,3k getestet.
Einen 0,1µF Elko habe ich nicht, jedoch einen Folienkondensator mit
0,1µF. Ich habe den mal probiert, einen Hallsensor hat er sogar
beeinflusst. Das ganze habe ich dann auch mit einem 1µF Elko getestet,
aber mit genau demselben Ergebnis. Zwei Hallsensoren waren immer noch
unschlüssig. Soll ich mir 0.1µF Elkos kaufen? Oder wird es
wahrscheinlich nicht viel bringen?
Die Mosfets sind auch mit 100µF gekoppelt.
PS: der Sketch ist jetzt angehängt, ist nicht gerade professionell
geschrieben, ist ja nur zum Testen.
> for(int i = 0; i < 8; i++){>if(digitalRead(A0+i) == LOW)...
A0 ist als konstante definiert? darf man da int i einfach so dazu
addieren oder muss das erst in eine Hilfsvariable umkopiert werden? Ich
frag libbers vorher. Nicht das ich wieder blamiere...
Der Funktion DigitalWrite(*HIGH*|*LOW*) kann ja auch ein boolscher
Ausdruck direkt als Parameter übergeben werden.
(Das war peinlich) :|
StromTuner
Sebastian schrieb:> Da es bei den anderen Spalten funktioniert, wird man es wohl so machen> können.
Gut, meinereiner würde einfach in einem Schwupps den Port einlesen,
anstelle durch die acht Inputs zu zählen. Wenn die Kondensatoren
Einfluss haben, deutet das aber schon auf die Hardware hin.
Was passiert denn nun, wenn du die entsprechenden Hallsensoren mit
Magneten auf inaktiv kippen lässt?
Sebastian schrieb:> Einen 0,1µF Elko habe ich nicht,
Das muss auf keinen Fall ein Elko sein, Folko oder Kerko ist schon
richtig.
Dann wird beim Hallo_test.ino jetzt nur eine Zeile zum test angefahren
und nur eine Spalte ausgelesen. Wenn die geht, kompilierst Du neu und
nimmst Dir die nächste Zeile vor. aha.
StromTuner
Ich glaube ich habe den Fehler. Habe jetzt den Multiplexer rausgenommen
und an den MOSFETs abwechselnd Masse angehängt. Bei allen bis auf ein
paar hatte ich alles 1en. Dann habe ich direkt an der Schaltung 5V
angelegt, und alle funktionieren. Kann es sein, dass die Mosfets
"defekt" sind und nicht mehr genug Strom liefern können?
Sebastian schrieb:> Kann es sein, dass die Mosfets> "defekt" sind und nicht mehr genug Strom liefern können?
MOSFets sind empfindlich gegen statische Entladung aufs Gate, aber das
sollte doch einfach rauszufinden sein, indem du die Versorgungsspannung
misst, die auf die Hallsensoren geschickt wird. Es sollte bei
durchgeschaltetem MOSFet keine nennenswerte Spannung zwischen Drain und
Source zu messen sein (MOSFet nahe null Ohm).
Sebastian schrieb:> Hallo. Mosfets sind zwar gewechselt, allerdings ohne Änderung:/
Wenn du dir die Kommentare von Honeywell nochmal durchliest, steht da
explizit das da oben drin. (Leider nur als Scan bei
http://www.datasheetarchive.com/hall%20sensor%2041F-datasheet.html )
Das ist nun mal bei gelatchen Sensoren so, das sie, solange das
Magnetfeld zwischen den Schwellen liegt, einen beliebigen Zustand
annehmen können. Du musst also, wenn du von den Dingern nicht abrücken
willst, ein Magnetfeld anlegen, was sie in den gewünschten Zustand
kippt.