24. DS18B20 with 온도센서

STM8S103 MCU를 사용하여 단일 선으로 통신하는 1-Wire 프로토콜 기반의 고정밀 디지털 온도 센서 DS18B20을 제어하는 예제 가이드입니다.

📌 핵심 기술 포인트:
• 통신 방식: 1-Wire (Data 선 하나로 송수신 수행)
• 중요도: 마이크로초(us) 단위의 정밀한 타이밍 제어가 통신 성공의 핵심
• 특징: 하드웨어적으로 Data 핀의 입출력 모드(In/Out)를 수시로 전환해야 함

24.1. 리소스 링크 (Resources)

24.1.1. 강좌 (HTTPS)

강좌 바로가기: https://yooaroma.com/mm/stm8/25_stm8s103_debug.html

24.1.2. 실험 보드

1. 실험 개요 (이미지 클릭 시 확대)

실험 개요

2. 실험 내용 (이미지 클릭 시 확대)

실험 내용

24.1.3. 회로도 및 설계 파일

이미지 회로도 (PNG)

회로도

24.1.4. 소스코드, 외부 링크 및 동영상

소스코드 (.zip) 다운로드 유튜브 동영상 강의 Ki-cad 회로도 원본 파일 (.kicad_sch) 다운로드

공식 채널 및 소스 저장소:

24.1.6. 레퍼런스 및 메뉴얼

Chip Manual

Chip Manual

Programming Manual

Programming Manual

Reference Manual

Reference Manual

C example

C example
DS18B20 칩 메뉴얼 (PDF)

24.2. 프로젝트 구성 (Configuration)

24.3. 주요 기능 (Function)

24.3.1. 1-Wire 통신 구현 DS18B20은 고유의 타이밍 시퀀스를 요구합니다. 리셋 펄스 전송, 존재 펄스(Presence Pulse) 확인, 비트 단위의 읽기/쓰기 과정을 통해 온도 데이터를 디지털 값으로 변환하여 가져옵니다.
24.3.2. 전처리기 DEFINE
-d_$(ProjectSFile)_ = -d_stm8s103_ds18b20_dtemp_
24.3.3. 주요 API 함수 목록
/* 온도 읽기 및 정보 출력 */
int16_t DS18B20_ReadTemperature(void);  // 최종 온도 데이터 반환
void ds18b20_info(void);                // 프로젝트 도움말 출력
void ds18b20_read_auto(uint16_t interval); // 지정 간격 자동 측정

/* 하위 레벨 1-Wire 제어 함수 */
void DS18B20_Mode_Out(void);            // 데이터 핀을 출력으로 설정
void DS18B20_Mode_In(void);             // 데이터 핀을 입력으로 설정
uint8_t DS18B20_Reset(void);            // 센서 초기화 및 응답 확인
void DS18B20_WriteByte(uint8_t data);   // 1바이트 데이터 전송
uint8_t DS18B20_ReadByte(void);         // 1바이트 데이터 수신

24.3.4. 추가 하드웨어 정보

DS18B20 모듈 구매처

구매처
동작 요약 본 예제는 GPIO 핀 하나만을 사용하여 고정밀 온도 데이터를 획득하는 과정을 다룹니다. 특히 하드웨어 레지스터를 직접 제어하여 마이크로초 단위의 지연 시간을 구현하고, 통신 방향(입/출력)을 실시간으로 제어하는 임베디드 핵심 로직을 학습할 수 있습니다.