아두이노 입/출력 포트 확장! : PCA9535 IC
By suapapa
예전에도 언급했듯이 아두이노에는 포트가 많은 편이 아닙니다.
사실, 언제나, 물리적인 제약을 극복하고 문제를 해결하는 방법이 있었지만, 없어서 못 쓰는것과 있는데 안 쓰는것은 기분이! 다르죠.
이런 제 허영심을 채워 준 IC를 소개합니다.
짜잔~
이 칩은 SMD 패키징(TSSOP)이기 때문에, 윤택한 삶을 위해 변환 기판을 만들었습니다.
집구석 에칭으로 어느정도 까지 되는지 궁금하셨던 분들은 참고하세요. 이 변환기판에서 선 굵기는 0.2mm 정도 이고, 정상 동작 합니다. +_+
- PCA9535 breakout sch&brd eagle cad
동작을 위한 아두이노 스케치는 Keith’s Electronics Blog 의 Arduino I2C Expansion I/O에서 참고하실 수 있습니다.
PCA9535는 16bit I/O 확장 칩입니다. 이 칩은 I2C버스를 통해 아두이노에 연결되기 때문에 아두이노 포트 “두 개"만을 희생하여 16개의 입출력 포트를 얻을 수 있습니다.
I2C가 생소하신 분들을 위해 여기, wikipedia에서 가져 온 I2C 이미지가 있습니다.
갈색의 uC는 아두이노구요, 파란 네모 하나(I2C slave)가 PCA9535 입니다. 위 그림에선 슬레이브가 여러개 달려있죠? 그리고, 여전히 사용되는 선은 “두 개” (SDA, SCL)입니다.
고로, 여전히 두개의 포트를 희생한 채로 입출력 포트를 16*n개!!로 확장할 수 있습니다.
SADI가 자랑(만)한 32port output, 64port input 등딱지도 이와 비슷한 I2C I/O확장 칩들을 사용하는 것으로 예상됩니다.
I2C 문서들에서 SDA,SCL에 풀업 저항을 각각 달아야 한다고 언급되어 있는데 아두이노의 경우 이 풀업저항들 마저 AVR에 포함되어 있습니다. 이 멋진 기술은 현역으로 여러분이 가지고 있는 핸드폰을 포함한 거의 모든 임베디드 장치에서 사용되고 있습니다. 🙂
슬레이브가 여러 개 있는데 어떻게 두선만으로 통신이 가능한가 하면, 각 슬레이브에 주소가 정해져 있기 때문입니다. PCA9535에도 주소를 변경하기 위한 핀이 세개 있어서 이를 다르게 하여 같은 IC를 여러개 연결할 수 있습니다.
네 거짓말을 좀 했습니다. I2C의 주소는 7bit이기때문에 I2C장치는 2^7=128개 까지 붙일 수 있고, PCA9535에서 사용자가 바꿀수 있는건 7bit중 3개이기때문에 -같은 칩을- 8개 붙일 수 있습니다.
제가 만든 변환기판을 자세히 보면:
왼쪽하단의 솔더링 점퍼들이 I2C 주소를 정하기 위한 것 입니다. 현재는 모두 왼쪽 접점에 솔더링 된어 0 으로 설정된 상태입니다. 1을 설정하려면 오른쪽 접접으로 솔더링 하고, 기판 하단으로 pull up 저항을 연결하게 됩니다.
설명은 이쯤하고, 돌아가는 모습을 보면:
변환기판 주변에 네 개의 선이 연결되어 있는데 빨강/검정의 5V/GND를 제외한 녹색/흰색 (흰선이 녹선 뒤에 숨어서 잘 안보이네요) 두 선만으로 제어되고 있음을 보실 수 있습니다. 멋지지 않나요?
하지만, 위 테스트에서도 16개의 I/O포트의 반밖에 사용하지 못했듯이, 현재 이 I/C는 제 구실할 곳을 찾지 못하고 책상 서랍에 처박여 있습니다. ㅋ -_-;
- 한 줄 요약 : I2C 만세!?