eine kleine AD-Wandler-Platine ist mit einem Arduino-nano3 wie gezeigt verbunden. Die Platine hängt über USB am Laptop. Über die serielle Schnittstelle werden die AD-Wandler-Daten mit 256kbd in HTERM übertragen. Grundsätzlich klappt die Datenübertragung. Es kommt jedoch gelegentlich zu Abstürzen des AD-Wandlers. Statt neuer Daten kommt dann immer derselbe Wert, egal was am Eingang anliegt. Wenn man den Laptop mit dem Ladegerät verbindet wird das System empfindlicher für Abstürze. Wenn man mit einem Netzgerät die Spannung am AD-Wandlereingang erhöht kommt es ebenfalls häufiger zum Absturz. Mit etwas ebenso langen Drähten war ein SD-Kartenleser und ein RTC-Modul angeschlossen. Diese liefen scheinbar ohne Probleme. So sehr lang sind die Leitungen nicht. Auf beiden Platinen scheinen Abblockkondensatoren zu sein. Wie lässt sich der Aufbau stabilisieren?
auch durch Anschluß eines Labornetzteils mit 7V an der Platine wird das Verhalten nicht stabiler.
Welchen Wert liefert der AD nach Absturz (immer den selben?) Läuft die Kommunikation zum AD per SPI normal weiter (also ohne Fehler?)
Achim S. schrieb: > Welchen Wert liefert der AD nach Absturz (immer den selben?) ja. Meist ist es etwas oberhalb 7900. 16 bit geht ja bis 65536. Also werden nicht ansatzweise Werte um 2.5V angezeigt. Der Absturz passiert bereits weit darunter. > Läuft die Kommunikation zum AD per SPI normal weiter (also ohne Fehler?) Fehler sehe ich keine. Jedenfalls kommen scheinbar im selben Tempo weiter Daten an. Der Arduino gibt diese munter weiter aus. Wenn man einen Reset macht geht das Teil wieder - eine kurze Weile oder wenn man Glück hat auch längere Weile.
> über USB am Laptop. Über die serielle Schnittstelle
Mach halt ein wenig langsamer.
115200 fallen mir da spontan ein.
Ein Prolific mit einem (Soft-UART-)PIC dran, tut hier
tagelang ohne Probleme auf 4 Kanaelen AD-wandeln
und mit Teraterm (V2.67) in eine Datei loggen.
./. schrieb: > Mach halt ein wenig langsamer. > 115200 fallen mir da spontan ein. das bringt leider auch nichts. 115200 sind nun eingestellt. Anfangs wird 26 geliefert vom Wandler. Wenn ich den Finger auf den Eingangs-Pin lege geht der Wert etwas nach oben. Rasch springt es dann auf 7679. Auf diesem Wert bleibt es dann stehen. Das sind data_h=29 und data_l=255. So schrecklich lang sind doch die Drähte gar nicht.
Um festzustellen wo es haengt, solltest Du vllt mal einfach einen (oder mehrere) konstante oder sequentiell steigende Werte senden. Dann siehst Du ob Dein USB-Wandler ok ist. Ansonsten mach halt stumpfes Software-SPI nach Datenblatt programmiert. Wenn es dann damit tut, weisst Du wo Du weiter suchen musst.
Der USB-Teil sollte funktionieren. Lasse dir mal die Register vom AD-Wandler dumpen, bevor und nachdem der Fehler aufgetreten ist. Vielleicht fängt sich der AD-Wandler eine Störspannung ein, resettet und verliert die Konfiguration. Versuche mal, den AD-Wandler zu resetten (neu konfigurieren), wenn er Murks liefert (exakt gleiche Werte solltest du im Normalfall nicht bekommen - notfalls zählst du bis 10 gleichen Werten). Und dann gibt's noch die klassischen Tipps, also Versorgungsleitung abblocken / filtern, SPI-Leitungen filtern, mit der SPI-Frequenz runtergehen, etc.
./. schrieb: > mach halt stumpfes Software-SPI nach Datenblatt > programmiert. das hatte ich gemacht. Dasselbe Problem. > Wenn es dann damit tut, weisst Du wo Du weiter suchen musst. daran liegt es nicht. Trotzdem vielen Dank für die wertvolle Anregung.
S. R. schrieb: > der AD-Wandler eine > Störspannung ein, resettet und verliert die Konfiguration. das ist zu vermuten. Einen Reset hatte ich danach auch mal gemacht. Nur die Register nicht neu programmiert. Daher kamen dann auch keine brauchbaren Daten.
S. R. schrieb: > Der USB-Teil sollte funktionieren. der USB-Teil ist leider auch nicht sonderlich stabil. Manchmal stürzt auch dieser ab. Keine Ahnung wie dieser Teil brauchbar zu stabilisieren ist. Es ist ja ein Arduno-nano3 wo der FTDI hinten auf der Platine sitzt. Der FTDI ist ja direkt über USB-Kabel mit der Störquelle Laptop verbunden. Wobei das Störende wohl vor allem das Schaltnetzteil ist.
Matthias W. schrieb: > das ist zu vermuten. Einen Reset hatte ich danach auch mal gemacht. Nur > die Register nicht neu programmiert. Daher kamen dann auch keine > brauchbaren Daten. Dann hast du nur einen Leitungsreset gemacht? Rück mal dein nicht funktionierendes Programm raus.
S. R. schrieb: > Und dann gibt's noch die klassischen Tipps, also Versorgungsleitung > abblocken / filtern, Vielen Dank. Die Versorgung passiert ja zunächst über das USB-Kabel. Die USB-Spannung wird auf der nano3-Platine über 10uF parallel zu 100nF gefiltert. Ebenso werden die 5V (bzw. 4.3V nach Auto-Selector) über 10uF parallel zu 100nF gefiltert: http://solderpad.com/solderpad/arduino-nano-3/ Wie brauchbar das Layout insgesamt ist und ob man da ggf. noch an passender Stelle etwas anbringen kann müsste man näher ansehen. > SPI-Leitungen filtern Du meinst R-C-Filter einbauen? oder kaufbare Fertigfilterteile von TDK, Murata, Würth usw? > mit der SPI-Frequenz runtergehen, etc. das hat nichts gebracht. Die Abstürze waren genauso ob es SPI war mit 250kHz oder bitbanging mit MHz. Scheinbar kein Unterschied.
Rene K. schrieb: > Dann hast du nur einen Leitungsreset gemacht? Ja. Klar daß danach auch eine neue Init nötig ist. Nur dauert diese eben recht lange. Daher will das nicht so oft machen. Mehr Stabilität macht da mehr Sinn.
Rene K. schrieb: > Rück mal dein nicht funktionierendes Programm raus. das waren nun verschiedene Codes. Wirklich brauchbar war es nie. Egal ob mit Delay oder DRDY-Pin-Abfrage. Auch die DRDY-Abfrage war da unterschiedlich gelöst.
S. R. schrieb: > also Versorgungsleitung > abblocken / filtern auf der Platine des AD-Wandlers ist lt. Schaltplan auch etwas dazu drauf. Scheinbar reicht es nicht. Masseleitung zu lang?
Hier ist ein Bild der Wandler-Platine: http://www.icstation.com/images/big/products/5298_3754.jpg Laut Schaltbild ist zum Abblocken C1 und C10. C1 sitzt neben dem Quarz und C10 auf der anderen Seite - ein gutes Stück von den Pins 15 (VCC) und 16 (GND) entfernt.
Wenn der AD-Wandler während einer Störung falsche Signale liefert, dann ist das ein Hardwareproblem. Bleiben die falschen Signale aber nach der Störung bestehen, dann liegt fast immer ein Softwareproblem vor. Und ohne einen Blick auf Dein Programm wird man das kaum finden können. Viele Grüße, Stefan
Stefan K. schrieb: > Wenn der AD-Wandler während einer Störung falsche Signale liefert, dann > ist das ein Hardwareproblem. Danke Stefan. Aus dem Lesen des Datenblatts von Analog Devices weiß ich daß hinter den Pins eine State machine steckt die sich leicht verhängen kann wenn eine Störung kommt. Wenn sie verhängt ist so braucht das System dann wohl einen Reset und eine neue Initialisierung. Die üblichen Treiber für das AD7705 berücksichtigen das nicht. Man nimmt da einfach an daß alles klappen wird. So ist es jedenfalls in dem Beispiel im Datenblatt das ich nachprogrammiert hatte: Beitrag "Probleme mit TM7705 an Arduino nano3" Dies funktionierte leider bei mir nicht brauchbar. Mittlerweile habe ich diverse andere Codeteile ausprobiert. Die Abstürze sind dabei jedoch geblieben. Was nun etwas gebracht hat ist ein weiteres Verkürzen der Kabellänge. Der Aufbau wird so leider unflexibler. Zusätzlich habe ich eine Lochraster-Leiterplatte daruntergesetzt. Darauf sind dicke Drähte für Masse und VCC und auch ein paar blaue keramische Abblock-Cs 100nF. Die ganzen Masse- und VCC-Leitungen habe ich nun extrem kurz an diese dicken Drähte angeschlossen. Zudem werden nun beide Masseanschlüsse des Nano-Boards auf die Lochrasterplatine geführt. Die Abstürze des Wandlers sind mit diesen Maßnahmen - bei Verwendung derselben Software - nun weg ! Allerdings gibt es noch gelegentlich Abstürze des FTDI-Bausteins. Wenn der Laptop am Netzteil hängt und ich einen Massepunkt auf der Platine mit einem Netzteil verbinde stürzt der FTDI einfach ab. Der Reset-Knopf auf der Platine nützt dann nichts. Es muss USB abgezogen werden und dann neu gesteckt. Wenn es gelingt diesen Fehler auch noch loszuwerden . . .
Matthias W. schrieb: > Allerdings gibt es noch gelegentlich Abstürze des FTDI-Bausteins. Wenn > der Laptop am Netzteil hängt und ich einen Massepunkt auf der Platine > mit einem Netzteil verbinde stürzt der FTDI einfach ab. Tja, wenn die Masse vom Laptop und die Masse vom FTDI und die Masse von der Platine unterschiedlich sind und du sie miteinander verbindest, dann gibt es halt Ausgleichsströme. Ein Absturz des FTDI ist da noch gutartig, den kann es auch grillen... genauso wie den USB-Controller im Laptop... > Wenn es gelingt diesen Fehler auch noch loszuwerden . . . Du machst den gleichen Fehler wieder. Deine Verkabelung ist scheiße, weil du vorher nicht drüber nachgedacht hast. Das Ursprungsproblem lag daran, und das jetzige Problem liegt auch daran. ;-) Die einzige Abhilfe gegen unterschiedliche Massen ist eine galvanische Trennung zwischen der USB-Seite und der Platinenseite des FTDI (und zwar für alle vier Leitungen). Da gibt's fertige Bausteine für, oder du nimmst Haus-und-Hof-Optokoppler, wenn du kein High-Speed brauchst. Alternativ kannst du deine Schaltung auch vom USB speisen, dann sind die Massen gleich und du hast keine Ausgleichsströme. Oder du verhinderst, dass diese ein Problem sind...
S. R. schrieb: > Tja, wenn die Masse vom Laptop und die Masse vom FTDI und die Masse von > der Platine unterschiedlich sind und du sie miteinander verbindest, dann > gibt es halt Ausgleichsströme. Danke für den wertvollen Beitrag zum Nachdenken ! Es ist momentan so: die Massen sind nicht unterschiedlich, denn sie sind miteinander verbunden. Das USB-Kabel verbindet die Masse des Laptop und die Masse des FTDI und die Masse der CPU. Klar gibt es ggf. Ausgleichsströme. Dafür kann jedoch der Laptop nichts, der FTDI nichts, die Platine nichts. Alle sind korrekt wie vorgesehen galvanisch verbunden. Das Problem liegt in den parasitären Strömen die durch die ungünstige Bauart des Laptop-Netzteils hervorgerufen werden. > Du machst den gleichen Fehler wieder. nein ! > Deine Verkabelung ist scheiße, > weil du vorher nicht drüber nachgedacht hast. Das Ursprungsproblem lag > daran, und das jetzige Problem liegt auch daran. ;-) Nein ! Das ist eine Standardverkabelung von Laptops die Mio Menschen so nutzen. So auch ich. das Problem liegt in den parasitären Strömen die durch die Bauart des Netzteils hervorgerufen werden. Abhilfe kann daher sein - auf das Netzteil des Laptops zu verzichten - dann ist das Problem weg ! - ein Netzteil zu nehmen das wirklich trennt - ohne diese parasitäre Stromeinkopplung. - sonstige Maßnahmen zu ergreifen um den Stromfluss zu verhindern > Die einzige Abhilfe gegen unterschiedliche Massen ist eine galvanische > Trennung zwischen der USB-Seite und der Platinenseite des FTDI (und zwar > für alle vier Leitungen). Da gibt's fertige Bausteine für, oder du > nimmst Haus-und-Hof-Optokoppler, wenn du kein High-Speed brauchst. das ist in der Tat möglich. Da der FTDI auf der Platine selbst sitzt kann man die Seite zwischen FTDI und CPU da nicht trennen. Eine Trennung per Iso-Koppler ist daher nur auf dem USB-Bus selbst möglich. Dafür braucht es dann schnelle Koppler. Zusätzlich muss dann die Platine elektrisch versorgt werden (DC/DC oder Netzteil). Dabei dürfen dann keine parasitären Stromflüsse entstehen. Sonst ist nichts gewonnen. > Alternativ kannst du deine Schaltung auch vom USB speisen, dann sind die > Massen gleich und du hast keine Ausgleichsströme. genau das mache ich ja momentan. Das ist so jedoch keine 100%-Lösung. Denn alles was man zusätzlich anschließt kann erneut ungewünschte Ausgleichsströme bewirken. Das kann jedes netzbetriebene Gerät sein wie elektronische Last, Netzteil, Oszilloskop etc. Das HAMEG-Oszilloskop ist über die BNC-Buchsen mit Schutzleiter verbunden. Daher fließt so erneut Ausgleichsstrom. > Oder du verhinderst, > dass diese ein Problem sind... das ist nicht so einfach wenn man die Quelle des Problems - das Netzteil nicht entfernt oder eine zusätzliche Erdung anbringt die den Leckstrom des Netzteils zum Schutzleiter hin ableitet. Netzteile mit Schutzleiter könnten dies ggf. leisten. selbst mit dem Isolator wird nicht verhindert daß sich ein erhebliches elektrisches Wechsel-Feld am Laptop aufbaut und abstrahlt. Nur über Netzteile ohne solche kapazitive Verkopplungen ist dies vermeidbar. Eben darauf muss man dann achten.
das Problem mit diesem AD-Wandler scheint mir eher an einer Empfindlichkeit des Wandler-Chips selbst zu liegen oder an einem ungünstigen Layout der AD-Wandler-Platine. Jedenfalls funktioniert der Wandler bei extrem kurzen Leitungen zur AVR-Platine ohne die ganz oben beschriebenen Probleme. Wenn man im Netz schaut welche wirren Aufbauten mit teilweise auch längeren Drähten scheinbar einwandfrei laufen so muss dieser AD-Wandler schon vergleichsweise sehr empfindlich sein. Genauer kann ich das sagen wenn ich am selben Aufbau einen anderen 16bit betreibe. Die Ansteuerung der RTC am selben Aufbau klappt auch mit längeren Drähten stundenlang - ganz ohne unerwartete Fehler.
Matthias W. schrieb: >> Tja, wenn die Masse vom Laptop und die Masse vom FTDI und die Masse von >> der Platine unterschiedlich sind und du sie miteinander verbindest, dann >> gibt es halt Ausgleichsströme. > > Es ist momentan so: die Massen sind nicht unterschiedlich, > denn sie sind miteinander verbunden. Nach einem Ausgleichsvorgang ist das immer der Fall. Wichtig ist, ob die Potentiale vor dem Verbinden unterschiedlich waren. Aber: (Nachtrag: Ich gehe mal davon aus, dass die Massen sich angleichen und der Ausgleichsstrom zum Absturz führt. Bei konstant grob unterschiedlicher Masse dürfte das Teil ja sowieso nicht funktionieren.) >> Alternativ kannst du deine Schaltung auch vom USB speisen, dann sind die >> Massen gleich und du hast keine Ausgleichsströme. > > genau das mache ich ja momentan. Das ist so jedoch keine 100%-Lösung. Deswegen solltest du keine Ausgleichsströme durch unterschiedliche Massepotentiale haben. Zumindest nicht, wenn du keine langen Kabel durch starke Felder legst... Deine Angst vor anderen Geräten kannst du durch Trenntrafos oder Batteriebetrieb (zumindest fürs Oszilloskop) lindern. ;-) > Das Problem liegt in den parasitären Strömen die durch die ungünstige > Bauart des Laptop-Netzteils hervorgerufen werden. Das halte ich spontan erstmal für Quatsch. Dein Laptop-Netzteil speist den USB-Anschluss nicht direkt, sondern hinter ziemlich viel Stabilisierung (allein des Prozessors wegen). Wenn du deine Schaltung vom Laptop-USB speist, dann hat sie am Eingang des Kabels stabile 5 V. Ich gehe mal davon aus, dass das am Ausgang auch so ist, du betreibst ja keinen Motor. Und damit ist mein Beitrag mehr oder weniger hinfällig. ;-) > Das HAMEG-Oszilloskop ist über die BNC-Buchsen mit Schutzleiter > verbunden. Daher fließt so erneut Ausgleichsstrom. Hinter einem Trenntrafo nicht (weil die Oszi-Masse dann gleich der USB-Masse ist). Aber wenn du Laptop und Oszilloskop vom gleichen Stromkreis (an der gleichen Steckdose) speist, sollte das auch nicht stören. Ein FTDI ist jetzt nicht so sehr empfindlich. Matthias W. schrieb: > das Problem mit diesem AD-Wandler scheint mir eher an einer > Empfindlichkeit des Wandler-Chips selbst zu liegen oder an einem > ungünstigen Layout der AD-Wandler-Platine. Das klingt mir immer wahrscheinlicher. > Jedenfalls funktioniert der Wandler bei extrem kurzen Leitungen zur > AVR-Platine ohne die ganz oben beschriebenen Probleme. Wenn kurze Leitungen funktionieren und lange Leitungen nicht, dann fängst du dir entweder irgendwo externe Störungen ein (heißt: besser abschirmen oder filtern) oder du hast Reflexionen auf der Leitung (heißt: besser terminieren). Irgendwas ist da gestört und du müsstest rauskriegen, was das ist. Am Notebook-USB erwarte ich eigentlich keine Störungen (zur Not hänge mal einen Lastwiderstand ran, falls der Regler schwingt). Andererseits sind 250 kBaud über schlechte Leitungen auch sportlich. (Nachtrag: Oder dein FTDI hat einfach einen Schuss weg.) Messen hilft. Und eine Beschreibung, was jetzt genau wo wie nicht funktioniert. ;-)
:
Bearbeitet durch User
S. R. schrieb: > Das halte ich spontan erstmal für Quatsch. das ist aber leider kein Quatsch. Das eine Problem ist jedenfalls vollkommen weg - wenn ich das Netzteil abklemme. Der Wandler zeigt dann auch keine erhöhten Werte mehr an wenn ich den Eingang mit dem Finger berühre. Die Ursache ist die oben gezeigte kapazitive Verkopplung. Ich möchte wetten daß das weg ist wenn ich das Netzteil an einen Trenntrafo hänge. Nur ist das nicht der Sinn der Sache sich einen Trenntrafo zu kaufen nur weil der Hersteller ein paar cent sparen möchte.
S. R. schrieb: > (heißt: besser > abschirmen oder filtern) oder du hast Reflexionen auf der Leitung > (heißt: besser terminieren). es gibt zig Aufbauten dieser Art im Netz. Oft sind Leitungen wirr herumgelegt. Und trotzdem scheint das zu klappen. Bei diesem Wandler ist das so leider nicht. Natürlich gibt es Reflexionen. Die Leitung ist ja nur mit der Chip-Eingangskapazität abgeschlossen. Das ist jedoch bei all den vielen Bastelschaltungen die man im Netz bewundern kann auch nicht anders. Die SD-Karte geht jedenfalls. Und die RTC auch. Und die RTC über I2C auch. Nur dieser Wandler stresst. Offenbar nicht nur bei mir. Auch andere scheinen damit Stress bisweilen zu haben. Mit stark verkürzten Drähten klappt es. Mal sehen was mit dem Wandler ADS1118 sein wird. Den möchte ich am selben Aufbau betreiben.
AD/TM7705 habe ich nur Schrott erwischt. Diverse Module (leider ein und dieselbe Charge) liefern keine überhaupt brauchbaren Werte zurück, sondern messen Grütze. Der ADS1115 (sowie deine SPI-Version davon, der ADS1118) sind hingegen präzise und komfortabel auszulesen.
Mach doch mal 22 Ohm Widerstaende in die SPI-Leitungen. Und zwar vorzugsweise an den Einspeisepunkten, aka Ausgaenge. Das waere dann mal eine Serienterminierung. Groessere Werte (bis vllt 68 Ohm) koennte Mann auch noch probieren. Kostet nicht viel und bringt vllt was.
Dirk K. schrieb: > AD/TM7705 habe ich nur Schrott erwischt. Diverse Module (leider ein und > dieselbe Charge) liefern keine überhaupt brauchbaren Werte zurück, > sondern messen Grütze. Danke Dirk für die Rückmeldung. probier es mal mit stark verkürzten Leitungen. Und nehme ggf. eine Cu-kaschierte Leiterplatte als Masselage. Auf diese pinnst Du die Wandler-Masse und die uC-Masse mit extrem kurzen Leitungen an. Schau mal ob es dann tut. Bei mir brachte ich die Instabilitäten recht gut weg. Ich kann nun jedenfalls von 0-15V messen - mit einem simplen 100k-Vorwiderstand. Der PGA steht dazu auf V=2. Das letzte bit ist auch noch recht stabil. Die Grenze ist da eher das begrenzte Auflösungsvermögen des 10-Gang-Potis am Netzgerät.
Dirk K. schrieb: > Der ADS1115 (sowie deine SPI-Version davon, der ADS1118) sind hingegen > präzise und komfortabel auszulesen. das habe ich auch gelesen. Ich vermute daß bei diesem TM7705 etwas mit dem Layout der Platine nicht so günstig ist. Das Interface fängt sich so leicht Mist ein und verhängt sich dann. Da der ADS1118 höher integriert ist und der Abblock-C viel näher an den Pins geht das wohl deutlich besser. Nimmst Du auch die ADS1118 aus China?
./. schrieb: > Mach doch mal 22 Ohm Widerstaende in die SPI-Leitungen. > Und zwar vorzugsweise an den Einspeisepunkten, aka Ausgaenge. Du meinst die 22R sollen nahe am uC sein - direkt an den Ausgabepins der Arduino-nano3-Platine? > Groessere Werte (bis vllt 68 Ohm) koennte Mann auch noch probieren. ok. > Kostet nicht viel und bringt vllt was. probieren kann man es ja. Ist einfacher als das mühsame kürzen.
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.