์ƒˆ์†Œ์‹

๐Ÿ‡ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด

MCP3008 + ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์•„๋‚ ๋กœ๊ทธ ์„ผ์„œ๊ฐ’ ๋ฐ›๊ธฐ ( ๊ฐ€๋ณ€์ €ํ•ญ , ํŒŒ์ด์ฌ Python )

  • -

๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋Š” ์•„๋‘์ด๋…ธ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์•„๋‚ ๋กœ๊ทธ ์„ผ์„œ๊ฐ’์„ ์ž์ฒด์ ์œผ๋กœ ์ฝ์–ด์˜ค์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MCP3008๊ณผ ๊ฐ™์€ ์ œํ’ˆ์„ ์ด์šฉํ•˜์—ฌ, ์•„๋‚ ๋กœ๊ทธ ๊ฐ’์„ ๋””์ง€ํ„ธ ๊ฐ’์œผ๋กœ ๋ฐ”๊พผ ํ›„ (Convert) ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์— ๋„ฃ์–ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์กฐ๋„์„ผ์„œ (CDS) , ์••๋ ฅ์„ผ์„œ, ์จ๋ฏธ์Šคํ„ฐ... ๋“ฑ๋“ฑ ๋งŽ์€ ์•„๋‚ ๋กœ๊ทธ ์„ผ์„œ๊ฐ€ ์žˆ์ง€๋งŒ, ์ผ๋‹จ ๊ฐ€๋ณ€์ €ํ•ญ์„ ์ด์šฉํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

MCP3008 Datasheet

Datasheet๋Š” ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 3B+ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 

๋ผ์ฆˆ๋ฒ ๋ฆฌ GPIO

์—ฐ๊ฒฐ ํ•€
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

์ด๋Ÿฌํ•œ ํ˜•์‹์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œํฌ์ŠคํŒ…์€ ์ด ๊ฐ’์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.