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์น๋ง ๋๋ ์ฃผ๋ฉด ๋๊ฒ ์ง?...
- ๋ -
์ ๋ด์ฉ์ ์จ์ต๋ ์ผ์๋ฅผ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ฉด ์๋์ ๋งํฌ๋ฅผ ํตํด ๊ตฌ๋งคํด๋ณผ ์๋ ์์ ๊ฒ์ด๋ค.
'Embedded HW & FW > STM (M3,4,7...)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[STM] STM32F103์ผ๋ก ์ ์ธ์ (IR) ์จ๋ ์ผ์๋ฅผ I2C๋ก ์ ์ดํ๊ธฐ (0) | 2023.04.27 |
---|---|
[STM] STM32F103C8T6์ผ๋ก ADXL345 ๊ฐ์๋(์์ด๋ก) ์ผ์ I2C๋ก ์ ์ดํ๊ธฐ (0) | 2023.04.26 |
[STM32F103] UART TEST CODE (NO HAL) (0) | 2023.01.04 |
[STM] STM32F103, ADC 2์ฑ๋ ์ฝ๊ธฐ (0) | 2022.09.14 |
[STM] MCU SPI ์ธํ (0) | 2022.09.14 |
์ต๊ทผ๋๊ธ