Hallo!
Nun hab ichs glaube ich verstanden. Danke!
Die Vref hab ich auf 2,56V verkleinert. Könnte bitte nochmal jemand den Code ansehen, ob man das so macht. Ich hab was mit Mittelwertbildung reingemacht, merke aber nicht allzuviel Unterschied bei der Anzeige.
Nimmt das Programm eigentlich immer einen neuen gewandelten Wert vom ADU für Umes? Oder ist das immer der gleiche? Dann hats wenig Sinn Oder?
Code:'/////////////////////////////////////////////////////////////////////////////// 'STK200 und ATMEGA8535 'Strommmessung '/////////////////////////////////////////////////////////////////////////////// ' I ' ! !\ V=20 (LMP8270) ' +----+------+ \ ' # ! ! \ ' #Rs ! Umes ! +-------####----+------> ADC Kanal2 ' # ! =50mV! / 5k ! Uadc=1000mV (Wenn 50A Strom fließt) ' +----Y------+ / === 1n ' ! !/ ! ' -+- -+- ' Rs=1mOhm ' ' 1mV =======> x 20 ==================> = 20mV = 1A ' 10mV =======> x 20 ==================> = 200mV = 10A ' 50mV =======> x 20 ==================> = 1000mV = 50A '--------------------------------------------------------- '! Umes <-------- Uadc/20 <--------------- Uadc '--------------------------------------------------------- ' ' ' Vref= Extern= 2,56V mit Poti am STK200 eingestellt ' '/////////////////////////////////////////////////////////////////////////////// $regfile = "M8535.dat" $crystal = 8000000 ' Interner Takt des AVR => FuseBit! Config Lcd = 20 * 4 Config Lcdmode = Port Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 Config Lcdpin = Pin , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Portd = Input Config Portb = Output Portb = 255 Cls Wait 1 Dim Wert As Word Dim Offset As Word Dim Uadc2 As Single 'Single= 4 Byte Dim Umes As Single Dim I As Single Dim N As Byte Dim Umes1 As Single Config Adc = Single , Prescaler = Auto , Reference = Off Start Adc '/////////////////////////////////////////////////////////////////////////////// Do Wert = Getadc(2) Uadc2 = Wert * 0.002502 'VREF= 2,56V '/////// Mittelwert für die Anzeige bilden ///////////////////////////////// N = 0 Do Umes1 = Umes1 + Umes Incr N Loop Until N = 50 Umes1 = Umes1 / 51 Umes = Uadc2 / 20 'Umes= Wert am Shunt in V I = Umes * 1000 'Umrechnung für Stromanzeige '// LCD Anzeige ///////////////////////////////////////////////////// Cursor Off Noblink Locate 1 , 1 : Lcd "Uadc2= " ; Fusing(uadc2 , "##.###") Waitms 300 Locate 2 , 1 : Lcd "Umes= " ; Fusing(umes , "##.####") Waitms 300 Locate 3 , 1 : Lcd "I= " ; Fusing(i , "##.#") Waitms 300 Locate 4 , 1 : Lcd "Umes1= " ; Fusing(umes1 , "#.#####") Waitms 300 ' So schaut die LCD Anzeige bei 50mV am Shunt aus: '///////////////////// '// Uadc2= 1.001 '// Umes= 0.0502 '// I= 50.0 '// Umes1= 0.05017 '///////////////////// Loop End
Gruß
Hans







Zitieren

Lesezeichen