A/D Konfiguration Optimieren

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 14 9 2025  13:32:51      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
A/D Konfiguration Optimieren

    







BID = 360224

Marino

Gelegenheitsposter



Beiträge: 85
 

  


Hallo Zusammen,

hierzu habe ich keine gute Lösung gefunden und möchte Euch fragen, vielleicht hat jemand eine bessere Lösung für mich.

Das Problem: Beim konvertieren mehrere Signale mit dem A/D Wandler des dsPIC30F (2011 bzw. 3012) beeinflusst jedes Signal den Nachfolger (Crosstalk).

Die Ursache ist offensichtlich: Ein einziger A/D Modul (SAR Architektur) bedient alle Eingangssignale. Signal 1 wird in einem Kondensator gespeichert und konvertiert, dann wird Signal 2 an dem gleichen Kondensator geleitet und konvertiert, usw. Die Ladung des Kondensators ist offensichtlich noch nicht vollständig verschwunden bevor das nachfolge Signal gekommen ist.

Meine Lösung ist Zurzeit einen 0 Signal zwischen alle meiner Signale zu schieben. Also, AN0 ist mit der Masse verbunden, AN1 ist das erste Signal, AN2 ist Masse, AN3 ist das zweite Signal usw. Es funktioniert und der Crosstalk verschwindet, dadurch verliere ich aber viele AN Beine und die hälfte des A/D Buffers.

Meine erste Versuche waren die Werte in ADCON2 (ADCS) (Die Dauer der Konvertierung) zu verändern und das hat nicht wirklich geholfen. Zurzeit habe ich die empfohlene 667 nsec.

Hierzu habe ich eine weitere Frage: Um die ADCS ideal Werte zu berechnen benötigt man die Zeitdauer der Instruction-Cycle TCY. TCY ist 33,33 nsec (30 MIPS) bei 120 MHz (7,5 MHz Quarz und PLL16). Wie berechnet man die TCY eigentlich? Wie hoch ist TCY bei z.B. 80 MHz (10 MHz und PLL8)?

Vielen Dank in Voraus

Marino

BID = 360242

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg

 

  

So, wie Du die Sache beschreibst, liegt nicht die falsche Konvertierungsdauer vor, sondern Du lässt dem Kondensator zu wenig Zeit (acquisition time).

Sind Deine Signalquellen niederohmig genug?

Dem Kondensator vor jeder Wandlung eine Null aufzuzwingen, ist nur an den Symptomen gedoktort. Damit hat er den eigentlichen Wert auch nicht besser eingenommen, sondern bekommt im Idealfalle immer den gleichen Fehler. Dazu müsste es theoretisch genügen, dem AD-Wandler immer von dem selben Kanal die Null zu geben. Aber schön ist das nicht. Deine Lösung ist doch eher was gegen Übersprechen im Multiplexer und nicht für das Umladungsproblem.

Verlängere mal die acquisition time.

Ein Blick in das Datenblatt der dsPIC30-Familie (ich habe mit denen noch nie was gemacht) zeigt mir, dass es wohl welche mit mehreren S&H-Stufen gibt. Damit ließe sich der eine AD-Kanal schon mal "vorbereiten", während der vorige schon wandelt - glaube ich.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360283

Marino

Gelegenheitsposter



Beiträge: 85

Ja die Signalquellen sind niederohmig.

Eigentlich kann man mit dem ADCON2 (ADCS) den TAD bestimmen.
Die Sampling Time = Acquisition Time + Conversion Time. Acquisition Time = 1 TAD und Conversion Time = 14 TAD. Also, die Sampling Time = 15 TAD = 15 X 667nsec. Ein Minimum TAD von 667nsec wird empfohlen. Deshalb kann man nicht höher als 100 kHz sampeln.

Den TAD habe ich auch versucht zu erhöhen. Das waren die ersten Versuche und die haben nicht wirklich viel geholfen. Deshalb habe ich das mit dem 0-Signal ausprobiert. Aber wie Du gesagt hast: Damit habe ich wirklich nur an den Symptomen gedoktort.

Okay, ich werde jetzt mit dem TAD Wert etwas mehr experimentieren. Kann mir jemand sagen, wie man den TCY (Zeitdauer der Instruction-Cycle) eigentlich berechnet. Den TCY Wert habe ich aus irgendwelchen Beispielen. Ich möchte alles komplett selber neu berechnen.

PS: Den AD-Wandler habe ich eine Null aus unterschiedlichen Kanälen gegeben, weil ich gerne erst den Buffer voll mache und dann die Daten hole (Auto Couvert). Das ist aber alles keine Lösung, ich muss die A/D Konfiguration neu berechnen.

Vielen Dank

Marino

BID = 360285

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg

An den Konfigurationen zu drehen bringt Dir überhaupt nichts!

Du musst eine Warteschleife einbauen. Im Absatz "A/D Acquisition Requirements" ist das in Worten beschrieben. Schau spaßeshalber mal in die Datenblätter der "kleinen" PICs (z.B. PIC12F629/675) dort sind auch Formeln zur Berechnung der Zeit. Da kommen leicht mal ein paar µs extra zusammen.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360308

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg

Hast Du das Datenblatt "dsPIC30 Family"? Das gehört dazu und da steht es auch drin (Table 24-14). Ich dachte mir das schon, es ist genau wie bei den normalen PICs: TCY=4/Fosc, bzw. mit PLL natürlich entsprechend TCY=4/(Fosc * PLLx).

Wer lesen kann, ist klar im Vorteil!

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360319

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
dadurch verliere ich aber viele AN Beine

Um den Haltekondensator zu entladen reicht es doch einen Kanal auf Masse zu legen und den immer wieder anzuwählen.
Wenn du tatsächlich zwischen den Messignalen liegende Pins physisch auf Masse legen musst, findet das Übersprechen schon auf der Platine statt, und du solltest dein Layout korrigieren, z.B. mit GND-Traces zwischen den Signalen.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 360324

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg

Dass auch ein einzelner "Dummy-Kanal" reichen sollte, schrub ich bereits. Was ich davon halte, auch...

Wenn soviel Zeit ist, einen Dummy-Kanal zwischendurch anzusprechen, würde ich dem aktuellen Kanal lieber diese vergeudete Zeit zum Einschwingen schenken. Das Ergebnis kann nur besser sein!

Und wenn es mit ausreichender Einschwingzeit (ausrechnen!) trotzdem Übersprechen gibt, dann ist tatsächlich ein Redesign erforderlich.

Mir scheint's beim Überfliegen der Datenblätter, dass bei den dsPICs viele Grundlagen vorausgesetzt werden...

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360352

Marino

Gelegenheitsposter



Beiträge: 85

Alles ist noch in der Testphase. Ich habe es so getestet, weil ich gerne den Auto Convert Funktion nutzen möchte, bzw. an dem Code nicht viel verändern wollte. Alles ist nur provisorisch gelötet, Ich habe noch keinen ordentlichen Code und keine ordentliche Leiterplatte und das könnte natürlich auch ein weiterer Grund für das Übersprechen sein. Das Übersprechen ist aber durch diese dumme provisorische Beschaltung weg. Ausreichend weg. Diese Beschaltung ist keine Lösung, ist nur zum testen da.

Das mit dem Layout ist ein großes Problem bei mir. Meine Leiterplatten empfangen immer viel zuviele Störungen. Perl, Was meinst Du mit GND-Traces zwischen den Signalen?

BID = 360353

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Bin ganz deiner Meinung.
Am Schluss stellt sich dann vielleicht noch heraus, daß 15 Signale über einen 16-poligen Hosenträger kommen, die farbige Ader ist "Masse"

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 360359

Marino

Gelegenheitsposter



Beiträge: 85

Wie gesagt, diese dumme Beschaltung ist nur zum testen provisorisch gelötet. Wenn ich nur einen Kanal als "Dummy-Kanal" mit Masse verbunden hätte, dann hätte ich die Code Struktur komplett verändern müssen. Zum Testen habe ich jeden zweiten Kanal entfernt und mit Masse Verbunden.

BID = 360421

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg


Zitat :
Marino hat am 15 Aug 2006 22:51 geschrieben :

...Ich habe noch keinen ordentlichen Code ...



Zitat :

...dann hätte ich die Code Struktur komplett verändern müssen...

Hä? Was denn nun?

Die Struktur eines "nicht ordentlichen Codes" ändern zu müssen, dürfte kein Problem darstellen. Du widersprichst Dir selbst! Auf der einen Seite stellst Du es als Problem dar, dass die vielen schönen AD-Kanäle verbraucht sind, magst aber die Code-Struktur nicht ändern, die eigentlich noch garnicht wirklich existiert.

Die naheliegenden Ansatzpunkte scheinst Du zu ignorieren bzw. nicht zu verstehen.

In Absatz 16.2 "Conversion Operation" (Datenblatt des dsPIC30F2011)ist der Ablauf der AD-Wandlung Punkt für Punkt aufgezählt. An Punkt 4. "Wait the required acqusition time" schiebst Du eine Warteschleife ein, die genau die Zeit verbraucht wie die Dummy-Wandlungen, die dafür wegfallen.

Dann sehen wir weiter.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360505

Marino

Gelegenheitsposter



Beiträge: 85


Zitat :
Die naheliegenden Ansatzpunkte scheinst Du zu ignorieren bzw. nicht zu verstehen.

Vielen Dank Ltof

Wie ich bereits gesagt habe nutze ich den Auto Convert Funktion. Ich hole die Daten erst nach dem der Buffer voll ist. Zum Testen habe ich jeden zweiten Kanal entfernt und mit Masse Verbunden. Keine Warteschleife.

Und wie ich auch bereits gesagt habe, werde ich jetzt mit dem TAD Wert etwas mehr experimentieren.

Und dann sehen wir weiter

Vielen Dank

Marino

BID = 360537

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg


Zitat :
Marino hat am 16 Aug 2006 13:55 geschrieben :

Wie ich bereits gesagt habe nutze ich den Auto Convert Funktion.

Die im Datenblatt "Auto-Start mode" genannt wird. Der Begriff "Auto Convert" kommt überhaupt nicht vor.

Egal - geht also nicht mit Warteschleife. Na dann rechne doch endlich mal Deine "reqired acquisition time" aus! Wenn diese länger ist als die maximale TAD, wird es so also nix. Von der Krücke mit den Nullen zwischdurch würde ich mich jedenfalls ganz schnell verabschieden. Damit handelst Du Dir unter Umständen Temperaturfehler ein.

Welche Impedanz haben Deine Signalquellen eigentlich?

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360624

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg

Eine abstruse Idee:
Statt die Dummy-Kanäle mit GND zu belegen, legst Du das zu messende Signal auf zwei benachbarte Kanäle. Damit verdoppelst Du mindestens die Einschwingzeit - oder mehr! Nur jeweils die zweite Messung davon wird als gültig angenommen.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 360682

Marino

Gelegenheitsposter



Beiträge: 85

Ltof, die Idee ist nicht schlecht, Heute habe ich leider nicht viel machen können, ich will mich aber schnell mal melden und bedanken für Deine Fragen mit der Impedanz, ohne Deine Fragen hätte ich wahrscheinlich nicht danach geforscht. Ich habe gedacht, dass eine Impedanz von 10k oder mehr für einen uC Eingang mehr als Ausreichend ist. Nach dem ich mich nun belesen habe, weis ich jetzt dass der A/D Eingang weniger als 10k braucht. Zwischen den OP Ausgang und A/D-Eingang schalte ich ganze 10k und manchmal sogar mehr, das ist sicherlich zuviel.

Obwohl die Diskussion Gestern sich hauptsächlich auf die Sinnlosigkeit meiner Testkrücke gerichtet war, muss ich mich bei Euch für die Hinweise bedanken, die mir wahrscheinlich viel Arbeit in die falsche Richtung gespart haben.

Besten Dank auch für die Hinweise mit dem Layout, darauf muss ich ja wirklich achten, wenn ich dann meine richtige Leiterplatte entwerfe, zumal, wenn Preise für schlechte Layouts geben würde, dann hätte ich bestimmt ständig den ersten Preis gewonnen. Meine Leiterplatten sind sehr gute RF-Rausch Empfänger und wahrscheinlich auch Absender. Wie macht Ihr Eure Layouts. Ich versuche immer die Masse so groß wie möglich zu machen und die Leiterzüge so nah wie möglich an der Masse zu führen, oder ist das gerade mein Fehler. Ich verbinde die masse auch oft an verschiedenen Stellen. Ist das auch ein Fehler?

Gruß

Marino


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 11 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 185462936   Heute : 5107    Gestern : 9530    Online : 484        14.9.2025    13:32
3 Besucher in den letzten 60 Sekunden        alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.033066034317