Witam!
Mam problem z pomiarem z adc a dokladnie z tym ze wynik pomiaru skacze na lcd przy napieciu 12V w zakresie od 8V do nawet 12V. Probowalem dawac opoznienie w odczycie a takze dodalem po 2 kondensatory 100nF na kazde wejscie adc ale nic to nie dalo. Dodam jeszce ze jak mierze napiecie z modułu uruchomieniowego w ktorym mam regulowane napiecie od 0 do 5V to wynik pomiaru juz tak nie skacze. Czy to moze wina zasilacza na ktorym mierze to napiecie? Jak sie z tym uporac?
Program:
Mam problem z pomiarem z adc a dokladnie z tym ze wynik pomiaru skacze na lcd przy napieciu 12V w zakresie od 8V do nawet 12V. Probowalem dawac opoznienie w odczycie a takze dodalem po 2 kondensatory 100nF na kazde wejscie adc ale nic to nie dalo. Dodam jeszce ze jak mierze napiecie z modułu uruchomieniowego w ktorym mam regulowane napiecie od 0 do 5V to wynik pomiaru juz tak nie skacze. Czy to moze wina zasilacza na ktorym mierze to napiecie? Jak sie z tym uporac?
Program:
Code:
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcdbus = 4
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pb.4 , Db5 = Pb.5 , Db6 = Pb.6 , Db7 = Pb.7 , E = Pb.3 , Rs = Pb.2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32
Declare Sub Pomiar
Dim Wart_ac As Word
Dim Wart_acc As Word
Dim V As Single
Dim I As Single
Dim Wart_nap As String * 5
Dim Wart_pra As String * 5
Dim Cyfra As String * 2
Dim Wydzielona As Byte
Start Adc
Cursor Off
Cls
Do
Call Pomiar
Locate 1 , 1
Lcd "Napiecie:" ; Wart_nap ; "V"
If Wydzielona < 10 Then
Locate 1 , 15
Lcd Chr(0)
End If
Locate 2 , 1
Lcd "Prad:" ; Wart_pra ; "A"
Loop
End
Sub Pomiar
Waitus 50
Wart_ac = Getadc(1)
V = Wart_ac * 0.0048
V = V * 3
Wart_nap = Fusing(v , "##.&&")
Waitus 500
Cyfra = Mid(wart_nap , 1 , 2)
Wydzielona = Val(cyfra)
Waitus 50
Wart_acc = Getadc(4)
I = Wart_acc * 0.0048
I = I \ 10
Wart_pra = Fusing(i , "##.&&")
Waitms 600
End Sub