Witam!
Do zasilacza 2x electronic lab chciałem dodać nieco rozszerzony woltomierz/amperomierz. Dodałem włączanie wentylatora po przekroczeniu temperatury 45*C i sygnalizację alarmu zwarcia (podpięcie się pod diodę LED w zasilaczu). Czy to tak będzie działać?
Jakie jeszcze ewentualne sugestie Koledzy mają?
Program wygląda tak...
Z góry dziękuję za pomoc i pozdrawiam: Kamil
Do zasilacza 2x electronic lab chciałem dodać nieco rozszerzony woltomierz/amperomierz. Dodałem włączanie wentylatora po przekroczeniu temperatury 45*C i sygnalizację alarmu zwarcia (podpięcie się pod diodę LED w zasilaczu). Czy to tak będzie działać?
Jakie jeszcze ewentualne sugestie Koledzy mają?
Program wygląda tak...
$regfile = "M8def.dat" 'Plik układu
$crystal = 8000000 'Zegar
Rem Konfig. LCD
Config Lcd = 16 * 2 : Cursor Off
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.6 , Rs = Portd.5
Rem Konfig. ADC
Config Adc = Single , Prescaler = Auto , Reference = Internal
Rem Konfig. 1Wire
Config 1wire = Pinb.1
Rem Konfig. Pinów
Config Pinb.0 = Output ' Wentylator
Reset Pinb.0
Config Pinb.2 = Output ' Buzzer
Config Pinb.3 = Input ' Wejście z diody ograniczenia
Reset Pinb.3
Config Pinb.4 = Input ' Wejście z diody ograniczenia 2
Reset Pinb.4
Rem ------------------------------ Znak stopnia
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
Rem Zmienne
Dim Temp(2) As Byte
Dim Wart_ac As Word
Dim V As Single
Dim Wart_nap As String * 3
Rem ------------------------------ Program
Cls
Start Adc
Do
Rem ----------------------------- Napięcie 1
Wart_ac = Getadc(0)
Locate 1 , 1
V = Wart_ac * 0.0275
If V > 10 Then
Wart_nap = Fusing(v , "##.&&")
Else
Wart_nap = Fusing(v , "#.&&")
End If
Lcd "U1=" ; Wart_nap ; "V"
Rem ----------------------------- Prąd 1
Wart_ac = Getadc(1)
Locate 2 , 1
V = Wart_ac * 0.039
If V > 10 Then
Wart_nap = Fusing(v , "##.&&")
Else
Wart_nap = Fusing(v , "#.&&")
End If
Lcd "I1=" ; Wart_nap ; "A"
Rem ---------------------------- Napięcie 2
Wart_ac = Getadc(2)
Locate 1 , 10
V = Wart_ac * 0.0275
If V > 10 Then
Wart_nap = Fusing(v , "##.&&")
Else
Wart_nap = Fusing(v , "#.&&")
End If
Lcd "U2=" ; Wart_nap ; "V"
Rem ---------------------------- Prąd 2
Wart_ac = Getadc(3)
Locate 2 , 10
V = Wart_ac * 0.039
If V > 10 Then
Wart_nap = Fusing(v , "##.&&")
Else
Wart_nap = Fusing(v , "#.&&")
End If
Lcd "I2=" ; Wart_nap ; "A"
Wait 5
Rem ---------------------------- Odczyt temperatury
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
Temp(1) = 1wread(1)
Rem ------------------------------ Nie ma układu
If Err = 1 Then
Cls
Lcd "Brak układu"
Do
Loop
End If
Rem ----------------------------- Obliczanie temperatury
Temp(1) = Temp(1) / 2
Cls
Lcd "Temp:" ; Temp(1) ; Chr(0) ; "C"
Wait 10
Rem ------------------------------ Próg wentylatora
If Temp(1) > 45 Then
Set Pinb.0
End If
Rem ----------------------------- Buzzer
If Pinb.3 = 1 Or Pinb.4 = 1 Then
Sound Pinb.2 , 3 , 10000
End If
LoopZ góry dziękuję za pomoc i pozdrawiam: Kamil
