cancel
Showing results for 
Search instead for 
Did you mean: 

DS18B20 not registering with internal pullup resistor

smakivic
Visitor

I am trying to use the DS18B20 temp sensor on a stm32h7 board to display the current temperature using putty, and if the temp is higher than 45 degrees celsius to display a heat warning, but for whatever reason the sensor is not beign registered. 

I have connected the vdd cable to the 5v pin and the data cable to the A2 pin, I have configured the A2 pin as Output Open Drain with pull-up and I think that the sensor is not being registered.
I have attached my code so far

I also get abnormal readings like these, no matter if the sensor is plugged in or not:
"""
Heat Warning! Current Temperature: 2693.75°C
Heat Warning! Current Temperature: 1515.38°C
Heat Warning! Current Temperature: 821.12°C
Heat Warning! Current Temperature: 3424.06°C
Heat Warning! Current Temperature: 1877.06°C
Heat Warning! Current Temperature: 2543.00°C
Heat Warning! Current Temperature: 2560.12°C
Heat Warning! Current Temperature: 1713.81°C
"""

I followed a lot with this tutorial: https://controllerstech.com/ds18b20-and-stm32/#google_vignette
So I think I got the delays correct but I am not entirely sure

Any help would be really appreciated

 

1 REPLY 1
Peter BENSCH
ST Employee

Welcome @smakivic, to the community!

you should check your main.c again. I've already found a few strange things when quickly looking over it:

  • in Set_Pin_Input() you use the parameters *GPIOx and GPIO_Pin, but then call DS18B20_PORT and DS18B20_PIN directly in the function. Why use parameters then for the function call?
  • In Set_Pin_Output() you set the GPIO to output push-pull. However, the DS18B20 uses a bidirectional line that should only float (and thus possibly supply the DS18B20 parasitically) or be pulled to GND (logical zero). You would therefore have to use OD = open drain here.

Have you also verified the waveform on the bi-directional pin using a scope?

Which compiler are you using?

Which compiler optimisation have you set?

Regards
/Peter

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.