STM์˜ MCU์ธ STM32F103C8T6์œผ๋กœ SHT20 ์˜จ์Šต๋„ ์ œ์–ด๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์˜จ๋„์™€ ์Šต๋„ ๊ฐ’์„ ๊ณ„์ธกํ•ด ๋ณด์ž. ์ด๋•Œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” I2C์ด๋‹ค.

 

SHT20์˜ ์–ด๋“œ๋ ˆ์Šค์™€ ์ปค๋ฉ˜๋“œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๋””ํŒŒ์ธํ•˜์˜€๋‹ค.

#define SHT20_ADDRESS			0x80
#define TEMP_CMD				0xF3
#define HUMI_CMD				0xF5

 

๋ณ€์ˆ˜๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์„ ์–ธํ•˜์˜€๋‹ค.

U08 buffer[2];
float temp = 0.0f;
float humi = 0.0f;

 

์ดˆ๊ธฐํ™”๋Š” ๋”ฑํžˆ ํ• ๊ฑด ์—†์ง€๋งŒ ๋ฆฌ์…‹์„ ํ•จ ํ•ด์ฃผ๊ฒ ๋‹ค.

void tempInit(void)
{
	buffer[0] = 0xFE;	// RESET COMMAND
	// reset
	HAL_I2C_Master_Transmit(&hi2c1, SHT20_ADDRESS, buffer, 1, HAL_MAX_DELAY);
}

 

์˜จ๋„์šฉ ํ•จ์ˆ˜์™€ ์Šต๋„์šฉ ํ•จ์ˆ˜๋ฅผ ๋ณ„๊ฐœ๋กœ ๊ตฌ์„ฑํ•˜์˜€๋‹ค.

๋จผ์ € ์˜จ๋„์šฉ ํ•จ์ˆ˜์ด๋‹ค.

void Temp(void)
{
	buffer[0] = TEMP_CMD;

	// ์˜จ๋„ ์ธก์ • ๋ช…๋ น์–ด ์ „์†ก
	HAL_I2C_Master_Transmit(&hi2c1, SHT20_ADDRESS, buffer, 1, HAL_MAX_DELAY);
	Delay_ms(80);

	// ์ธก์ •์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
	HAL_I2C_Master_Receive(&hi2c1, SHT20_ADDRESS, buffer, 2, HAL_MAX_DELAY);

	// ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜จ๋„ ๊ณ„์‚ฐ
	// T = -46.85 + 175.72 * SRH / 2RES(2^16)
	// SRH : (float)(buffer[0] << 8 | buffer[1] ))
	// 2RES : 65536.0f
	temp = (175.72f *  (float)(buffer[0] << 8 | buffer[1] )) / 65536.0f - 46.85f;
}

 

๋‹ค์Œ์€ ์Šต๋„์šฉ ํ•จ์ˆ˜์ด๋‹ค.

void Humi(void)
{
	buffer[0] = HUMI_CMD;

	// ์Šต๋„ ์ธก์ • ๋ช…๋ น์–ด ์ „์†ก
	HAL_I2C_Master_Transmit(&hi2c1, SHT20_ADDRESS, buffer, 1, HAL_MAX_DELAY);
	Delay_ms(80);

	// ์ธก์ •์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
	HAL_I2C_Master_Receive(&hi2c1, SHT20_ADDRESS, buffer, 2, HAL_MAX_DELAY);

	// ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์Šต๋„ ๊ณ„์‚ฐ
	// RH(์ƒ๋Œ€์Šต๋„) = -6 + 125 * SRH / 2^16
	humi = (125.0f * (float)(buffer[0] << 8 | buffer[1])) / 65536.0f - 6.0f;
}

 

์ด์ œ ๋ฉ”์ธ๋ฌธ์— ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ๋™์ž‘ํ•˜๊ฒ ์ง€.

 

์ฝ˜์†”๋กœ ๋ณธ ๊ฒฐ๊ณผ์ด๋‹ค.

์•ฝ 23.4๋„์˜ ์˜จ๋„์™€ 31.9%์˜ ์Šต๋„๋ผ๋Š”๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ํ•„ํ„ฐ๋ง ์ „ํ˜€ ์—†๋Š” ๊ฐ’์ด๋‹ค. ์บฌ์บฌ์บฌ์บฌ

์†๊ฐ€๋ฝ์„ ์„ผ์„œ ์ฃผ๋ณ€์— ๊ฐ€๊นŒ์ดํ•˜๊ฑฐ๋‚˜ ์ž…๊น€์„ ๋ถˆ์–ด์ฃผ๋ฉด ๋‘ ๊ฐ’์ด ๋ณ€ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ์‹œํŠธ์—์„œ ์ฐธ๊ณ ํ•œ ๋‚ด์šฉ์ด๋‹ค. ๋ช…๋ น์–ด ํ‘œ์™€ ํ”„๋กœํ† ์ฝœ ๋‚ด์šฉ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  I2C๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (์•„๋ž˜ ์‹ ๊ณ„์‚ฐ ํ›„ ๋ณด์ด๋Š” ๊ฐ’์„ ์“ฐ๋ฉด ๋˜๊ฒ ๋‹ค.)

ํ•˜๋‚˜ ๋”..

์œ„์— ๋”œ๋ ˆ์ด 80ms๋ฅผ ์ค€๊ฒŒ ์žˆ๋Š”๋ฐ, ์ด ์„ผ์„œ์˜ ์ตœ๋Œ€ ํ•ด์ƒ๋„๊ฐ€ 14๋น„ํŠธ์ธ๋ฐ ์œ„ ํ‘œ๋ฅผ ๋ณด๋ฉด 14๋น„ํŠธ ํ•ด์ƒ๋„์ผ๋•Œ Tmax๊ฐ€ 85ms์ธ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์„ผ์„œ๊ฐ€ ๊ณ„์ธก์„ ์œ„ํ•ด ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. ์œ„ ํ”„๋กœํ† ์ฝœ์—๋„ ์Šคํƒ‘ ํ›„ ๋ฉ”์ €๋ง ๋‹ค์Œ ์Šคํƒ€ํŠธํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ตœ๋Œ€ 85ms ์ด๋‚ด์—์„œ ๊ณ„์ธก์— ์˜ํ–ฅ์ด ์—†๋Š” ์ˆ˜์ค€์—์„œ ๋”œ๋ ˆ์ด๋ฅผ ์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค. (์‹œ๊ฐ„์„ ๋„ˆ๋ฌด ๋บ๊ธฐ๋‹ˆ ์ ์ •๊ฐ’์€ ์ฐพ์•„์•ผํ•  ๊ฒƒ์ด๋‹ค.)

๊ทธ๋ฆฌ๊ณ  ํ•ด์ƒ๋„ 14๋น„ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„์— ์ˆ˜์‹์— ๋ณด๋ฉด 2์˜ 16์Šน์œผ๋กœ ๋‚˜๋ˆ ์ฃผ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•œ ๋ฐ”์ดํŠธ์— 8๋น„ํŠธ์ด๊ณ  14๋น„ํŠธ๋ฅผ ๋‹ค ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๋ฐ”์ดํŠธ์ธ 16๋น„ํŠธ๋ฅผ ๋ณด๋‚ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2์˜ 16์Šน์œผ๋กœ ๋‚˜๋ˆ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ํ•ด์ƒ๋„๋ฅผ 8๋น„ํŠธ๋กœ ํ•˜๋ฉด 2์˜ 8์Šน๋งŒ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋˜๊ฒ ์ง€?...

 

- ๋ -

 

์œ„ ๋‚ด์šฉ์˜ ์˜จ์Šต๋„ ์„ผ์„œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ๊ตฌ๋งคํ•ด๋ณผ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์•„๋‘์ด๋…ธ SHT20 ์˜จ์Šต๋„์„ผ์„œ SHT20-I2C-MODULE

 

๋ฐ˜์‘ํ˜•
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."