[RPi]MCP3008 vs MCP3208

라즈베리파이의 GPIO에는 아날로그 신호를 처리하는 것이 없다. 그래서 아날로그 신호를 내보내는 대부분의 센서를 처리하기 위해서는 ADC(analog-to-digital converter)가 필요하다. ADC 중에는 MCP3008와 MCP3208 등이 있다. 라즈베리파이와 ADC 간의 통신은 SPI를 이용한다.

MCP3008, MCP3004, MCP3208, MCP3204

다음 웹페이지에는 MCP3008, MCP3004, MCP3208, MCP3204 에 대한 데이터시트에 가까운 정보를 제공하고 있다.

Raspberry PI – Adding analogue inputs using MCP3008, MCP3004, MCP3208, MCP3204

그리고 여기는 spidev 라이브러리를 이용하였다. ADC에서 읽은 값이 해상도가 10비트이면 0~1023, 12비트이면 0~4095라는 것을 알 수 있다.

spidev 라이브러리를 이용하여 https://kalten.tistory.com/46 처럼, 통신 여부를 검토하였더니 잘 작동하지 않아서 RPi.GPIO 라이브러리를 이용하였다.

MCP3008에서 센서의 신호처리(SPI통신)

다음은 신호처리를 위해 작성한 파이썬 코드이다. RPi.GPIO 라이브러리를 이용하였다.

MCP3208에서 센서의 신호처리

SPI at Rasberry Pi GPIO Pinout

SPI통신을 위한 라즈베리 파이의 GPIO 핀 배치는 다음과 같다.

SPI – Serial Peripheral Interface at Raspberry Pi

참고문헌

https://github.com/RaresPlescan/daisypi/blob/master/sense/mcp3208/adc_3.py