INA226 czy ktoś z Was ma działający kod w Bascom avr?

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: Michał6201 » 29 maja 2026, 21:40

Cieszę się bardzo :)
Ciekaw jestem w jaki sposób można usunąć wskazanie dużego poboru prądu pomimo odłączonego odbiornika, gdzie jednocześnie pomiar napięcia multimetrem na boczniku wskazuje 0,000mOhm.
Moim zdaniem problem lezy po stronie sprzętowej tego scalaka.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: niveasoft » 08 cze 2026, 21:35

Zaczynam zawsze od niskopoziomowych funkcji. Tu ważne jest żeby on mi czytał i zapisywał w prawidłowej kolejności bo jak masz zamienione bajty to nigdy do ładu z tym nie dojdziesz.
Tak więc mam odczyt parametrów POR (Power-on Reset state) i jak widac zgadza mi sie to z notą.
Ta funkcja która zapisuje rejestry konfiguracyjne tez działa bo ją sprawdzałem. Zapisałem sobie na przykład "&B0000_1111_1111_0000" do jakiegos rejestru i to mi sie też zgadza.

Teraz mozna sie bawić dalej...
  1. $regfile = "m328pdef.dat"
  2. $crystal = 16000000
  3. $hwstack = 64
  4. $swstack = 32
  5. $framesize=128
  6. $baud = 38400
  7.  
  8. Debug On
  9. Config Submode = New
  10.  
  11.  
  12. $lib "i2c_twi.lbx"
  13. Config Scl = Portcc.5
  14. Config Sda = Portc.4
  15. Config Twi = 100000
  16. I2cinit
  17.  
  18. Dim Helpb As Byte , Testaddr As Byte , Slave As Byte
  19. Dim Regword As Word
  20. Dim Regbuff(2) As Byte At Regword Overlay
  21.  
  22.  
  23. Sub Read_reg(byval Addr As Byte)
  24.  Regbuff(1) = Addr
  25.   I2creceive Slave , Regbuff(1) , 1 , 2
  26.   Swap Regword
  27.   Debug "Reg &H" ; Hex(addr) ; " is " ; Bin(regword)
  28. End Sub
  29.  
  30. Sub Write_reg(byval Addr As Byte)
  31.  Debug "Writing value " ; Bin(regword) ; " at addr &H" ; Hex(addr)
  32.   I2cstart
  33.   I2cwbyte Slave
  34.   I2cwbyte Addr
  35.   I2cwbyte Regbuff(2)
  36.   I2cwbyte Regbuff(1)
  37.   I2cstop
  38.    Waitms 100
  39. End Sub
  40.  
  41.  
  42. Debug "{013}{010}Debug started"
  43.  
  44. For Testaddr = 0 To 254 Step 2
  45.  I2cstart
  46.  I2cwbyte Testaddr
  47.  If Err = 0 And Testaddr <> 0 Then
  48.   I2cstop
  49.    Slave = Testaddr
  50.    Debug "Slave found at &H" ; Hex(slave)
  51.     Exit For
  52.  End If
  53.  I2cstop
  54. Next
  55.  
  56. If Slave = 0 Then
  57.  Debug "End scan but no device found"
  58.  Do : Loop
  59. End If
  60.  
  61. 'read POR values
  62. Read_reg &H0
  63. Read_reg &H5
  64. Read_reg &HFE
  65. Read_reg &HFF
  66. Debug ""                                                    'space
  67.  
  68. End
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: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: niveasoft » 08 cze 2026, 23:43

Łap. Działa.
Oryginalnie był tam rezystor 0.1R Przypominam, że to jest opisane iż z takim rezystorem mozesz mierzyć do 0.8A
Znalazłem w szufladzie taki ceramiczny 0.1R i go dolutowałem więc teraz mam 0.05R

Nie ma sensu się bawić i wyliczać ten rejestr konfiguracyjny bo na końcu wszyscy i tak go dopieszczają czy faktycznie kalibrują.
Dodałem więc możliwość kalibracji bezpośrednio z terminala komputera. Wpisujesz sobie "CALIB=2050" + CRLF i patrzysz co tam wypluje.
Może uda mi się załączyć filmik. Chodzi o to że mój program pokazuje zarówno przeliczony amperaż jak i odczytany rejestr.
Na filmie widać że mierzy elegancko, ale.... do 1,6A i to chyba nie dziwi bo rezystor jest po prostu o połowę mniejszy.
Widać jak wszystkie bity rejestru są już ustawione na 1 więc nie ma cudów żeby z tym rezystorem pokazał więcej.

Zamontujesz sobie jaki będziesz chciał i skalibrujesz a potem to przeniesiesz do swojego programu i gotowe.
  1. $regfile = "m328pdef.dat"
  2. $crystal = 16000000
  3. $hwstack = 64
  4. $swstack = 32
  5. $framesize=128
  6. $baud = 38400
  7.  
  8. Debug On
  9. Config Submode = New
  10. Const _valcheck = 1
  11.  
  12. Const Bus_voltage_reg = &H02                                'read only
  13. Const Current_reg = &H04                                    'read only
  14.  
  15.  
  16. Config Serialin = Buffered , Size = 20
  17.  
  18. Dim Command As String * 20 , Znak As Byte
  19. Dim Command_timeout As Byte , Got_str As Byte
  20.  
  21.  
  22. Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1
  23. Compare2a = 155                                             '10ms @16MHz/1024
  24.  
  25.  
  26. $lib "i2c_twi.lbx"
  27. Config Scl = Portc.5
  28. Config Sda = Portc.4
  29. Config Twi = 100000
  30. I2cinit
  31.  
  32. Dim Helpstr As String * 20 , Helpw As Word
  33. Dim Helpb As Byte , Testaddr As Byte , Slave As Byte
  34. Dim Regword As Word
  35. Dim Regbuff(2) As Byte At Regword Overlay
  36. Dim Miliseconds As Word
  37. Dim Mysingle As Single
  38.  
  39.  
  40. Sub Read_reg(byval Addr As Byte)
  41.  Regbuff(1) = Addr
  42.   I2creceive Slave , Regbuff(1) , 1 , 2
  43.   Swap Regword
  44.   Debug "Reg &H" ; Hex(addr) ; " is " ; Bin(regword)
  45. End Sub
  46.  
  47. Sub Write_reg(byval Addr As Byte)
  48.  Debug "Writing value " ; Bin(regword) ; " at addr &H" ; Hex(addr)
  49.   I2cstart
  50.   I2cwbyte Slave
  51.   I2cwbyte Addr
  52.   I2cwbyte Regbuff(2)
  53.   I2cwbyte Regbuff(1)
  54.   I2cstop
  55.    Waitms 100
  56. End Sub
  57.  
  58.  
  59. Debug "{013}{010}Debug started"
  60.  
  61. For Testaddr = 0 To 254 Step 2
  62.  I2cstart
  63.  I2cwbyte Testaddr
  64.  If Err = 0 And Testaddr <> 0 Then
  65.   I2cstop
  66.    Slave = Testaddr
  67.    Debug "Slave found at &H" ; Hex(slave)
  68.     Exit For
  69.  End If
  70.  I2cstop
  71. Next
  72.  
  73. If Slave = 0 Then
  74.  Debug "End scan but no device found"
  75.  Do : Loop
  76. End If
  77.  
  78. 'read POR values
  79. Read_reg &H00
  80. Read_reg &H05
  81. Read_reg &HFE
  82. Read_reg &HFF
  83. Debug ""                                                    'space
  84.  
  85.  
  86. Enable Interrupts
  87.  
  88. Do
  89.  
  90.  If Tifr2.ocf2a = 1 Then                                    '10ms
  91.       Tifr2.ocf2a = 1
  92.  
  93.  
  94.      If Ischarwaiting() > 0 Then                         'jeśli w buforze czeka znak
  95.  
  96.       Znak = Inkey()
  97.  
  98.        Select Case Znak
  99.         Case 10                                          'zignoruj
  100.         Case 13 : Got_str = 1                            'nadszedł Enter więc sprawdź komendę
  101.         Case Else
  102.          Command = Command + Chr(znak)                   'jeśli to nie ENTER ani LF to dodaj do stringa
  103.        End Select
  104.  
  105.        If Len(command) > 19 Then Got_str = 1                'zabezpieczenie by nie przepełnić zmiennej
  106.  
  107.        If Got_str = 1 Then
  108.  
  109.          Helpb = Instr(command , "CALIB=")
  110.          If Helpb > 0 Then
  111.            Helpb = Helpb + 6
  112.            Helpstr = Mid(command , Helpb)
  113.            Helpw = Val(helpstr)
  114.            If Err = 0 Then
  115.             Debug "New calib value " ; Helpw
  116.             Regword = Helpw
  117.             Write_reg 5
  118.            End If
  119.          End If
  120.  
  121.           Command = ""
  122.          Got_str = 0
  123.        Else
  124.         Command_timeout = 30
  125.        End If
  126.  
  127.      End If
  128.  
  129.      If Command_timeout > 0 Then
  130.       Decr Command_timeout
  131.        If Command_timeout = 0 Then Command = ""
  132.      End If
  133.  
  134.  
  135.  
  136.      If Miliseconds < 99 Then
  137.       Incr Miliseconds
  138.      Else
  139.       Miliseconds = 0
  140.  
  141.        Read_reg Current_reg
  142.        Mysingle = Regword * 0.00005
  143.  
  144.        Debug Fusing(mysingle , "#.##") ; " A"
  145.  
  146.      End If
  147.  End If
  148.  
  149.  
  150. Loop
  151. End

Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: Michał6201 » 09 cze 2026, 0:13

Bardzo Ci dziękuję, jutro od razu zabieram się za testowanie tego kodu.
I jak nie masz podłączonego żadnego obciążenia, to pokazuje prąd 0,0A?
Bo na tym moim programie poprawnie mierzył pobór prądu, ale pokazywał głupoty jak odłączyłem obciążenie.
U siebie dałem rezystor 0,01R (10mOhm) ale to nie problem.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: niveasoft » 09 cze 2026, 0:25

No coś tam chyba na początku pokazywał ale to musi wynikać z tego że to jest pomiar różnicowy. Wystarczy chyba albo podać jakieś napięcie z góry jak w nocie albo masę z dołu i to sie potrafiło uspokoić i pokazywało 0.0A

10mR to chyba do 8A pociągnie :D

Nie dotykałem tego rejestru konfiguracyjnego bo tam w nocie doczytałem że on jest doś tak ustawiony podstawowo. Tea czasy wszystko tak samo. jedyne co było w Twoim kodzie to uśrednianie x16 a domyślnie jest x1 czyli wyłączone.
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: Michał6201 » 09 cze 2026, 20:52

Niestety nie działa kod.
Na wyświetlaczu pokazuje 3,27A zarówno z obciążeniem jak i bez. I nie odświeża się ten błędny wynik.
  1.  
  2.   $regfile = "m644pdef.dat"
  3.       $crystal = 11059200
  4.       $hwstack = 64
  5.       $swstack = 32
  6.       $framesize=128
  7.       $baud = 38400
  8.  
  9.  ' KONFIGURACJA WYŚWIETLACZA LCD 2 X 16
  10.   Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
  11.   Config Lcd = 16x2
  12.   Cursor Off
  13.   CLS
  14.  
  15.  
  16.  
  17.    Debug On
  18. Config Submode = New
  19. Const _valcheck = 1
  20.  
  21. Const Bus_voltage_reg = &H02                                'read only
  22. Const Current_reg = &H04                                    'read only
  23.  
  24.  
  25. Config Serialin = Buffered , Size = 20
  26.  
  27. Dim Command As String * 20 , Znak As Byte
  28. Dim Command_timeout As Byte , Got_str As Byte
  29.  
  30.  
  31. Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1
  32. Compare2a = 155                                             '10ms @16MHz/1024
  33.  
  34.  
  35.     $lib "i2c_twi.lbx" ' Konfiguracja I2C
  36.     Config Scl = Portc.0
  37.     Config Sda = Portc.1
  38.     I2cinit
  39.     Config Twi = 100000
  40.  
  41. Dim Helpstr As String * 20 , Helpw As Word
  42. Dim Helpb As Byte , Testaddr As Byte , Slave As Byte
  43. Dim Regword As Word
  44. Dim Regbuff(2) As Byte At Regword Overlay
  45. Dim Miliseconds As Word
  46. Dim Mysingle As Single
  47.  
  48.  
  49. Sub Read_reg(byval Addr As Byte)
  50.  Regbuff(1) = Addr
  51.   I2creceive Slave , Regbuff(1) , 1 , 2
  52.   Swap Regword
  53.   Debug "Reg &H" ; Hex(addr) ; " is " ; Bin(regword)
  54. End Sub
  55.  
  56. Sub Write_reg(byval Addr As Byte)
  57.  Debug "Writing value " ; Bin(regword) ; " at addr &H" ; Hex(addr)
  58.   I2cstart
  59.   I2cwbyte Slave
  60.   I2cwbyte Addr
  61.   I2cwbyte Regbuff(2)
  62.   I2cwbyte Regbuff(1)
  63.   I2cstop
  64.    Waitms 100
  65. End Sub
  66.  
  67.  
  68. Debug "{013}{010}Debug started"
  69.  
  70. For Testaddr = 0 To 254 Step 2
  71.  I2cstart
  72.  I2cwbyte Testaddr
  73.  If Err = 0 And Testaddr <> 0 Then
  74.   I2cstop
  75.    Slave = Testaddr
  76.    Debug "Slave found at &H" ; Hex(slave)
  77.     Exit For
  78.  End If
  79.  I2cstop
  80. Next
  81.  
  82. If Slave = 0 Then
  83.  Debug "End scan but no device found"
  84.  Do : Loop
  85. End If
  86.  
  87. 'read POR values
  88. Read_reg &H00
  89. Read_reg &H05
  90. Read_reg &HFE
  91. Read_reg &HFF
  92. Debug ""                                                    'space
  93.  
  94.  
  95. Enable Interrupts
  96.  
  97.      Dim Voltage As String * 10
  98.   '   Dim Current As String * 10
  99.  
  100.   Do
  101.  
  102.   If Tifr2.ocf2a = 1 Then                                    '10ms
  103.       Tifr2.ocf2a = 1
  104.  
  105.  
  106.      If Ischarwaiting() > 0 Then                         'jeśli w buforze czeka znak
  107.  
  108.       Znak = Inkey()
  109.  
  110.        Select Case Znak
  111.         Case 10                                          'zignoruj
  112.         Case 13 : Got_str = 1                            'nadszedł Enter więc sprawdź komendę
  113.         Case Else
  114.          Command = Command + Chr(znak)                   'jeśli to nie ENTER ani LF to dodaj do stringa
  115.        End Select
  116.  
  117.        If Len(command) > 19 Then Got_str = 1                'zabezpieczenie by nie przepełnić zmiennej
  118.  
  119.        If Got_str = 1 Then
  120.  
  121.          Helpb = Instr(command , "CALIB=")
  122.          If Helpb > 0 Then
  123.            Helpb = Helpb + 6
  124.            Helpstr = Mid(command , Helpb)
  125.            Helpw = Val(helpstr)
  126.            If Err = 0 Then
  127.             Debug "New calib value " ; Helpw
  128.             Regword = Helpw
  129.             Write_reg 5
  130.            End If
  131.          End If
  132.  
  133.           Command = ""
  134.          Got_str = 0
  135.        Else
  136.         Command_timeout = 30
  137.        End If
  138.  
  139.      End If
  140.  
  141.      If Command_timeout > 0 Then
  142.       Decr Command_timeout
  143.        If Command_timeout = 0 Then Command = ""
  144.      End If
  145.  
  146.  
  147.  
  148.      If Miliseconds < 99 Then
  149.       Incr Miliseconds
  150.      Else
  151.       Miliseconds = 0
  152.  
  153.        Read_reg Current_reg
  154.        Mysingle = Regword * 0.00005
  155.  
  156.        Debug Fusing(mysingle , "#.##") ; " A"
  157.  
  158.      End If
  159.  End If
  160.  
  161. '-------------- WYŚWIETLENIE NA LCD
  162.  
  163.    Locate 2 , 1
  164.    Lcd "I=" ; mysingle ; "A"
  165.  
  166.   Loop
  167.   end
  168.  
Ostatnio zmieniony 09 cze 2026, 21:00 przez Michał6201, łącznie zmieniany 1 raz.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: niveasoft » 09 cze 2026, 20:55

Kolego nie rób sobie żartów. Dodałeś zmienną I dla wyświetlacza? A gdzie jej deklaracja?
  1. '-------------- WYŚWIETLENIE NA LCD
  2.    Current = Fusing(mysingle , "&&.&&&")
  3.    Locate 2 , 1
  4.    Lcd "I=" ; Current ; "A"
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: Michał6201 » 09 cze 2026, 21:01

Znalazłem już to z Fusing.

Ten kod działa od Ciebie, ale po odłączeniu zasilania +12V i pozostawienie obciążenia podłączonego do masy powoduje wyświetlanie 3,27A Co jest błędem.
Czyli to samo się robi co na tym moim badziewnym programie.
Niestety ten układ nie nadaje się do użytku
  1.  
  2.  $regfile = "m644pdef.dat"
  3.       $crystal = 11059200
  4.       $hwstack = 64
  5.       $swstack = 32
  6.       $framesize=128
  7.       $baud = 38400
  8.  
  9.  ' KONFIGURACJA WYŚWIETLACZA LCD 2 X 16
  10.   Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
  11.   Config Lcd = 16x2
  12.   Cursor Off
  13.   CLS
  14.  
  15.  
  16.  
  17.    Debug On
  18. Config Submode = New
  19. Const _valcheck = 1
  20.  
  21. Const Bus_voltage_reg = &H02                                'read only
  22. Const Current_reg = &H04                                    'read only
  23.  
  24.  
  25. Config Serialin = Buffered , Size = 20
  26.  
  27. Dim Command As String * 20 , Znak As Byte
  28. Dim Command_timeout As Byte , Got_str As Byte
  29.  
  30.  
  31. Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1
  32. Compare2a = 155                                             '10ms @16MHz/1024
  33.  
  34.  
  35.     $lib "i2c_twi.lbx" ' Konfiguracja I2C
  36.     Config Scl = Portc.0
  37.     Config Sda = Portc.1
  38.     I2cinit
  39.     Config Twi = 100000
  40.  
  41. Dim Helpstr As String * 20 , Helpw As Word
  42. Dim Helpb As Byte , Testaddr As Byte , Slave As Byte
  43. Dim Regword As Word
  44. Dim Regbuff(2) As Byte At Regword Overlay
  45. Dim Miliseconds As Word
  46. Dim Mysingle As Single
  47.  
  48.  
  49. Sub Read_reg(byval Addr As Byte)
  50.  Regbuff(1) = Addr
  51.   I2creceive Slave , Regbuff(1) , 1 , 2
  52.   Swap Regword
  53.   Debug "Reg &H" ; Hex(addr) ; " is " ; Bin(regword)
  54. End Sub
  55.  
  56. Sub Write_reg(byval Addr As Byte)
  57.  Debug "Writing value " ; Bin(regword) ; " at addr &H" ; Hex(addr)
  58.   I2cstart
  59.   I2cwbyte Slave
  60.   I2cwbyte Addr
  61.   I2cwbyte Regbuff(2)
  62.   I2cwbyte Regbuff(1)
  63.   I2cstop
  64.    Waitms 100
  65. End Sub
  66.  
  67.  
  68. Debug "{013}{010}Debug started"
  69.  
  70. For Testaddr = 0 To 254 Step 2
  71.  I2cstart
  72.  I2cwbyte Testaddr
  73.  If Err = 0 And Testaddr <> 0 Then
  74.   I2cstop
  75.    Slave = Testaddr
  76.    Debug "Slave found at &H" ; Hex(slave)
  77.     Exit For
  78.  End If
  79.  I2cstop
  80. Next
  81.  
  82. If Slave = 0 Then
  83.  Debug "End scan but no device found"
  84.  Do : Loop
  85. End If
  86.  
  87. 'read POR values
  88. Read_reg &H00
  89. Read_reg &H05
  90. Read_reg &HFE
  91. Read_reg &HFF
  92. Debug ""                                                    'space
  93.  
  94.  
  95. Enable Interrupts
  96.  
  97.      Dim Voltage As String * 10
  98.   '   Dim Current As String * 10
  99.  
  100.   Do
  101.  
  102.   If Tifr2.ocf2a = 1 Then                                    '10ms
  103.       Tifr2.ocf2a = 1
  104.  
  105.  
  106.      If Ischarwaiting() > 0 Then                         'jeśli w buforze czeka znak
  107.  
  108.       Znak = Inkey()
  109.  
  110.        Select Case Znak
  111.         Case 10                                          'zignoruj
  112.         Case 13 : Got_str = 1                            'nadszedł Enter więc sprawdź komendę
  113.         Case Else
  114.          Command = Command + Chr(znak)                   'jeśli to nie ENTER ani LF to dodaj do stringa
  115.        End Select
  116.  
  117.        If Len(command) > 19 Then Got_str = 1                'zabezpieczenie by nie przepełnić zmiennej
  118.  
  119.        If Got_str = 1 Then
  120.  
  121.          Helpb = Instr(command , "CALIB=")
  122.          If Helpb > 0 Then
  123.            Helpb = Helpb + 6
  124.            Helpstr = Mid(command , Helpb)
  125.            Helpw = Val(helpstr)
  126.            If Err = 0 Then
  127.             Debug "New calib value " ; Helpw
  128.             Regword = Helpw
  129.             Write_reg 5
  130.            End If
  131.          End If
  132.  
  133.           Command = ""
  134.          Got_str = 0
  135.        Else
  136.         Command_timeout = 30
  137.        End If
  138.  
  139.      End If
  140.  
  141.      If Command_timeout > 0 Then
  142.       Decr Command_timeout
  143.        If Command_timeout = 0 Then Command = ""
  144.      End If
  145.  
  146.  
  147.  
  148.      If Miliseconds < 99 Then
  149.       Incr Miliseconds
  150.      Else
  151.       Miliseconds = 0
  152.  
  153.        Read_reg Current_reg
  154.        Mysingle = Regword * 0.00005
  155.  
  156.        Debug Fusing(mysingle , "#.##") ; " A"
  157.  
  158.      End If
  159.  End If
  160.  
  161. '-------------- WYŚWIETLENIE NA LCD
  162.  
  163.    Locate 2 , 1
  164.    Lcd "I=" ; mysingle ; "A"
  165.  
  166.   Loop
  167.   end
  168.  
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: niveasoft » 09 cze 2026, 21:08

Ten kawałek z mojego poprzedniego postu wstaw po ludzku pod tę linie gdzie ja wyświetlam Debug Fusing(mysingle... bo Ty to teraz wyświetlasz w pętli z pełną prędkościa procesora a ja tylko co sekundę...

Do tego to trzeba przecież skalibrować. Uzywasz tego terminala?
Napisz gdzieś przed pętlą główną

Regword = 2050 : Write_reg 5

BTW. Co Ci szkodzi w programie odczytywać też napięcie i zrobić tak że jeśli napięcie = 0 to prad = 0
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: INA226 czy ktoś z Was ma działający kod w Bascom avr?

Post autor: Michał6201 » 09 cze 2026, 21:57

Przeprasza, ale dzisiaj chyba nie myślę w ogóle.

Można i tak zrobić jak mówisz, że jak napięcie = 0 to prąd też = 0.
Z założenie od samego początku nie oczekiwałem cudów od tego scalaka bo i cudów żadnych miał nie robić, a później jak się okazało to się tylko naciąłem niepotrzebnie, bo mogłem dołożyć kilka elementów więcej i zrobić pomiar przy użyciu opampa i ASD1110. Ale nie chciałem używać armaty do muchy.
Ten scalak ma mierzyć pobór prądu w samochodzie przez ledy w dziennych i w razie spadku poboru prądu (spalenie chińskich ledów) to powiadomi sterownik o tym i przynajmniej mandatu nie będzie.
Zmierzyłem miernikiem i ledy pobierają około 720mA przy 12V. Na płytce docelowej dałem rezystor pomiarowy 10mOhm, bo takie miałem w domu. A co do wartości rezystora pomiarowego, to w którym miejscu w kodzie ustaliłeś wartość tego rezystora?

A co to masz za terminal? Bo ja to mam tylko Putty. A chętnie podłączę i zobaczę jak to działa.

Edit.

Działa komunikacja poprzez FR232RL.
Wysyła na terminal putty Wartość prądu i wartość rejestru.

Wpisać z klawiatury CALIB=2050 nie jestem w stanie fizycznie ani na Putty ani Teraterm bo zdążę wpisać zaledwie dwa - trzy znaki i wyskakuje kolejna linijka z danymi z procka i po moim pisaniu.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
ODPOWIEDZ