AVT5333 Panelméter

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

Sziasztok!
Megépítettem ezt a kis műszert, de sajnos a programozásban nagyon nulla vagyok! Beégettem a hexet de csak 25.67 V-ig mér a műszer! A hőmérsékletet nem mutatja! http://serwis.avt.pl/manuals/AVT5333.pdf
Amit tudok, hogy Bascom-ba van írva a program, nagyon megköszönném ha valaki tudna segíteni!!!
Köszönöm!
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

Két kép a szerkezetről!
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

DS18B20-as szenzorral próbáltam de nem mutat semmit! :(
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: kapu48 »

Ezen ne csodálkoz!

Mert a linkelt multimetr.bas-ban 1 sor sincsen ami a DS18B20-as szenzorral foglalkozna!

Kód: Egész kijelölése

''----------------------------------------------------------------------------''                                                                                                       ''
''                                                                            ''
''                   Multimetr ©2012 Piotr Rosenbaum                          ''
''                   mail: piotr.rosenbaum@gmail.com                          ''
''                                                                            ''
''                                                                            ''
''----------------------------------------------------------------------------''                                                                                                       ''
''----------------------------------------------------------------------------''


$regfile = "M8def.dat"
$crystal = 1000000

Config Adc = Single , Prescaler = Auto , Reference = Internal       'konfiguracja wewnętrznego przetwornika ADC

Start Adc                                                   'uruchomienie przetwornika ADC


'--------------------DEKLARACJA ZMIENNYCH--------------------------------------'
Dim Wart_ac As Word
Dim V As Single , I As Single , Vv As Single , Ia As Single
Dim Wart_pr As String * 3 , Wart_nap As Word
Dim Wart_str As String * 3 , W As Single
Dim Wart_wat As String * 3


'------------------------KONFIGURACJA LCD--------------------------------------'

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2


Cls
Cursor Off
Lcd ; Spc(3) ; "Multimetr"
Lowerline
Lcd ; Spc(3) ; "by Peter507"                                'wyświetlanie ekranu początkowego
Wait 1
Cls


'------------------------POCZĄTEK PĘTLI GŁÓWNEJ--------------------------------'

Do

   Wart_ac = Getadc(0)                                      'pobranie wartości mierzonego napięcia
   Wart_nap = Getadc(1)                                     'pobranie wartości mierzonego napięcia do obliczenia prądu

   V = Wart_nap * 0.0025                                    'unormowaanie zmierzonego napięcia i napięcia do pomiaru prądu
   Vv = Wart_ac * 0.025

   I = V / 0.1                                              'dzielenie zmierzonego spadku napięcia na rezystorze (prawo Ohma)
   W = I * Vv


         Wart_str = Fusing(vv , "#.&&")
         Wart_pr = Fusing(i , "#.&&&")                      'zaokrląglanie do dwóch miejsc po przecinku wartości wyświetlanych na LCD
         Wart_wat = Fusing(w , "#.&&")

         Home Upper
         Lcd "U" ; Wart_str ; "V" ; Spc(1) ; "I" ; Wart_pr ; "A" ; Spc(1)
         Lowerline
         Lcd "P" ; Wart_wat ; "W" ; Spc(9)                  'wyświetlanie pomierzonych wartości
         Wait 1





Loop
End
'----------------------------KONIEC PĘTLI GŁÓWNEJ------------------------------'
Ha a linkelt multimetr.hex -et töltöttedbe?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: kapu48 »

Az MCS oldalán van 1 példa: http://www.mcselec.com/index.php?option ... &Itemid=57
Dual Thermometer with the DS18b20

Ezt kellene hozzáfüznöd az eredeti programodhoz.
Il. hozzá igazítani a HW-hoz.
És újrafordítani az egészet.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: kapu48 »

Lásd milyen rendes vagyok! :D

Össze fésültem neked a 2 programot:

Kód: Egész kijelölése

''----------------------------------------------------------------------------''                                                                                                       ''
''                                                                            ''
''                   Multimetr ©2012 Piotr Rosenbaum                          ''
''                   mail: piotr.rosenbaum@gmail.com                          ''
''                                                                            ''
''                                                                            ''
''----------------------------------------------------------------------------''                                                                                                       ''
''----------------------------------------------------------------------------''


$regfile = "M8def.dat"
$crystal = 1000000			' <<<<<<<Ide irjad a kvarcod értékét!!!!!

Config Adc = Single , Prescaler = Auto , Reference = Internal       'konfiguracja wewnętrznego przetwornika ADC

Start Adc                                                   'uruchomienie przetwornika ADC


'--------------------DEKLARACJA ZMIENNYCH--------------------------------------'
Dim Wart_ac As Word
Dim V As Single , I As Single , Vv As Single , Ia As Single
Dim Wart_pr As String * 3 , Wart_nap As Word
Dim Wart_str As String * 3 , W As Single
Dim Wart_wat As String * 3

'------------------------KONFIGURACJA DALLAS DS18B20--------------------------------------'
Declare Sub Init
Declare Sub ConvAllT                                      ' Convert T on ALL sensors
Declare Function Decigrades(BYVAL sc(9) as byte) as integer

' Itt a te DS18B20 PORT?.? bekötésed szerepeljen!!!!!!!!!!!!!!!!!!!!!
Config 1wire = Portb.6                                      '0,1,2 NOP  3,4,5,6,7 works good ON MY Equipment
'------------------------KONFIGURACJA LCD--------------------------------------'
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2


'Temp variables
Dim B As Byte
Dim Wo As Word

'Program variables
'Implicit Err created by compiler
Dim Dg As Integer 'DECIgrades, I call it, cause I have no space for commas on the display....
Dim Min1 As Integer
Dim Min2 As Integer
Dim Max1 As Integer
Dim Max2 As Integer

Dim Dsid1(8) As Byte                                         'Dallas ID 64 bits incl CRC
Dim DsId2(8) As Byte
'When used like this : DsId(1) = 1wread(8)
'DsId(1) = family code           'Ds1820 10h, DS18B20 28h, Ds18s20 10h
'DsId(2)                         '48 Bits Serial, LSB
'DsId(3)
'DsId(4)
'DsId(5)
'DsId(6)
'DsId(7)                         '48 Bits Serial, MSB
'DsId(8)                         '8 CRC

Dim Sc(9) as byte               'Scratchpad 0-8 72 bits incl CRC, explanations for DS18b20
'Sc(1)                           'Temperature LSB
'Sc(2)                           'Temperature MSB
'Sc(3)                           'TH/user byte 1         also SRAM
'Sc(4)                           'TL/user byte 2         also SRAM
'Sc(5)                           'config                 also SRAM    x R1 R0 1 1 1 1 1 - the r1 r0 are config for resolution - write FF to byte for 12 bit - others dont care
'Sc(6)                           'res
'Sc(7)                           'res
'Sc(8)                           'res
'Sc(9)                           '8 CRC

'DALLAS DS18B20 ROM and scratchpad commands''''''''''''''''''''''''''1wwrite....
'&H 33  read rom - single sensor
'&H 55  match rom, followed by 64 bits
'&H CC  skip rom
'&H EC  alarm search  - ongoining alarm >TH <TL
'&H BE  read scratchpad
'&H 44  convert T


'------------------------KONFIGURACJA LCD--------------------------------------'

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2


Cls
Cursor Off
Lcd ; Spc(3) ; "Multimetr"
Lowerline
Lcd ; Spc(3) ; "by Peter507"                                'wyświetlanie ekranu początkowego
Wait 2
Cls

' Init  DS18B20
lcd "This is a DS18B20 thermometer"
locate 2,1
lcd "        by gote@sys-op.com"
wait 1
for b = 1 to 20
   shiftlcd left
   waitms 500
next
wait 2
cls

Wo = 1wirecount()


' Getting the two sensors IDs.
DsId1(1) = 1wsearchfirst()

' If displayed, everything went well.
' First sensor identified and stored in variable
if dsid1(8) = crc8(DsId1(1), 7) then ' Control that the received CRC match the calculated
   locate 1,1
   lcd "CRC OK Sensor 1 ID"
   wait 1
   locate 1,1
   for B=1 to 8
      lcd Hex(DsId1(b))
   next
end if


wait 1
cls

Init

'------------------------POCZĄTEK PĘTLI GŁÓWNEJ--------------------------------'

Do

   Wart_ac = Getadc(0)                                      'pobranie wartości mierzonego napięcia
   Wart_nap = Getadc(1)                                     'pobranie wartości mierzonego napięcia do obliczenia prądu

   V = Wart_nap * 0.0025                                    'unormowaanie zmierzonego napięcia i napięcia do pomiaru prądu
   Vv = Wart_ac * 0.025

   I = V / 0.1                                              'dzielenie zmierzonego spadku napięcia na rezystorze (prawo Ohma)
   W = I * Vv


   Wart_str = Fusing(vv , "#.&&")
   Wart_pr = Fusing(i , "#.&&&")                      'zaokrląglanie do dwóch miejsc po przecinku wartości wyświetlanych na LCD
   Wart_wat = Fusing(w , "#.&&")

   Home Upper
   Lcd "U" ; Wart_str ; "V" ; Spc(1) ; "I" ; Wart_pr ; "A" ; Spc(1)
   Lowerline
   Lcd "P" ; Wart_wat ; "W" ; Spc(9)                  'wyświetlanie pomierzonych wartości


   ' Read DS18B20, write LCD
   ConvAllT                                          ' "Convert ALL T on the 1w-bus"
   Waitms 20       'if you use 2-wire, could be reduced to 200ms

   1wverify DsId1(1)                 'Issues the "Match ROM "
   locate 2,12                        ' move curzor X,Y   ?????????
   if err = 1 then
      lcd "Err "                      'Err = 1 if something is wrong
   elseif err = 0 then              'lcd " Sensor found"
      1wwrite &HBE
      Sc(1) = 1wread(9)                'read bytes into array
      if sc(9) = crc8(sc(1),8) then
         DG = DeciGrades(sc(9))
         if min1 > dg then min1 = dg
         if max1 < dg then max1 = dg
         lcd dg : locate 2,7 : lcd min1 : locate 2,14 : lcd max1
      end if
   end if

   Wait 1

Loop
End
'----------------------------KONIEC PĘTLI GŁÓWNEJ------------------------------'

'Sets variables and LCD for further use'''''''''''''''''''''''''''''''''''''''''
Sub Init
   Cls
   Lcd "    Min   Max"
   locate 2,1
   Lcd "    Min   Max"
   Min1 = 999                                                   ' to get a real value from start
   Min2 = 999
end sub

'Makes the Dallas "Convert T" command on the 1w-bus configured in "Config 1wire = Portb. "
'WAIT 200-750 ms after issued, internal conversion time for the sensor''''''''''
'SKIPS ROM - so it makes the conversion on ALL sensors on the bus simultaniously
'When leaving this sub, NO sensor is selected, but ALL sensors has the actual
'temperature in their scratchpad ( within 750 ms )
Sub ConvAllT
   1wreset                                                  ' reset the bus
   1wwrite &HCC                                             ' skip rom
   1wwrite &H44                                             ' Convert T
End sub

'Makes a integer value of the first two bytes in scratchpad'''''''''''''
'Works on DS18 B 20 , observe "B". The R0 and R1 in Sc(5) tells you how many bits are accurate
function Decigrades(Byval Sc(9) as byte)
   Decigrades = 0
   Decigrades = Makeint(Sc(1) , Sc(2))
   Decigrades = Decigrades * 10
   Decigrades = Decigrades / 16
end function

' If you have DS1820 or  DS18 S 20 , you can use this algo instead:
' Observe that DsId1(1) contains the info value of which sensor is used.

'(
Function Decigrades(byval Sc(9) As Byte)
Dim Tmp As Byte , T As Integer , T1 As Integer

Tmp = Sc(1) And 1                    ' 0.1C precision
If Tmp = 1 Then Decr Sc(1)
T = Makeint(sc(1) , Sc(2))
'Print Hex(t)
'Print T

T = T * 50                        'here we calculate the 1/10 precision like
T = T - 25                        'DS18S20 data sheet
T1 = Sc(8) - Sc(7)
T1 = T1 * 100
T1 = T1 / Sc(8)
T = T + T1
Decigrades = T / 10
'As integer, this routine gives T*10, with 1/10 degree precision
End Function
')
Természetesen csak 1 hömérőre.
Eredetileg valami min/max értéket írki? Ezzel nem foglalkoztam!
A demo Bascommal még lefordítható 4KB alatti bin álományt kapsz.
Amit feltölthetsz a M8-ba!
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

Szia!
nagyon szépen köszönöm, szerinted DS18B20-al működik mert csak az van itthon egy pár darab?
Ha nagyon szépen megkérnélek akkor lefordítanád nekem, mert ehhez nem értek!
Nagyon szépen köszönöm a kedvességedet előre is!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: kapu48 »

Figyelj ez nem fog menni!

Vagy hajlandó vagy tanulni? Vagy veszel készen multimétert!

Mert a programot csak a meglevő HW-ben tudod tesztelni, és a felmerülő hibát ki is kel tudni javítani!
Aztán újra tesztelni.....!
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

Hát! Köszönöm szépen! letöltöttem a Bascom demót de hibát ír ki fordításkor, sajna ez nem fog nekem menni! :) :)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: kapu48 »

Őszintén a fene sem érti mi a baja?!

Csatoltam a hex forditást.
Multimetr.zip
Ide fordítottam DALLAS DS18B20: Config 1wire = Portb.5
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: Robert »

Ez nem túl informatív:
letöltöttem a Bascom demót de hibát ír ki fordításkor,
Verzió? Hibaüzenet? :twisted:
http://www.tavir.hu - a gazda :)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVT5333 Panelméter

Hozzászólás Szerző: kapu48 »

Ezt ajánlottam neki:
BASCOM-AVR Demo hot!
http://www.mcselec.com/index.php?option ... &Itemid=54
Ez BC2.0.7.5-ös.
És ami hibát ír a fenti programra:

Kód: Egész kijelölése

Error : 13    Line :   84    CONST already specified [_LCDDB4]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB4_PIN]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB4DIR]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB5]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB5_PIN]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB5DIR]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB6]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB6_PIN]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB6DIR]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB7]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB7_PIN]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDB7DIR]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDBE]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDBE_PIN]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDBEDIR]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDBRS]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDBRS_PIN]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Error : 13    Line :   84    CONST already specified [_LCDDBRSDIR]  , in File : M:\BASCOM-AVR\Sample\Program mikrokontrolera\Multimetr.bas
Nem értem mi a baja az LCD-vel?
A BasCom2.0.7.7-es csont nélkül elfogadja a fenti programot!
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

Szia!
Nagyon nagyon köszönöm! De van valami probléma vele mert így jeleníti mega portB5-ös lábra kötveT /Az eredeti cikk alapján a pőrtc3-as lábra van kötve. Felrakok két képet az egyik ha nincs benne a DS18B20/Err/, a másik ha benne van/a második számsor változik, nő ha megfogom a DS18B20 szenzort 26850 gondolom 26.850 celsius fok lenne/ A harnadik ahogy kéne neki mutatnia. https://www.youtube.com/watch?v=hIfefmIYcso
Sajna már én ötven felé nem igen fogom elsajátítani a programozás rejtelmeit, a szakmám is távol áll az elektronikától, csak egy lelkes amatőr vagyok!! 30 éve lassan!! :)
Köszönöm szépen ha meg tudod oldani a problémát!!! :)
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

Az első számsor a min érték! Az nem szükséges, hogy kijelezze. Jól méri a hőfokot!
lajos1969
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2017. március 18. szombat, 8:40

Re: AVT5333 Panelméter

Hozzászólás Szerző: lajos1969 »

A második számsorban csak az elő két számjegy változik, a 850 mindig marad annyi!
Válasz küldése