DS18B20 온도센서 풀업 저항 없이 사용 방법

고토드립니다

그런거 아님 오해 ㄴㄴ

이번에 DS18B20 온도 센서를 긴급하게 사용해야하나, 풀업 저항을 당장 구하기 어려운 경우 사용할 수 있는 방법을 다음 링크의 글에서 소개하고 있고, 본 글에서는 DS18B20을 풀업 저항 없이 사용할 수 있는 방법을 간략히 정리하여 소개합니다.

간략한 풀업의 이론적인 내용을 설명하고 있고, 왜 풀업이 필요하며 통신은 어떻게 하며, 소프트웨어 구현은 어떻게 해야하는지 등의 내용을 정리하고 있습니다.

DS18B20 온도 센서를 포함한 디지털 통신은 빠르게 On/Off 하는데, 이때 I/O와 선로에는 기생 캐패시턴스, 인덕턴스 등으로 On/Off 시간이 지연됩니다. 즉, 기생 캐패시턴스를 놓고 보면 이 값이 클 수록 Off에서 On되는 시간이 느려지고 그 반대 역시 마찬가지 입니다.

디지털 신호가 이상적인 사각파 형태가 되어야 하지만, 실제 On/Off 시 여러 조건에 의해 파형의 각진 부분이 포물선을 그리듯 On/Off 하므로 그 정도가 허용치 이내라면 정상적으로 통신이 이뤄지지만, 그렇지 않으면 장애가 발생됩니다.

다음 그림에서 두번째 waveform이 signal line에 캐패시턴스 성분이 들어간 경우를 보여주고 있습니다.

실제 DS18D20 데이터시트를 살펴보면 통신시 가능한 허용치를 보여주고 있습니다.

Source: https://www.analog.com/media/en/technical-documentation/data-sheets/ds18b20.pdf

정상적인 통신을 위해 데이터시트에서 제시하고 있는 가장 느린 속도가 15uS 로 확인됩니다. 또한 정상적인 통신을 위해 5k 미만의 풀업 저항 사용을 권장하고 있습니다. 이상적인 경우 선로와 I/O 모두 기생 캐패시턴스 등이 없지만, 실제 그 회로를 그려보면 다음의 그림과 같습니다.

그리고 계산 결과 대충 400pF 정도면 통신 지연 속도가 데이터시트에서 확인한 최대 15uS 이내로 조질 수 있으므로 정상적으로 통신할 수 있음을 확인합니다. 센서 I/O의 캐패시턴스는 25pF 이고 선로 길이와 여러조건을 감안해서 400pF 이내의 총 캐패시턴스를 유지하면서 MCU 내부 50K 풀업 저항을 사용하면 정상적으로 통신할 수 있습니다.

아두이노에서 기본적으로 제공하는 1-wire 라이브러리는 MCU 내부 풀업 저항(Internal pull-up resistor)을 사용하지 않고 있으므로 다음과 같이 적당히 수정해서 풀업 저항을 활성화하면 됩니다.

그럼 외부 풀업 저항 없이 아두이노(AVR) MCU 내장 풀업 저항을 사용하여 충분히 통신할 수 있습니다. 위 링크의 저자가 Git Repository에서 수정된 코드를 올려두었으므로 다운받아서 그대로 사용하면 됩니다.

https://github.com/bigjosh/OneWireNoResistor/releases

이후 적당히 코드를 짜고 돌려보면 DS18B20 온도센서와의 1-Wire 통신이 정상적으로 이뤄짐을 확인 할 수 있습니다.

해당 저자는 실험 결과 DS18B20 온도센서와의 통신이 1미터의 선로에서 4개의 센서 통신이 가능하고, 10미터에서는 1개의 센서, 3미터에서는 2개의 센서 통신이 가능하다고 말합니다. 선로가 길어지면, 당연 기생 캐패시턴스도 커지니, 내부 풀업으로는 한계가 있어 보입니다.

… 오늘의 결론: 본인은 그냥 1608 SMD 4.7K 풀업 저항 손수 땜질했는데 이 글을 보고계신 당신은 그냥 풀업 저항 달려져 있는 센서 보드를 구입하십시오.

기깔나게 STM32 커스텀 PCB 보드 하나 설계해서 만들면 좋겠지만 나중에 파츠 실장하고 조립할 인건비와 재료값 생각하면 그냥 있던거 조합해서 쓰는게 더 좋을 것으로 보였습니다.

어디에 판매하는 것도 아니고 기능만 작동만 잘 되면 그만이니 따꺼 함께 하겠습니다! 충성!


Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.