Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Thermometer with bigger resolution than ds1621?

Status
Not open for further replies.

pkedvessy

Member level 5
Joined
Feb 17, 2005
Messages
81
Helped
1
Reputation
2
Reaction score
0
Trophy points
1,286
Activity points
2,077
ds1621 datasheet

Hy!

Anyone can help me in this? I used the DS1621 chip, but it's resolution is only 0.5 °C! I want to find a chip with 0.1 °C resolution!
Thanx!
 

ds1621 example

the TMP100 or TMP101 is Good
it a SOT23 Package
u can get a Free sample from TI
it Use I2C

here a description


DESCRIPTION
The TMP100 and TMP101 are two-wire, serial output
temperature sensors available in SOT23-6 packages.
Requiring no external components, the TMP100 and
TMP101 are capable of reading temperatures with a
resolution of 0.0625°C.
The TMP100 and TMP101 feature SMBus and I2C
interface compatibility, with the TMP100 allowing up to
eight devices on one bus. The TMP101 offers SMBus alert
function with up to three devices per bus.
The TMP100 and TMP101 are ideal for extended
temperature measurement in a variety of communication,
computer, consumer, environmental, industrial, and
instrumentation applications.
The TMP100 and TMP101 are specified for operation over
a temperature range of −55°C to +125°C.

it less than 0.1 :):)

i hope that help
 

ds1621 c example avr

pkedvessy said:
Hy!

Anyone can help me in this? I used the DS1621 chip, but it's resolution is only 0.5 °C! I want to find a chip with 0.1 °C resolution!
Thanx!

You can still use the DS1621 to get higher resolutions by reading the temperature and truncating the LSB from the read value.
You must read Counter ( A8h ) and Slope ( A9h ) then follow the formula on page 4 of data sheet.

You may choose DS1631 and get resolution down to 0,0625.

Unlike the DS1621, the DS1631 allows the user to select 9-, 10-, 11- or 12-bit output resolution by setting two bits in the configuration register.
This provides simplified high resolution temperature measurements without the need to perform unwieldy calculations.

The default resolution at power-up is 12 bits, and it can be changed through the R0 and R1 bits in the configuration register [ ACh ].

Code:
Resolution         Temperature increments     Configuration register    Conversion time 
(bits)                 celsius degrees           R1       R0                 ms

   9                       0.5                    0       0                 93.75
  10                       0.25                   0       1                187.5
  11                       0.125                  1       0                375.0
  12                       0.0625                 1       1                750.0


I wrote for you 12-BIT RESOLUTION TEMPERATURE / DATA RELATIONSHIP


Code:
TEMPERATURE        DIGITAL OUTPUT        DIGITAL OUTPUT
celsius degrees    MSB  binary LSB         hex

+125.0         0111 1101 0000 0000         7D00
+124.9375      0111 1101 1111 0000         7DF0
+124.875       0111 1101 1110 0000         7DE0
+124.8125      0111 1101 1101 0000         7DD0
+124.75        0111 1101 1100 0000         7DC0
.
.
.
.
.
+11.0625       0000 1011 0001 0000         0B10
+11.0          0000 1011 0000 0000         0B00
+10.9375       0000 1010 1111 0000         0AF0
+10.875        0000 1010 1110 0000         0AE0
+10.8125       0000 1010 1101 0000         0AD0
+10.75         0000 1010 1100 0000         0AC0
+10.6875       0000 1010 1011 0000         0AB0
+10.625        0000 1010 1010 0000         0AA0
+10.5625       0000 1010 1001 0000         0A90
+10.5          0000 1010 1000 0000         0A80
+10.4375       0000 1010 0111 0000         0A70
+10.375        0000 1010 0110 0000         0A60
+10.3125       0000 1010 0101 0000         0A50
+10.25         0000 1010 0100 0000         0A40
+10.1875       0000 1010 0011 0000         0A30
+10.125        0000 1010 0010 0000         0A20
+10.0625       0000 1010 0001 0000         0A10
.
.
.
.
+1.0           0000 0001 0000 0000         0100
+0.9375        0000 0000 1111 0000         00F0
+0.875         0000 0000 1110 0000         00E0
+0.8125        0000 0000 1101 0000         00D0
+0.75          0000 0000 1100 0000         00C0
+0.6875        0000 0000 1011 0000         00B0
+0.625         0000 0000 1010 0000         00A0
+0.5625        0000 0000 1001 0000         0090
+0.5           0000 0000 1000 0000         0080
+0.4375        0000 0000 0111 0000         0070
+0.375         0000 0000 0110 0000         0060
+0.3125        0000 0000 0101 0000         0050
+0.25          0000 0000 0100 0000         0040
+0.1875        0000 0000 0011 0000         0030
+0.125         0000 0000 0010 0000         0020
+0.0625        0000 0000 0001 0000         0010
 0.0           0000 0000 0000 0000         0000
-0.0625        1111 1111 1111 0000         FFF0
-0.125         1111 1111 1110 0000         FFE0
-0.1875        1111 1111 1101 0000         FFD0
-0.25          1111 1111 1100 0000         FFC0
-0.3125        1111 1111 1011 0000         FFB0
-0.375         1111 1111 1010 0000         FFA0
-0.4375        1111 1111 1001 0000         FF90
-0.5           1111 1111 1000 0000         FF80
-0.5625        1111 1111 0111 0000         FF70
-0.625         1111 1111 0110 0000         FF60
-0.6875        1111 1111 0101 0000         FF50
-0.75          1111 1111 0100 0000         FF40
-0.8125        1111 1111 0011 0000         FF30
-0.875         1111 1111 0010 0000         FF20
-0.9375        1111 1111 0001 0000         FF10
-1.0           1111 1111 0000 0000         FF00
-1.0625        1111 1110 1111 0000         FEF0
.
.
.
.
-54.8125       1100 1001 0011 0000         C930
-54.875        1100 1001 0010 0000         C920
-54.9375       1100 1001 0001 0000         C910
-55.0          1100 1001 0000 0000         C900

I bet you'll come back with the question 'How can I send to LCD or UART those values ?"
 

tmp100 configuration register

No, I won't! :-D
 

tmp101 basic

I wrote it to Silvio... :-D
 

ds1621 bascom

pkedvessy said:
I wrote it to Silvio... :-D

I didn't want to be rude. If you feel offended, I apologize.

If you want to keep the DS1621 in your design and want to use that magic formula in order to achieve high resolution ( < 0.5 C ) with the device, take a look at application note 105 HIGH RESOLUTION TEMPERATURE MEASUREMENT WITH DALLAS DIRECT-TO-DIGITAL TEMPERATURE SENSORS.
This is the genuine design from Dallas Semiconductor, before the company been acquired by Maxim.

You'll find inside file a good info regarding where the "magic formula" is coming from, how the temperature is measured inside chip, the meaning of Count_Remain and Slope Counter or Count_Per_C, even a C code.

Because I didn't succeed to find the link on Maxim site I attached the file here.
 

avr tmp101

Can I read out the Slope and the Count bytes after the Temperature read out like this:

I2cstart 'Read te temperature
I2cwbyte &H90
I2cwbyte &HAA
I2cstart
I2cwbyte &H91
I2crbyte Temp_msb , Ack 'The temperature's first byte
I2crbyte Temp_lsb , Nack 'The temperature's second byte
I2cstop

I2cstart 'Read the Counter
I2cwbyte &H90
I2cwbyte &HA8
I2cstart
I2cwbyte &H91
I2crbyte Count_remain , Nack
I2cstop

I2cstart 'Read the Slope
I2cwbyte &H90
I2cwbyte &HA9
I2cstart
I2cwbyte &H91
I2crbyte Count_per_c , Nack
I2cstop

???
 

bascom ds1621

YES, it's working.

But the problem is how would you perform what's following:

Remember it's from data sheet:

TEMPERATURE = TEMP_READ - 0.25 + (COUNT_PER_C - COUNT_REMAIN) / COUNT_PER_C

Please don't be offended, I'm not your teacher and I bet you get bored of how many times you've heard the words bellow.
But the most important things when learning it's do not leave things unsolved.
It's not a such good behaviour to pass across them with the only reason in mind that you're in rush and must solve the problem until the next day.
Soooner or later this not understands will accumulate and as the time goes by you will feel overwhelmed, exactly like a microcontroller.

These questions are not your homework.

1. Can you type the stream of 0 and 1 (in fact only 12) as a results of (-14,125C) negative temperature conversion with 12 bits resolution, like I did as example above.
2. Why you subtract 0,25 from the variable TEMP_READ , I mean why 0,25 and not less or more.

If takes this as a joke and feel offended try to imagine how it looks the object code generated by compiler for the above equation.

I know the code will fit in a AVR micro AT90S2313.
Thus what instruction do you think will be used SBCI or SBIW when (TEMP_READ - 0.25 ?)
Who cares you may say ! I'm not interested, not at all how the micro is doing his job. ! I'm only interested to do my job !
YES, correct.
If so, can you tell me why inside CalcHiResTemp the temp_read variable it's checked to see if MSB is set ?
You can find CalcHiResTemp function in the app105.pdf attached above on page 18.
It's wrote in the same High Level Language. It's true in C not basic as you use now with Bascom.
But it still hides the AVR instructions, too
You must think before subtracting how the compiler interprets your variable, with sign or unsigned.
Look at the stream of bits received from DS1621 for positive and negative temperature.

If you really get bored and thinks that I make fun of you then try something straight.

Print with basic function (to serial port) inside Bascom the variables COUNT_PER_C, COUNT_REMAIN and low and high temperature and compare them for two different temperature. You can figure out what's happens inside.

Please review all my replies to you in different threads where you come up with questions.
If you find one that makes fun of you or my advice didn't helped you, I'll stop here !

Regards,
silvio
 

bascom tmp101

First of all, I want to say a very big thanks for your lots of help!!!

My project is just want to do the following:
-Read out the MSB, LSB, COUNT_REMAIN, and COUNT_PER_C bytes form the thermometer
-send the 4 byte's throw the rs232 port to the computer
-a Visual Basic application recieve the bytes
-the computer calculate the hiresolution temperature with the magic formula

I use the DS1621 themometer chip, because I can buy only this chip!

This project just an experiment, because I want to try, how I can use this chis to calculate bigger resolution of temperature then 0.5 °C. Whit this "small" resolution, I made a working project, which is doing the following:

-read the temperature every 10 minutes
-store it into a serial eeprom
-with the computer I can read out the stored data from the serial eeprom
-make a graphic from the temperatures

This is a working project, and I want to make the resolution to about 0.1°C with this DS1621 chip, if it's possible! I wait for help in this!

Added after 2 minutes:

Oh! I forgot to say that the Computer program is readi, I don't need help in this :) I need help "just" in the microcontroller!

Thx!
 

ds1621 vb

OK, I thought it's a homework. I apologize.
For peoples doing things from pleasure and eager to learn, I'll be glad to help.

Please allow me few days (I don't have too much spare time) to prepare a program in basic AVR Bascom (basic it's not my favorite language, not at all) that show you step by step what are you doing and why.

If lead time for your project it's not a big isssue I believe it worths wait a little.

BTW, did you succeed to receive from AT90S2313 ?


Since in this project you'll send the 4 byte's throw the rs232 port to the computer,
it's important to know that you can receive from microcontroller.
 

at90s2313 reading thermocouple

It's not a homework, I just want to learn and understand microcolntrollers a little with this project! I can recieve byte's from the microcontroller, and also send to it! So the bidirectional rs232 communication is work!
My working project with 0,5 °C resolution does the following:
-when the power is on, the controller wait for 10 second's, and if it's recieve a "d" command (for example) on throw the rs232, it sends the stored temperatures from the serial eeprom, and set the eeprom's start adress to 0! After the 10 seconds, if it's recieve nothing, start a cycle, which store the temperature in the serial eeprom, next to the last, and store the serial eeprom's next adress into the internal eeprom! It's work perfectly!
 

ds1621 avr lcd thermometer bascom

Hi, if you interest only positive temperature you can use the classic lm35 that have 0,1°C of resolution but you must use a pic with adc.
 

ds1621 visual basic

pkedvessy said:
It's not a homework, I just want to learn and understand microcolntrollers a little with this project! I can recieve byte's from the microcontroller, and also send to it! So the bidirectional rs232 communication is work!
My working project with 0,5 °C resolution does the following:
-when the power is on, the controller wait for 10 second's, and if it's recieve a "d" command (for example) on throw the rs232, it sends the stored temperatures from the serial eeprom, and set the eeprom's start adress to 0! After the 10 seconds, if it's recieve nothing, start a cycle, which store the temperature in the serial eeprom, next to the last, and store the serial eeprom's next adress into the internal eeprom! It's work perfectly!

I said that I thought it's a homework not that it is.
Can you please post the code you wrote until now and it's working perfectly ! It would much easier to stick some lines of code among ones in a program that's working for you.
 

ds1621 lcd

Here is the working code and an imageine, with the bigger resolution! This two project just store the datas from the thermometer, don't calculate anything!
 

ds1621 c

You can visit to Cypress.com -> PSoC, there are lot application notes about temperature measurement using termistors, RTD and thermocouples. I have medical termometer project for 0.1C.
 

1 wire sensoren an 2 ports bascom

Silvio!

Did you get my working code which post the temperature to the compter?
 

thermometers 1100 celsius

I get it up... It doesn't work!
 

code example communicating with a ds1621

pkedvessy said:
I get it up... It doesn't work!

Search for a sensor 1st that can do .1 increments then make a sourcecode for it.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top