Pomiar napięcia i prądu

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar napięcia i prądu

Post autor: niveasoft » 28 lis 2017, 20:01

Chyba przez pośpiech małego byka tam zostawiłem :D

Jest taka zasada, że się nie pisze, że coś jest równe typowi Single.
Na przykład jeśli masz zmienną Single Test to taki warunek nigdy nie zadziała "If Test = 1 Then"
Z typami Single powinno się używać wyrażeń ">=" lub "<=" .

Dlatego w Select Case powinno być raczej:
  1. Select Case Akumulator
  2.  
  3.         Case Is < Rozladowany
  4.           Wyjscie = 1
  5.            Ladowarka = 0
  6.             Stan_urzadzenia = Rozladowane
  7.  
  8.         Case Is <= Ladowanie
  9.             Ladowarka = 1
  10.  
  11.         Case Is > Naladowany
  12.             Ladowarka = 0
  13.  
  14.        End Select
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 02 gru 2017, 17:13

Siedzę i siedzę nad tym kodem i nie potrafię napisać algorytmu działania całego urządzenia :(

Pokażę całość to może będzie łatwiej:
  1. '---mikrokontroler
  2. $regfile = "m328pdef.dat"
  3.  
  4. '---zewnetrzny kwarc
  5. $crystal = 11059200
  6.  
  7. '---predkosc UART
  8. $baud = 9600
  9.  
  10. '---konfiguracja stosu
  11. $hwstack = 64
  12. $swstack = 64
  13. $framesize = 128
  14.  
  15. '---opoznienie wlaczenia/wylaczenia wyjscia UPS'a
  16. Const Opoznienie_startu = 120                               '120 x 0,5s = 60s = 1m
  17. Const Opoznienie_wylaczenia = 120
  18.  
  19. '---czas przelaczania ekranow LCD
  20. Const Zmiana_ekranu = 2                                     'czas w sekundach
  21.  
  22. '---korekta dla ADC
  23. Const Korekta_prad = 0.001
  24. Const Korekta_napiecie = 0.01
  25.  
  26. '---ilosc probek jakie wykonuje ADC
  27. Const Ilosc_probek = 64
  28.  
  29. '---ustawienia dla akumulatora
  30. Const Naladowany = 4.0
  31. Const Ladowanie = 3.8
  32. Const Rozladowany = 3.2
  33.  
  34. '---napiecie pustego akumulatora
  35. Const Pusty_akumulator = 2.8
  36.  
  37. '---napiecie w pelni naladowanego akumulatora
  38. Const Pelny_akumulator = 4.2
  39.  
  40. '---bufor UART
  41. Config Serialin = Buffered , Size = 20
  42.  
  43. Config Submode = New
  44.  
  45. '---konfiguracja timera
  46. Config Timer0 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  47. Enable Compare0a : On Compare0a Timer0_isr Nosave : Compare0a = 107       '10ms @11MHz
  48.  
  49. '---konfiguracja przetwornika ADC
  50. Config Adc = Single , Prescaler = Auto , Reference = Aref
  51.  
  52. '---wyjscia
  53. Config Portd.2 = Output : Portd.2 = 0 : Ladowarka Alias Portd.2
  54. Config Portd.6 = Output : Portd.6 = 0 : Wyjscie Alias Portd.6
  55.  
  56. '---wejscia
  57. Config Pinb.2 = Input : Portb.2 = 1 : Usb Alias Pinb.2
  58.  
  59. '---ZMIENNE PROGRAMU
  60. '---zmienne dla obliczen czasu
  61. Dim 10ms As Byte , 500ms As Byte , 1s As Byte
  62. Dim Sekundy As Byte , Ekran As Byte
  63. Dim Odczekaj As Byte , Stan_urzadzenia As Byte
  64.  
  65. '---ADC
  66. Dim Pomiar_wejscia As Word , Odczyt As Single , Krok As Byte
  67.  
  68. '---obliczenia danych odczytanych przez ADC
  69. Dim V_wej As String * 6 , V_aku As String * 6 , V_wyj As String * 6
  70. Dim Amper As String * 6 , Watt As String * 6
  71. Dim Watt_volt As Single , Watt_amper As Single , Watt_oblicz As Single
  72. Dim Napiecie_aku As Single , Napiecie_wej As Single
  73. Dim Cs As Single , Akumulator As Single
  74.  
  75. '---pojemnosc akumulatora
  76. Dim Pojemnosc_aku As Byte , Pojemnosc As Single , Aku_min_max As Single
  77. Dim Ladowanie_aku As Byte
  78. Dim Aku_poziom As Byte
  79.  
  80. '---status sieci 230V
  81. Dim Siec As Byte
  82.  
  83. '---DS18B20
  84. Dim Odczyt_ds(2) As Byte , T As Integer , T1 As Single , Temp As String * 5
  85.  
  86. '---UART
  87. Dim Znak As Byte
  88.  
  89. '---miganie ikonami
  90. Dim Mig As Bit , Migaj As Byte , Ikona_usb As Byte
  91.  
  92. '---konfiguracja linii 1-wire
  93. Config 1wire = Portd.3
  94. 1wreset
  95. 1wwrite &HCC
  96. 1wwrite &H44
  97.  
  98. '---konfiguracja i2c
  99. $lib "i2c_twi.lbx"
  100. Config Scl = Portc.5
  101. Config Sda = Portc.4
  102. Config Twi = 400000
  103. I2cinit
  104.  
  105. '---konfiguracja LCD
  106. $lib "bl_Lcd_i2c.lib"
  107.  
  108. Config Lcd = 16x2
  109.  
  110. Const Pcf_d4 = 4
  111. Const Pcf_d5 = 5
  112. Const Pcf_d6 = 6
  113. Const Pcf_d7 = 7
  114. Const Pcf_rs = 0
  115. Const Pcf_rw = 1
  116. Const Pcf_e1 = 2
  117.  
  118. Dim _lcd_e As Byte
  119. Dim Backlight As Byte
  120.  
  121. Backlight_on Alias &H08
  122. Backlight_off Alias &H00
  123. Backlight = Backlight_on
  124. _lcd_e = 128
  125.  
  126. Const Pcf8574_lcd = &H4E
  127.  
  128. Waitms 100 : Cls
  129.  
  130. '---powitanie LCD
  131. Locate 1 , 6 : Lcd "Pi UPS"
  132. Locate 2 , 4 : Lcd "by @pimowo"
  133.  
  134. '---powitanie UART
  135. Print ""
  136. Print "  Pi UPS"
  137. Print "by @pimowo"
  138. Print ""
  139.  
  140. '---odczekaj i wyczysc ekran
  141. Wait 5 : Cls
  142.  
  143. '---deklaracja znakow
  144. Deflcdchar 0 , 14 , 31 , 17 , 17 , 19 , 23 , 31 , 31        'akumulator
  145. Deflcdchar 1 , 32 , 14 , 17 , 31 , 16 , 14 , 4 , 6          'ę
  146. Deflcdchar 2 , 32 , 14 , 1 , 15 , 17 , 15 , 4 , 6           'ą
  147. Deflcdchar 3 , 2 , 4 , 14 , 16 , 14 , 1 , 30 , 32           'ś
  148. Deflcdchar 4 , 4 , 32 , 31 , 2 , 4 , 8 , 31 , 32            'ż
  149. Deflcdchar 5 , 32 , 10 , 10 , 31 , 14 , 4 , 4 , 3           'wtyczka
  150. Deflcdchar 6 , 27 , 31 , 4 , 14 , 21 , 27 , 21 , 14         'malina
  151. Deflcdchar 7 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32            'stopien
  152.  
  153. '---odczyt czujnika temperatury
  154. Sub Temperatura
  155.  
  156.   If Err = 0 Then
  157.  
  158.     1wreset
  159.     1wwrite &HCC
  160.     1wwrite &HBE
  161.  
  162.     Odczyt_ds(1) = 1wread(2)
  163.     T = Odczyt_ds(2)
  164.     Shift T , Left , 8
  165.     T = T + Odczyt_ds(1)
  166.     T1 = T * 0.0625
  167.  
  168.     Temp = Fusing(t1 , "##.##")
  169.  
  170.   Else
  171.  
  172.     Temp = "0.0"
  173.  
  174.   End If
  175.  
  176. '---tu DS szykuje nowy odczyt
  177.   1wreset
  178.   1wwrite &HCC
  179.   1wwrite &H44
  180.  
  181. End Sub
  182.  
  183. Sub Pomiary(byval Channel As Byte)
  184.  
  185.   Local Pomiar As Word : Pomiar = 0
  186.  
  187.     For Krok = 1 To Ilosc_probek
  188.  
  189.       Pomiar = Pomiar + Getadc(channel)
  190.  
  191.     Next
  192.  
  193.     Pomiar_wejscia = Pomiar / Ilosc_probek
  194.  
  195.     Select Case Channel
  196.  
  197. '---pomiar pradu na wyjsciu UPS
  198.       Case 0
  199.  
  200.         Odczyt = Pomiar_wejscia * Korekta_prad
  201.  
  202.           If Odczyt < 0.005 Then Odczyt = 0
  203.  
  204.         Amper = Fusing(odczyt , "#.###")
  205.         Watt_amper = Odczyt
  206.  
  207. '---napiecie na wejsciu UPS
  208.       Case 1
  209.  
  210.         Odczyt = Pomiar_wejscia * Korekta_napiecie
  211.  
  212.           If Odczyt < 0.5 Then Odczyt = 0
  213.  
  214.         V_wej = Fusing(odczyt , "#.###")
  215.         Napiecie_wej = Odczyt
  216.  
  217.           If Napiecie_wej >= 1 Then
  218.  
  219.             Siec = 0                                        'wszystko OK
  220.             Backlight = Backlight_on                        'wlacz podswietlenie LCD
  221.  
  222.           Else
  223.  
  224.             Siec = 1                                        'brak zasialania sieciowego wiec alarm(1)
  225.             Backlight = Backlight_off                       'wylacz podswietlenie LCD
  226.  
  227.           End If
  228.  
  229. '---napiecie akumulatora
  230.       Case 2
  231.  
  232.         Odczyt = Pomiar_wejscia * Korekta_napiecie
  233.         V_aku = Fusing(odczyt , "#.###")
  234.         Napiecie_aku = Odczyt
  235.  
  236. '---napiecie na wyjsciu UPS
  237.       Case 3
  238.  
  239.         Odczyt = Pomiar_wejscia * Korekta_napiecie
  240.  
  241.           If Odczyt < 0.005 Then Odczyt = 0
  242.  
  243.         V_wyj = Fusing(odczyt , "#.###")
  244.         Watt_volt = Odczyt
  245.  
  246.     End Select
  247.  
  248. End Sub
  249.  
  250. '---procentowa pojemnosc akumulatora
  251. Sub Bateria
  252.  
  253.   Pojemnosc = Napiecie_aku
  254.   Pojemnosc = Pojemnosc - Pusty_akumulator
  255.   Aku_min_max = Pelny_akumulator - Pusty_akumulator
  256.   Pojemnosc = Pojemnosc / Aku_min_max
  257.   Pojemnosc = 100 * Pojemnosc
  258.   Pojemnosc_aku = Pojemnosc
  259.  
  260. End Sub
  261.  
  262. '---moc pobierana z UPS
  263. Sub Moc
  264.  
  265.   Watt_oblicz = Watt_volt * Watt_amper
  266.   Watt = Fusing(watt_oblicz , "#.###")
  267.  
  268. End Sub
  269.  
  270. '---ustawienia poczatkowe
  271. Poczatkowy Alias 0
  272. Czekaj_i_wlacz Alias 2
  273. Wlaczone Alias 4
  274. Czekaj_i_wylacz Alias 10
  275. Wylaczone Alias 15
  276. Rozladowane Alias 20
  277.  
  278. '---wlaczenie globalnych przerwan
  279. Enable Interrupts
  280.  
  281. '---------------
  282. '---PETLA GLOWNA
  283. Do
  284.  
  285.   If 10ms = 1 Then
  286.     10ms = 0
  287.  
  288. '---jezeli jest podlaczony kabelek konwertera UART
  289.     If Usb = 0 Then
  290.  
  291.       Locate 2 , 12 : Lcd "USB"
  292.  
  293.     Else
  294.  
  295.       Locate 2 , 12 : Lcd "   "
  296.  
  297.     End If
  298.  
  299.     If 500ms < 50 Then                                      'x10ms = 500ms
  300.  
  301.       Incr 500ms
  302.  
  303.     Else
  304.  
  305.       500ms = 0
  306.  
  307.       If Odczekaj > 0 Then
  308.  
  309.         Decr Odczekaj
  310.  
  311.         If Odczekaj = 0 Then
  312.  
  313. '---1min odliczone
  314.           Select Case Stan_urzadzenia
  315.  
  316.             Case Czekaj_i_wlacz
  317.  
  318.               Wyjscie = 1
  319.               Stan_urzadzenia = Wlaczone
  320.  
  321.             Case Czekaj_i_wylacz
  322.  
  323.               Wyjscie = 0
  324.               Stan_urzadzenia = Wylaczone
  325.  
  326.           End Select
  327.  
  328. '---end if 1min
  329.         End If
  330.  
  331.       End If
  332.  
  333. '---wykonaj pomiary
  334.       Call Pomiary(0)
  335.       Call Pomiary(1)
  336.       Call Pomiary(2)
  337.       Call Pomiary(3)
  338.       Call Moc
  339.       Call Temperatura
  340.       Call Bateria
  341.  
  342.       Gosub Miganie
  343.  
  344.       Select Case Stan_urzadzenia
  345.  
  346.         Case Poczatkowy
  347.  
  348.           If Napiecie_wej >= 1 Then
  349.  
  350.             Odczekaj = Opoznienie_startu
  351.             Stan_urzadzenia = Czekaj_i_wlacz
  352.  
  353.           End If
  354.  
  355.         Case Wlaczone
  356.  
  357.           Select Case Napiecie_aku
  358.  
  359.             Case Is <= Rozladowany
  360.  
  361.               Wyjscie = 1
  362.               Ladowarka = 1
  363.               Stan_urzadzenia = Rozladowane
  364.               Aku_poziom = 1                                'stan krytyczny akumulatora wiec alarm(1)
  365.  
  366.             Case Is <= Ladowanie
  367.  
  368.               Ladowarka = 1
  369.               Aku_poziom = 0
  370.  
  371.             Case Is >= Naladowany
  372.  
  373.               Ladowarka = 0
  374.               Aku_poziom = 0
  375.  
  376.           End Select
  377.  
  378. '---jezeli nie ma zasilania sieciowego to wylacz ladowarke akumulatora
  379.           If Siec = 1 Then Ladowarka = 0
  380.  
  381. '---jezeli podlaczone urzadzenie zostanie odlaczone (zamkniecie systemu) to odczekaj 1m i wylacz wyjscie
  382. '          If Usb = 1 Then
  383.  
  384. '            Odczekaj = Opoznienie_wylaczenia
  385. '            Stan_urzadzenia = Czekaj_i_wylacz
  386.  
  387. '          End If
  388.  
  389. '        Case Wylaczone
  390.  
  391. '          If Siec = 0 Then Stan_urzadzenia = Poczatkowy
  392.  
  393.       End Select
  394.  
  395. '---end if 500ms
  396.     End If
  397.  
  398. '---wyswietlanie wszystkich danych UPS na LCD/przewijanie ekranow LCD
  399.     If 1s < 100 Then
  400.  
  401.       Incr 1s
  402.  
  403.     Else
  404.  
  405.       1s = 0
  406.       Incr Sekundy
  407.  
  408.       If Sekundy >= Zmiana_ekranu Then
  409.         Sekundy = 0
  410.  
  411.         Incr Ekran : If Ekran > 7 Then Ekran = 1
  412.  
  413.         Locate 1 , 1 : Lcd Space(16) : Locate 1 , 1
  414.  
  415.           Select Case Ekran
  416.  
  417.             Case 1 : Lcd "Napi" ; Chr(1) ; "cie wej" ; Chr(3) ; "cie"
  418.             Case 2 : Lcd "Napi" ; Chr(1) ; "cie baterii"
  419.             Case 3 : Lcd "Napi" ; Chr(1) ; "cie wyj" ; Chr(3) ; "cie"
  420.             Case 4 : Lcd "Nat" ; Chr(1) ; Chr(4) ; "enie pr" ; Chr(2) ; "du"
  421.             Case 5 : Lcd "Moc pobierana"
  422.             Case 6 : Lcd "Temp. baterii"
  423.             Case 7 : Lcd "Bateria"
  424.  
  425.           End Select
  426.  
  427.         Locate 2 , 1 : Lcd Space(14) : Locate 2 , 1
  428.  
  429.           Select Case Ekran
  430.  
  431.             Case 1 : Lcd Chr(5) ; " " ; V_wej ; " V"
  432.             Case 2 : Lcd Chr(0) ; " " ; V_aku ; " V"
  433.             Case 3 : Lcd Chr(6) ; " " ; V_wyj ; " V"
  434.             Case 4 : Lcd Chr(6) ; " " ; Amper ; " A"
  435.             Case 5 : Lcd Chr(6) ; " " ; Watt ; " W"
  436.             Case 6 : Lcd Chr(0) ; " " ; Temp ; Chr(7) ; "C"
  437.             Case 7 : Lcd Chr(0) ; " " ; Pojemnosc_aku ; " %"
  438.  
  439.           End Select
  440.  
  441.       End If
  442.  
  443. '---end if 1s
  444.     End If
  445.  
  446. '---end if 10ms
  447.   End If
  448.  
  449. '---obsluga UART
  450.   If Ischarwaiting() > 0 Then                               'jezeli w buforze czeka znak
  451.  
  452.     Znak = Inkey()
  453.  
  454.     Select Case Znak
  455.  
  456. '---jezeli odebrany znak to "R" (Reset) zresetuj UPS
  457.       Case "R"
  458.  
  459.         Disable Interrupts                                  'wylaczenie przerwan
  460.         Start Watchdog                                      'uruchomienie Watchdoga
  461.         Do                                                  'petla nieskonczona
  462.         Loop                                                'w niej czekamy na Reset
  463.  
  464. '---jezeli odebrany znak to "D" (Data) odeslij dane pomiarow
  465.       Case "D"
  466.  
  467.         Print V_wej ; " " ; V_aku ; " " ; V_wyj ; " " ; Amper ; " " ; Watt ; " " ; Temp ; " " ; Pojemnosc_aku ; " " ; Siec ; " " ; Aku_poziom
  468.  
  469.     End Select
  470.  
  471.   End If
  472.  
  473. Loop
  474. End
  475.  
  476.  
  477. '---przerwanie od TIMERA
  478. Timer0_isr:
  479.  
  480.   $asm
  481.   !PUSH R16
  482.   !PUSH R24
  483.   !PUSH R26
  484.   !PUSH R27
  485.   !in R24, sreg
  486.   !PUSH  R24
  487.   $end Asm
  488.  
  489.     10ms = 1
  490.  
  491. '---Tuned with NoSave Tool
  492.   $asm
  493.   !POP  R24
  494.   !out sreg, r24
  495.   !POP R27
  496.   !POP R26
  497.   !POP R24
  498.   !POP R16
  499.   $end Asm
  500.  
  501. Return
  502.  
  503. '---miganie ikonami
  504. Miganie:
  505.  
  506.   Mig = Not Mig
  507.  
  508.   Locate 2 , 16
  509.  
  510.     If Ladowarka = 1 Then
  511.  
  512. '---jezeli trwa ladowanie akumulatora mrugaj naprzemiennie ikonami kabelka i baterii
  513.       If Mig = 1 Then
  514.  
  515.         Lcd Chr(5)
  516.  
  517.       Else
  518.  
  519.         Lcd Chr(0)
  520.  
  521.       End If
  522.  
  523.     Else
  524.  
  525. '---jezeli jest zasilanie sieciowe pokaz ikone kabelka
  526.       If Siec = 0 Then
  527.  
  528.         Lcd Chr(5)
  529.  
  530. '---jezeli brak zasilania sieciowego pokaz ikone baterii
  531.       Else
  532.  
  533.         Lcd Chr(0)
  534.  
  535.       End If
  536.  
  537.     End If
  538.  
  539. Return
Nie rozumiem też tego:
  1. Poczatkowy Alias 0
  2. Czekaj_i_wlacz Alias 2
  3. Wlaczone Alias 4
  4. Czekaj_i_wylacz Alias 10
  5. Wylaczone Alias 15
  6. Rozladowane Alias 20
Dążę do tego aby moje urządzenie działało tak:
1. pierwszy start
a) jest napięcie sieciowe
- ładowarka włączona
- odczekaj jedna minutę i włącz wyjście
b) brak napięcia sieciowego
- ładowarka wyłączona
- wyjście jest wyłączone
2. normalne działanie gdy wszystko jest OK
- ładowanie akumulatora gdy jest taka potrzeba
- włączone wyjście
*system malinki działa więc USB=0
3. gdy wszystko już działa, a odłączę kabelek konwertera (USB=1) tzn. po zamknięciu systemu na malince, pojawi się stan wysoki na pinie AVR
- odczekaj jedną minutę i wyłącz wyjście
- wyłącz ładowarkę
4. pojawia się znów napięcie sieciowe
- odczekaj jedną minutę i włącz wyjście
- włącz ładowarkę

Z obsługą UART chodzi o to, że jak przyjdzie "D" to zasilacz ma odesłać wszystkie dane.
Jeżeli przyjdzie "R" to będzie reset AVR-tu chcę wykorzystać bootloader o którym pisałeś na swojej stronie

Tak przy okazji...
W jaki sposób (czy w ogóle tak się da) programować AVR poprzez AVRdude wykorzystując bootloader?
Bootloader działa bardzo dobrze gdy programuję poprzez program BASCOM-AVR, ale chciałbym pójść o krok dalej i ewentualne aktualizacje chciałbym wrzucać poprzez Linuksową konsolę (AVRdude)
AVRdude + USBasp działa w konsoli bez problemu, ale jak to zrobić aby działało AVRdude + konerter USB-UART
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar napięcia i prądu

Post autor: niveasoft » 02 gru 2017, 18:10

Te Aliasy są zamiast cyferek po to by się nie pomylić.
  1. Select Case Zmienna
  2.  Case 0
  3.    If Cośtam Zmienna = 8 'tu sie można pomylić zamiast np.2
  4.  Case 1
  5.  
  6.  Case Ladowanie
  7. End select
Piszę sobie Aliasy typu Ładowanie Alias 8 co oznacza że słowo Ładowanie tak naprawdę oznacza tu osiem.
Potem wystarczy napisać że Zmienna = Ładowanie i przy kolejnym Select Case procesor weźmie pod uwagę Case Ładowanie

Co do Bootloadera to tego bascomowego raczej nie użyjesz pod Avrdude. Radzę wtedy wgrać Bootloader z Arduino bo one są w Avrdude, ale wymagają kwarca 16MHz chyba że sobie przekompilujesz źródła.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 02 gru 2017, 18:48

niveasoft pisze:Co do Bootloadera to tego bascomowego raczej nie użyjesz pod Avrdude. Radzę wtedy wgrać Bootloader z Arduino bo one są w Avrdude, ale wymagają kwarca 16MHz chyba że sobie przekompilujesz źródła.
Jednym słowem... daje sobie spokój z duetem: AVRdude + bootloader

Gdybyś miał chwilę to zerknij w kod, może coś podpowiesz aby to "zagrało" :)
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar napięcia i prądu

Post autor: niveasoft » 02 gru 2017, 18:49

A jak się zachowywał mój poprzedni kod? To miało jakoś działać tylko wskazywałem co warto poprawić.
Czasu za dużo nie mam ;)
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 02 gru 2017, 18:54

Prawie było OK-poprawiłem, że już jest wszystko jak należy, ale utknąłem z działaniem zależności napięcia sieciowego i podłączonym/odłączonym urządzeniem USB...
ODPOWIEDZ