Pomiar napięcia i prądu

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Pomiar napięcia i prądu

Post autor: pimowo » 26 lis 2017, 18:49

Hej,
Potrzebuję pomocy w opanowaniu pomiaru: napięcia (3x) i prądu (rezystor 0.1om)

Ciągle wychodzą mi głupoty i nie wiem gdzie popełniam błąd. Chciałbym mierzyć napięcie 0-5.5V i prąd 0-2.5A
Na początek schemat (ze schematu wykroiłem co zbędne) i kod (tu tylko to co potrzeba do pomiarów) aby było wiadomo o czym gadam ;)
schemat.png
  1. $regfile = "m328pdef.dat"
  2. $crystal = 11059200
  3. $hwstack = 64
  4. $swstack = 64
  5. $framesize = 128
  6.  
  7. Const Korekta_1 = 0.001
  8. Const Korekta_2 = 0.0054
  9. Const Korekta_3 = 0.0054
  10. Const Korekta_4 = 0.0054
  11. Const Ilosc_probek = 100
  12.  
  13. Config Submode = New
  14.  
  15. 'konfiguracja timera
  16. Config Timer0 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  17. Enable Compare0a : On Compare0a Timer0_isr Nosave : Compare0a = 107       '10ms @11MHz
  18.  
  19. 'konfiguracja przetwornika ADC
  20. Config Adc = Single , Prescaler = Auto , Reference = Aref
  21. Start Adc
  22.  
  23. 'wyjscia
  24. Config Portd.2 = Output : Portd.2 = 1
  25. Config Portd.6 = Output : Portd.6 = 1
  26.  
  27. 'zmienne  programu
  28. Dim 10ms As Byte , 100ms As Byte
  29. Dim Pomiar_wejscia As Word , Odczyt As Single , Krok As Byte
  30. Dim A As String * 6 , B As String * 6
  31. Dim C As String * 6 , D As String * 6
  32.  
  33. 'konfiguracja i2c
  34. $lib "i2c_twi.lbx"
  35. Config Scl = Portc.5
  36. Config Sda = Portc.4
  37. Config Twi = 400000
  38. I2cinit
  39.  
  40. 'konfiguracja LCD
  41. $lib "bl_Lcd_i2c.lib"
  42.  
  43. Config Lcd = 16x2
  44.  
  45. Const Pcf_d4 = 4
  46. Const Pcf_d5 = 5
  47. Const Pcf_d6 = 6
  48. Const Pcf_d7 = 7
  49. Const Pcf_rs = 0
  50. Const Pcf_rw = 1
  51. Const Pcf_e1 = 2
  52.  
  53. Dim _lcd_e As Byte
  54. Dim Backlight As Byte
  55.  
  56. Backlight_on Alias &H08
  57. Backlight_off Alias &H00
  58. Backlight = Backlight_on
  59. _lcd_e = 128
  60.  
  61. Const Pcf8574_lcd = &H4E
  62.  
  63. Waitms 100 : Cls
  64. Locate 1 , 1 : Lcd "bla, bla, bla..."
  65. Wait 2 : Cls
  66.  
  67. Sub Pomiary(byval Channel As Byte)
  68.  
  69.   Local Pomiar As Word : Pomiar = 0
  70.     For Krok = 1 To Ilosc_probek
  71.       Pomiar = Pomiar + Getadc(channel)
  72.     Next
  73.   Pomiar_wejscia = Pomiar / Ilosc_probek
  74.  
  75.   Select Case Channel
  76.     'prad
  77.     Case 0
  78.       Odczyt = Pomiar_wejscia * Korekta_1
  79.       A = Fusing(odczyt , "#.###")
  80.     'napiecie
  81.     Case 1
  82.       Odczyt = Pomiar_wejscia * Korekta_2
  83.       B = Fusing(odczyt , "#.###")
  84.     'napiecie
  85.     Case 2
  86.       Odczyt = Pomiar_wejscia * Korekta_3
  87.       C = Fusing(odczyt , "#.###")
  88.     'napiecie
  89.     Case 3
  90.       Odczyt = Pomiar_wejscia * Korekta_4
  91.       D = Fusing(odczyt , "#.###")
  92.   End Select
  93.  
  94. End Sub
  95.  
  96. 'wlaczenie globalnych przerwan
  97. Enable Interrupts
  98.  
  99.  
  100. Do
  101.  
  102.   If 10ms = 1 Then
  103.     10ms = 0
  104.  
  105.     Incr 100ms
  106.  
  107.   End If
  108.  
  109.   If 100ms = 10 Then
  110.     100ms = 0
  111.  
  112. 'zrob pomiary
  113.     Call Pomiary(0)
  114.     Call Pomiary(1)
  115.     Call Pomiary(2)
  116.     Call Pomiary(3)
  117.  
  118. 'wyswietl pomiary na LCD
  119.     Locate 1 , 1 : Lcd "A:" ; A
  120.     Locate 1 , 10 : Lcd "B:" ; B
  121.     Locate 2 , 1 : Lcd "C:" ; C
  122.     Locate 2 , 10 : Lcd "D:" ; D
  123.  
  124.   End If
  125.  
  126. Loop
  127. End
  128.  
  129.  
  130. 'przerwanie od TIMERA
  131. Timer0_isr:
  132.  
  133.   $asm
  134.   !PUSH R16
  135.   !PUSH R24
  136.   !PUSH R26
  137.   !PUSH R27
  138.   !in R24, sreg
  139.   !PUSH  R24
  140.   $end Asm
  141.  
  142.     10ms = 1
  143.  
  144.   $asm
  145.   !POP  R24
  146.   !out sreg, r24
  147.   !POP R27
  148.   !POP R26
  149.   !POP R24
  150.   !POP R16
  151.   $end Asm
  152.  
  153. Return
Mój dzielnik rezystorowy składa się z potencjometru 10k i rezystora 1k. Założyłem, że początkowe ustawienie potencjometru jest "środek" więc mam dzielnik jak na obrazku:
dzielnik.png
No i teraz moje obliczenia:
- do obliczeń biorę 1V
- napięcie odniesienia to 2.5V (MCP1525)
- dzielnik 1:2.2
- mierzone 1V da mi 0.45V na pin ADC
0.45V / 2.5V = 0,18 * 1024 = 184,32
- teraz w programie chcę z tego zrobić 1V, więc
1V / 184,32 = 0,005425347

Wartość 0,0054 wpisuję jako "korekta" w kodzie, ale niestety nie chce to działać jak należy. Jeżeli "korektę" ustawię na oko i widzę poprawną wartość na LCD, później zmieni się mierzone napięcie to już na LCD nie ma poprawnej wartości tylko zaniżona/zawyżona wartość.
To tyle odnośnie pomiaru napięcia, a został mi jeszcze pomiar prądu :(

Proszę o pomoc bo nic z tego wszystkiego nie rozumiem.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar napięcia i prądu

Post autor: niveasoft » 27 lis 2017, 10:20

Na tym obrazku z kalkulatora masz w górnym lewym rogu gotowe liczby do podstawienia ;)
Jak 0,002441 pomnożysz jeszcze razy 2,2 to wyjdzie 0,0053702

Teraz dla pełnej skali ADC 1024 x 0,0053702 = 5,49V
Dla połowy skali ADC 512 x 0,0053702 = 2,74v

Może obliczenia są dobre tylko masz niedokładne te rezystory?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 27 lis 2017, 10:32

niveasoft pisze: ↑
27 lis 2017, 10:20
Na tym obrazku z kalkulatora masz w górnym lewym rogu gotowe liczby do podstawienia ;)
Ale jajka... tyle razy używałem tego programu, a jakoś nigdy tego niedojrzałem he he

Sam już nie wiem o co chodzi. Wszystkie rezystory mam 1%
Teraz wyrzuciłem rezystory (został sam potencjometr 10k) ustawiłem wew. źródło napięcia (1.1V) korektę ustawiłem na oko 0.015 i wygląda jakby chciało być OK

@niveasoft, czyli mój program jest OK? Pytam ponieważ nie wiem na czym się skupić: program czy soft.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar napięcia i prądu

Post autor: niveasoft » 27 lis 2017, 15:42

"program i soft" to dla mnie to samo :P Myślałeś o pytaniu 'software / hardware ?

W tym programie widzę pewne niebezpieczeństwo.Odczyt z ADC może za każdym razem osiągnąć 1023. Word potrafi pomieścić 64 takie pomiary bo mieści do 65535.
To jest ewidentny błąd. Zmienna się przepełni ;)
  1. Const Ilosc_probek = 100 ' <<< Błąd dla Word
  2. 'pomiar dla stu odczytów powinien mieć typ Dword
  3.  Local Pomiar As Word : Pomiar = 0
  4.     For Krok = 1 To Ilosc_probek
  5.       Pomiar = Pomiar + Getadc(channel)
  6.     Next
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 27 lis 2017, 17:39

niveasoft pisze:"program i soft" to dla mnie to samo :P Myślałeś o pytaniu 'software / hardware ?
Tak, miałem na myśli software i hardware :D

To teraz pytanie... pytanie z tych trochę głupich...
Czy mogę zrobić tak:
- w kodzie ustawiam

Kod: Zaznacz cały

Const Korekta_1 = 0.01
Const Korekta_2 = 0.01
Const Korekta_3 = 0.01
Const Korekta_4 = 0.01
- odczyt wyreguluje potencjometrem

Pytam czy to ma sens ponieważ gdy tak zrobię to wszystko jest OK
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar napięcia i prądu

Post autor: niveasoft » 27 lis 2017, 17:46

Nie rozumiem tego pytania bo jakoś słabo ma się do poprzednich wartości.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 27 lis 2017, 18:03

Aj bo już sam siebie zakręciłem...
Dodałem rezystor 10k czyli w tej chwili mój dzielnik napięcia do pomiaru składa się z potencjometru (wieloobrotowy) 10k i rezystora (1%) 10k
Zrzut ekranu z 2017-11-27 18-00-28.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 28 lis 2017, 18:07

Musze jeszcze poprosić o pomoc bo nie ogarniam tego :(
Chciałbym aby mój moduł kontrolował sterowanie ładowarką akumulatora (włącz/wyłącz) i sterował urządzeniem do niego podłączonym (włącz/wyłącz) oraz sprawdzał status podłączonego urządzenia (stan niski/wysoki) Na podstawie tych wartości sterował całą resztą.

To teraz tak, zasada działania...

Uruchamiam swój moduł, napięcie C jest wyższe niż 1V to odczekaj minutę i włącz "wyjscie"
Gdy podczas normalnej pracy pojawi się stan niski "malina" to odczekaj minutę i wyłącz "wyjscie"

(mierzone napięcie "B")
- gdy napięcie akumulatora 4V lub wyższe to wyłącz "ladowarka"
- gdy napięcie spadnie poniżej 3.8V to włącz "ladowarka"
- gdy napięcie spadnie poniżej 3.2V to wyłącz "ladowarka", wyłącz "wyjscie"
  1. $regfile = "m328pdef.dat"
  2. $crystal = 11059200
  3. $hwstack = 64
  4. $swstack = 64
  5. $framesize = 128
  6.  
  7. Const Korekta_prad = 0.001
  8. Const Korekta_napiecie = 0.01
  9. Const Ilosc_probek = 64
  10.  
  11. Const Naladowany = 4.0
  12. Const Ladowanie = 3.8
  13. Const Rozladowany = 3.2
  14.  
  15. Config Submode = New
  16.  
  17. 'konfiguracja timera
  18. Config Timer0 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  19. Enable Compare0a : On Compare0a Timer0_isr Nosave : Compare0a = 107       '10ms @11MHz
  20.  
  21. 'konfiguracja przetwornika ADC
  22. Config Adc = Single , Prescaler = Auto , Reference = Aref
  23. Start Adc
  24.  
  25. 'wyjscia
  26. Config Portd.2 = Output : Portd.2 = 1 : Ladowarka Alias Portd.2
  27. Config Portd.6 = Output : Portd.6 = 1 : Wyjscie Alias Portd.6
  28.  
  29. 'wejscia
  30. Config Pinb.2 = Input : Portb.2 = 1 : Malina Alias Pinb.2
  31.  
  32. 'zmienne  programu
  33. Dim 10ms As Byte , 100ms As Byte , 1s As Byte , 1m As Byte
  34. Dim Pomiar_wejscia As Word , Odczyt As Single , Krok As Byte
  35. Dim A As String * 6 , B As String * 6
  36. Dim C As String * 6 , D As String * 6
  37. Dim Akumulator As Single
  38. Dim Odczekaj As Byte
  39.  
  40. 'konfiguracja i2c
  41. $lib "i2c_twi.lbx"
  42. Config Scl = Portc.5
  43. Config Sda = Portc.4
  44. Config Twi = 400000
  45. I2cinit
  46.  
  47. 'konfiguracja LCD
  48. $lib "bl_Lcd_i2c.lib"
  49.  
  50. Config Lcd = 16x2
  51.  
  52. Const Pcf_d4 = 4
  53. Const Pcf_d5 = 5
  54. Const Pcf_d6 = 6
  55. Const Pcf_d7 = 7
  56. Const Pcf_rs = 0
  57. Const Pcf_rw = 1
  58. Const Pcf_e1 = 2
  59.  
  60. Dim _lcd_e As Byte
  61. Dim Backlight As Byte
  62.  
  63. Backlight_on Alias &H08
  64. Backlight_off Alias &H00
  65. Backlight = Backlight_on
  66. _lcd_e = 128
  67.  
  68. Const Pcf8574_lcd = &H4E
  69.  
  70. Waitms 100 : Cls
  71. Locate 1 , 1 : Lcd "bla, bla, bla..."
  72. Wait 2 :
  73. Cls
  74.  
  75. Sub Pomiary(byval Channel As Byte)
  76.  
  77.   Local Pomiar As Word : Pomiar = 0
  78.     For Krok = 1 To Ilosc_probek
  79.       Pomiar = Pomiar + Getadc(channel)
  80.     Next
  81.   Pomiar_wejscia = Pomiar / Ilosc_probek
  82.  
  83.   Select Case Channel
  84.     'prad
  85.     Case 0
  86.       Odczyt = Pomiar_wejscia * Korekta_prad
  87.       A = Fusing(odczyt , "#.###")
  88.     'napiecie
  89.     Case 1
  90.       Odczyt = Pomiar_wejscia * Korekta_napiecie
  91.       Akumulator = Odczyt
  92.       B = Fusing(odczyt , "#.###")
  93.     'napiecie
  94.     Case 2
  95.       Odczyt = Pomiar_wejscia * Korekta_napiecie
  96.       C = Fusing(odczyt , "#.###")
  97.     'napiecie
  98.     Case 3
  99.       Odczyt = Pomiar_wejscia * Korekta_napiecie
  100.       D = Fusing(odczyt , "#.###")
  101.   End Select
  102.  
  103. End Sub
  104.  
  105. 'wlaczenie globalnych przerwan
  106. Enable Interrupts
  107.  
  108.  
  109. Do
  110.  
  111.   If 10ms = 1 Then
  112.     10ms = 0
  113.  
  114.     Incr 100ms
  115.  
  116.     Gosub Sprawdz_wejscie
  117.  
  118.   End If
  119.  
  120.   If 100ms = 10 Then
  121.     100ms = 0
  122.  
  123.     Incr 1s
  124.  
  125. 'zrob pomiary
  126.     Call Pomiary(0)
  127.     Call Pomiary(1)
  128.     Call Pomiary(2)
  129.     Call Pomiary(3)
  130.  
  131. 'wyswietl pomiary na LCD
  132.     Locate 1 , 1 : Lcd "A:" ; A
  133.     Locate 1 , 10 : Lcd "B:" ; B
  134.     Locate 2 , 1 : Lcd "C:" ; C
  135.     Locate 2 , 10 : Lcd "D:" ; D
  136.  
  137.   End If
  138.  
  139.   If 1s = 10 Then
  140.     1s = 0
  141.  
  142.     Incr 1m
  143.  
  144.   End If
  145.  
  146. 'opoznienie
  147.   If 1m = 60 Then
  148.  
  149.     If Odczekaj > 0 Then
  150.  
  151.       Decr Odczekaj
  152.  
  153.       If Odczekaj = 0 Then Wyjscie = 1
  154.  
  155.     End If
  156.  
  157.   End If
  158.  
  159. 'akumulator
  160.   If Akumulator > Naladowany Then Ladowarka = 0
  161.  
  162.   If Akumulator < Ladowanie Then Ladowarka = 1
  163.  
  164.   If Akumulator < Rozladowany Then
  165.     Ladowarka = 0
  166.     Wyjscie = 0
  167.   End If
  168.  
  169. Loop
  170. End
  171.  
  172. 'status malinki
  173. Sprawdz_wejscie:
  174.  
  175.   If Malina = 0 Then Odczekaj = 60
  176.  
  177. Return
  178.  
  179. 'przerwanie od TIMERA
  180. Timer0_isr:
  181.  
  182.   $asm
  183.   !PUSH R16
  184.   !PUSH R24
  185.   !PUSH R26
  186.   !PUSH R27
  187.   !in R24, sreg
  188.   !PUSH  R24
  189.   $end Asm
  190.  
  191.     10ms = 1
  192.  
  193.   $asm
  194.   !POP  R24
  195.   !out sreg, r24
  196.   !POP R27
  197.   !POP R26
  198.   !POP R24
  199.   !POP R16
  200.   $end Asm
  201.  
  202. Return
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, 19:14

Jak to z Tobą zwykle, nie napisałeś wielu rzeczy o które bym musiał zapytać.
Na przykład czy ma dalej monitorować ładowanie kiedy Malina każe się urządzeniu wyłączyć...

Napisałem to w kilkanaście minut i gdzieś błąd logiczny mógł się wkraść, ale po to są Aliasy by było wiadomo co chcę osiągnąć.
Teraz jak malina to wyłączy to dalej ładuje ->pewnie musisz to zmienić czyli sprawdzać napięcie w Case "Wyłączone"
  1. $regfile = "m328pdef.dat"
  2. $crystal = 11059200
  3. $hwstack = 64
  4. $swstack = 64
  5. $framesize = 128
  6.  
  7. Const Korekta_prad = 0.001
  8. Const Korekta_napiecie = 0.01
  9. Const Ilosc_probek = 64
  10.  
  11. Const Naladowany = 4.0
  12. Const Ladowanie = 3.8
  13. Const Rozladowany = 3.2
  14.  
  15. Config Submode = New
  16.  
  17. 'konfiguracja timera
  18. Config Timer0 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  19.  Compare0a = 107                                            '10ms @11MHz
  20.  
  21. 'konfiguracja przetwornika ADC
  22. Config Adc = Single , Prescaler = Auto , Reference = Aref
  23.  
  24. 'wyjscia
  25. Config Portd.2 = Output : Portd.2 = 1 : Ladowarka Alias Portd.2
  26. Config Portd.6 = Output : Portd.6 = 1 : Wyjscie Alias Portd.6
  27.  
  28. 'wejscia
  29. Config Pinb.2 = Input : Portb.2 = 1 : Malina Alias Pinb.2
  30.  
  31. 'zmienne  programu
  32. Dim Miliseconds As Byte , Seconds As Byte , 1m As Byte
  33. Dim Pomiar_wejscia As Word , Odczyt As Single , Krok As Byte
  34. Dim A As String * 6 , B As String * 6
  35. Dim C As String * 6 , D As String * 6 , Cs As Single
  36. Dim Akumulator As Single
  37. Dim Odczekaj As Byte , Stan_urzadzenia As Byte
  38.  
  39. 'konfiguracja i2c
  40. $lib "i2c_twi.lbx"
  41. Config Scl = Portc.5
  42. Config Sda = Portc.4
  43. Config Twi = 400000
  44. I2cinit
  45.  
  46. 'konfiguracja LCD
  47. $lib "bl_Lcd_i2c.lib"
  48.  
  49. Config Lcd = 16x2
  50.  
  51. Const Pcf_d4 = 4
  52. Const Pcf_d5 = 5
  53. Const Pcf_d6 = 6
  54. Const Pcf_d7 = 7
  55. Const Pcf_rs = 0
  56. Const Pcf_rw = 1
  57. Const Pcf_e1 = 2
  58.  
  59. Dim _lcd_e As Byte
  60. Dim Backlight As Byte
  61.  
  62. Backlight_on Alias &H08
  63. Backlight_off Alias &H00
  64. Backlight = Backlight_on
  65. _lcd_e = 128
  66.  
  67. Const Pcf8574_lcd = &H4E
  68.  
  69. Waitms 100 : Cls
  70. Locate 1 , 1 : Lcd "bla, bla, bla..."
  71. Wait 2 :
  72. Cls
  73.  
  74. Sub Pomiary(byval Channel As Byte)
  75.  
  76.   Local Pomiar As Word : Pomiar = 0
  77.     For Krok = 1 To Ilosc_probek
  78.       Pomiar = Pomiar + Getadc(channel)
  79.     Next
  80.   Pomiar_wejscia = Pomiar / Ilosc_probek
  81.  
  82.   Select Case Channel
  83.     'prad
  84.     Case 0
  85.       Odczyt = Pomiar_wejscia * Korekta_prad
  86.       A = Fusing(odczyt , "#.###")
  87.     'napiecie
  88.     Case 1
  89.       Odczyt = Pomiar_wejscia * Korekta_napiecie
  90.       Akumulator = Odczyt
  91.       B = Fusing(odczyt , "#.###")
  92.     'napiecie
  93.     Case 2
  94.       Cs = Pomiar_wejscia * Korekta_napiecie
  95.       C = Fusing(cs , "#.###")
  96.  
  97.     'napiecie
  98.     Case 3
  99.       Odczyt = Pomiar_wejscia * Korekta_napiecie
  100.       D = Fusing(odczyt , "#.###")
  101.   End Select
  102.  
  103. End Sub
  104.  
  105.  
  106. Poczatkowy Alias 0
  107. Czekaj_i_wlacz Alias 2
  108. Wlaczone Alias 4
  109. Czekaj_i_wylacz Alias 10
  110. Wylaczone Alias 15
  111. Rozladowane Alias 20
  112.  
  113. Do
  114.  
  115.   If Tifr0.ocf0a = 1 Then
  116.    Tifr0.ocf0a = 1
  117.  
  118.    If Malina = 0 Then
  119.     Odczekaj = 120                                          '120 x 0,5s = 60s = 1m
  120.      Stan_urzadzenia = Czekaj_i_wylacz
  121.    End If
  122.  
  123.    If Miliseconds < 49 Then                                 'x10ms = 500ms
  124.     Incr Miliseconds
  125.    Else
  126.     Miliseconds = 0
  127.  
  128.     If Seconds > 0 Then
  129.      Decr Seconds
  130.       If Seconds = 0 Then
  131.        '1min odliczone
  132.  
  133.        Select Case Stan_urzadzenia
  134.  
  135.         Case Czekaj_i_wlacz
  136.          Wyjscie = 0
  137.           Stan_urzadzenia = Wlaczone
  138.  
  139.         Case Czekaj_i_wylacz
  140.          Wyjscie = 1
  141.           Stan_urzadzenia = Wylaczone
  142.  
  143.        End Select
  144.  
  145.        'end if 1min
  146.       End If
  147.     End If
  148.  
  149.     'zrob pomiary
  150.     Call Pomiary(0)
  151.     Call Pomiary(1)
  152.     Call Pomiary(2)
  153.     Call Pomiary(3)
  154.  
  155.  
  156.     Select Case Stan_urzadzenia
  157.  
  158.      Case Poczatkowy
  159.  
  160.       If Cs > 1 Then
  161.        Odczekaj = 120                                       '120 x 0,5s = 60s = 1m
  162.         Stan_urzadzenia = Czekaj_i_wlacz
  163.       End If
  164.  
  165.      Case Wlaczone
  166.  
  167.        Select Case Akumulator
  168.  
  169.         Case Is < Rozladowany
  170.           Wyjscie = 1
  171.            Ladowarka = 0
  172.             Stan_urzadzenia = Rozladowane
  173.  
  174.         Case Ladowanie
  175.             Ladowarka = 1
  176.  
  177.         Case Naladowany
  178.             Ladowarka = 0
  179.  
  180.        End Select
  181.  
  182.     End Select
  183.  
  184.     'wyswietl pomiary na LCD
  185.     Locate 1 , 1 : Lcd "A:" ; A
  186.     Locate 1 , 10 : Lcd "B:" ; B
  187.     Locate 2 , 1 : Lcd "C:" ; C
  188.     Locate 2 , 10 : Lcd "D:" ; D
  189.  
  190.  
  191.     'end if 500ms
  192.    End If
  193.  
  194.    'end if 10ms
  195.   End If
  196.  
  197.  
  198. Loop
  199. End
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar napięcia i prądu

Post autor: pimowo » 28 lis 2017, 19:33

niveasoft pisze:Jak to z Tobą zwykle, nie napisałeś wielu rzeczy o które bym musiał zapytać.
Wszystko przez to, że chciałem dopytać o jedno, później dochodzą następne pytania i tak wychodzi niekończąca się opowieść...
Powinienem od samego początku napisać o co mi chodzi i byłoby łatwiej :)

Buduję sobie UPSa dla Raspberry Pi, ale jak to u mnie zazwyczaj bywa to nawet prosta rzecz, urządzenie nie może być takie całkiem normalne :D

Dziękuję za kod, zobaczymy co z tego wyjdzie...
ODPOWIEDZ