🇩🇪
Zitat von: Ottmar in 21.08.2023, 20:28:06 CESTLegst Du z.B. Vref des ADC auf 4,096V und Vout des OPA bei 5A Messtrom mittels der Gegenkopplung (Verstärkung des OPA) auf=4,096V so hast du bei einem 10Bit-ADC eine Auflösung von 4096mv/1024 = 2mV /Digit.Ich komme hier auf 4mV/Digit und
Indem 5A /1024 = 0.00488mA (rechnerisch) entspricht, ist dies auch Deine Auflösung je Digit/2mV.
Ergo: ADRESH:L des ADC * 0,00488mA=Imess
Den Offset des OPA kann man entweder Vernachlässigen oder subtrahieren oder einfach das LSB (Bit0) auf 0 setzen.
Grüße Ottmar
Sub_16
; Ist STATUS,C nach der Subtraktion=0
; ist das Ergebnis negativ
; Ist das Ergebnis im Low-Byte negativ muss
; das H-Byte um 1 vermindert werden
;Subtrahend enthält nach der Subtraktion die Diffferenz
movlw 0xFF ;255 0xFF01 = d'65281' ACb1:0
movwf ACb1 ; -0xEF96 = d'61334' BCb1:0
movlw 0x01 ; 1 -----------------
movwf ACb0 ; 0x0F6B = d'3947 ACb1:0
;
;Minuend:
movlw 0xEF ;239
movwf BCb1
movlw 0x96 ;150
movwf BCb0
;
;Subtraktion
bcf Flags,NEG ;Negativflag löschen
movf BCb0,w ;ACb0 = ACb0-BCb0
SUBWF ACb0, f
btfsc STATUS,C
GOTO Sub16a
movlw 0x01 ;BORGEN VON ACb1!!!!!!!
SUBWF ACb1,f
btfss STATUS,C ;C=0? Ergebnis negativ?
bsf Flags,NEG ;Ja. Negativflag =1 setzen
Sub16a:
movf BCb1,w ;ACb1:=ACb1-BCb1
SUBWF ACb1,f
btfss STATUS,C
bsf Flags,NEG ;Flags,7=1 Unterlauf
bcf STATUS,C ;C=0 Ergebnins negativ?
btfsc Flags,NEG ;Ja, Flags,NEG=1? Fehler aufgetreten?
bsf STATUS,C ;JA
RETURN