MCP3008 + ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์๋ ๋ก๊ทธ ์ผ์๊ฐ ๋ฐ๊ธฐ ( ๊ฐ๋ณ์ ํญ , ํ์ด์ฌ Python )
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ ์๋์ด๋ ธ์๋ ๋ค๋ฅด๊ฒ ์๋ ๋ก๊ทธ ์ผ์๊ฐ์ ์์ฒด์ ์ผ๋ก ์ฝ์ด์ค์ง ๋ชปํฉ๋๋ค. ๋ฐ๋ผ์ MCP3008๊ณผ ๊ฐ์ ์ ํ์ ์ด์ฉํ์ฌ, ์๋ ๋ก๊ทธ ๊ฐ์ ๋์งํธ ๊ฐ์ผ๋ก ๋ฐ๊พผ ํ (Convert) ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ๋ฃ์ด์ฃผ์ด์ผํฉ๋๋ค. ์กฐ๋์ผ์ (CDS) , ์๋ ฅ์ผ์, ์จ๋ฏธ์คํฐ... ๋ฑ๋ฑ ๋ง์ ์๋ ๋ก๊ทธ ์ผ์๊ฐ ์์ง๋ง, ์ผ๋จ ๊ฐ๋ณ์ ํญ์ ์ด์ฉํด๋ณด์์ต๋๋ค.

Datasheet๋ ์ ์ฌ์ง๊ณผ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด 3B+ ๋ชจ๋ธ์ ์ฌ์ฉํ์ต๋๋ค.

์ฐ๊ฒฐ ํ
| Raspberry Pi (๋ผ์ฆ๋ฒ ๋ฆฌํ์ด) | MCP 3008 |
| SCLK | CLK |
| MOSI | DIN |
| MISO | DOut |
| CE 0 | CS/SHDN |
| 3.3V | VDD, VREF |
| GND | DGND , AGND |
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ์ ํญ์ ๋ค๋ฆฌ๊ฐ ์ด 3๊ฐ์ธ๋ฐ, ์ผ์ชฝ๋ถํฐ GND / (mcp3008์) CH 0 / 3.3V ์ ์ฐ๊ฒฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค.

์ผ์๊ฐ์ ๋ฐ๊ธฐ์ํด์๋ SPI ํต์ ์ ์ค์ ํ๋๊ฒ ์ ํ๋์ด์ผ ํฉ๋๋ค.
-> sudo raspi-config ๋ก ์ค์ ํ๋ฉด์ ๋ค์ด๊ฐ์ค๋๋ค.


๋ค์ SPI๋ฅผ Enable๋ก ๋ฐ๊พธ์ด์ฃผ๋ฉด ์ค์ ์ ๋์ ๋๋ค.
๋ค์์ ๊ฐ๋ณ์ ํญ์ ๋๋ ค๊ฐ๋ฉฐ ์ ์์ด ๋ฐ๋๋๊ฒ์ ์ ๋ฐ์์ค๋์ง ํ์ธํด๋ด ๋๋ค.
import time
import spidev
spi=spidev.SpiDev()
spi.open(0, 0) /0๋ฒ์ฑ๋ ์คํ
spi.max_speed_hz=1000000
def ReadVol(vol):
adc=spi.xfer2([1,(8+vol)<<4,0])
data=((adc[1]&3)<<8)+adc[2]
return data
mcp3008=0
while True :
a_1 = ReadVol(mcp3008)
print('readvol : ' , a_1 , 'Voltage:' , 3.3*a_1/1024 )
time.sleep(0.5)
๊ฒฐ๊ณผ๊ฐ์
readvol : 1023 Voltage : 3.29677773431
readvol : 857 Voltage : 2.7652476513
readvol : 185 Voltage : 0.73175137135
์ด๋ฌํ ํ์์ผ๋ก ๋์ค๊ฒ ๋ฉ๋๋ค. ๋ค์ํฌ์คํ ์ ์ด ๊ฐ์ผ๋ก ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค.