๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ ์๋์ด๋
ธ์๋ ๋ค๋ฅด๊ฒ ์๋ ๋ก๊ทธ ์ผ์๊ฐ์ ์์ฒด์ ์ผ๋ก ์ฝ์ด์ค์ง ๋ชปํฉ๋๋ค. ๋ฐ๋ผ์ 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
์ด๋ฌํ ํ์์ผ๋ก ๋์ค๊ฒ ๋ฉ๋๋ค. ๋ค์ํฌ์คํ
์ ์ด ๊ฐ์ผ๋ก ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค.