Chciałbym Wam się pochwalić/pożalić swoim zasilaczem awaryjnym.
Buduję sobie tego cudaka dla Raspberry Pi bo jak wiadomo w tym mikro-komputerku wszystko jest na karcie SD i nagłe zaniki napięcia bardzo często ubijają karty.
Wszystko się zaczęło od tego, że zrobiłem prosty UPS: dwa ogniwa 18650, moduł ładowarki i przetwornicy STEP-UP
Ale jak to mówią... apetyt rośnie w miarę jedzenia i po wielkich trudach powstało coś takiego:
Zasilacz będzie w obudowie (Kradex Z-109) na szynę DIN ponieważ Raspberry też będzie wisiał na szynie
Jeszcze dość sporo pracy przede mną, ale małymi kroczkami do przodu.
Teraz jestem na etapie walki z kodem:
- '---mikrokontroler
- $regfile = "m328pdef.dat"
- '---zewnetrzny kwarc
- $crystal = 11059200
- '---predkosc UART
- $baud = 9600
- '---konfiguracja stosu
- $hwstack = 64
- $swstack = 64
- $framesize = 128
- '---konfiguracja watchdog
- Config Watchdog = 16
- '---korekta dla ADC
- Const Korekta_prad = 0.001
- Const Korekta_napiecie = 0.01
- '---ilosc probek jakie wykonuje ADC
- Const Ilosc_probek = 64
- '---napiecie pustego akumulatora
- Const Pusty_akumulator = 2.8
- '---napiecie w pelni naladowanego akumulatora
- Const Pelny_akumulator = 4.2
- '---bufor UART
- Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
- Config Serialin0 = Buffered , Size = 100 ' buforowoanie UART
- Config Serialout0 = Buffered , Size = 100 ' buforowoanie UART
- Config Submode = New
- '---konfiguracja timera
- Config Timer0 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
- Enable Compare0a : On Compare0a Timer0_isr Nosave : Compare0a = 107 '10ms @11MHz
- '---konfiguracja przetwornika ADC
- Config Adc = Single , Prescaler = Auto , Reference = Aref
- '---wyjscia
- Config Portd.2 = Output : Portd.2 = 0 : Ladowarka Alias Portd.2
- Config Portd.6 = Output : Portd.6 = 0 : Wyjscie Alias Portd.6
- '---wejscia
- Config Pinb.2 = Input : Portb.2 = 1 : Usb Alias Pinb.2
- '---ZMIENNE PROGRAMU
- '---zmienna programu i jej odpowiednik w eeprom
- Dim Opoznienie_wlaczenia As Single , Opoznienie_wlaczenia_ee As Eram Single
- Dim Opoznienie_wylaczenia As Single , Opoznienie_wylaczenia_ee As Eram Single
- Dim Ladowanie As Single , Ladowanie_ee As Eram Single
- Dim Naladowany As Single , Naladowany_ee As Eram Single
- Dim Rozladowany As Single , Rozladowany_ee As Eram Single
- Dim Zmiana_ekranu As Byte , Zmiana_ekranu_ee As Eram Byte
- Dim Led_lcd As Byte , Led_lcd_ee As Eram Byte
- '---zmienne dla obliczen czasu
- Dim 10ms As Byte , 100ms As Byte , 1s As Byte
- Dim Sekundy As Byte , Ekran As Byte , Lcd_ups As Byte
- Dim Odczekaj As Byte , Stan_urzadzenia As Byte
- '---ADC
- Dim Pomiar_wejscia As Word , Odczyt As Single , Krok As Byte
- '---obliczenia danych odczytanych przez ADC
- Dim V_wej As String * 6 , V_aku As String * 6 , V_wyj As String * 6
- Dim Amper As String * 6 , Watt As String * 6
- Dim Watt_volt As Single , Watt_amper As Single , Watt_oblicz As Single
- Dim Napiecie_aku As Single , Napiecie_wej As Single
- Dim Cs As Single , Akumulator As Single
- '---pojemnosc akumulatora
- Dim Pojemnosc_aku As Byte , Pojemnosc As Single , Aku_min_max As Single
- Dim Ladowanie_aku As Byte
- Dim Aku_poziom As Byte
- '---status sieci 230V
- Dim Siec As Byte
- '---DS18B20
- Dim Odczyt_ds(2) As Byte , T As Integer , T1 As Single , Temp As String * 5
- '---UART
- Dim Znak As Byte , Ile_elementow As Byte
- Dim Komenda_uart As String * 30 , Getcommands(10) As String * 30
- Dim Uart_opoznienie_wylaczenia As String * 3 , Uart_opoznienie_wlaczenia As String * 3
- Dim Uart_zmiana_ekranu As String * 3 , Uart_led_lcd As String * 1
- Dim Uart_naladowany As String * 3 , Uart_ladowanie As String * 3 , Uart_rozladowany As String * 3
- '---miganie ikonami
- Dim Mig As Bit , Migaj As Byte , Ikona_usb As Byte
- '---konfiguracja 1-wire
- Config 1wire = Portd.3
- 1wreset
- 1wwrite &HCC
- 1wwrite &H44
- '---konfiguracja i2c
- $lib "i2c_twi.lbx"
- Config Scl = Portc.5
- Config Sda = Portc.4
- Config Twi = 400000
- I2cinit
- '---konfiguracja LCD
- $lib "bl_Lcd_i2c.lib"
- Config Lcd = 16x2
- Const Pcf_d4 = 4
- Const Pcf_d5 = 5
- Const Pcf_d6 = 6
- Const Pcf_d7 = 7
- Const Pcf_rs = 0
- Const Pcf_rw = 1
- Const Pcf_e1 = 2
- Dim _lcd_e As Byte
- Dim Backlight As Byte
- Backlight_on Alias &H08
- Backlight_off Alias &H00
- Backlight = Backlight_on
- _lcd_e = 128
- Const Pcf8574_lcd = &H4E
- Waitms 100 : Cls
- '---powitanie UART
- Sub Powitanie_uart
- Print
- Print "=================================================="
- Print " *** Pi UPS by @pimowo ***"
- Print
- Print
- Print " <P> Pomoc"
- Print " <I> Informacje"
- Print "--------------------------------------------------"
- End Sub
- '---powitanie LCD
- Sub Powitanie_lcd
- Locate 1 , 6 : Lcd "Pi UPS"
- Locate 2 , 4 : Lcd "by @pimowo"
- '---odczekaj i wyczysc ekran
- Wait 4 : Cls
- End Sub
- '---deklaracja znakow
- Deflcdchar 0 , 14 , 31 , 17 , 17 , 19 , 23 , 31 , 31 'akumulator
- Deflcdchar 1 , 32 , 14 , 17 , 31 , 16 , 14 , 4 , 6 'ę
- Deflcdchar 2 , 32 , 14 , 1 , 15 , 17 , 15 , 4 , 6 'ą
- Deflcdchar 3 , 2 , 4 , 14 , 16 , 14 , 1 , 30 , 32 'ś
- Deflcdchar 4 , 4 , 32 , 31 , 2 , 4 , 8 , 31 , 32 'ż
- Deflcdchar 5 , 32 , 10 , 10 , 31 , 14 , 4 , 4 , 3 'wtyczka
- Deflcdchar 6 , 27 , 31 , 4 , 14 , 21 , 27 , 21 , 14 'malina
- Deflcdchar 7 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 'stopien
- '---odczyt czujnika temperatury
- Sub Temperatura
- If Err = 0 Then
- 1wreset
- 1wwrite &HCC
- 1wwrite &HBE
- Odczyt_ds(1) = 1wread(2)
- T = Odczyt_ds(2)
- Shift T , Left , 8
- T = T + Odczyt_ds(1)
- T1 = T * 0.0625
- Temp = Fusing(t1 , "##.##")
- Else
- Temp = "0.0"
- End If
- '---tu DS szykuje nowy odczyt
- 1wreset
- 1wwrite &HCC
- 1wwrite &H44
- End Sub
- Sub Pomiary(byval Channel As Byte)
- Local Pomiar As Word : Pomiar = 0
- For Krok = 1 To Ilosc_probek
- Pomiar = Pomiar + Getadc(channel)
- Next
- Pomiar_wejscia = Pomiar / Ilosc_probek
- Select Case Channel
- '---pomiar pradu na wyjsciu UPS
- Case 0
- Odczyt = Pomiar_wejscia * Korekta_prad
- If Odczyt < 0.005 Then Odczyt = 0
- Amper = Fusing(odczyt , "#.###")
- Watt_amper = Odczyt
- '---napiecie na wejsciu UPS
- Case 1
- Odczyt = Pomiar_wejscia * Korekta_napiecie
- If Odczyt < 0.5 Then Odczyt = 0
- V_wej = Fusing(odczyt , "#.###")
- Napiecie_wej = Odczyt
- If Napiecie_wej >= 1 Then
- '---wszystko OK
- Siec = 0
- '---wlacz podswietlenie LCD
- Backlight = Backlight_on
- Else
- '---brak zasialania sieciowego wiec alarm(1)
- Siec = 1
- '---jezeli wlaczony automat sterowania LED LCD to steruj podswietleniem
- If Led_lcd = 1 Then
- '---wylacz podswietlenie LCD
- Backlight = Backlight_off
- Else
- '---wlacz podswietlenie LCD
- Backlight = Backlight_on
- End If
- End If
- '---napiecie akumulatora
- Case 2
- Odczyt = Pomiar_wejscia * Korekta_napiecie
- V_aku = Fusing(odczyt , "#.###")
- Napiecie_aku = Odczyt
- '---napiecie na wyjsciu UPS
- Case 3
- Odczyt = Pomiar_wejscia * Korekta_napiecie
- If Odczyt < 0.005 Then Odczyt = 0
- V_wyj = Fusing(odczyt , "#.###")
- Watt_volt = Odczyt
- End Select
- End Sub
- '---procentowa pojemnosc akumulatora
- Sub Bateria
- Pojemnosc = Napiecie_aku
- Pojemnosc = Pojemnosc - Pusty_akumulator
- Aku_min_max = Pelny_akumulator - Pusty_akumulator
- Pojemnosc = Pojemnosc / Aku_min_max
- Pojemnosc = 100 * Pojemnosc
- Pojemnosc_aku = Pojemnosc
- End Sub
- '---moc pobierana z UPS
- Sub Moc
- Watt_oblicz = Watt_volt * Watt_amper
- Watt = Fusing(watt_oblicz , "#.###")
- End Sub
- '---USTAWIENIA POCZATKOWE
- '---odczytywanie z eeprom
- Opoznienie_wlaczenia = Opoznienie_wlaczenia_ee
- Opoznienie_wylaczenia = Opoznienie_wylaczenia_ee
- Ladowanie = Ladowanie_ee
- Naladowany = Naladowany_ee
- Rozladowany = Rozladowany_ee
- Zmiana_ekranu = Zmiana_ekranu_ee
- Led_lcd = Led_lcd_ee
- Poczatkowy Alias 0
- Czekaj_i_wlacz Alias 2
- Wlaczone Alias 4
- Czekaj_i_wylacz Alias 10
- Wylaczone Alias 15
- Rozladowane Alias 20
- Lcd_ups = 1
- '---wlaczenie globalnych przerwan
- Enable Interrupts
- Enable Serial
- Call Powitanie_uart
- Call Powitanie_lcd
- '---------------
- '---PETLA GLOWNA
- Do
- If 10ms = 1 Then
- 10ms = 0
- '---tryb regulacji ADC
- If Lcd_ups = 0 Then
- Incr 100ms
- If 100ms = 10 Then
- 100ms = 0
- '---zrob pomiary
- Call Pomiary(0)
- Call Pomiary(1)
- Call Pomiary(2)
- Call Pomiary(3)
- '---wyswietl pomiary na LCD
- Locate 1 , 1 : Lcd "A:" ; V_wej
- Locate 1 , 10 : Lcd "B:" ; Amper
- Locate 2 , 1 : Lcd "C:" ; V_aku
- Locate 2 , 10 : Lcd "D:" ; V_wyj
- Print
- Print " || V wej. pot.A: " ; V_wej ; " | A wyj. pot.B: " ; Amper ; " | V aku. pot.C: " ; V_aku ; " | V wyj. pot.D: " ; V_wyj ; " ||"
- End If
- End If
- '---jezeli jest podlaczony kabelek konwertera UART
- If Lcd_ups = 1 Then
- If Usb = 0 Then
- Locate 2 , 12 : Lcd "USB"
- Else
- Locate 2 , 12 : Lcd " "
- End If
- End If
- '---odlicz sekunde
- If 1s < 100 Then 'x10ms = 1s
- Incr 1s
- Else
- 1s = 0
- '---wykonaj pomiary
- If Lcd_ups = 1 Then
- Call Pomiary(0)
- Call Pomiary(1)
- Call Pomiary(2)
- Call Pomiary(3)
- Call Moc
- Call Temperatura
- Call Bateria
- Gosub Miganie
- End If
- '---opoznienie wlaczenia/wylaczenia wyjscia UPS'a
- If Odczekaj > 0 Then
- Decr Odczekaj
- If Odczekaj = 0 Then
- Select Case Stan_urzadzenia
- Case Czekaj_i_wlacz
- Wyjscie = 1
- Stan_urzadzenia = Wlaczone
- Case Czekaj_i_wylacz
- Wyjscie = 0
- Stan_urzadzenia = Wylaczone
- End Select
- End If
- End If
- Select Case Stan_urzadzenia
- Case Poczatkowy
- If Napiecie_wej >= 1 Then
- Odczekaj = Opoznienie_wlaczenia
- Stan_urzadzenia = Czekaj_i_wlacz
- End If
- Case Wlaczone
- Select Case Napiecie_aku
- Case Is <= Rozladowany
- Wyjscie = 1
- Ladowarka = 1
- Stan_urzadzenia = Rozladowane
- Aku_poziom = 1 'stan krytyczny akumulatora wiec alarm(1)
- Case Is <= Ladowanie
- Ladowarka = 1
- Aku_poziom = 0
- Case Is >= Naladowany
- Ladowarka = 0
- Aku_poziom = 0
- End Select
- '---jezeli nie ma zasilania sieciowego to wylacz ladowarke akumulatora
- If Siec = 1 Then Ladowarka = 0
- '---jezeli podlaczone urzadzenie zostanie odlaczone (zamkniecie systemu) to odczekaj 1m i wylacz wyjscie
- ' If Usb = 1 Then
- ' Odczekaj = Opoznienie_wylaczenia
- ' Stan_urzadzenia = Czekaj_i_wylacz
- ' End If
- ' Case Wylaczone
- ' If Siec = 0 Then Stan_urzadzenia = Poczatkowy
- End Select
- '---wyswietlanie wszystkich danych UPS na LCD
- If Lcd_ups = 1 Then
- Incr Sekundy
- '---przewijanie ekranow LCD
- If Sekundy >= Zmiana_ekranu Then
- Sekundy = 0
- Incr Ekran
- If Ekran > 7 Then Ekran = 1
- Locate 1 , 1 : Lcd Space(16) : Locate 1 , 1
- Select Case Ekran
- Case 1 : Lcd "Napi" ; Chr(1) ; "cie wej" ; Chr(3) ; "cie"
- Case 2 : Lcd "Napi" ; Chr(1) ; "cie baterii"
- Case 3 : Lcd "Napi" ; Chr(1) ; "cie wyj" ; Chr(3) ; "cie"
- Case 4 : Lcd "Nat" ; Chr(1) ; Chr(4) ; "enie pr" ; Chr(2) ; "du"
- Case 5 : Lcd "Moc pobierana"
- Case 6 : Lcd "Temp. baterii"
- Case 7 : Lcd "Bateria"
- End Select
- Locate 2 , 1 : Lcd Space(14) : Locate 2 , 1
- Select Case Ekran
- Case 1 : Lcd Chr(5) ; " " ; V_wej ; " V"
- Case 2 : Lcd Chr(0) ; " " ; V_aku ; " V"
- Case 3 : Lcd Chr(6) ; " " ; V_wyj ; " V"
- Case 4 : Lcd Chr(6) ; " " ; Amper ; " A"
- Case 5 : Lcd Chr(6) ; " " ; Watt ; " W"
- Case 6 : Lcd Chr(0) ; " " ; Temp ; Chr(7) ; "C"
- Case 7 : Lcd Chr(0) ; " " ; Pojemnosc_aku ; " %"
- End Select
- End If
- End If
- '---koniec 1s
- End If
- '---koniec 10ms
- End If
- '---obsluga UART
- If Ischarwaiting() > 0 Then
- Znak = Waitkey() ' pobierz znak z bufora
- If Znak = 13 Then ' jesli ENTER to skocz do uart
- Gosub Uart
- Komenda_uart = ""
- Else
- Komenda_uart = Komenda_uart + Chr(znak) ' kluczowe budowanie bufora
- Print Chr(znak); ' to jest echo zeby bylo widac co przychodzi
- End If
- End If
- Loop
- End
- '---przerwanie od TIMERA
- Timer0_isr:
- $asm
- !PUSH R16
- !PUSH R24
- !PUSH R26
- !PUSH R27
- !in R24, sreg
- !PUSH R24
- $end Asm
- 10ms = 1
- '---Tuned with NoSave Tool
- $asm
- !POP R24
- !out sreg, r24
- !POP R27
- !POP R26
- !POP R24
- !POP R16
- $end Asm
- Return
- '---miganie ikonami
- Miganie:
- Mig = Not Mig
- Locate 2 , 16
- '---jezeli trwa ladowanie akumulatora mrugaj naprzemiennie ikonami kabelka i baterii
- If Ladowarka = 1 Then
- If Mig = 1 Then
- Lcd Chr(5)
- Else
- Lcd Chr(0)
- End If
- '---jezeli akumulator nie jest ladowany to wyswietl ikone zrodla napiecia
- Else
- '---jezeli jest zasilanie sieciowe pokaz ikone kabelka
- If Siec = 0 Then
- Lcd Chr(5)
- '---jezeli brak zasilania sieciowego pokaz ikone baterii
- Else
- Lcd Chr(0)
- End If
- End If
- Return
- Uart:
- Ile_elementow = Split(komenda_uart , Getcommands(1) , " ")
- Select Case Getcommands(1)
- '---jezeli odebrany znak to "F" (Fabryka) przywroc wartosci fabryczne i zresetuj AVR
- Case "F"
- '---wartosci domyslne UPS
- Opoznienie_wlaczenia = 60
- Opoznienie_wlaczenia_ee = Opoznienie_wlaczenia
- Opoznienie_wylaczenia = 60
- Opoznienie_wylaczenia_ee = Opoznienie_wylaczenia
- Ladowanie = 3.8
- Ladowanie_ee = Ladowanie
- Naladowany = 4.0
- Naladowany_ee = Naladowany
- Rozladowany = 3.3
- Rozladowany_ee = Rozladowany
- Zmiana_ekranu = 2
- Zmiana_ekranu_ee = Zmiana_ekranu
- Led_lcd = 1
- Led_lcd_ee = Led_lcd
- Print
- Print "=================================================="
- Print " *** UWAGA! ***"
- Print
- Print
- Print " UPS w trybie domyslnym"
- Print "--------------------------------------------------"
- '---jezeli odebrany znak to "U" (Ustawienia) konfiguracja UPS
- Case "U"
- Uart_opoznienie_wlaczenia = Getcommands(2)
- Opoznienie_wlaczenia = Val(uart_opoznienie_wlaczenia)
- Opoznienie_wlaczenia_ee = Opoznienie_wlaczenia
- Uart_opoznienie_wylaczenia = Getcommands(3)
- Opoznienie_wylaczenia = Val(uart_opoznienie_wylaczenia)
- Opoznienie_wylaczenia_ee = Opoznienie_wylaczenia
- Uart_ladowanie = Getcommands(4)
- Ladowanie = Val(uart_ladowanie)
- Ladowanie_ee = Ladowanie
- Uart_naladowany = Getcommands(5)
- Naladowany = Val(uart_naladowany)
- Naladowany_ee = Naladowany
- Uart_rozladowany = Getcommands(6)
- Rozladowany = Val(uart_rozladowany)
- Rozladowany_ee = Rozladowany
- Uart_zmiana_ekranu = Getcommands(7)
- Zmiana_ekranu = Val(uart_zmiana_ekranu)
- Uart_led_lcd = Getcommands(8)
- Led_lcd = Val(led_lcd)
- Led_lcd_ee = Led_lcd
- '---jezeli odebrany znak to "I" (Informacje) wyswietl dane na temat sprzetu/programu
- Case "I"
- Print
- Print "=================================================="
- Print " *** INFO ***"
- Print
- Print
- Print " Zasilacz awaryjny Raspberry Pi"
- Print
- Print " Projekt:"
- Print " @pimowo"
- Print " Piotr Mrozek"
- Print " pimowo@gmail.com"
- Print
- Print
- Print " PiUPS:"
- Print " Wersja hadware: v2.0"
- Print " Wersja software: v1.0"
- Print "--------------------------------------------------"
- '---jezeli odebrany znak to "O" (Odczyt) pokaz konfiguracje UPS'a
- Case "O"
- Print
- Print "=================================================="
- Print " *** Aktualne ustawienia UPS ***"
- Print
- Print
- Print " Opoznienie wlaczenia:"
- Print " " ; Opoznienie_wlaczenia ; " (sekundy)"
- Print
- Print " Opoznienie wylaczenia:"
- Print " " ; Opoznienie_wylaczenia ; " (sekundy)"
- Print
- Print " Poczatek ladowania akumulatora:"
- Print " " ; Ladowanie ; " V"
- Print
- Print " Koniec ladowania akumulatora:"
- Print " " ; Naladowany ; " V"
- Print
- Print " Rozladowany akumulator:"
- Print " " ; Rozladowany ; " V"
- Print
- Print " Przewijanie ekranow LCD:"
- Print " " ; Zmiana_ekranu ; " (sekundy)"
- Print
- Print " Auto-podswietlenie LCD:"
- If Led_lcd = 1 Then Print " TAK" Else Print " NIE"
- Print "--------------------------------------------------"
- '---jezeli odebrany znak to "N" (Normalny) Normalne dzialanie UPS'a
- Case "N"
- Cls : Lcd_ups = 1
- '---jezeli odebrany znak to "T" (Test) regulacja ADC
- Case "T"
- Cls : Lcd_ups = 0
- '---jezeli odebrany znak to "P" (Pomoc) wyswietl wszystkie dostepne komendy
- Case "P"
- Print
- Print "=================================================="
- Print " *** Pomoc ***"
- Print
- Print
- Print " D (Dane)"
- Print " Wyswietl wszystkie pomiary"
- Print
- Print " F (Fabryka)"
- Print " Zresetuj UPS do ustawien fabrycznych"
- Print
- Print " I (Informacje)"
- Print " Wyswietl wszystkie pomiary"
- Print
- Print " N (Normalny)"
- Print " Normalny tryb pracy UPS"
- Print
- Print " O (Odczyt)"
- Print " Wyswietl wszystkie ustawienia UPS"
- Print
- Print " P (Pomoc)"
- Print " Wyswietl wszystkie polecenia"
- Print
- Print " R (Reset)"
- Print " Reset AVR"
- Print
- Print " T (Test)"
- Print " Test i regulacja ADC"
- Print
- Print " U (Ustawienia)"
- Print " Ustawienia parametrow UPS"
- Print " <*> dokladny opis ustawien UPS"
- Print "--------------------------------------------------"
- '---jezeli odebrany znak to "*" szerszy opis ustawien UPS
- Case "*"
- Print
- Print "=================================================="
- Print " *** Opis konfiguracji UPS ***"
- Print
- Print
- Print " U (Ustawienia)"
- Print
- Print " Wyjscie UPS:"
- Print " Opoznienie wlaczenia (1-240s)"
- Print " Opoznienie wylaczenia (1-240s)"
- Print
- Print " Akumulator:"
- Print " Koniec ladowania (0.1-9.9V)"
- Print " Poczatek ladowania (0.1-9.9V)"
- Print " Rozladowany (0.1-9.9V)"
- Print
- Print " LCD:"
- Print " Przelaczanie ekranow (1-240s)"
- Print " Auto-podswietlenie (1/0)"
- Print
- Print " Przykladowe (domyslne) ustawienia:"
- Print " U 60 60 3.9 4.0 3.3 2 1"
- Print
- Print " |ustaw|"
- Print " |wlacz wyjscie po 60 sekundach|"
- Print " |wylacz wyjscie po 60 sekundach|"
- Print " |poczatek ladowania akumulatora przy napieciu 3.9V|"
- Print " |koniec laowania akumulatora po osiagnieciu 4.0V|"
- Print " |stan krytyczny akumulatora przy napieciu 3.3V|"
- Print " |przelaczaj ekrany LCD co 2 sekundy|"
- Print " |wygas LCD przy zasilaniu akumulatorowym|"
- Print "--------------------------------------------------"
- '---jezeli odebrany znak to "R" (Reset) zresetuj AVR
- Case "R"
- Disable Interrupts 'wylaczenie przerwan
- Start Watchdog 'uruchomienie Watchdoga
- Do 'petla nieskonczona
- Loop 'w niej czekamy na Reset
- '---jezeli odebrany znak to "D" (Dane) odeslij dane pomiarow
- Case "D"
- Print V_wej ; " " ; V_aku ; " " ; V_wyj ; " " ; Amper ; " " ; Watt ; " " ; Temp ; _
- " " ; Pojemnosc_aku ; " " ; Ladowarka ; " " ; Siec ; " " ; Aku_poziom
- '---jezeli odebrany znak to zaden z powyzszych...
- Case Else
- Print
- Print "=================================================="
- Print " *** BLAD! ***"
- Print
- Print
- Print " Nie rozpoznano polecenia"
- Print " <P> Pomoc"
- Print "--------------------------------------------------"
- '---czysczenie bufora
- Getcommands(1) = ""
- Getcommands(2) = ""
- Getcommands(3) = ""
- Getcommands(4) = ""
- Getcommands(5) = ""
- Getcommands(6) = ""
- Getcommands(7) = ""
- Getcommands(8) = ""
- End Select
- '---czysczenie bufora
- Getcommands(1) = ""
- Getcommands(2) = ""
- Getcommands(3) = ""
- Getcommands(4) = ""
- Getcommands(5) = ""
- Getcommands(6) = ""
- Getcommands(7) = ""
- Getcommands(8) = ""
- Return
PS
Proszę się za mocno nie śmiać bo to są wypociny niedzielnego amatora elektroniki