[์ด๊ธ] ์์น๋ ์ ์ ํ์ํ ๊น? ์๋ฌด๋ ๋ฆฌ์ ๋ฒํผ์ ๋๋ฌ ์ค ์ ์์ ๋
ํ ์ค ๋ต: ์์น๋ ์ ๋ฉ์ถ ๊ธฐ๊ณ๋ฅผ ์ค์ค๋ก ๋ค์ ์ผ์ผ์ผ ์ธ์ฐ๋ "์๋ ๋ฆฌ์ ๋ฒํผ"์ด์์.
์ฝ๋๊ฐ ์ ์์ผ ๋๋ ์ ํด์ง ์๊ฐ๋ง๋ค ์์น๋ ์๊ฒ "๋ ์ด์ ์์ด" ์ ํธ(ํด๋ฆฌ์ด)๋ฅผ ๋ณด๋ ๋๋ค. ์ด ์ ํธ๊ฐ ๋๊ธด ์ฑ ํ์์์์ด ์ง๋๋ฉด ์์น๋ ์ด MCU๋ฅผ ๋ฆฌ์ ํ์ฃ . ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ ์ฃผ์ง ์์ง๋ง, ๊ธฐ๊ณ๊ฐ ๋ฉ์ถ ์ฑ๋ก ์์ํ ์ ์๋ ์ต์ ์ ์ํฉ๋งํผ์ ๋ง์ ์ค๋๋ค.
๋จผ์ ์์๋ ์ฉ์ด
| ์ฉ์ด | ์๋ ์ด๋ฆ | ์ฝ๊ฒ ๋งํ๋ฉด |
|---|---|---|
| ์์น๋ | Watchdog Timer (WDT) | ์ ํด์ง ์๊ฐ ์์ "๋ ์ด์ ์์ด" ์ ํธ๊ฐ ์์ผ๋ฉด ์นฉ์ ๊นจ์ฐ๋ ๊ฒฝ๋น๊ฒฌ ํ์ด๋จธ |
| ๋ฆฌ์ | Reset | ์นฉ์ ๋ง ์ ์์ ์ผ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ. ํ๋ง๋๋ก ์ฌ๋ถํ |
| ํด๋ฆฌ์ด | Clear (Refresh, Kick, Feed๋ผ๊ณ ๋ ํด์) | ๊ฒฝ๋น๊ฒฌ์๊ฒ ๋ฐฅ ์ฃผ๊ธฐ. ์ธ๋ ์๊ฐ์ ์ฒ์์ผ๋ก ๋๋๋ ค์ |
| ํ์์์ | Timeout | ๋ฐฅ ์์ด ๋ฒํธ ์ ์๋ ์ต๋ ์๊ฐ. ๋๊ธฐ๋ฉด ์ง์ด์ |
| MCU | Micro Controller Unit | ์ ์ด๊ธฐ ์์ ๋ ์์ ์ปดํจํฐ ํ ์นฉ |
| ํ๋ธ์์ฑ | CubeSat | ํ ๋ณ 10cm ์ ์ก๋ฉด์ฒด๋ฅผ ๋จ์๋ก ๋ง๋๋ ์ด์ํ ์์ฑ |
| LED | Light Emitting Diode | ์ ๊ธฐ๋ฅผ ๋ฃ์ผ๋ฉด ๋น๋๋ ์์ ์ ๊ตฌ. ๋ณด๋๊ฐ ์ด์ ์๋์ง ๋ณด์ฌ ์ฃผ๋ ์ ํธ๋ฑ |
| ๋ฌดํ ๋ฃจํ | Infinite Loop | ๋น ์ ธ๋๊ฐ ๋ฌธ์ด ์๋ ํ์ ๋ฌธ. ์ฝ๋๊ฐ ๊ฐ์ ๊ณณ์ ์์ํ ๋์์ |
| ๋ฐ์ง๊ธฐ | Oscillator | ์๊ฐ์ ์ธ๋ ๋ฐฐ๊ผฝ์๊ณ. ์จ๋ยท์ ์์ ๋ฐ๋ผ ์กฐ๊ธ ๋นจ๋ผ์ง๊ฑฐ๋ ๋๋ ค์ ธ์ |
| ๊ณต์ฐจ | Tolerance | ์ค๋ช ์๊ฐ "์ด๋งํผ๊น์ง๋ ํ์ด์ ธ๋ ์ ์"์ด๋ผ๊ณ ์ฝ์ํ ๋ฒ์. ์: ยฑ15% |
| ๊ณ ์ฅ ์ฃผ์ ์ํ | Fault Injection Test | ์ผ๋ถ๋ฌ ๊ณ ์ฅ์ ๋ด์ ์์ ์ฅ์น๊ฐ ์ ๋๋ก ๋๋์ง ๋ณด๋ ์๋ฐฉ ํ๋ จ |
| GPIO | General Purpose Input/Output | ์ผฐ๋ค ๊ป๋ค ํ ์ ์๋ ๋ค์ฉ๋ ํ. ๋๋ฒ๊น ์ฉ ์ ํธ๋ฑ์ผ๋ก๋ ์จ์ |
| ํ๋ค์ด ์ ํญ | Pull-down Resistor | ์๋ฌด๋ ์ก๊ณ ์์ง ์์ ๋ ํ์ 0V ์ชฝ์ผ๋ก ์ด์ง ๋์ด๋ด๋ฆฌ๋ ๊ณ ๋ฌด์ค |
| ๋ก์ง ์ ๋๋ผ์ด์ | Logic Analyzer | ํ์ด ์ผ์ง๊ณ ๊บผ์ง๋ ์๊ฐ์ ์๊ฐ ์์๋๋ก ์ฐ์ด ์ฃผ๋ ๊ณ ์ ์นด๋ฉ๋ผ |
| ๋ฆฌ์ ์์ธ ๋ ์ง์คํฐ | Reset Cause (Reset Factor) Register | ์ ์ฌ๋ถํ ๋๋์ง ์ ์ด ๋๋ ๋ธ๋๋ฐ์ค ๋ฉ๋ชจ |
| ์ธํฐ๋ฝํธ | Interrupt | ํ๋ ์ผ์ ์ ๊น ๋ฉ์ถ๊ณ ๊ธํ ์ผ๋ถํฐ ์ฒ๋ฆฌํ๊ฒ ํ๋ ์ด์ธ์ข |
| ํญ์ฃผ | Runaway | ํ๋ก๊ทธ๋จ์ด ๊ธธ์ ์๊ณ ์๋ฑํ ๊ณณ์ ๋น๋น ๋๋ ์ํ |
| ์๋์ฐ ์์น๋ | Window Watchdog Timer (WWDT) | ๋๋ฌด ๋ฆ์ด๋, ๋๋ฌด ์ผ๋ฌ๋ ์ง๋ ๊น๊นํ ๊ฒฝ๋น๊ฒฌ |
์์น๋ ์ ์ ํ์ํ ๊น? ๋๋ฆฌํธ ํ๋ธ์์ฑ์ "๊ป๋ค ์ผ๊ธฐ" ์ด์ผ๊ธฐ
2025๋ 11์ 27์ผ ์๋ฒฝ, ๋๋ฆฌํธ 4์ฐจ ๋ฐ์ฌ๊ฐ ์์์ต๋๋ค. ์ฃผํ์ฌ์์ฑ๊ณผ ํจ๊ป ํ๋ธ์์ฑ 12๊ธฐ๊ฐ ๊ถค๋์ ์ฌ๋ผ๊ฐ๋๋ฐ, ๋ฉฐ์น ์ด ์ง๋๋๋ก ๊ทธ์ค 3๊ธฐ๋ ์ง์๊ตญ๊ณผ ์ฐ๋ฝ์ด ๋ฟ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ค 12์ 4์ผ๋ถํฐ 6์ผ ์ฌ์ด์ ์ธ ์์ฑ์ด ํ๋์ฉ "์ ์ด์ ์์ด์" ์ ํธ๋ฅผ ๋ณด๋ด์์ฃ .
ํน์ ์ด๋ฐ ์๊ธฐ ๋ค์ด ๋ณด์ จ๋์? "์์ ๋ ์๊ฐ๊น์ง ๊ต์ ์ด ์ ๋๋ฉด ์์ฑ์ด ์ค์ค๋ก ์ฌ๋ถํ ํ๋๋ฐ, ๊ทธ ๋์ ๋ค์ ์ฐ๋ฝ์ด ๋๋ค"๋ ์ํ ์ด์ผ๊ธฐ์. ๋ค๋ง ์ธ ์์ฑ์ด ์ ๋ฆ๊ฒ ์ฐ๋ฝ๋๋์ง๋ ๊ณต์ ๋ฐํ์ ๋์ค์ง ์์์ต๋๋ค. ๋ฐํ์๋ ์ ํํ ๊ถค๋ ์ ๋ณด๋ก ๊ณ์ ๊ต์ ์ ์๋ํ๋ค๋ ์ ๋๋ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ด์ผ๊ธฐ๋ "๊ทธ๋ฌ์ ์๋ ์๋ ์ผ"๋ก ๋ค์ด ์ฃผ์ธ์.
๊ทธ๋๋ ๊ฐ๋ฐ์๋ผ๋ฉด ์ด ์๊ธฐ์ ์ํ๊ฒ ๊ณต๊ฐํ๊ฒ ๋ฉ๋๋ค. ์ค์ ๋ก ํ๋ธ์์ฑ ์ ์ ์ฅ์น์๋ "์ง์์์ ์ผ์ ์๊ฐ ์์์ด ์์ผ๋ฉด ์ ์์ ๊ป๋ค ์ผ๋" ๊ฐ์ ํ์ด๋จธ๋ฅผ ๋ฃ๋ ๊ฒฝ์ฐ๊ฐ ํํ๊ฑฐ๋ ์. ์๋ฐฑ km ์์์ ๋ฉ์ถ ์์ฑ์ ๋๊ตฌ๋ ๋ฆฌ์ ๋ฒํผ์ ๋๋ฌ ์ค ์ ์์ผ๋๊น์. "์ผ๋จ ๊ป๋ค ์ผ ๋ณด์ธ์"๋ฅผ ๊ธฐ๊ณ๊ฐ ์ค์ค๋ก ํ๊ฒ ๋ง๋ ์ ์ ๋๋ค.
์ด ๊ฐ์ ํ์ด๋จธ์ ์นฉ ๋ฒ์ ์ด ๋ฐ๋ก ์์น๋ ์ ๋๋ค. ์ฐ์ฃผ๋ง ๊ทธ๋ฐ ๊ฒ ์๋์์. ๋ฌ๋ฆฌ๋ ์ฐจ ์์ ์ ์ด๊ธฐ, ๊ณต์ฅ ์ฒ์ฅ์ ๋ฌ๋ฆฐ ์ค๋น, ์ฐ๊ผญ๋๊ธฐ ํต์ ์ฅ๋น๋ ๋ฉ์ท๋ค๊ณ ๋๊ฐ ๋ฐ๋ก ๋ฌ๋ ค๊ฐ ์ ์์ ๋ฝ์ ์ค ์ ์์ฃ . ์ฌ๋ ์์ด ๋ฟ์ง ์๋ ๊ธฐ๊ณ์ผ์๋ก "๋ฉ์ถ๋ฉด ์ค์ค๋ก ๋ค์ ์ผ์ด๋๋" ์ฅ์น๊ฐ ๊ผญ ํ์ํฉ๋๋ค.
์ด๋ฐ ์ผ ๊ฒช์ด๋ณธ ์ ์๋์? ๊ฐ๋ ๋จนํต์ด ๋๋ ๋ณด๋
์ง ๊ณต์ ๊ธฐ๊ฐ ๋จนํต์ด ๋ผ์ ์ ์์ ๋ฝ์๋ค ๊ฝ์๋๋ ๋ฉ์ฉกํด์ง ๊ฒฝํ, ํ ๋ฒ์ฏค ์์ผ์์ฃ ? ํ์จ์ด๋ ๋๊ฐ์ต๋๋ค. ๋ณด๋์ LED๊ฐ ์ ๊น๋นก์ด๋ค๊ฐ ๋ช ์๊ฐ์ ํ ๋ฒ ๋ฑ ๋ฉ์ถ๊ณ , ์ ์์ ๋ค์ ๋ฃ๊ธฐ ์ ๊น์ง๋ ๋์์ค์ง ์์์.
์์ธ์ ์ฐพ์๋ณด๋ฉด ์ด๋ฐ ์ฝ๋๊ฐ ์ ๋ง ์์ฃผ ๋์ต๋๋ค.
function ReadSensor()
SendRequest(SENSOR_TEMP)
while ResponseReceived() == false
// wait... forever, if the sensor never answers
end while
return ReadResponse()
end function
SendRequest = ์ผ์์ ๊ฐ ์์ฒญ, ResponseReceived = ์๋ต์ด ์๋์ง ํ์ธํ๋ ํจ์์์. ์ด๋ฆ์ ์์๋ผ ์ฐ๋ MCU์ ๋ง๊ฒ ๋ฐ๊พธ๋ฉด ๋ผ์.
์ผ์๊ฐ ๋ ธ์ด์ฆ ๋๋ฌธ์ ์๋ต์ ๋ฑ ํ ๋ฒ๋ง ๋์ณ๋, ์ฝ๋๋ ์ด while ๋ฌธ์์ ์์ํ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ด๊ฒ ๋ฐ๋ก ๋ฌดํ ๋ฃจํ์์. ๊ทผ๋ณธ ํด๊ฒฐ์ "์ต๋ ๋ช ms๊น์ง๋ง ๊ธฐ๋ค๋ฆฐ๋ค"๋ ์ ํ์ ๋๋ ๊ฒ์ด๊ณ , ์ด๊ฑด ๊ผญ ํ์ ์ผ ํฉ๋๋ค. ํ์ง๋ง ์ธ์ ๋ชจ๋ ๋ฒ๊ทธ๋ฅผ ์ถ์ ์ ์ ๋ค ์ฐพ์ ์๋ ์์์์. ๊ทธ๋์ "์ด๋ค ์ด์ ๋ก๋ ๋ฉ์ถ๋ฉด ๋ค์ ์ผ์ด๋๊ฒ" ํ๋ ๋ง์ง๋ง ์์ ๋ง์ด ํ์ํ ๊ฒ๋๋ค.
๋น์ ๋ก ๋ณด๋ ์์น๋ ์๋ฆฌ: ๋ฐฅ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ๋น๊ฒฌ
์์น๋ ์ ์ง์ ์งํค๋ ๊ฒฝ๋น๊ฒฌ์ด๋ผ๊ณ ์๊ฐํด ๋ณผ๊ฒ์. ์ฃผ์ธ(์ ์์ ์ผ๋ก ๋๋ ์ฝ๋)์ ์ ํด์ง ๊ฐ๊ฒฉ์ผ๋ก ๊ฐ์๊ฒ ๋ฐฅ์ ์ค๋๋ค. ๋ฐฅ์ ๋ฐ์ผ๋ฉด ๊ฐ๋ ๋ฐฐ๊ณ ํ ์๊ณ๋ฅผ ์ฒ์์ผ๋ก ๋๋ ค๋๊ณ ์กฐ์ฉํ ๊ธฐ๋ค๋ ค์. ๊ทธ๋ฐ๋ฐ ์ฃผ์ธ์ด ์ฐ๋ฌ์ ธ์ ๋ฐฅ์ด ๋๊ธฐ๋ฉด, ๋ฐฐ๊ณ ํ์ด ํ๊ณ์ ๋ฟ๋ ์๊ฐ ๊ฐ๊ฐ ํฌ๊ฒ ์ง์ด ์ง ์ ์ฒด๋ฅผ ๊นจ์๋๋ค.
ํ์ ์ฉ์ด๋ก ๋ฐ๊พธ๋ฉด ๋ฐฅ ์ฃผ๊ธฐ๋ ํด๋ฆฌ์ด, ๋ฐฐ๊ณ ํ ํ๊ณ๋ ํ์์์, ์ง์ด์ ๊นจ์ฐ๊ธฐ๋ ๋ฆฌ์ ์ ๋๋ค. ์๋ ๊ทธ๋ฆผ์์ ํฑ๋ ๋ชจ์์ด ์์น๋ ์ด ์ธ๋ ์๊ฐ์ด์์. ๋ฐฅ์ ์ค ๋๋ง๋ค ๋ ๋จ์ด์ง๊ณ , ์ฝ๋๊ฐ ๋ฉ์ถ๋ฉด ๋๊น์ง ์ฌ๋ผ๊ฐ์ฃ .
์ฌ๊ธฐ์ ๊ผญ ์๊ณ ๋์ด๊ฐ์ผ ํ ์ ์ด ํ๋ ์์ต๋๋ค. ์ฝ๋๊ฐ ๋ฉ์ท๋๋ฐ ์์น๋ ์ ์ด๋ป๊ฒ ๊ณ์ ์๊ฐ์ ์ ๊น์? ์์น๋ ์ ์ฝ๋๊ฐ ์๋๋ผ MCU ์์ ๋ฐ๋ก ๋ค์ด ์๋ ํ๋์จ์ด ํ์ด๋จธ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ง์ MCU์์๋ ์ ์ฉ ๋ฐ์ง๊ธฐ๋ก ๋ฐ๋ก ๋๊ธฐ ๋๋ฌธ์, ์ฝ๋๊ฐ ์ด๋์ ๋ฉ์ถ๋ ํผ์์ ๋ฌต๋ฌตํ ์๊ฐ์ ์ ๋๋ค.
[์์] ์ฝ๋๊ฐ ๋ฉ์ถ๋ฉด ๋ช ms ๋ค์ ๋ค์ ์ด์๋ ๊น?
์ฌ๋ก ๋ณด๋๋ ํ์์์์ 100ms๋ก ๋๊ณ , 10ms๋ง๋ค ํด๋ฆฌ์ดํฉ๋๋ค. ๋ฉ์ถ ๋ค ๋ฆฌ์ ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ด๋ ๊ฒ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๋ฉ์ถ ๋ค ๋ฆฌ์ ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ = ํ์์์ โ ๋ง์ง๋ง ๋ฐฅ ์ดํ ์ด๋ฏธ ์ง๋ ์๊ฐ
๋ฐฅ์ ์ค ๋ฐ๋ก ์งํ์ ๋ฉ์ถ๋ฉด 100 โ 0 = 100ms๋ก ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ค์ ๋ฐฅ ์ง์ ์ ๋ฉ์ถ๋ฉด ์ด๋ฏธ 10ms๊ฐ ์ง๋ ์ํ๋ผ 100 โ 10 = 90ms๋ก ๊ฐ์ฅ ๋นจ๋ผ์. ๊ทธ๋์ [์์]์ "๋ฉ์ถ ๋ค 90 ~ 100ms ์ฌ์ด์ ๋ฆฌ์ ๋๊ณ , LED๊ฐ ๋ค์ ๊น๋นก์ธ๋ค"์ ๋๋ค. ์์น๋ ์ด ์์ผ๋ฉด? ์ ์์ ๋ค์ ๋ฃ๊ธฐ ์ ๊น์ง ์์ํ ๋ฉ์ถฐ ์์ ๊ฑฐ์์.
์ ๋ง ๊ทธ๋ฐ์ง ํ์ธํ๊ธฐ: ์ผ๋ถ๋ฌ ๋ฉ์ถฐ ๋ณด๊ธฐ
์์น๋ ์ด ์ ๋๋ก ๋๋์ง๋ ์ผ๋ถ๋ฌ ๊ณ ์ฅ์ ๋ด ๋ด์ผ ์ ์ ์์ต๋๋ค. ํ์ ์์ ์ด๊ฑธ ๊ณ ์ฅ ์ฃผ์ ์ํ์ด๋ผ๊ณ ๋ถ๋ฌ์. ์ํ ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ทธ๋ค์ ์ฐจ๋ก์ ๊ฐ์ง ๋ฌดํ ๋ฃจํ์ ๋น ์ง๊ฒ ๋ง๋ค๊ณ , ํ์์ฉ GPIO ํ์ ์ด์ ์๋ ๋์ ์ผ ๋ฌ์. ๋ก์ง ์ ๋๋ผ์ด์ ์ ํ์ชฝ ์ ๋ ฅ์ ๋ฒํผ ์ ํธ๋ฅผ, ๋ค๋ฅธ ์ชฝ ์ ๋ ฅ์ ์ด ํ์ ๋ฌผ๋ฆฌ๋ฉด "๋ฒํผ์ด ๋๋ฆฐ ์๊ฐ๋ถํฐ ๋ฆฌ์ ์ผ๋ก ํ์ด ๊บผ์ง๋ ์๊ฐ๊น์ง"๋ฅผ ์ด ์ ์์ต๋๋ค. ๋ฒํผ์ด ๋๋ฆฐ ์๊ฐ์ด ๊ณง ๊ณ ์ฅ์ด ๋ ์๊ฐ์ด์์. ๊ทธ ๋ค๋ก๋ ๋ฐฅ์ด ํ ๋ฒ๋ ๋๊ฐ์ง ์๊ฑฐ๋ ์.
WDT_TIMEOUT_MS = 100
TASK_PERIOD_MS = 10
function Main()
resetCause = ReadResetCause() // read first, before anything else
SaveResetLog(resetCause)
SetAllOutputsSafe() // start from a safe state
WDT_Start(WDT_TIMEOUT_MS)
GPIO_Write(PIN_ALIVE, HIGH) // mark: running (drops at reset)
loop forever
WaitUntilNextTick(TASK_PERIOD_MS)
UpdateLed()
CheckTestButton()
WDT_Clear() // "I'm alive"
end loop
end function
// Test build only: fake hang
function CheckTestButton()
if TestButtonPressed()
loop forever
// stuck on purpose, no clear
end loop
end if
end function
WaitUntilNextTick = ๋ค์ 10ms ๋ฐ์๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ, WDT_Clear = ์์น๋
์๊ฒ ๋ฐฅ ์ฃผ๊ธฐ, PIN_ALIVE = ์ด์ ์๋ ๋์ ์ผ ๋๋ ํ์์ฉ ํ์ด์์. ํ์ ํ๋ค์ด ์ ํญ์ ๋ฌ์ ๋๋ฉด ๋ฆฌ์
์๊ฐ ํ์ด ๊บผ์ ธ์ ๋ ์ง์ ์ด ๋ณด์
๋๋ค. ์ด๋ฆ์ ์์๋ผ ์ฐ๋ MCU์ ๋ง๊ฒ ๋ฐ๊พธ๋ฉด ๋ผ์.
[๊ฒฐ๊ณผ] ์์น๋ ์ด ์์๋๋ก ์ด๋ ค ๋์๊น?
โป ์๋ ์์น๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํ ์ฌ๋ก ๊ฐ์ด์์. ์ฌ๋ฌ๋ถ ๋ณด๋์์ ์ ๋ฐฉ๋ฒ์ผ๋ก ์ง์ ์ฌ ๋ณด์ธ์.
์ํ ๋ฒํผ์ 20๋ฒ ๋๋ฌ์ ๋ฉ์ถค๋ถํฐ ๋ฆฌ์
๊น์ง ์๊ฐ์ ์์ต๋๋ค. ๋น๊ต๋ฅผ ์ํด WDT_Start ์ค์ ๋บ ๋ฒ์ ์ผ๋ก๋ ํ ๋ฒ ์ํํ์ด์.
| ํญ๋ชฉ | [์์] | [๊ฒฐ๊ณผ] | ๋น๊ต |
|---|---|---|---|
| ์์น๋ ์์ด ๋ฉ์ถ๋ฉด | ์์ํ ๋ฉ์ถค | 10๋ถ ๊ธฐ๋ค๋ ค๋ ๋ฉ์ถค, ์ ์์ ๋ค์ ๋ฃ์ด์ผ ๋ณต๊ตฌ | ์ผ์น |
| ๋ฉ์ถ ๋ค ๋ฆฌ์ ๊น์ง | 90 ~ 100ms | 94.3 ~ 104.1ms | ์์ชฝ ๋ชจ๋ ์ฝ 4ms ๋ฆ์ |
| ๋ฆฌ์ ๋ค LED ๋ณต๊ตฌ | ๋งค๋ฒ ๋ณต๊ตฌ | 20ํ ์ค 20ํ ๋ณต๊ตฌ | ์ผ์น |
| ๋ฆฌ์ ์์ธ ๋ ์ง์คํฐ | ์์น๋ | 20ํ ๋ชจ๋ ์์น๋ ์ผ๋ก ๊ธฐ๋ก | ์ผ์น |
์์น๋ ์ ์์๋๋ก ๋งค๋ฒ ๋ณด๋๋ฅผ ์ด๋ ค ๋์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์๊ฐ์ด ์์๋ณด๋ค ์์ชฝ ๋ชจ๋ ์ฝ 4ms์ฉ ๋ฆ์์ด์. ๋ฒ์์ ํญ(์ฝ 10ms)์ ๊ทธ๋๋ก์ธ๋ฐ ํต์งธ๋ก ๋ฐ๋ ธ๋ค๋ ๊ฑด, ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ ์์ฒด๊ฐ ๊ธธ์ด์ก๋ค๋ ๋ป์ ๋๋ค.
๋ฒ์ธ์ ์์น๋ ์ ๋ฐฐ๊ผฝ์๊ณ์ธ ๋ฐ์ง๊ธฐ์์. ์ด ๋ฐ์ง๊ธฐ๋ ์ ๋ฐํจ๋ณด๋ค "์ฝ๋์ ์๊ด์์ด ํผ์ ์ด์ ์๋ ๊ฒ"์ด ๋ชฉ์ ์ด๋ผ ๊ณต์ฐจ๊ฐ ๊ฝค ๋์ต๋๋ค. ๊ณต์ฐจ๋ ์นฉ ์ค๋ช ์๊ฐ "์ด๋งํผ๊น์ง๋ ํ์ด์ ธ๋ ์ ์"์ด๋ผ๊ณ ์ฝ์ํ ๋ฒ์์์. ์ด ๋ณด๋๋ ๊ทธ ๋ฒ์ ์์์ ์๊ณ๊ฐ ์ฝ 4% ๋๋ ธ์ด์. ์ด๋ ๊ฒ ํ ๋ณด๋์์ ์ค์ ๋ก ํ์ด์ง ์์ ๋ฐ๋ก ์ค์ฐจ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๋๋ฆฐ ์๊ณ๋ก 100ms ๋๊ธ์ ์ธ๋ฉด ์ค์ ๋ก๋ 100 รท 0.96 โ 104.2ms๊ฐ ๊ฑธ๋ฆฝ๋๋ค. ๊ฐ์ฅ ๋ฆ์ ์ค์ธก 104.1ms์ ๊ฑฐ์ ๊ฐ์ฃ . ๊ฐ์ฅ ๋น ๋ฅธ ์ชฝ๋ 104.2 โ 10 = 94.2ms๋ก, ์ค์ธก 94.3ms์ ๋ง์์.
์ด๋ฒ ๋ณด๋์ ๊ฒฐ๋ก : ํ์์์ 100ms ์ค์ ์ ๊ทธ๋๋ก ์๋๋ค. ๋ฉ์ถ ๋ค ๊ธธ์ด์ผ ์ฝ 0.1์ด ์์ ๋์ด์๋๋, LED ๋ณด๋์๋ ์ถฉ๋ถํ ๋นจ๋ผ์.
๋ค๋ง ์ค๊ณํ ๋ ๋ณด๋ ํ ์ฅ์ ์ค์ธก์ด ์๋๋ผ, ์นฉ ์ค๋ช ์์ ์ ํ ๊ณต์ฐจ ์ ์ฒด๋ฅผ ๋ฃ์ด์ ๊ฐ์ฅ ๋ฆ๊ฒ ๋์ด์๋๋ ์๊ฐ๊น์ง ํ์ธํด์ผ ํฉ๋๋ค.
ํ์ฅ ํ: ์์น๋ ์ฒ์ ์ธ ๋ ํํ ์ค์
ํ์ด๋จธ ์ธํฐ๋ฝํธ ์์์ ๋ฐฅ์ ์ฃผ์ง ๋ง์ธ์. ์ฝ๋ ๋ฆฌ๋ทฐ์์ ์์ฃผ ์ง์ ๋ฐ๋ ๋ถ๋ถ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ฉ์ธ ์ฝ๋๊ฐ ๋ฌดํ ๋ฃจํ์ ๋น ์ ธ๋ ์ธํฐ๋ฝํธ๋ ๊ผฌ๋ฐ๊ผฌ๋ฐ ์ด์ ์์ ์ ์์ด์. ๊ทธ๋ฌ๋ฉด ์์น๋ ์ "์ฃผ์ธ์ด ๋ฉ์ฉกํ๋ค" ํ๊ณ ์์ ๋์ด๊ฐ๋๋ค. ๋ฐฅ์ ๋ฉ์ธ ํ๋ฆ์ด ํ ๋ฐํด๋ฅผ ์ ๋๋ก ๋์์ ๋ ์ฃผ์ธ์.
"์ด์๋ฌ์ผ๋ ๋๋ค"๋ก ๋๋ด์ง ๋ง์ธ์. ์์น๋ ๋ฆฌ์ ์ ์ด๋๊ฐ์ ๋ฒ๊ทธ๊ฐ ์๋ค๋ ์ฆ๊ฑฐ์ ๋๋ค. ๋ถํ ํ์๋ง์ ๋ฆฌ์ ์์ธ ๋ ์ง์คํฐ๋ฅผ ์ฝ์ด ๊ธฐ๋กํด ๋๋ฉด, ํ์ฅ์์ ๋ช ๋ฒ ๋์ด์๋ฌ๋์ง ๋์ค์ ํ์ธํ ์ ์์ด์.
๋์ด์๋ ๋ค์ ์์ ํ ์ํ๋ถํฐ ์์ํ์ธ์. ๋ชจํฐ๋ ํํฐ์ฒ๋ผ ์์ง์ด๋ ์ถ๋ ฅ์ ๋ฆฌ์ ์งํ ์ผ๋จ ๊บผ ๋๊ณ , ์ํ๋ฅผ ํ์ธํ ๋ค์ ๋ค์ ์ผ๋ ๊ฒ ์์ ํฉ๋๋ค.
๊ฐ๋ฐ ์ค ๊บผ ๋ ์์น๋ ์ ์ถ์ ์ ์ ๊ผญ ๋ค์ ์ผ์ธ์. ๋๋ฒ๊น ์ด ํธํ๋ค๊ณ ๊บผ ๋์๋ค๊ฐ ๊ทธ๋๋ก ๋๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๊ฐ๋ณด๋ค ๋ง์ต๋๋ค. ์ถ์ ์ ๊ฒ ๋ชฉ๋ก์ ํ ์ค ๋ฃ์ด ๋์ธ์.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ (FAQ)
Q. ์์น๋ ์ด ์์ผ๋ฉด ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ์ณ๋ ๋๋์?
์๋์. ์์น๋ ์ ๋์ด์ง ๋ค ์ผ์ผ์ผ ์ธ์ ์ค ๋ฟ, ๋์ด์ง๋ ์ด์ ๋ฅผ ์์ ์ฃผ์ง ์์ต๋๋ค. ๋์ด์๋๋ ๋์ ์ ๊น ๋ฉ์ถ๋ ๊ฒ๋ ์ฌ์ฉ์์๊ฒ ๊ณ ์ฅ์ด์์. ์์ ์ผ์ ๋๊ธฐ ์ฝ๋์ฒ๋ผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ ํ์ ๋๋ ์์ผ๋ก ์์ธ๋ ํจ๊ป ๊ณ ์ณ์ผ ํฉ๋๋ค.
Q. ํ์์์์ ์ผ๋ง๋ก ์ ํ๋ฉด ๋๋์?
์ ์์ผ ๋ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ๋ณด๋ค๋ ๋๋ํ ๊ธธ๊ฒ, ๊ธฐ๊ณ๊ฐ ๋ฉ์ถ ์ฑ ๋ฒํ จ๋ ๊ด์ฐฎ์ ์๊ฐ๋ณด๋ค๋ ์งง๊ฒ ์ก์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด ๊ธ์ ์ฌ๋ก์ฒ๋ผ 10ms๋ง๋ค ๋๋ ์ฝ๋๋ผ๋ฉด ์ฃผ๊ธฐ์ 10๋ฐฐ์ธ 100ms๋ก ์ก์ ์ ์์ด์. ๋๋ฌด ์งง์ผ๋ฉด ๋ฉ์ฉกํ๋ฐ๋ ๋ฆฌ์ ๋๊ณ , ๋๋ฌด ๊ธธ๋ฉด ๋ฆ๊ฒ ๋์ด์๋์.
Q. ์์น๋ ์ด ๋ชป ์ก๋ ๊ฒฝ์ฐ๋ ์๋์?
์์ด์. ์ฝ๋๊ฐ ํญ์ฃผํด์ ์๋ฑํ ๊ณณ์ ๋๋ค๊ฐ ๋ฐฅ ์ฃผ๋ ์ฝ๋๋ฅผ ์ฐ์ฐํ ๊ณ์ ๋ถ๋ฅด๋ฉด, ์์น๋ ์ ์ ์์ด๋ผ๊ณ ์ฐฉ๊ฐํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๊น์ง ์ก์ผ๋ ค๊ณ "๋๋ฌด ์ผ์ฐ ์ค๋ ์ง๋" ์๋์ฐ ์์น๋ ์ด ์์ด์.
Q. ๋๋ฒ๊น ํ๋ ค๊ณ ์ฝ๋๋ฅผ ๋ฉ์ถฐ ๋๋ฉด ๋ฆฌ์ ๋ผ์.
์ฝ๋๋ฅผ ๋ฉ์ถ๋ฉด ๋ฐฅ๋ ๋๊ธฐ๋ ๋น์ฐํ ๊ฒฐ๊ณผ์ ๋๋ค. ๋ง์ MCU๊ฐ ๋๋ฒ๊น ๋๊ตฌ๋ก ๋ฉ์ถ ๋์ ์์น๋ ๋ ๊ฐ์ด ๋ฉ์ถ๋ ์ค์ ์ ์ ๊ณตํ๋, ์นฉ ์ค๋ช ์์์ ์ฐพ์๋ณด์ธ์.
์ ๋ฆฌ: ์์น๋ ์ ๋ฉ์ถ ๊ธฐ๊ณ๋ฅผ ์ํ ๋ง์ง๋ง ์์ ๋ง
์ฌ๋ ์์ด ๋ฟ์ง ์๋ ๊ณณ์์ ๊ธฐ๊ณ๊ฐ ๋ฉ์ถ๋ฉด, ๋๊ตฐ๊ฐ ๋ฆฌ์ ๋ฒํผ์ ๋๋ฌ ์ค ๋๊น์ง ์์ํ ๋ฉ์ถฐ ์์ต๋๋ค. ์์น๋ ์ ์ฝ๋์ ๋ฐ๋ก ๋๋ ๊ฒฝ๋น๊ฒฌ์ด๋ผ์, ๋ฐฅ(ํด๋ฆฌ์ด)์ด ํ์์์๋ณด๋ค ์ค๋ ๋๊ธฐ๋ฉด ์ค์ค๋ก MCU๋ฅผ ๊นจ์๋๋ค. ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ ์ฃผ๋ ์ฅ์น๋ ์๋๋ ์์ธ์ ๋ฐ๋ก ๊ณ ์น๊ณ , ๋ฆฌ์ ์์ธ ๋ ์ง์คํฐ๋ก "๋ช ๋ฒ ๋์ด์๋ฌ๋์ง" ๊ผญ ๊ธฐ๋กํด ๋์ธ์. ๊ทธ๋ฆฌ๊ณ ์ถ์ ์ ์ ๊ณ ์ฅ ์ฃผ์ ์ํ์ผ๋ก ์ ๋ง ๋์ด์๋๋์ง ์ง์ ํ์ธํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค.
