Entschuldigung für die Länge.
Dies ist eine Fortsetzung meiner jüngsten Frage . Ich habe eine optokoppelte 8-Relais-Karte, die ich an meinen Mikrocontroller anschließen möchte. Ich habe ein 74HC595-Schieberegister inline platziert, um die Eingangsports zu konsolidieren. Dabei hat das Board jedoch ein merkwürdiges Verhalten gezeigt.
Wenn ich nichts oder nur eine kleine Last in die Relais einstecke, funktioniert alles gut mit dem Schieberegister. Sie lassen sich problemlos ein- und ausschalten. Sobald ich eine Pumpe mit mehr als 1 Ampere an das Relais anschließe, kann man das Auslösen des Relais hören und es löst sich schnell aus. Die LED IN1 (Abbildung oben) leuchtet ebenfalls für den Bruchteil einer Sekunde auf. Manchmal (1 zu 5) bleiben Relais und Pumpe jedoch eingeschaltet. Jetzt wird es komisch; Wenn ich das Schieberegister entferne und die Stifte direkt mit dem Mikrocontroller verbinde, funktioniert das Einschalten der Pumpe einwandfrei.
Es wurden also Störungen im Schieberegister festgestellt, aber soweit ich das Design der Relaisplatine verstehe, versorgt das Schieberegister nur die LED im Optokoppler (U1) und ist in keiner Weise mit einem anderen Teil der Schaltung (Schieberegister) verbunden und Controller wurden mit Batterie betrieben). Die Karte ist auch aktiv niedrig, so wie ich es verstehe, nimmt das Schieberegister Strom vom Optokoppler ab. Könnte es sein, dass der Optokoppler mehr Strom benötigt, um die höhere Last zu schalten, als das Schieberegister sinken kann? Ich bin vielleicht weit weg, weil mich das verwirrt hat. Gibt es auch Möglichkeiten, wie Störungen auftreten können, obwohl sie isoliert und mit einer Batterie betrieben werden?
Alle Tests wurden mit einer Batterie durchgeführt, die das Mikrocontroller-Schieberegister mit Strom versorgt, und mit einer sehr einfachen Skizze, die nur ein einziges Schieberegister Pin für Byte zum Ziel hatte.
Das 8-Relais ( Info ): Es ist derzeit mit einer separaten 5-V-Wandwarze konfiguriert, die die Relais mit Strom versorgt. Der Mikrocontroller liefert 5 V, um nur den Optokoppler mit Strom zu versorgen.
Ich freue mich über jede Hilfe, die Sie mir geben können.
Update 13. August:
Immer noch nicht los, aber ich habe noch ein paar Tests durchgeführt: Ich habe das Schieberegister und Arduino 3 Fuß von den Relais und der Netzstromversorgung entfernt. Beide wurden von einer 9-V-Batterie gespeist. Das einzige, was mit der Relaisplatine verbunden war, war eine 5-V-Schiene vom Arduino und die 8 Drähte vom Schieberegister zu den Relaisplatineneingängen. Gleiche Ergebnisse, 100W Licht funktioniert hervorragend, Pumpe bewirkt, dass es auslöst. Wenn ich das Schieberegister entferne und die Ausgangsstifte direkt an den Arduino anschließe, schaltet sich die Pumpe problemlos ein.
Um zu überprüfen, ob mit der dedizierten 5-V-Wandwarze, die die Relais versorgt, nichts los war, zog ich den Stecker heraus und ersetzte den Jumper an JD-VCC und VCC und befestigte den Arduino GND. Gleiches Ergebnis, 100W Licht funktioniert, Pumpe löst aus.
Es muss ein Schieberegister sein.
Ich habe auch einen 47uf-Entkopplungskondensator auf die Stromschienen gelegt, und das Schieberegister hat eine 104 direkt daneben.
Heute Abend werde ich versuchen, ein Multimeter an einen der Ausgangspins anzupassen. Ich möchte sehen, wie viel Strom der Optokoppler zieht.
Ich habe gerade auch ein Oszilloskop bekommen, daher lerne ich immer noch, wie man es benutzt, aber vielleicht kann ich herausfinden, wie man Störungen auf der 5-V-Schiene oder in den Ausgangsleitungen misst.
Update 14. August:
Ich habe es geschafft, es mit meinem Oszilloskop zu erfassen. Rigol wfm Dateien unten. Kanal eins ist an einen Ausgangspin im Schieberegister angeschlossen. Kanal zwei ist an die 5V-Schiene angeschlossen.
Ich habe gerade einige Tests durchgeführt und es geschafft, eine 500-mV-1-V-Spitze (manchmal war es ein Abfall) sowohl auf der 5-V-Schiene als auch auf einem der Ausgangspins aus dem Schieberegister zu reproduzieren. Das ist das Problem, oder? Würde diese Art von Spitze das Schieberegister auslösen und seltsam wirken lassen?
15. August:
Unten sehen Sie eine Aufnahme, wenn ich die Pumpe manuell ein- und ausschalte. Verwenden Sie dazu nicht das Schieberegister. Die blaue Linie ist der Ausgangsregister 1 des Schieberegisters, die gelbe Linie ist 5V.
Ich habe auch einige Bilder vom Setup gemacht:
Ich habe auch einen Forumsbeitrag, auf den ich auch die Ergebnisse aktualisiert habe: Arduino Forum
16. August:
Ich konnte heute ein viel besseres Bild machen. Ich wusste nicht, dass das Oszilloskop nur so viele Punkte erfasst, wenn es in Intervallen von 1 Sekunde läuft (macht jetzt total Sinn). Hier ist der böse Emi über Pin 1 aus dem Schieberegister:
Ich werde dieses Wochenende alle empfohlenen Komponenten abholen und versuchen, sie einzeln hinzuzufügen.
18. August:
Problem bestätigt. Die Pumpe verursachte so viel Lärm, dass nichts, was ich an den Niedrigstromleitungen tun konnte, die Wellen enthalten konnte. Diese Wellen drangen in die Schieberegisteruhr \ latch \ data pins ein und verursachten Korruption \ resets.
Also ging ich bis zum Äußersten und riss einen Hochleistungs-APC-Rack-Überspannungsschutzkreis heraus und stellte ihn vor die Pumpe.
Jetzt gibt es kaum noch einen Fehler in einer der Zeilen. Hurra!
Jetzt ging es darum, dies in diesem Gehäuse-Footprint zu behalten, damit ich sehen kann, ob ich eine kompaktere Version herstellen kann, da ich denke, dass dieses Board übertrieben ist und ich für jede der 5 Pumpen, die ich habe, eine benötigen würde. Ich werde mit nur einem einzigen MOV beginnen und sehen, wie viel es das Rauschen reduziert.
Behobenes Problem: Ich habe mich für einen Netzfilter entschieden, um zu sehen, ob ich das Pumpengeräusch direkt an der Quelle herausfiltern kann. Ich habe das gekauft: Delta High Performance Filter . Jetzt bekomme ich nicht einmal mehr einen Fehler auf dem Oszilloskop.
Vielen Dank für all die Hilfe, ich wünschte, ich könnte Sie alle als Löser markieren, aber ich kann nicht, also habe ich es nur dem gegeben, der die meisten Tipps angeboten hat.
quelle
Antworten:
Wie ist das Schieberegister verdrahtet? Haben Sie einen 0,1 uF Bypass-Kondensator über den Stromkabeln in der Nähe des IC-Gehäuses?
Es klingt für mich wie ein Geräuschproblem, zumal es nur ausgelöst wird, wenn Sie die Relais belasten. Die Tatsache, dass der Schieberegister-Registerzustand zurückgesetzt wird, lässt mich denken, dass es sich um ein Stromversorgungsproblem handelt.
Wie verdrahten Sie das Schieberegister?
Bei einem 74HC595 müssen Sie:
Zuletzt benötigen Sie einen 0,1 uF Bypass-Kondensator zwischen Pin 16 (Vcc) und Pin 8 (Gnd).
quelle
Bewegen Sie den Arduino so weit wie möglich vom Relaismodul und der Pumpe weg. Stellen Sie außerdem sicher, dass sich keine (Pump-) Stromkabel in der Nähe des Arduino befinden.
Verwenden Sie dann ein Twisted Pair- oder CAT5-Kabel, um das Ein / Aus-Signal vom Arduino zu senden.
Ich kann die wfm-Datei nicht öffnen (ich denke, es sind einige Hex-Werte, aber dies ist schwer zu visualisieren, wenn es trotzdem geöffnet wird), aber Ihrer Beschreibung nach klingt es so, als hätten Sie das Ereignis erfasst.
Diese Spitze (die je nach BW und Einstellungen schneller / größer sein kann als auf Ihrem Oszilloskop angegeben) ist wahrscheinlich das Problem. Wie eine solche Spitze auf Ihre Schienen gelangt, muss noch herausgefunden werden. Ich denke, an diesem Punkt würden ein oder zwei Fotos Ihres Setups wahrscheinlich viel helfen, und wenn möglich ein detailliertes Diagramm Ihrer gesamten Verkabelung (Pumpe, Relaismodul, alle) Netzteile, Arduino usw.)
Sind der Relaisadapter und die Arduino-Masse miteinander verbunden?
BEARBEITEN - beim Betrachten des Bildes sieht das Layout nicht gut aus, es ist etwas eng. Es scheint, dass unter dem Relaismodul Netzkabel verlaufen - diese sind möglicherweise mit der isolierten Arduino-Seite verbunden. Versuchen Sie, diese zu entfernen, wenn Sie können.
Außerdem sollten Sie den CAT5 oder ähnliches für das Schieberegistersignal verwenden - führen Sie ihn zusammen mit 5 V aus, um den Schleifenbereich zu verringern.
An dieser Stelle würde ich auch versuchen, ein paar in Sperrrichtung vorgespannte Dioden zu 5 V und Masse vom Schieberegisterausgang hinzuzufügen, um alle auftretenden Spitzen zu klemmen (5 V Zener optional, aber eine gute Idee, wenn Sie eine haben).
Sie können auch einen kleineren Kondensator von der Leitung zur Erde (z. B. 100 nF) platzieren, da dies nur ein Schaltsignal ist.
Um sicherzustellen, dass keine Verbindung zwischen irgendetwas besteht, das nicht vorhanden sein sollte, lohnt es sich wahrscheinlich, die Kontinuität zwischen Arduino-Masse und Relaismodul-Masse sowie Arduino 5V und Relais 5V zu prüfen.
quelle
Dies klingt sicherlich nach einem Problem mit elektromagnetischen Störungen.
Die Erdung des Arduino-Netzteils sollte mit der "grünen Erdung" Ihres lokalen Stromversorgungssystems verbunden sein. Ein leerer Stecker mit einem einzigen Draht zur "grünen Masse" könnte verwendet werden.
Versuchen Sie, die Pumpenverkabelung physisch vom Mikrocomputer-Material zu trennen.
Sie können auch einen "Überspannungsschutz" -MOV (Metalloxid-Varistor) über der Pumpe anbringen, um die Spitzen zu absorbieren, die beim Schalten der Last auftreten können.
Welche Spannungs- und Strompegel hat die Pumpe?
Ihre Verkabelung sieht richtig aus.
quelle