2013年4月17日水曜日

AVR VI_meter

ATmega88を使った電圧計/電流計である。試験用電源を考慮し、測定範囲 電圧max27.5V、電流 max2.27Aとした。電圧・電流とも、OPアンプに接続した抵抗で11倍にスケーリングしている。ゲインを固定とした為、10kと100kは、金属皮膜抵抗がベターである。  
回路図を示す。電圧と電流の取込み位置を含めてた全体のイメージを書いてある。 
プリントパターン 38×81








 


 
BASOM AVR Program

'**********************************************************
' AVR VI_meter(BASCOM AVR)
'                                  2013.04.13    JA2GQP
'
'
'     Vref=2.5V
'     shunt=0.1 OHM
'
'Update
'     2013.06.09  Average processing voltage and current
'     2013.10.24  Voltage over flow bug FIX
'
'**********************************************************
$regfile = "m88adef.dat"
$crystal = 1000000
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2
Config Lcdpin = Pin , Db6 = Portd.1 , Db7 = Portd.0
Config Lcdpin = Pin , E = Portd.4 , Rs = Portd.5
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Aref
Dim A As Word
Dim B As Dword
Dim V1 As Single
Dim V2 As String * 4
Dim Cnt As Byte
Cursor Off
Cls
Locate 1 , 10
Lcd "JA2GQP"
Start Adc
Do
   A = 0
   B = 0                                'Measurement Voltage
   For Cnt = 1 To 100
      A = Getadc(5)
      B = A + B
      Next Cnt
   B = B / 100
   V1 = B * 0.02685546875               'A*2.5V/1024*11
   V2 = Fusing(v1 , "#.##")
   V2 = Format(v2 , "  000")
   Locate 1 , 2
   Lcd V2 ; "V"
   A = 0
   B = 0                                'Mesurement Current
   For Cnt = 1 To 100
       A = Getadc(4)
       B = A + B
       Next Cnt
   B = B / 100
   V1 = B * 0.002219460227              'A*2.5V/1024/11*10
   V2 = Fusing(v1 , "#.##")
   V2 = Format(v2 , "  000")
   Locate 2 , 2
   Lcd V2 ; "A"
   Wait 1
Loop
End