MLX90614 module
deadmm
Posts: 1
Hi
Just got one of the MLX90614 IR modules and can't get it to respond (not using a Stamp but another microcontroller, replicating the Stamp examples)
Have tried what seems to be the default slave address $5A, have stepped through all possible addresses, have tried true and inverted logic polarity and different baud rates
My logic analyser show the correct (I assume ) commands being issued. The module holds the comms line high but gives no responses. Have tried resetting the module while powered up.
In ascii the codes I'm sending look like this {000}!TEMRZ{07} where {000} is the 0 starting byte, Z is the H5A address and {07} is the register to read
Have also tried !ID in place of !TEMR with all possible addresses including the universal {00} address.
Putting a scope on the actual IR module I can see activity that makes me think that it's working so I suspect the onboard microcontroller. It seems to be connected properly and has a 8MHz clock on the proper pins
Questions
Are there any other commands to test the onboard microcontroller? Any way to find the slave address other than !ID? Would a Stamp send the seial comms strings differently - mine are continuous ie no gaps , though I have tried inserting a variable gap between the initial {000} and the "!" with no effect.
Or is it just defunct!!
Regards
Mal
Just got one of the MLX90614 IR modules and can't get it to respond (not using a Stamp but another microcontroller, replicating the Stamp examples)
Have tried what seems to be the default slave address $5A, have stepped through all possible addresses, have tried true and inverted logic polarity and different baud rates
My logic analyser show the correct (I assume ) commands being issued. The module holds the comms line high but gives no responses. Have tried resetting the module while powered up.
In ascii the codes I'm sending look like this {000}!TEMRZ{07} where {000} is the 0 starting byte, Z is the H5A address and {07} is the register to read
Have also tried !ID in place of !TEMR with all possible addresses including the universal {00} address.
Putting a scope on the actual IR module I can see activity that makes me think that it's working so I suspect the onboard microcontroller. It seems to be connected properly and has a 8MHz clock on the proper pins
Questions
Are there any other commands to test the onboard microcontroller? Any way to find the slave address other than !ID? Would a Stamp send the seial comms strings differently - mine are continuous ie no gaps , though I have tried inserting a variable gap between the initial {000} and the "!" with no effect.
Or is it just defunct!!
Regards
Mal
Comments
I've tried to write to the EEPROM first. [noparse][[/noparse]0,"!TEMW",$5A,$2E,$1A,"z"]. And 0,"!TEMc",$5A,$07. But didn't work...
Yes, I am using a RS232-TTL converter.
First go to the MLX9016 web page on the parallax site and click on MLX90614 BASIC Stamp 2 Example Source.zip.
Next you have to down load and run “write EEPROM”. If you don’t you, will not get the thermometer to work.
Finally you should be able to download and run “demo-simple”.
That should fix your issue if you are using the basic stamp 2. I really cant speak other micro controllers, I'm just now learning BS2.
the MLX90614 only with SIG connect and 5Volts from pin 6 (define in constant)
' {$STAMP BS2sx}
Sensor CON 3
volts CON 6
'
[ Constants ]
baud CON 240
xslave CON $35 'new slave address
'
[ Variables ]
temperature VAR Word
tempL VAR temperature.LOWBYTE
tempH VAR temperature.HIGHBYTE
PEC VAR Byte
Kelvin VAR Word
KelvinDec VAR Word
Celsius VAR Word
CelsiusDec VAR Word
Init:
LOW volts 'apago MLX
HIGH volts 'prendo MLX
PAUSE 300
getTemperature:
SEROUT Sensor,baud,[0,"!TEMR",xslave,$07] 'sino va -> FAIL
SERIN Sensor,baud,[tempL,tempH] 'sino va -> temp: 273
convertTemperatures:
Kelvin = (temperature/100)*2
KelvinDec = temperature*2
IF (temperature < 13650) THEN overWordsize
Celsius = (temperature/50)-273
CelsiusDec = (temperature//50*2)
GOTO displayTemperatures
overWordsize:
Celsius = (273-(temperature/50) )
CelsiusDec = (temperature//50*2)
DEBUG "-",DEC Celsius,".",DEC2 CelsiusDec
displayTemperatures:
DEBUG "Temp: ",DEC Kelvin,".",DEC1 KelvinDec, "K", CR
DEBUG "Temp: ",DEC Celsius,".",DEC2 CelsiusDec,"C", CR
DEBUG "Pass", CR
PAUSE 300
DEBUG CLS
GOTO getTemperature
PECfail:
DEBUG 23, 4,CR
DEBUG 23, 5,"Fail",CR
PAUSE 10
GOTO Init
The Key is turn off and on the module in the beginig of code!!
But i Need help to got it work on a PIC16F628A or PIC1684A
I migrate the code with proton x compiler, everything look fine, but i can't make the MLX90614 respond!.
i need help to make 'it in PIC micro
good luck everybody, sorry for my english, i cam from Chile