Mit einem VMA313 und Arduino habe ich mir provisorisch einen Wickelzähler für Spulen gebaut. Mit Interrupt funktioniert das auch sehr zufriedenstellend. Ab und zu kommt es vor, dass der Sensor "durcheinander" kommt. Das passiert nicht während des Betriebs, sondern meist beim Einrichten der Spulen. Er reagiert dann einfach nicht mehr. Erst wenn ich ihn ein paar mal dem Wechsel von Süd- und Nordpol ausgesetzt habe läuft es wieder. Bleibt da irgend ein Restmagnetismus im Sensor oder der Platine? Wie kann ich das verhindern?
Martin E. schrieb: > VMA313 So wie es aussieht ein Allegro A3144. > Bleibt da irgend ein Restmagnetismus im > Sensor oder der Platine? Sicher nicht. Zeig doch mal deinen Aufbau.
Im Moment ist der Aufbau größtenteils wieder zerlegt. Ich kann dir aber sagen, dass der Südpol eines Magneten am Sensor vorbei geführt wurde. Du hattest ja anscheinend einen Verdacht, was den Aufbau betrifft. Meinst du es wäre besser, beide Pole im Wechsel zu verwenden, oder was hattest du für Gedanken?
Martin E. schrieb: > Meinst du es wäre besser, beide Pole im Wechsel > zu verwenden? Das ist bei dem Sensor nicht nötig, der ist unipolar. Allerdings hat er eine ziemlich geringe Hysterese, das kann je nach Aufbau ungünstig sein. Du hast aber schon den Südpol an der Seite mit dem Aufdruck vorbei geführt?
hinz schrieb: > Kann es sein, dass du den Pull-Up vergessen hast? Das ist jetzt die Frage. Ich habe tatsächlich einen Pull-Up drin. Es ist ja so, dass der Sensor speziell für Arduino mit 3 Pins geliefert wird. GND VCC S Auf der Platine sitzt noch ein Widerstand für die vorhandene LED die immer schön blinkt, wenn man (unter Versorgungsspannung) einen Magneten vorbei führt. Laut Datenblatt sollte es reichen, den Sensorausgang direkt an z.B. A10 zu hängen. https://www.velleman.eu/downloads/29/vma313_a4v01.pdf Und wie schon beschrieben, das Ding läuft tausende Impulse einwandfrei, aber plötzlich wenn man mal gestoppt hat, fängt es nicht wieder an. Erst wenn ich dann mit dem Magneten am Sensor ein paar Mal vorbeigefuchtelt habe fängt er sich wieder.
:
Bearbeitet durch User
Martin E. schrieb: > Laut Datenblatt sollte es reichen, den Sensorausgang > direkt an z.B. A10 zu hängen. Dann sollte man aber unbedingt den zugehörigen Pull-Up des AVR aktivieren. > Erst wenn ich dann mit dem Magneten am Sensor ein > paar Mal vorbeigefuchtelt habe fängt er sich wieder. Ist es denn wirklich ein A3144? Marking, 1.Zeile: 44E?
Auf dem Sensor steht 3144 402 Sonst nichts. Ich habe einen 10K Pullup die ganze Zeit verwendet.
:
Bearbeitet durch User
Martin E. schrieb im Beitrag \#6395587: > Auf dem Sensor steht > 3144 > 402 > Sonst nichts. Chinesischer Nachbau des A3144. Aber das sollte kein Problem sein. > Ich habe einen 10K Pullup die ganze Zeit verwendet. Dann sehe ich auch keinen Grund für das merkwürdige Verhalten.
Befindet sich der Sensor in der Nähe von Metall? Schraube oder Befestigung ? Metall in der Nähe des Sensors wird durch den vorbeilaufenden Magneten magnetisiert. Das hin und her bewegen entmagnetisiert !
Daran hatte ich auch schon gedacht, ich hatte den Sensor mit Klebeband an eine Handbohrmaschine befestigt. Da sollte zwar einiges an Metall drin sein, aber dort wo er befestigt war ist gar nicht mal so viel, als dass ein Magnet dort hängen bleiben würde. Und so weit ich mich daran erinnere hatte ich den Effekt auch ganz am Anfang meiner Experimente, als ich einfach nur einen Magneten am Sensor vorbei bewegte. Aus dem Grunde hatte ich dann sogar mein Ersatzexemplar für die weiteren Versuche verwendet. Vielleicht muss ich mir die Signale doch mal einige Zeit am Oszi anschauen.
Martin E. schrieb: > Ab und zu kommt es vor, dass der Sensor "durcheinander" kommt. > Das passiert nicht während des Betriebs, sondern meist beim > Einrichten der Spulen. > Er reagiert dann einfach nicht mehr. Erst wenn ich ihn ein > paar mal dem Wechsel von Süd- und Nordpol ausgesetzt habe > läuft es wieder. Softwaremacke? Ich habe gelegentlich schon Programme erlebt, die einfrieren, wenn es nichts zu tun gibt. Grund sind vermutlich Stacküberläufe o.dgl. und das Programm initialisiert sich per Timeout oder nach jeder korrekten Aktivität teilweise neu, so dass der Fehler dann nicht auffällt.
Martin E. schrieb: > Vielleicht muss ich mir die Signale doch mal einige > Zeit am Oszi anschauen. Ja, tu du das! Meine Glaskugel sagt, der Fehler steckt genau da, wo du nicht danach suchst! z.B. blendest du hier die Software völlig aus. Das steckt es, möchte darauf wetten.
1 | #include <Wire.h> |
2 | #include <LiquidCrystal_I2C.h> |
3 | LiquidCrystal_I2C lcd(0x27, 16, 2); |
4 | const byte HallPin =2; |
5 | volatile long zaehler = 0; |
6 | |
7 | void setup() { |
8 | // put your setup code here, to run once:
|
9 | lcd.init(); |
10 | lcd.backlight(); |
11 | lcd.clear(); |
12 | zaehler=0; |
13 | attachInterrupt(digitalPinToInterrupt(HallPin),Hall_ISR,FALLING); |
14 | }
|
15 | |
16 | void loop() { |
17 | // put your main code here, to run repeatedly:
|
18 | lcd.setCursor(0,0); |
19 | lcd.print("Anzahl Windungen"); |
20 | lcd.setCursor(0,1); |
21 | lcd.print(zaehler); |
22 | delay(50); |
23 | }
|
24 | |
25 | |
26 | |
27 | void Hall_ISR() { |
28 | zaehler++; |
29 | }
|
Martin E. schrieb: > volatile long zaehler = 0; volatile unsigned long Martin E. schrieb: > lcd.print(zaehler); zaehler solle atomar ausgelesen werden. Aber einen Grund, für das genannte Fehlverhalten, sehe ich nicht.
Ja, ich fange erst an, mich mit Arduino zu beschäftigen. 'Weiß jetzt auch nicht, was du mit atomar auslesen meinst. Ich hatte dran gedacht, FALLING und RISING auszulesen und dann durch 2 zu teilen. Wäre so etwas möglich?
https://www.nongnu.org/avr-libc/user-manual/group__util__atomic.html Martin E. schrieb: > Ich hatte dran gedacht, FALLING und RISING auszulesen > und dann durch 2 zu teilen. Wäre so etwas möglich? Möglich ist vieles. Aber nicht alles sinnvoll.
Martin E. schrieb: > Auf der Platine sitzt noch ein Widerstand für die > vorhandene LED die immer schön blinkt, wenn man > (unter Versorgungsspannung) einen Magneten vorbei > führt. Blinkts denn, wenn der Sensor feststreckt, oder blinkts dann nicht mehr ? Martin E. schrieb: > Erst wenn ich ihn ein > paar mal dem Wechsel von Süd- und Nordpol ausgesetzt habe > läuft es wieder. Hat die Platine irgendwo Gold, dann hat sie auch Nickel und damit magnetische Remanenz: Martin E. schrieb: > Bleibt da irgend ein Restmagnetismus im > Sensor oder der Platine Martin E. schrieb: > Meinst du es wäre besser, beide Pole im Wechsel > zu verwenden, Ja.
MaWin schrieb: > Hat die Platine irgendwo Gold, dann hat sie auch Nickel und damit > magnetische Remanenz: Das bisschen wird dem Sensor aber nicht reichen.
Also Gold ist keines sichtbar auf der Platine. Das wäre auch nur ein Hauch, falls vorhanden. Nur die angebrachte Stiftleiste (20mm vom Sensor entfernt) ist vergoldet und besteht wohl aus Eisenstiften. Das mit dem Polwechsel werde ich einmal testen. Werde mir mal eine Spule aufbauen, die den Sensor ansteuert. Dann kann ich auch gleich nach der LED schauen.
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.