2 THERMOMETERS USING DS18B20 SENSOR AND MAX7219 DISPLAY
2 thermometers based on PIC12F629 . Included C code and circuit diagram. Displays -55 to 125 °C.
The temperature is read every 2 seconds. Sensors are DS18B20. 4 digits are used for each thermometer.
LED brightness can be set in the code, value can be 0-15.
It can be used for temperature inside and outside the house.
The 7 segment LED is a module of 8 digits driven by MAX7219, I got it from eBay.
When programming the PIC disconnect the sensors from pins 6 and 7.
You are free to use the circuit diagram and the software with no limitations.
DHT11 THERMOMETER MAX7219 DISPLAY ATtiny13
The temperature is read every second. Sensors DHT11. 3 left digits are used for temperature 2 digits on the right are humidity.
LED brightness can be set in the code, value can be 0-15. MAX7219 is driven by software SPI. DHT11 reply with 5 bytes of data 3 are used to display temperature and humidity.
The sketch and circuit can be used without any changes for ATtiny13/25/45/85
ATtiny13 can be programmed using Arduino IDE and Arduino as ISP. Use these instructions https://www.electronics-lab.com with the setting : 9.6MHz, no millis no tone, LTO enabled.
ATtiny can be programmed using Arduino IDE and Arduino as ISP, see Technical Tips Burning bootloader with setting "Clock Source 8MHz internal", "LTO enabled".
LED TEMPERATURE CONTROLLER MAX6675 ATtiny88
Nano ATtiny88 board and thermocouple module with MAX6675. Displays 0 to 1023 °C . 10K potentiometer set the temperature, when SET pushbutton pressed the set temperature is displayed. The relay output can drive a relay or a Solid State relay. Hysteresis is +/- 5 degrees.
The project can be used as a thermometer by removing the bushbutton and the pot.
The temperature is read every 1 second, can be changed in the code.
The 7 segment LED is common cathode, 4 separate digits can be used with segments a to g linked. The seven segments, a to g, of one digit are linked to the corresponding seven segments in the other digits. The LEDs I used are 5621AS. cc1 is the common cathode of the digit on the left.
Total 5V supply current is 30mA.
MAX6675 can be bought from eBay: https://www.ebay.co.uk/
LED THERMOCOUPLE 1023 CENTIGRADE THERMOMETER USING MAX6675
Thermometer based on PIC16F628A and thermocouple module. Included C code and circuit diagram. Displays 0 to 1023 °C .
The temperature is read every 10 seconds, can be changed in the code.
The 7 segment LED is common cathode, 4 separate digits can be used with segments a to g linked. The seven segments, a to g, of one digit are linked to the corresponding seven segments in the other digits. The LEDs I used are 5621AS. cc1 is the common cathode of the digit on the left.
Total 5V supply current is 30mA.
MAX6675 can be bought from eBay: https://www.ebay.co.uk/
4 DIGITS THERMOMETER USING DS18B20 DIGITAL SENSOR
Updated on 21/08/24 , old version included in the download.
Thermometer based on PIC16F628A . Included C code and circuit diagram. Displays -55 to 125 °C .
The temperature is read every 10 seconds, can be changed in the code.
The math is using integers to calculate the degrees and the tenths of degrees are calculated separately.
The 7 segment LED is common cathode, 4 separate digits can be used with segments a to g linked.
Total 5V supply current is 30mA.
The 4 digits display is common cathode. The LEDs I used are 5621AS.
cc1 is the common cathode of the digit on the left.
The seven segments, a to g, of one digit are linked to the corresponding seven segments in the other digits.
DP is the decimal point of third digit from the left.
DS18B20 can be any type.
19.06.2021 - 19:39 Name: Moty Comment: Hi Scott, I emailed you a suggestion.
19.06.2021 - 14:35 Name: Scott Comment: I am trying to change the display to show Fahrenheit, but am having trouble. I have the formula and it sort of works, but I get a "-" in front of the temp. I added the formula to the following line, after tempH:
temp = tempL | ((unsigned int)tempH << 8); //calculate temp
Obviously I did it wrong. Can you help point me in the right direction? I want to monitor the temp in our pool and I thought this would be a fun project, but as I found out, I am not very good at coding. Thanks for any input.
19.06.2021 - 02:17 Name: Scott Comment: I am trying to change the display to show Fahrenheit, but am having trouble. I have the formula and it sort of works, but I get a "-" in front of the temp. I added the formula to the following line, after tempH:
temp = tempL | ((unsigned int)tempH << 8); //calculate temp
Obviously I did it wrong. Can you help point me in the right direction? I want to monitor the temp in our pool and I thought this would be a fun project, but as I found out, I am not very good at coding. Thanks for any input.
02.04.2020 - 10:13 Name: mkirat Comment: evet
23.12.2019 - 00:28 Name: Moty Comment: Hi Manoochehr, The sensor (ds18b20) has typical error of +/-0.5 , max +/-3 . If the error is the same for the whole range then you can add a line to the code to subtract 1.5 , or you can try to change the sensor, most sensors are within +/-0.5
22.12.2019 - 18:48 Name: manoochehr Comment: hi/this thermometer shows 1.5 degree upper.please tell me what is wrong ?
28.02.2019 - 20:30 Name: Fabio Jesus Comment: Thank you!!
09.01.2019 - 09:48 Name: heidari Comment: Thank you very much
24.12.2017 - 13:59 Name: Moty Comment: Yes, -55
23.12.2017 - 17:49 Name: Manoj Soorya Comment: Is this unit shows the Minus (-) Degree ?
18.06.2016 - 12:25 Name: Moty Comment: Try another LED display.
17.06.2016 - 22:15 Name: Adalto Comment: Amigo simulando no proteus Isis ele não funciona! Fica aceso os 4 display e o seguimento "d" fica piscando e não muda de estado. Me ajuda , obrigado.
17.02.2016 - 11:21 Name: Moty Comment: If you have basic knowledge of mikroC you'll be able to correct the errors. Most errors are the delay macro.
16.02.2016 - 16:17 Name: seed Comment: I need code in micro c
30.01.2016 - 17:36 Name: Comment: Hi again,
I finished and run it. Nice work but values are higher 2-3 degrees. I changed 4 pieces of 18B20 all the same. Can I set it "c" program lines etc? Thanks and regards..
23.01.2016 - 18:34 Name: Comment: Here's the results:
0 1 mikroCPIC1618.exe -MSF -DBG -pP16F628A -DL -O11111114 -fo4 -
6 304 error: Can't open include file "htc.h" #include 1 error in preprocessor. C:\Users\serkan\Desktop\led_thermo\led_thermo.c
0 122 Compilation Started led_thermo.c
26 300 Syntax Error: ')' expected, but '&' found led_thermo.c
113 424 '}' expected '}' found led_thermo.c
109 1163 Variable 'ret' has been declared, but not used led_thermo.c
114 1503 Result is not defined in function: 'reply' led_thermo.c
114 312 Internal error '' led_thermo.c
0 102 Finished (with errors): 23 Oca 2016, 19:29:21 MyProject ser.mcppi
23.01.2016 - 14:58 Name: Comment: I'm going to try. Some beta ones doesn't to let compiled.
22.01.2016 - 21:00 Name: Moty Comment: Why didn't you answer my question?
You can edit the code with XC8 compiler, you can download it from Microchip. You can also use MPLABX or download old Hi Tech from the archive on their website. Google what you need and you will find it.
22.01.2016 - 17:24 Name: Comment: I think you fed up me..But I cannot compile the files. I don't have hi tec c. I've only mplab and how to use it correctly. I could'nt add a,b,c,f to no. "7" and add to -a- digit for "6" and -d- digit to "9" for more readable. Need help.. Thanks a lot..
22.01.2016 - 17:09 Name: Moty Comment: It took you less than 12 minutes to solve the problem, that's quite fast.
By the way, is it a project for school or you have an interesting use for it?
22.01.2016 - 11:17 Name: Comment: Terribly sorry. We've just find the problem. It was sourced pcb drawing. İt's working now. Thanks again..
22.01.2016 - 11:05 Name: Comment: Your .hex files are faulty/broken. Not working. Tried for many times. Also other guys tried. But unfavorable..
17.01.2016 - 22:46 Name: Comment: Ok. Thank you..
17.01.2016 - 21:11 Name: Moty Comment: You will enjoy it more if you try it yourself.
The answer is 0b1000111
I corrected the drawing today the a and b were swapped.
17.01.2016 - 17:49 Name: Comment: Last question if possible. I'd like to add "f" digit to number "7".
At present ...digit[7]=0b111;
Must I write like this:...digit[7]=0b111001; or digit[7]=0b10100111.
17.01.2016 - 17:30 Name: Comment: Thank you very much for soonest reply. I'm going to assemble it. Nice work..
17.01.2016 - 01:06 Name: Moty Comment: Yes, reduce the 1200 to a smaller number to get shorter time.
16.01.2016 - 15:32 Name: serkan karaaslan Comment: Hi,
It'S a very nice circuit. Besides I'd like to shorten read time like 5-6 seconds. "display(1200); //display for 15 seconds"
From here or etc? Thanks a lot..
03.01.2016 - 16:25 Name: sheco bab Comment: very good