PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Differenzspannungen am PIC ADC und USB Datenübertragung



GeoBot
27.03.2008, 14:19
"Analoge Signalaufbereitung für Differenzspannungen (OPs) zur Messung
mit einem PIC-ADC und USB Datenübertragung."

Hallo

Im folgenden Projekt geht es mir darum eine Schaltung zu entwerfen und
aufzubauen, um mit einem PIC18F2455 Differenzspannungen zu messen.
Dabei soll die gesamte Schaltung über den USB-Bus mit Strom versorgt
werden. Angestrebt ist die quasi simultane Messung von zwei
Differenzspannungen mit einer Abtastrate von mindestens 10kHz pro
Kanal.
Zudem soll die Schaltung einigermaßen tolerant gegenüber Fehlern in der
Benutzung sein, sprich nicht gleich beim ersten falschen Anschließen
abrauchen.
Die Signalverarbeitung für den ADC geschieht mit einer Reihe von
OP-Verstärkerschaltungen.

Der Analogteil ist dabei vom Eingang zum ADC in die folgende funktionale
Einheiten aufgeteilt:

Differenzverstärker -> Anti Antialiasing Tiefpassfilter ->
Pegelverstärker -> Messbereichsverstärker -> PIC 10bit ADC

Dazu gesellen sich noch der PIC (Digitalteil), die Spannungsversorgung
und eine Referenz*spannungs*er*zeugung als Funktionsblöcke.

Die Verstärker sind aus Platzgründen im Schaltplan nur einmal dargestellt.

Im Anhang findet ihr den Schaltplan als PDF auf dem momentanen Stand.

Meine Betrachtungen zu den einzelnen Blöcken und zur Auslegung werde
ich in einzelnen Posts nach und nach zur Diskussion stellen.

Ich möchte hier die Entwicklung dieser Schaltung dokumentieren und mit
euch diskutieren. Für mich erhoffe ich, dass ich durch den einen oder
anderen Tipp, vielleicht ein paar Stolpersteine um*gehen kann und so
schneller zum Ziel komme. Dabei kann die Diskussion ruhig über das von
mir realisierte hinausgehen. Wenn bestimmte Vorschläge nicht in meine
Schaltung einfließen, ist das keine Wertung oder Ablehnung, könnte doch
der nächste, der etwas ähnliches realisieren will, von den Ideen und
Informationen profitieren.

Grüße GeoBot

GeoBot
28.03.2008, 13:21
Hallo

Ich habe, als ich angefangen habe diese Schaltung anzugehen, für mich
ein paar Festlegungen getroffen. Diese sollen aber die Diskussion nicht
einschränken.

Die von mir verwendeten Teile sind entweder schon in meiner Bastelkiste
oder lassen sich bei Reichelt bestellen. Aus der Kiste kommt vor allem für
das Gehäuse und damit verbundenen ist ein für mich festes Platinenmaß.

Ursprünglich wollte ich alles in Through Hole Technik aufbauen, um die
Schaltungsteile auf dem Steckbrett testen zu können und anschließend
die gleichen Bauteile in die Platine einzulöten. Aber so wie es jetzt aus-
sieht passt die Schaltung dann nicht mehr in das vorgesehene Gehäuse.
Es werden wohl auch SMD-Bauteile nötig sein.

Als Controller werde ich einen PIC verwenden, da ich in meinem Umkreis
Bekannte habe die auch mit diesen arbeiten. Zudem habe für ein früheres
Projekt schon PICs programmiert und mit der Internetseite von sprut
www.sprut.de gibt es eine meiner Meinung exzellente Unterstützung in
deutscher Sprache, die ich auch nutze. Ich habe bereits vor ein paar
Jahren ein Programmiergerät auf Basis des Brenner5 gebaut und mit der
Software P18 problemlos erfolgreich eingesetzt. Damit möchte ich dann
eine USB Boot Loader in den PIC brennen.

Diese Schaltung realisiere ich da ich in der nächsten Zeit an mehreren
Projekten arbeiten möchte, für die ich eine Spannungsmessung unter
verschiedenen Randbedingungen benötige.
Eines davon ist ein Protonen-Resonanz-Magnetometer
http://perso.infonie.be/j.g.delannoy/BAT/PPMGuidelines.htm
bei dessen Aufbau und Abgleich die Nähe eines jeden 220V-Netzes (ca.5m)
das Messsignal einfach komplett zudeckt. Deshalb geht es ab in den Wald
und zur Messung lässt sich ein Laptop mit der Schaltung verwenden. Hoffe
ich jedenfalls. Dies führt zu der Bedingung eines durch den USB-Bus
gespeisten Gerätes.

Grüße GeoBot

GeoBot
30.03.2008, 08:06
Hallo

Hier nun meine Betrachtungen zur Auslegung des Differenzverstärkers.

Da der Differenzverstärker die Schnittstelle für das Signal zur Umwelt
darstellt, hat er neben seiner eigentlichen Funktion, die zu messende
Differenzspannung in eine auf GND bezogene Spannung zu wandeln,
noch die Funktion die restliche Schaltung vor Überlastungen durch
äußere Einflüsse zu schützen.
Das geschieht einmal durch die bidirektionalen Überspannungsschutzdioden
D1, D2 vom Typ P6KE47CA die die maximale Eingangsspannung auf die
Durchbruchspannung VBR von 44.7V bis 49.4V beschränken. Zudem bilden
die Eingangswiderstände R1, R3 eine wirksame Strombegrenzung im
Fehlerfall. Der vorgesehen Operationsverstärker TS914 von ST ist zudem
intern gegen Latch-Up und 1kV ESD Entladungen abgesichert.

Für den eigentlichen Messvorgang ist der Eingangswiderstand der
Schaltung interessant. Um einen Bezug für die ermittelten Werte
herzustellen betrachten wir ein Oszilloskop und finden dort die Werte
1MOhm und 35pF für die Eingangsimpedanz. Der Eingangswiderstand
für Gleichspannungen des Differenzverstärkers bildet aus den ent-
sprechenden Ein*gangs*widerständen R1, R3 und den parallel dazu
liegenden Widerständen der Spannungs*schutz*dioden D1, D2.
Er beträgt mindestens
Rein = R1 || RD1 = 42MOhm || 1MOhm = 977,52kOhm.
Der Diodenstrom beträgt bei 0V Spannung 0A Strom und bei 42,2V sind
es 1µA die Kennlinie scheint dem Diagramm nach in diesem Bereich linear
zu sein . Daraus ergibt sich RD1 = 42,2V / 1µA = 42,2MOhm.
In die Impedanz dürfte, neben den parasitären Kapazitäten der Bauteile,
auch das Layout mit einen nicht unerheblichen Teil eingehen, so das
Aussagen dazu erst nach Aufbau eines Prototyps zu machen sind.

Die Verstärkung des Differenzverstärkers soll vDif=0,05=R2/R1 betragen.
R1, R3 werden zu 1MOhm und R2, R4 zu 50kOhm gewählt. Bei Verwendung
von Widerständen mit 0,1% Toleranz ist R5 zum Ab*gleich der Gleichlauf-
eigenschaften mindestens mit einem Einstellbereich von ±0,4% aus*zu*legen.

Dazu wird der Widerstandswert R2 durch eine Reihenschaltung von zwei
Potentiometern R2_P1, R2_P2 und einem Festwiderstand R2_R realisiert.
Die Tabelle 1 zeigt für einen 0,5% Einstellbereich die sich ergebenden
Widerstandswerte und den minimal abstimmbaren Spannungsbereich.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2072
Tabelle1

An den Eingängen INP+, INP- des Rail-to-Rail-OP dürfen Spannungen
UINP+, UINP- im Bereich der Be*triebsspannung anliegen.
Zur Berechnung dieser Verstärkerstufe wird von einer Betriebsspannung mit
UOP1+ = 3V und UOP1- = -3V ausgegangen.
Daraus ergibt sich eine maximal erlaubte Eingangsspannung
±UV1+/V1- = R1/(R1+R2)*±VOP1 =
(50KOhm+1MOhm)/50kOhm * ±3V = 21 * ±3V = ±63V.
Diese ist größer als die durch die Überspannungsschutzdioden definierte
Durchbruchspannung VBR, so das UINP+, UINP- die Werte der Betriebs-
spannung nicht erreichen können.

Die maximal verarbeitbare Differenzspannung Ud = UV1+ - UV1- ist durch
die maximale (minimale) Aus*gangs*spannung ±UOPout des OPs und die
Verstärkung der der Schaltung vDif = R2/R1= 0,05 be*stimmt. Der Ausgang
kann Spannungen von UOP1+ - 200mV = 2,8V und UPO1- +150mV = -2,85V
bei einer Last von 10kOhm erreichen. ±UOPout wird für die weiteren
Rechnungen mit ±2,8V festgelegt. Dann berechnet sich
±Ud zu ±Ud = 1/v * ±UOPout = 20 * 2,8V = ±56V.

Grüße GeoBot

GeoBot
30.03.2008, 17:17
Hallo

Wie komme ich an die Gehäuseinnenmaße?
Wie oben schon mal erwähnt stammt vorgesehene Gehäuse aus meiner
Bastelkiste. Ich hatte mir mal vier Stück davon günstigst bei Pollin gekauft.
Leider gab es keinen Plan mit Maßen und auch eine Anfrage beim
Hersteller erbrachte leider keine Infos. Mit meinem Messschieber komme
ich auch nicht an die zur Befestigung der Platine vorgesehenen Gewinde.
Also habe ich mir folgendes einfallen lassen.

In das Gehäuse habe ich ein Blatt Millimeterpapier eingeklebt und auf
einem Scanner mit der nötigen Schärfentiefe von einem Bekannten,
meiner hatte die nicht, das Gehäuse gescannt.
In einer Scannachse liefert der Scanner eine fast unverzerrte Abbildung.
In der Bildmontage im Anhang die horizontale Achse. Mit GIMP lassen sich
dann die Gehäuseinnenmaße und die Lage der Befestigungsgewinde
genau genug ermitteln.
Zur Kontrolle das Ganze 1:1 auf Karton gedruckt ausgeschnitten und im
Gehäuse getestet.

Grüße GeoBot

GeoBot
31.03.2008, 07:13
Hallo

Abschätzung der benötigten ADC-Auflösung
Um die 10 bit Auflösung des verwendeten ADC im PIC in irgend eine
Beziehung setzen und einordnen zu können, lässt sich meiner Meinung
nach gut folgender Vergleich anwenden.

Eine Oszilloskop-Röhre hat eine Darstellungsfläche von 10cm x 8cm. Die
Lage des Elektronen*strahls lässt sich auf ca. 0,2mm genau abschätzen.
Daraus folgt, das sich über die 80 mm Spannungs*achse 400 ver*schieden
Lagen unterscheiden lassen. Damit kann man sagen, dass eine Auf*lösung
von 9Bit mit 512 Schritten ausreichen sollte um eine dem Oszilloskop
entsprechende Auflösung zu er*reichen.

Diese Betrachtung macht keine Aussage über die Genauigkeit einer Messung.

Antialiasing-Filter
Das Filter wird momentan nicht implementiert da die Randbedingungen
fSample = 10kHz => fSample/2 = 5kHz und fg=4kHz zu einem momentan
nicht vertretbaren Aufwand (Filterordnung>6) führen. Sollte sich zeigen,
dass mit der fertigen Schaltung eine höhere Samplerate möglich ist, wird
das Filter als Huckepack-Platine nachgerüstet falls Filterordnung <= 4. Eine
Schnittstelle wird dazu im Layout vorgesehen.

Grüße GeoBot

GeoBot
31.03.2008, 18:22
Hallo

Pegelverstärker

Die Aufgabe dieser Verstärkerstufe ist dafür zu Sorgen, dass der OP des
Messbereichsverstärkers nur innerhalb seines begrenzten Span*nungsver-
sorgungs*bereichs von 0 – 3,3 V angesteuert wird. Zu*dem ver*schiebt er den
GND der Mess*span*nung auf die virtuelle Masse des Mess*bereichs*ver*-
stärkers.
Dieser eingeschränkte Bereich des Messbereichsverstärkers ergibt sich aus
dem Eingangs*spannungs*bereich des PIC zwischen GND und seiner Ver-
sorgungsspannung und dem unver*meidlichen Spannungsdropout des
Referenz*span*nungs*reglers.
Als maximale Eingangsspannungen können im Worst-Case in dieser Stufe
+-5,25V auftreten, wenn die maximale VUSB Spannung anliegt und der OP
der vorhergehenden Stufe und die Spannungs*in*vertierung der Versorgungs-
spannung als ideal angenommen werden.
Es muss also ein Eingangsspannungsbereich von 10,5V auf einen Ausgangs-
spannungsbereich von 3,3V komprimiert werden. Das führt zu einem Ver-
stärkungsfaktor vPeg = 3,3V/10,5V = -0,3142.
Da wir beim Differenzverstärker eine Ausgangslast von mindestens 10kOhm
angenommen haben, muss der Eingangswiderstand dieser Stufe >= 10kOhm
sein. Deshalb wählen ich R5=12kOhm und be*rechne die restlichen Werte in
Tabelle 2 nach dem in Skizze 1 gezeigten Schema.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2074
Skizze 1

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2073
Tabelle 2

Grüße GeoBot

GeoBot
01.04.2008, 08:04
Hallo

Zur Referenzspannungserzeugung

Der ADC des PIC benötigt für einen ordnungsgemäßen Betrieb eine untere
und obere Referenz*spannung. Wobei die Untere der Zahl Null und die
Obere der Zahl 2^10-1 entspricht.
Diese kann wahlweise die Betriebsspannungen des PIC sein also GND und
VBUS oder es werden die externen Spannungseingänge VREFH „Reference
Voltage High“ und VREFL „Reference Voltage Low“ verwendet. Dabei sind
einige Randbedingungen zu beachten. Die VREFH muss zwischen GND und
VBUS und die untere Referenzspannung VREFL darf zwischen GND-0,3V
und VBUS-0,3V liegen. Zudem muss VREFL kleiner als VREFH sein und die
Spannungsdifferenz zwischen den Referenzen muss bei Betriebs-
spannungen von 3V und darüber mindestens 3V be*tragen.

Würde man als Referenzspannungsbereich die Betriebsspannung des
Messbereichsverstärkers wählen hätte man auch bei Rail-to-Rail OPs mit
verlorenen Bits zu rechnen.
Bei 10 Bit Auflösung und 3,3V Referenzspannung entspricht einem Bit eine
Spannung von ca. 3,223 mV. Die OPs vom Typ TS914 haben einen
Ausgangspannungshub der bei einem Last*wider*stand von 10kOhm
spätestens 200mA unter der positiven Versorgungsspannung und
mindestens 150mA über GND endet. Das heißt man verliert mit
350mV / 3,223V = 109 Werte ca. 10% des Mess*bereichs.

Um dies zu vermeiden werden die Referenzspannungen aus zwei OPs
IC3_C, IC3_D gewonnen, die auf dem gleichen Chip wie die Ops IC3_A,
IC3_B des Messbereichsverstärkers implementiert sind. Der erste ist so
be*schaltet, dass er URef+ = 3,3V - 200mV = 3,1V und der andere
URef- = 0V + 150mV = 150mV liefert. Da zwischen ist ein Widerstands-
netzwerk geschaltet, dass die virtuelle Masse ADCG = 1,475V für den
Pegel*ver*stärker erzeugt.

Ich hoffe das dies funktioniert. Meine Hoffnung stützt sich dabei darauf, daß
die OPs zur Referenz*spannungs*erzeugung auf den gleichen Chip sitzen wie
die OPs des Messbereichsverstärkers. Deshalb spekuliere ich darauf, dass
die Fertigungstoleranzen zwischen den OPs sehr klein sind und alle OPs die
gleiche Temperatur sehen.
Zudem sollten alle 4 OPs die gleiche Versorgungsspannung sehen und so
Schwankungen derselben über eine Art „Common Mode Rejection” das
Verhältnis der Ausgangsspannungshübe der OPs konstant halten.

Die Widerstände R20, R21 und der Widerstand R19 am Messbereichsver-
stärker dienen dazu, bei Bedarf die Aus*gangs*be*lastung der OPs ab-
stimmen zu können, um den Ausgangsspannungshub anzugleichen.

Um die virtuelle Masse sehr exakt einstellen zu können, stellen zwei
Spannungsteiler R15, R17 und R16, R18 jeweils eine Spannung
UR+ = R15/(R15+R17)*URef und UR- = R16/(R16+R18) * URef,
die ein paar 100mV über und unter der Spannung ADCG liegen, bereit.
Werte sind in Tabelle 3 aufgeführt. Mit dem Potentiometer
R19_P = 20kOhm zwischen diesen beiden Spannungen lässt sich ADCG
sehr genau auf (1/2)*URef einstellen.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2075
Tabelle3

Grüße GeoBot

GeoBot
02.04.2008, 11:41
Hallo

Auf zum Messverstärker.

Der Messbereichsverstärker dient dazu einen Ausschnitt aus dem vom
Differenz.- und Pegel*ver*stärker aufbereiteten Differenzspannungsbereich
auf den Referenzspannungsbereich des ADC ab*zu*bilden. Es soll möglich
sein drei Bereiche ±400mV ±4V und ±40V mit jeweils 2^10 Worten zu
digitalisieren.

Um eine automatische Messbereichsumschaltung durch den PIC zu
realisieren wird einer der die Ver*stärkung bestimmenden Widerstände R9
so realisiert das er durch zuschaltbare Parallel*wider*stände R8, R10
ver*ändert werden kann.

Der Differenzspannungsbereich Ud = UV1+ - UV1- geteilt durch den
Referenzspannungsbereich Uref = Uref+ - URef- ergibt die geforderte
Gesamtverstärkung vGes = vDif * vPeg * vMes der drei Verstärker*stufen.

Daraus berechnet sich dann die, in Tabelle 4 tabellarisierte, für einen
Messbereich einzustellende Verstärkung für den Mess*be*reichs*verstärker
vMes = vGes / (vDif * vPeg).

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2077
Tabelle 4

Bei einem Messbereich ±Ud = 0,4V mit einer Verstärkung vMes=234,7231
reduziert sich die Band*breite fg des Messverstärkers auf
fg = fGBP / vMes = 0,8MHz / 234,7231 = 3,408kHz.

Es ist zu überlegen, die für die Auslegung des Antialiasing-Filters gemachte
Annahme von fg = 4kHz zu ändern oder unter Beibehaltung der Bandbreite
den den Messbereich so zu er*weitern, dass die Verstärkung vMes kleiner
gleich 200 wird.

Zur Dimensionierung des Widerstandsnetzwerks R7, R8, R9, R10 wird als
Ausgangspunkt R7 zu 100kOhm festgelegt. Die Drain-Source Widerstände
der n-MosFETs T3, T4 haben im aus*ge*schalteten Zustand UGS=0V einen
geschätzten Wert von 6MOhm. (Zero Gate Voltage Drain Current=10µA bei
einer Drain Source Spannung von 60V laut Datenblatt). Im eingeschalteten
Zu*stand ist mit 0,5Ohm zu rechnen. In der weiteren Rechnung werden
diese als vernachlässigbar an*ge*sehen.

Als nächstes wird R| | = R7 / (vMes – 1), welcher mit dem Widerstand R7
den verstärkungs*be*stimmenden Spannungsteiler des Messbereichsver-
stärkers bildet, für die festgelegten Verstärkungs*faktoren vMes bestimmt.
Um die Verstärkung zu erhöhen, wird mit den FETs jeweils ein weiterer
Wider*stand R10 = (R||*R9) / (R||-R9) und
R8 = 1 / ( (1/R||) - (1/R9) - (1/R10) ) parallel zu R9 geschaltet. (Tabelle 5)

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2078
Tabelle 5

Um Variationen in der Referenzspannung und den Verstärkungsfaktoren
des Differenz und Pegel*ver*stärkers ausgleichen zu können ist R7 mit einem
Festwiderstand R7_R und einem Potentiometer R7_P abgleichbar aus*ge-
führt. Für einen Variationsbereich für R7 von ±10% ergeben sich die, in
Tabelle 6 dargestellten, folgenden prozentualen Änderungen der
Verstärkung.


https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2079
Tabelle 6

Dies führt auf folgende Bauteilwerte für R7 in Tabelle7.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2080
Tabelle 7

Die Widerstände R8, R9, R10 (Tabellen 8 bis 10) werden mit Potentio-
metern versehen um die Bauteiltoleranzen aus*zu*gleichen. Ein Stellbereich
von ±2% sollte ausreichen.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2081
Tabelle 8
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2082
Tabelle 9
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2083
Tabelle 10

Grüße GeoBot