PICs mit Operationsverstärker

Begonnen von PICkel, 16.11.2023, 18:26:14 CET

Vorheriges Thema - Nächstes Thema

PICkel

Hallo!

Etliche PICs verfügen über einen oder mehrere Operationsverstärker (OPA), die per Register konfigurierbar sind und wahlweise eigenständig oder in Verbindung mit weiteren internen analogen Komponenten arbeiten können.
Die wollte ich mal testen. Testobjekt ist ein PIC16F1713, der 2 OPAs enthält.
Mich interessierte vor allem die Aussteuerbarkeit der Ausgangsstufe.
Die Testschaltung ist im Bild dargestellt.

Die Testbedingungen:
-Betriebsspannung Ub = 5V
-Eingangsspannung Ue = 0...Ub per Potentiometer einstellbar
-Konfiguration: OPA1CON = %11010000
-Ausgang des OPA ist intern mit dem invertierendem Eingang verbunden (OPA1CON.4 = 1) -> Verstärkung = 1
-zwei wahlweise zuschaltbare 4k7-Widerstände als Ausgangslast.
-Eingangs- und Ausgangsspannung werden im mikroBasic-Beispielprogramm zyklisch per ADC gemessen und der ADC-Wert auf LCD angezeigt.

In dieser Konfiguration arbeitet der OPA1 des PIC als Impedanzwandler und kann z.B. hochohmige Quellen an den ADC (Re_max=10kOhm) anpassen.

Und diese Werte wurden mittels DVM gemessen:
Betriebsspannung Ub = 4,97V

           ohne Last-R        mit R1 und R2 (I ca. 1mA)
Ue          U1        U2       U1            U2
4,97V       -2,3mV           -22mV   
0V                    0mV                    19mV 


Wegen der höheren Auflösung wurden nicht die Absolutwerte der Ausgangsspannung (20V-Messbereich), sondern die Differenz zwischen GND bzw. Ub (200mV-Bereich) gemessen.
Man sieht, dass sich die Belastung durch R1 und R2 bei Vollaussteuerung auf die Ausgangsspannung auswirkt. Aber bereits bei etwa 50mV Abstand zu den Bereichsgrenzen sinkt der Fehler auf 1Bit des ADC.
Ein paar Bilder zeigen die Ausgabe des ADC bei verschiedenen Eingangsspannungen.

Den Test habe ich mit dem OPA2 (an PORTB) wiederholt und bin zu quasi gleichen Ergebnissen gekommen.

Gut zu wissen:
Die Operationsverstärker teilen sich manche Pins mit anderen analogen Komponenten.
Beispiel (beim 16F1713): RA1 -> OPA1OUT, AN2;  RB1 -> OPA2OUT, AN10;  RB3 -> OPA2IN+, AN9 usw.
Die Eingänge dieser Komponenten können gleichzeitig aktiv sein und parallel arbeiten.
Die Aktivierung eines OPAs schaltet den digitalen Ein-/Ausgangspin OPAxOUT auf einen speziellen analogen Treiber um.
Dieser Pin kann ohne weitere externe Beschaltung direkt als Eingang für den ADC genutzt werden,

Fazit:
Die Werte zeigen ein gutes Rail-To-Rail-Verhalten an den Aussteuerungsgrenzen bei geringem Ausgangsstrom.
Das Verstärkungs- Bandbreitenprodukt (GBWP) von 3,5MHz ist ausreichend für den Einsatz als ADC-Vorverstärker, auch bei höheren Verstärkungsfaktoren und Frequenzen.
Ein weiterer Pluspunkt ist die Möglichkeit, den OPA-Ausgang dank dessen analogen Treibers direkt als ADC-Eingang zu nutzen.

Hier mein Testprogramm:
program OPA

' Test des Operationsverstärkers 1 im 16F1713
' Vdd = 5V
' Belegung des OPA1
' Eingang: OPA1IN+        RA4 , extern mit RA0 (ADC0) verbunden
' Gegenkopplung: OPA1IN-  RA5
' Ausgang: OPA1OUT        RA1

' Eingang ADC             RA0, RA1

' Belegung des OPA2:
' Eingang: OPA2IN+        RB3
' Gegenkopplung: OPA2IN-  RB2
' Ausgang: OPA2OUT        RB1

' LCD- Verbindungen konfigurieren:
dim
LCD_RS as sbit at LATC2_bit
LCD_EN as sbit at LATC3_bit
LCD_D7 as sbit at LATC7_bit
LCD_D6 as sbit at LATC6_bit
LCD_D5 as sbit at LATC5_bit
LCD_D4 as sbit at LATC4_bit

dim
LCD_RS_Direction as sbit at TRISC2_bit
LCD_EN_Direction as sbit at TRISC3_bit
LCD_D7_Direction as sbit at TRISC7_bit
LCD_D6_Direction as sbit at TRISC6_bit
LCD_D5_Direction as sbit at TRISC5_bit
LCD_D4_Direction as sbit at TRISC4_bit
' End Lcd module connections

Dim text as string[6]
Dim ADC_Wert as word

main:
'   Main program 
TRISA = 255        ' alles Input (default nach Reset)
ANSELA = 255       ' alles analog (default nach Reset)

' OPA1 ein, Verstärkung=1, OPA1IN+ = RA4 :
 OPA1CON = %11010000

' OPA1 ein, Gegenkopplung an OPA1IN- = RA5, OPA1IN+ = RA4 :
' OPA1CON = %11000000

' ADC ein, Eingang = AN0
ADC_Init()
LCD_Init()
LCD_Cmd(_LCD_CURSOR_OFF)
LCD_Cmd(_LCD_CLEAR)
LCD_Out(1,1,"Ue=")
LCD_Out(2,1,"U1=")

while TRUE
  ADC_Wert = ADC_READ(0)
  ADC_Wert = ADC_READ(0)
  WordtoStr( ADC_Wert, text)
  LCD_Out( 1,5,text)
  
  ADC_Wert = ADC_READ(1)
  ADC_Wert = ADC_READ(1)
  WordtoStr( ADC_Wert, text)
  LCD_Out( 2,5,text)
  delay_ms(400)
wend

end.

Gruß von PICkel, dem Opa mit dem OPA

OPA_Schaltplan.pngOPA1_mit_R1undR2.jpgOPA1_ohne_R1undR2.jpg


picass

Feine Arbeit, PICkel !
Schaue im Laufe des Tages mal, welche PICs im achtzehner Bereich sowas auch enthalten könnten. Und - ach ja - dein Beitrag erninnert mich schmerzlich daran, dass ich mit dem Basic-Programmieren weiter machen müsste. Schmerzlich deshalb, weil statt Programmiergerät Kreissäge angesagt ist,....... nicht aufschiebbare Gartenarbeit, Hecken schneiden, Kompostieren.....
Grüße, picass

PICkel

Hallo picass,

da scheinen neben ca. 40 PIC16F mit 1...4 Operationsverstärkern wohl derzeit "nur" die 18FxxQ - Typen mit OV ausgstattet zu sein.
Leider unterstützt der mikroBasic-Compiler diese derzeit nicht. Bleiben mir für solche Anwendungen also nur die 16F- Typen...  :(

Gruß
PICkel

picass

Zitat von: PICkel in 17.11.2023, 11:20:18 CETLeider unterstützt der mikroBasic-Compiler diese derzeit nicht.
Das Leben ist schon wieder mal ungerecht! >:(
Na ja....., so'n Aufstand muss man zwecks der Klassenwahl bei den PICs ja nun auch wieder nicht machen. Bin halt einfach nur meine PIC18F.... gewohnt. Bei der Gelegenheit: meine letzten Projekte gründeten im wahrsten Sinne auf einer kleinen Steuerplatine, welche im Wesentlichen nur einen PIC und vorgeschalteten OPA aufwiesen..... ;)
Der Zugriff auf meine ersten Basic-Versuche, rsp. das Wiederbeleben der B-Programmierung verschiebt sich seit heute Morgen in noch weitere Ferne: mein E-Roller hat mal wieder seinen Geist aufgegeben. Schon zum vierten Male war von jetzt auf gleich der Strom weg. Und das passiert auch noch immer an derselben Stelle, nämlich bei Betreten unseres Grundstücks. Immer da und auf den Meter genau! Bislang konnte noch niemand eine Erklärung dafür finden. Hm, sollte mal Samuel fragen, vielleicht weiß der was... >:D
Grüße, picass

picass

Habe gerade mal bei Microchip rein geschnüffelt und den PIC18F14Q41 als "OPA-Kandidaten" gefunden.
Irgendwie kommt mir der Text des Datenbuches komplizierter vor als für das für seinen Quasi-Vorgänger PIC18F14K22. Insbesondere die Abteilung über den enthaltenen OP..., schwitz. Das klingt nach noch aufwendigerem Umgang als ohnehin schon ganz im Allgemeinen mit diesen tückischen OPs, die meist was ganz Anderes machen als erhofft. :-\

Ärgere mich gerade intensiv....., würde so gerne wieder Rum-Picken, finde aber keine Zeit dafür. Und das als Opa...... Hörte ich da nicht irgendjemanden sagen, das Leben wäre.....
Anbei: der E-Roller selbst gibt wieder Lebenszeichen von sich, aber sein Akku will noch nicht.
Grüße, picass

PICkel

Zitat von: picass in 18.11.2023, 10:10:24 CETUnd das passiert auch noch immer an derselben Stelle, nämlich bei Betreten unseres Grundstücks. Immer da und auf den Meter genau

Ist zwar völlig OT (und wohl eine total bescheuerte Idee), aber: Liegt da vielleicht eine Mähroboter- Schleife oder dergleichen?

PICkel

picass

Zitat von: PICkel in 20.11.2023, 12:47:10 CETIst zwar völlig OT....
Eine weitere Debatte darüber würde in der Tat diesen Fred verwässern und so was mag ich selbst nicht. Daher eröffne ich einen Extra-Fred, das zugrunde liegende Phänomen erscheint mir interessant genug.
Grüße, picass

Schnellantwort

Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.

Name:
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Similar topics (5)