PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EMV Probleme



damfino
24.05.2014, 20:52
Hi,
ich habe 2 Atmega 1284P 16Mhz verbaut, mit folgenden Problemen:

1. Atmega: stürzt hin und wieder ab
2. Atmega: stürzt nie ab. Misst unter anderem die Akkuzellen über Spannungsteiler, nur stimmt die Spannung nicht sobald eine Ladespannung anliegt. Atmega ist misst dagegen gleichzeitig und Fehlerfrei.

Stromversorgung:
12-16V Akku -> 470µF C -> 2.5A Schottky Diode -> 1000µF C -> 2A 5V Step Down -> 4.7µF C -> Mikrokontroller + andere Sensoren
Reset Pin mit 10kO Pullup
100nF Kerko an jedem VCC Pin
Werden damit Störungen durch die Motoren (beim Abschalten induzierte Spannung) ausreichend gefiltert?


Atmega 1:
Vermutung: es kommt etwas über die Motoransteuerung herein.
Motoren werden mit dieser Schaltung gesteuert: http://www.mikrocontroller.net/articles/Motoransteuerung_mit_PWM#2-Quadrantensteller_mit_Halbbr.C3.BCcken_Mosfettreib er (ist eine eigene Platine, verbunden über 20cm Kabel)
Richtungsänderung über 12V Relais, natürlich mit antiparaller Schutzdiode. Motoren sind angeblich vorentstört, haben einen zusaätzlichen 100nF Kerko zwischen den Anschlüssen.

Die Enable Pins und Relais Pins sind über 1kO Serie und 10kO Pulldown geschalten, die PWM geht allerdings direkt auf den Mosfettreiber. Soll man hier auch Widerstände vorsehen?

Was kann man noch vorsehen um EMV zu verbessern?

Atmega 2:
Dieser ist gleich angeschlossen, auf der gleiche Lochrasterplatine, verbunden über I2C, nur mit anderen Aufgaben. Unter anderem soll der Akku überwacht werden.
ADC geht auf interne 5V Referenz, keine Beschaltung mit Spule für AVCC.
Wenn man jetzt den Akku auflädt, misst dieser höhere Spannungen als am Akku anliegen. Die 5V Spannung bleibt konstant, habe ich nachgemessen. Atmega 1 misst korrekt bei gleicher Beschaltung, aber nur Gesamtspannung, nicht die Einzelzellen.
Einziger Unterschied: Spannungsteiler für die einzelnen Akkuzellen ist sehr hochohmig, 100k. Beim Atmega 1 liegt der Spannungsteiler bei 10kO. Wollte verhindern dass der Spannungsteiler den Akku leer saugt.
Mit einer Genauigkeit von 0.1V könnte ich leben, aber da geht es um 0.5V/Zelle Unterschied zu Atmega 1.
Noch etwas: die Einzelspannungen werden über ein Relais geschalten, da ansonsten der Atmega über die ADC Pins versorgt wird.
Die Leerlaufspannungen kann ich mit etwas Kalibrierung gut einstellen, aber unter Last oder beim Aufladen kommen unrealistische Werte raus, wie etwa unter Last eine höhere Zellenspannung als Ladeentspannung. Oder Mindestspannung während einer Fahrt von 9V, während Atmega1 auf realistische 12V kommt. Ohne Last hat der Akku nach der Fahrt typischerweise 13V. Der Akku wäre mit 50A belastbar, aber nachdem die 10A Sicherung hält ist der Akku nie voll belastet und damit sind die 9V falsch.

Suche einfach Tipps was man alles verbessern könnte, mir ist klar das Lochraster nie perfekt sein kann, noch dazu wurde schon x-Mal was verändert. Aber vielleicht habe ich einfach etwas Grundlegendes übersehen.

LG!

markusj
24.05.2014, 23:23
Schaltplan? Verkabelungsplan?

Deine Schilderungen klingen für mich weniger wie ein EMV-Problem als nach einem Masseproblem. Kann es sein, dass dein Massepotential, wenn größere Ströme fließen (Motoren, Akkuladung), Richtung VCC (oder sogar Akkuspannung) wandert? Dann bekäme der AVR Unterspannung, das weitere Verhalten ist dann undefiniert. Ähnliches gilt auch bei hochohmigen Masseverbindungen.

mfG
Markus

damfino
25.05.2014, 07:12
Danke, die Motoren sind über 2.5mm2 Kabel und Schraubklemmen angeschlossen, zu den Kontrollen geht es über Steckverbindungen (Serie PS von Pollin). An VCC Messe messe ich bisher konstante 5V, auch beim aufladen.
Werde mal direkt Kabel für Gnd und VCC legen.

LG!

PICture
25.05.2014, 09:08
Hallo!


Was kann man noch vorsehen um EMV zu verbessern?

Mein Vorredner hat meine Vermutung bestätigt ! :D

Ich würde sagen alles neu mit strenger Funktionskontrolle und nötigen Änderungen nach jeder gemachter Verbindung aufbauen. Das garantiert, dass sich keine Montagefehler heufen könnten. In komplizierter Schaltung sind alle Entwicklungsfehler in begrentzter Zeit praktisch unauffindbar.

Es könnte auch sein, dass deine Messungen wegen fehlerhaften 0 V Bezugspunkt falsch sind. Als Bezugspunkt für Messungen sollte ein Massepunkt (GND) gewählt werden, durch den sicher kein Strom fliesst:

+-----------+ +-----------+
| /------\ | | /------\ |
.-.| | | | | |.-.
RL1| || | /+\ /+\ | || |RL2
| || |( U1) (U2 )| || |
'-'| I1 | \-/ \-/ | I2 |'-'
| \-->---/ | | \---<--/ |
+-----------+----------+----------+-----------+
|
===
GND

(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
Bei sehr genauen ADC IC's sind sogar die Massen (analoge -> A GND und digitale -> D GND) intern getrennt um sie entsprechend extern zusammenverbinden zu können. Siehe dazu 1. Seite: http://pdf.datasheetcatalog.com/datasheet/nationalsemiconductor/DS005671.PDF .

In der Praxis werden oft geschirmte Messleitungen verwendet, wobei der Schirm nur einseitig mit GND verbunden ist,

markusj
25.05.2014, 18:51
Danke, die Motoren sind über 2.5mm2 Kabel und Schraubklemmen angeschlossen, zu den Kontrollen geht es über Steckverbindungen (Serie PS von Pollin). An VCC Messe messe ich bisher konstante 5V, auch beim aufladen.
Ohne Kenntnis des Schalt-/Verkabelungsplans kann ich daraus aber nichts ableiten.

mfG
Markus

damfino
25.05.2014, 19:49
Als Schaltplan habe ich momentan nur das Hauptschema im Anhang, wurde leider nicht mehr überabeitet. Es passt im Aufbau noch, es gibt eine Platine als zentrale Stromsversorgung mit Akku und Ladestation Anschluss und allen Sicherungen sowie Anschluss des Step Down Wandlers.
Von dort geht es über Kabel weiter zur Platine mit den 2 Kontrollern. Balancer gibt es nicht mehr, ist alles im Nebenkontroller integiert, wobei nur mehr Spannungen gemessen und das Laderelais angesteuert wird. Die FETs für Load Balancing gibt es nicht mehr.
Der Leistungsteil der Motorsteuerung ist auch wieder auf einer eigenen Platine.
Die Beschaltung der Kontroller entspricht der RN-Control mit Ausnahme des Cs am AREF Pin, der geht direkt auf GND wie im Datenblatt empfohlen.
=> Stichleitungen zum Kontroller, an diesen sind nur 100nF C, der Quarz und die VCC, AVCC und GND Pins der Kontroller dran. Eine Abweichung gab es, wurde heute verbessert.
Werde das demnächst aktualisieren, dauert halt wenn man das im Powerpoint pinselt.


Heute habe ich folgendes verändert:
direkte Kabel von Stromversorgung zur Kontrollerplatine um schlechten Steckerkontakt auszuschließen.
Am GND vom Quarz hatte ich mal schnell die GND Leitung zu einem Sensor weiterverlängert, jetzt hört die GND Leitung am Quarz auf, und der Sensor hat seine eigene Leitung bekommen.

LG!

damfino
26.05.2014, 09:10
Habe das Schema überarbeitet und dem aktuellen Stand angepasst, jede Platine, bzw auch Akku ist eingegrenzt um die einzelnen Einheiten unterscheiden zu können.
Alle Sensoren werden von der Kontrollerplatine aus versorgt.
Das Ladegerät ist ein einfacher Festspannungsregler eingestellt auf 16.4V mit max 3A, weit unter der Spezifikation vom Akku. Das Laderelais wird über 2 Transistoren in Serie geschalten, somit müssen Haupt und Nebenkontroller das Laden freigeben, bzw können es unabängig von einander beenden.
Nur nutzt das nichts wenn der Nebenkontroller Mist misst.

Testfahrten nach der oben genannten Änderung steht noch aus. Manchmal fährt er tagelang ohne Absturz, dann steht er wieder alle paar Minuten.


LG!


28287

markusj
26.05.2014, 09:47
Ist die Verkabelung auch wirklich genau so? Grund: Um Masseprobleme via Ferndiagnose überhaupt erraten zu können muss der Leitungsplan natürlich auch exakt stimmen. Was aber hier schon auffällt: Prinzipiell besteht nach der aktuellen Zeichnung die Möglichkeit, dass der Step-Down im Ladebetrieb keine saubere Masse mehr bekommt. Grundsätzlich solltest du alle Komponenten an einem zentralen Sternpunkt mit Masse verbinden, damit Ströme die entlang deiner Masseschiene fließen nicht zu einem Spannungsabfall entlang der Leitung führen. Dann sehen die verschiedenen Module nämlich auch unterschiedliche Masse-Potentiale!

mfG
Markus

damfino
26.05.2014, 10:12
Hallo Markus,
ja, der Plan entspricht dem Aufbau.

Das heisst es sollen die GND Leitungen von Ladestation, Lader, Step Down, im GND Punkt anschlossen werden?

Momentan entspricht der GND Punkt eher einer 10cm langen Masseschiene, auf der einen Seite der Akku Anschluss, am anderen Ende gehts weiter zu den Motoren, hatte darauf geachtet keine Verluste bis zu den Motoren zu haben, aber Lader und Ladestation wurden erst später dazu gebastelt.

Der Hauptkontroller misst aber immer richtige Werte, nur der Nebenkontroller auf der gleichen Platine misst falsch.

Werde alle Masseleitungen nachmal durchsehen und ändern!

LG!

PICture
26.05.2014, 11:05
Der Hauptkontroller misst aber immer richtige Werte, nur der Nebenkontroller auf der gleichen Platine misst falsch.

Es gibt auch Softwarefehler. :confused:

damfino
26.05.2014, 11:36
Softwarefehler sind immer möglich, vor allem bei tausenden Zeilen Code...Habe dazu schon einges verbessert um einen Software Reset auszuschließen, wie etwa bei Array Zugriff immer zu überprüfen ob die Array Grenzen eingehalten werden. Ebenso mal die Stackgröße im laufendem Programm überwacht, da war noch mehr als 1kB SRam frei.

Hier schwanken aber auch die ADC Rohwerte wenn eine Ladespannung anliegt, nur dem Hauptkontroller ist das egal.

Wie gesagt, ich hab einen sehr hochohmigen Spannungsteiler (157k/47k) um die Zellenspannungen zu messen, damit auch mal über 2-4 Tage lang der Akku kontrolliert werden kann ohne dass er alleine durch den Spannungsteiler entladen wird. Die Elektronik selbst sollte in dieser Zeit nach obiger Schaltung durch die Ladespannung versorgt werden. Ziel ist eine einfache Überwachung auf Unter/Überspannung, wenn notwendig soll der Akku extern geladen und balanciert werden.
Vielleicht ist das zu hochohmig?

LG!

BMS
26.05.2014, 11:48
Hallo,
da du den Spannungsteiler aus nachvollziehbaren Gründen (Entladung der Akkus) nicht niederohmiger wählen kannst, der ADC aber niederohmige (< 10k) Quellen erwartet, könnte zumindest ein Kondensator (100nF, 1µF ?) am Eingang des ADCs gegen GND helfen. Wenn der ADC seinen internen Hold-Kondensator auflädt, geschieht dies durch den externen Kondensator dann schneller als nur durch den Spannungsteiler. Der Kondensator wirkt in Kombination mit dem Spannungsteiler auch als Tiefpassfilter und mittelt die Akkuspannung über einen kleinen Zeitraum.
Grüße, Bernhard

markusj
26.05.2014, 12:47
Das heisst es sollen die GND Leitungen von Ladestation, Lader, Step Down, im GND Punkt anschlossen werden?
Ja. Die Masseschiene geht denke ich schon in Ordnung, außer du hast so extrem hohe Motorströme dass dort messbare/signifikante Spannungsabfälle auftreten können. Das gleiche gilt auch für deine Kontrollerplatinen, die Versorgung aller wichtigen Verbraucher sollte von einem gemeinsamen Referenz-/Sternpunkt abgehen.

mfG
Markus

PICture
26.05.2014, 14:49
Softwarefehler sind immer möglich, vor allem bei tausenden Zeilen Code...

Aber nur wenn man sie zulässt und ohne vorher geprüftem Programmablaufdiagram (PAD) arbeitet. ;)

damfino
27.05.2014, 20:41
So, sie ersten 2 Fahrten waren mal ohne Absturz. Aber das sagt noch nichts, das kann immer noch kommen.

Spannungsmessung funkioniert immer noch nicht. An den ADC für Zelle 1 ist ein 100nF C gekommen, misst perfekt wenn der Roboter steht. Aber während der Fahrt mitgeloggt im EEPROM steht als Minimalwert 1,82V, was ich einfach nicht glaube. Nach der Fahrt, automatisch wegen leerem Akku beendet, war die Anzeige bei 3,6V.

LG!

PICture
27.05.2014, 20:54
Für mich ist dann der zweite µC für richtiges Fahren überflüssig. ;)

damfino
27.05.2014, 21:55
Für mich ist dann der zweite µC für richtiges Fahren überflüssig.

So ist es auch, er fährt dann einfach ohne GPS Unterstützung weiter. Ein einfügen eines Timeouts in der I2C Bus Library lässt es zu dass im Betrieb einzelne Slaves ausfallen können ohne das der ganze Bus blockiert. Ein großer Teil der Software besteht aus Routinen die es trotz eines Fehlerfalles wie Räder drehen durch, Roboter steht an Hindernis an ohne das Bumper auslöst, I2C Slaves können nicht erreicht werden, usw, ein weiterfahren möglich machen oder ein schwerer Fehler erkannt wird der geordnetes Abschalten erfordert.
Aber beim LiIon Akku hätte ich gerne eine Einzelzellenüberwachung, vor allem wenn er selbstständig und ohne Aufsicht aufladen soll, ein eventuell defekter Laderegler wäre damit kein Risiko mehr. Und in Hinblick auf die Lebensdauer ist eine Überwachung auf Tiefentladung einzelner Zellen auch sinnvoll. Hier ist der erste µC das Backup für den zweiten, im Moment fährt der Roboter als nur mit dem Backup.

LG!

PICture
27.05.2014, 22:12
Leider kann ich dein kompliziertes System nur anhand von dir gelieferten Daten nicht voll durchblicken und beurteilen. Ich habe immer von Null stufen- bzw. blockweise entwickelt und hatte vorübergehend immer nur ein Problem zum Lösen und am Ende nix mehr.

Aber jeder macht so, wie er am besten kann, also vieeel Erfolg weiterhin. Ich werde den Thread bis zum Ende weiterverfolgen und falls ich könnte, Dir helfen versuchen.:)

damfino
28.05.2014, 11:05
Manche Fehler treten auch erst bei Umbauten auf. ZB waren neue Motoren notwendig, deren induzierte Spannung beim stoppen brachten das LCD zum Absturz. Obwohl die Elektronikversorgung mit Dioden und Elkos getrennt ist, die induzierte Spannung also nie dort ankommen sollte. Deswegen vermute ich dass die µC Abstürze auch so verursacht werden, aber an diesem Aufbau der Versorgung hattet ihr nichts auszusetzen. Oder soll ich anstatt Schottky ganz normale SI Dioden verwenden?
Sporadische Fehler sind halt schwer zu entdecken...

Die Akkuzellen wurde vorher von einem eigenen Kontroller gemessen, der hatte eine direkte GND Verbindung zum Akku, und auch eine zur allgemeinen GND Schiene. Also eigentlich komplett falsch, es könnte der gesamte Motorstrom über diese dünnen Messleitungen gehen. Aber die Messung war korrekt.
Diesen Aufbau wollte ich verbessern und vereinfachen, und nach defekten Akkus und neuem Akkutyp kommt erst jetzt dieser Fehler zu Vorschein.

Die Entwicklung began vor 4 Jahren bei Null: einem Einkauf beim C, dem Schaltplan der RN-Control, und dem Erfolgserlebnis des ersten C Programmes: eine LED leuchtet! :)

LG!

PICture
28.05.2014, 11:37
Sporadische Fehler sind halt schwer zu entdecken...

... aber vor allem zu beseitigen.

Wenn die "neue" Motoren mehr Strom als die vorherige brauchen und andere Bürsten bzw. Komutator haben, dann können die Störungen wirklich EMV wegen Magnetfeld sein. Um das zu überprüfen würde ich dann versuchen die Motoren aus galvanisch getrennter Spannungsquelle laufen lassen. Dann werde ich ihren störenden Einfluß auf das übrige Teil der Schaltung beobachten und ewentuell das Nötige ändern (z.B. die Motoren und Leitungen dicht mit umgewickelten Draht bzw. Blech aus Weichstahl abschirmen).

Hilfreich bei der Suche wäre auch Entfernung der laufenden Motore mit verlängerten Leitungen, da die in Gegenrichtung fliessende Ströme in dichtbeinander parallelen Leitungen praktisch kein Magnetfeld erzeugen . Mit so einem störendem Motor (immer mit dazugehörigen Freilaufdioden) der über die Elektronik bewegt wird, könnte man die ganze Elektronik nach Störungsempfindlichkeit beurteilen. Ich habe oft EMV Störungen in Langwellenbereich mit Radio mit auf Magnetfeld reagierender interner Ferritantenne zwischen Sendern abgehört. ;)


Oder soll ich anstatt Schottky ganz normale SI Dioden verwenden?

Nein, das kann sicher nix verbessern.

damfino
28.05.2014, 13:35
Die Motorenleitungen laufen parallel bis zum Motortreiber, und von dort verdrillt bis zu den Motoren. Das verdrillen soll bei PWM ja besser sein.
2 Motorenleitungen sind nur 4cm vom µC entfernt, die könnte ich also mit Draht umwickeln und diesen auf GND legen? Wie dicht muss man das umwickeln?

Mu Metall an den Motoren hatte ich schon probiert, konnte aber keinen Effekt feststellen ausser dass die Motoren bald einen Hitzestau hatten.


Meinen Weltempfänger habe ich gerade verliehen, aber der würde noch die Flöhe in Australien husten hören ;) Mal sehen ob noch ein anderes Radio herumliegt das wenigstens MW kann.


Nein, das kann sicher nix verbessern.
Anders gefragt: könnte es sein dass die induzierte Spannung der Motoren hoch genug war um die Diode zu überlasten und so einen Peak auf die Elektronikversorgung durchkam? Die SI Dioden halten da ja mehr an Sperrspannung aus. Sind 40W Motoren die im Durchschnitt mit <10W belastet werden, aber einen doppelt beschalteten L6205 Motortreiber (max 5A) schon bei losfahren in Überlastmodus brachten. Daher werden die bei Motorstopp auch mal kurz eine hohe Leistung abgeben.

LG!

PICture
28.05.2014, 14:04
2 Motorenleitungen sind nur 4cm vom µC entfernt, die könnte ich also mit Draht umwickeln und diesen auf GND legen? Wie dicht muss man das umwickeln?

Das kann ich nicht sagen, weil ich es selber bisher nur bei elektrischen Störfeldern als Schirm mit Kupferdraht probiert habe. Wenn es magnetisch schirmen sollte, musste es theoretisch möglichst dicht gewickelt und nicht mit GND verbunden sein. Falls möglich würde ich lieber zuerst längere und deshalb dickere Leitungen weiter vom µC prüfen.

Freilaufdioden können nicht durch induzierte Spannung überlastet werden, weil die Spannung in Flußrichtung anliegt.

Ein Motortreiber wird sicher durch Anlaustrom des angeschlossenen Motors überlastet.

Übrigens, um eindeutig als Störungsquelle die Spannungsabfälle auf Masse bzw. EMV zu erkennen, würde ich, falls möglich, kurz mit zwei getrennten Akkus (Steuerug und Motoren) probieren. ;)

damfino
24.07.2014, 08:55
So, nach ein paar Wochen gibt es neue Erkenntnisse:

Die Abstürze kommen über den ISP Anschluss rein:
Wenn man das 20cm ISP Kabel dran lässt und es wie eine Spule eng zusammen rollt, gibt es keinen Absturz. Wenn man es anders legt, oder absteckt, stürzt der Atmega ab. Die Buchsenleiste ist ca 2cm vom Controller weg, Reset-Pin hat 10k Pull-up und 100nF gegen Masse.
Kann man das noch besser gegen Störungen schützen?

Zur falschen Messung der Zellenspannungen: habe die Spannungsteiler und Kabelanschlüsse mit Heißkleber vergossen damit eventuell abbrechende Kabel keine Kurzschlüsse verursachen können, kann es sein dass der Heißkleber leicht elektrisch leitend ist? Messen kann ich nichts, aber kann jemand bestätigen dass es 100% isolierend ist?
Am ADC von Zelle 1 ist nach dem Vorschlag von hier ein 100nF C dran um die Spannung für den ADC zu puffern, brachte nur ruhigere Messwerte, aber die Messwerte passen wie vorher nur in Ruhe. Wenn Ladespannung anliegt, wird wie immer Mist gemessen.
Der Laderegler liegt jetzt definitiv an einer Stichleitung zur Masseschiene.
Wenn ich mal mehr Zeit habe werde ich einen niederohmigen Spannungsteiler bauen und damit testen.

LG!

PICture
24.07.2014, 09:08
Kann man das noch besser gegen Störungen schützen?

Aus meiner Erfahrung kann man Kabel meistens mit "Schirmung" und "stärkeren" Treiber "immuner" gegen Störungen machen.