Zasilacz awaryjny-UPS

Prezentacje projektów
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Zasilacz awaryjny-UPS

Post autor: Pikczu » 17 lut 2018, 22:43

1. Zmuszasz mnie jednak do opisania tego porządnie, założę nowy temat na forum, może sklecę jakiś film.
Ale nie zorbie tego dziś bo już ledwo żyje.

2. Nie każdy tak pisze choć przy dużych kodach moim zdaniem jest to mus.
Pozytywy to: Zdecydowanie bardziej przejrzysty kod.
Możliwość używania tego samego kodu wielokrotnie.

Negatywy: Można się zakręcić na samym początku podczas kreowania plików.
Trzeba pamiętać o klikaniu close i open project oraz save.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Zasilacz awaryjny-UPS

Post autor: pimowo » 18 lut 2018, 14:20

Nie chciałem Ciebie do niczego zmuszać :)
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Zasilacz awaryjny-UPS

Post autor: Pikczu » 18 lut 2018, 20:32

Tak się to robi:[media]https://www.youtube.com/watch?v=hf1KdDz ... e=youtu.be[/media]
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Zasilacz awaryjny-UPS

Post autor: pimowo » 19 lut 2018, 13:11

Bardzo dziękuję za wideo-poradnik.
To jest jednak prawda, jeden obraz-tysiąc słów.

Postaram się teraz przepisać projekt według Twoich wytycznych ;)
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Zasilacz awaryjny-UPS

Post autor: Pikczu » 19 lut 2018, 13:26

Uzyje tego z dropboxa bo jest tak zrobiony nie zapomnij klikac na open project i save project.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Zasilacz awaryjny-UPS

Post autor: pimowo » 20 lut 2018, 15:08

Mam nadzieję, że nic nie zepsułem ;)
Może teraz uda się pójść krok dalej.
Pimowo_UPS.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zasilacz awaryjny-UPS

Post autor: niveasoft » 21 lut 2018, 20:30

Proszę kolego. Tak bym proponował na szybko i bez testów.
Podmień w Twoim kodzie tylko ten "tajny niezrozumiały kawałek kodu" i napisz jak działa. Może jaki tunning jeszcze się przyda.
Dodałem kilka opisów dla rozjaśnienia ;)

Zauważ, że żeby nie latać po kartkach to sobie ściągnąłem Twoje wytyczne do kodu oraz moje Aliasy (są po to by się nie machnąć).
  1.    '---------------------------------------------------------------------------------------------------------
  2.    '---------------------------------------------------------------------------------------------------------
  3.    '---TEGO BLOKU NIE DO KONCA ROZUMIEM, A TU (CHYBA) POWINNA BYC MOJA LOGIKA DZIALANIA UPS
  4.  
  5.    '(
  6.   '         Dokładnie co chciałbym uzyskać to:
  7. '         1. pierwszy start
  8.  
  9. '         a) jest napięcie sieciowe "Napiecie_wej >= 1"
  10. '         - odczekaj "Opoznienie_wlaczenia"
  11.  
  12. '         - włącz napięcie na wyjściu UPS "Wyjscie = 1"
  13. '         - "Siec = 0"
  14. '         - "Ladowarka = 1" gdy napięcie poniżej "Ladowanie"
  15. '         - "Ladowarka = 0" gdy napięcie powyżej "Naladowany"
  16. '         - "Aku_poziom = 1" gdy napięcie akumulatora poniżej "Rozladowany"
  17. '         - "Aku_poziom = 0" gdy napięcie akumulatora powyżej "Rozladowany"
  18.  
  19. '         b) brak napięcia sieciowego "Napiecie_wej < 1"
  20. '         "Wyjscie = 0"
  21. '         - "Siec = 1"
  22. '         - "Ladowarka = 0"
  23. '         - "Aku_poziom = 1" gdy napięcie akumulatora poniżej "Rozladowany"
  24. '         - "Aku_poziom = 0" gdy napięcie akumulatora powyżej "Rozladowany"
  25.  
  26. '         2. normalne działanie gdy wszystko jest OK
  27. '         - włączone napięcie na wyjściu UPS "Wyjscie = 1"
  28. '         - "Siec = 0"
  29. '         - "Ladowarka = 1" gdy napięcie poniżej "Ladowanie"
  30. '         - "Ladowarka = 0" gdy napięcie powyżej "Naladowany"
  31. '         - "Aku_poziom = 1" gdy napięcie akumulatora poniżej "Rozladowany"
  32. '         - "Aku_poziom = 0" gdy napięcie akumulatora powyżej "Rozladowany"
  33.  
  34. '         3. normalne działanie gdy braknie napięcia 230V
  35. '         - "Siec = 1"
  36. '         - "Ladowarka = 0"
  37. '         - "Aku_poziom = 0" gdy napięcie akumulatora powyżej "Rozladowany"
  38. '         - "Aku_poziom = 1" gdy napięcie akumulatora poniżej "Rozladowany"
  39. '         - malinka zamyka system
  40. '         - system malinki zamknięty więc "Usb = 1"
  41. '         - odczekaj "Opoznienie_wylaczenia"
  42. '         - wyłącz napięcie na wyjściu UPS "Wyjscie = 0"
  43.  
  44. '         4. system zamknięty, a pojawia się napięcie 230V
  45. '         - odczekaj "Opoznienie_wlaczenia"
  46. '         - włącz napięcie na wyjściu UPS "Wyjscie = 1"
  47. '         - "Siec = 0"
  48. '         - "Ladowarka = 1" gdy napięcie poniżej "Ladowanie"
  49. '         - "Ladowarka = 0" gdy napięcie powyżej "Naladowany"
  50. '         - "Aku_poziom = 1" gdy napięcie akumulatora poniżej "Rozladowany"
  51. '         - "Aku_poziom = 0" gdy napięcie akumulatora powyżej "Rozladowany"
  52.  
  53.  
  54. ')
  55.  
  56.       Poczatkowy Alias 0
  57.       Czekaj_i_wlacz Alias 2
  58.       Wlaczone Alias 4
  59.       Czekaj_i_wylacz Alias 10
  60.       Rozladowane Alias 20
  61.  
  62.      'tutaj jest tylko jeśli Odczekaj > 0
  63.      '------------------------------------------------
  64.      ' * CZASOMIERZ ODLICZANIA I PRACE PO ODLICZANIU *
  65.      '------------------------------------------------
  66.       If Odczekaj > 0 Then                                  'jeśli Odczekaj > to ...                                '
  67.  
  68.         Decr Odczekaj                                       'to zmniejszaj!
  69.  
  70.        'a jak osiągnie zero to..
  71.        '-----------------------------------
  72.         If Odczekaj = 0 Then                                'to się dzieje tylko raz kiedy ustawisz Odczekaj > 0
  73.  
  74.           Select Case Stan_urzadzenia                       'co miałem zrobić?
  75.            '--------------------------Pkt.1
  76.             Case Czekaj_i_wlacz                             'czekałem żeby włączyć
  77.  
  78.               Wyjscie = 1                                   'włączam wyjście
  79.               Siec = 0
  80.            '                    Wlaczone zdefiniowalem wczesniej i znaczy 4
  81.               Stan_urzadzenia = Wlaczone                    'zapamiętuję stan który sprawdzam niżej
  82.           '---------------------------Pkt.2
  83.             Case Czekaj_i_wylacz                            'czekałem żeby wyłaczyć
  84.  
  85.               Wyjscie = 0                                   'to wyłączam
  86.               Siec = 1
  87.           '                     Poczatkowy znaczy 0
  88.               Stan_urzadzenia = Poczatkowy                  'wlaczy sie tylko jak pojawi sie 230V
  89.  
  90.           End Select
  91.  
  92.         End If
  93.  
  94.       End If
  95.  
  96.       ' * KONIEC CZASOMIERZA I PRAC PO ODLICZANIU *
  97.       '--------------------------------------------
  98.  
  99.  
  100.       '-----------------------------------------------
  101.       ' * TU SPRAWDZAM STAN LOGIKI CO OKREŚLONY CZAS *
  102.       '-----------------------------------------------
  103.       Select Case Stan_urzadzenia
  104.  
  105.         Case Poczatkowy                                     'poczatkowy znaczy 0 i wystepuje zaraz po właczeniu AVR
  106.  
  107.           If Napiecie_wej > 1.0 Then                        'mamy ~230V?
  108.  
  109.             Odczekaj = Opoznienie_wlaczenia                 'to ustaw odlicznie a za chwilę się włączy :D
  110.             Stan_urzadzenia = Czekaj_i_wlacz                'napisz mu na co czekał (Pkt.1)
  111.  
  112.           End If
  113.  
  114.         Case Wlaczone                                       'a jesli urządzenie jest już włączone to...
  115.  
  116.           If Napiecie_wej > 1.0 Then
  117.            ' * praca na sieciowym 230V *
  118.  
  119.              Select Case Napiecie_aku                       'w zalezności od napięcia akumulatora
  120.  
  121.                Case Is < Rozladowany
  122.  
  123.                  Ladowarka = 1                              'włącz ładowarkę
  124.  
  125.                  Aku_poziom = 1                             'stan krytyczny akumulatora wiec alarm(1)
  126.  
  127.                Case Is <= Ladowanie
  128.  
  129.                  Ladowarka = 1                              'włącz ładowarkę
  130.  
  131.                  Aku_poziom = 0                                'napiecie akumulatora powyzej stanu krytycznego wylacz(0)
  132.  
  133.                Case Is >= Naladowany                           'np wyżej niż 4.2V
  134.  
  135.                  Ladowarka = 0                              'wylacz ladowarke
  136.  
  137.                  Aku_poziom = 0                             'napiecie akumulatora powyzej stanu krytycznego wylacz(0)
  138.  
  139.              End Select
  140.  
  141.            'wyjscie zawsze akywne gdy mamy 230V
  142.              Siec = 0 : Wyjscie = 1                         'wlaczone napiecie na wyjsciu UPS
  143.  
  144.           Else
  145.            ' * praca na akumulatorze *
  146.  
  147.              Select Case Napiecie_aku                       'w zalezności od napięcia akumulatora
  148.  
  149.                Case Is < Rozladowany
  150.                 'dupa, zamykamy maline, robimy rząd i spadamy stąd :P
  151.                  Aku_poziom = 1
  152.  
  153.                  'czekamy aż Malina zamknie podwoje
  154.                  If Usb = 1 Then
  155.                   Odczekaj = Opoznienie_wlaczenia
  156.                   Stan_urzadzenia = Czekaj_i_wylacz         'napisz mu na co czekał (Pkt.2)
  157.                  End If
  158.  
  159.  
  160.                Case Is > Rozladowany
  161.                 'na razie brykamy malinom na Akku jak gieroje i cieszymy banana :D
  162.                  Aku_poziom = 0
  163.  
  164.              End Select
  165.  
  166.  
  167.              Siec = 1 : Ladowarka = 0
  168.           End If
  169.  
  170.       End Select
  171.  
  172.    '---KONIEC TAJNEGO, NIEZROZUMIALEGO BLOKU ;)
  173.    '---------------------------------------------------------------------------------------------------------
  174.    '---------------------------------------------------------------------------------------------------------
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Zasilacz awaryjny-UPS

Post autor: pimowo » 21 lut 2018, 22:24

niveasoft pisze:Tak bym proponował na szybko i bez testów.
Dzięki wielkie za kod. Teraz powinno być z górki...
niveasoft pisze:Podmień w Twoim kodzie tylko ten "tajny niezrozumiały kawałek kodu" i napisz jak działa. Może jaki tunning jeszcze się przyda.
Zaktualizuję kod, pomęczę to wszystko i dam znać jak wszystko działa.
niveasoft pisze:Dodałem kilka opisów dla rozjaśnienia ;)
Dzięki za te opisy-same za siebie wszystko mówią ;)
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zasilacz awaryjny-UPS

Post autor: niveasoft » 23 lut 2018, 3:29

Nie żeby mnie to ciekawiło....
No pewnie że mnie ciekawi :D ! :D

Mam całkiem nowy akumulator do tableta ~25zł
Dzisiaj przyszła ładowarka do ogniw tego typu za 2zł, 80gr która potrafi to ładować i pilnować żeby nie rozładować poniżej tego co powoduje degradację.
...a że mam od jakiegoś czasu maline pod telewizorem to może cały pomysł mi się do czegoś przyda :D
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Zasilacz awaryjny-UPS

Post autor: pimowo » 23 lut 2018, 9:20

Mówisz o tym moim pierwszym czy drugim wynalazku? :)
Ten pierwszy sprawdził się w stu procentach i nadal się sprawdza, oddałem tego mikrusa bratu i zasila to malinkę która pracuje 24/7/365
Ten drugi wynalazek już prawie działa, ale mam jeszcze małe problemy gdy malina zamknie, uruchomi system. Nie jestem pewny, ale malinka chyba coś wysyła na UART-w terminalu nic nie widać (przetestowałem chyba na wszystkich prędkościach) ale widać na konwerterze, że dioda sobie mrugnie. To "coś" powoduje otrzymywaniu "krzaków" przy pierwszych zapytaniach o dane :(
ODPOWIEDZ