MCP2515 CAN Driver IC를 적용한 CAN 통신 모듈 사용법
아두이노와 MCP2515 배선 연결
설명 | 아두이노 핀 번호 | MCP2515 CAN 모듈 |
전원 | 5V | VCC |
그라운드 | GND | GND |
클럭 | 13 | SCK |
MISO | 12 | SO |
MOSI | 11 | SI |
ChipSelect | 10 | CS |
Receive Interrupt | 2 | INT |
구글 검색어 : mcp2515 can arduino library
아두이노 라이브러리 다운로드 : https://github.com/coryjfowler/MCP_CAN_lib
상기 라이브러리도 16Mhz Xtal을 기준으로 작성되어 있음
구입한 CAN 모듈은 8Mhz Xtal이 장착되어 있어서 mcp_can_dfs.h 를 수정해야함
<수정한 라이브러리를 본 게시물에 첨부 했음>
DHT-sensor-library-master(modified for 8MHz Xtal).zip
#define MCP_16MHz_500kBPS_CFG1 (0x00)
#define MCP_16MHz_500kBPS_CFG2 (0xF0)
#define MCP_16MHz_500kBPS_CFG3 (0x86)
*/
#define MCP_16MHz_500kBPS_CFG1 (0x00) //8Mhz Xtal 500Kbps CAN speed
#define MCP_16MHz_500kBPS_CFG2 (0x90) //8Mhz Xtal 500Kbps CAN speed
#define MCP_16MHz_500kBPS_CFG3 (0x02) //8Mhz Xtal 500Kbps CAN speed
첨부된 라이브러리를 "내문서/Arduino/Libraries/" 위치에 복사합니다.
아두이노를 실행하고 메뉴에서 "파일"->"예제"->"MCP_CAN_Lib-master"->"send"클릭
송수신 예제 모두 실행하면 잘 동작합니다.
[사진 설명 : 5031개 CAN 메세지를 보냈는데(좌) 모두 정상 수신함(우)]
MCP2515가 수신하는 예제의 경우 (receive.ino)
데이터 전송이 빠를 경우 데이터를 놓칠 수 있음
이경우 시리얼 모니터를 통해 표시하는 데이터를 줄이면 놓치지 않고 받을 수 있음
[사진 설명 : 10286개 CAN 메세지를 보냈는데(좌) 메시지를 놓쳐서 2677개만 수신함(우)]
[사진 설명 : 10257개 CAN 메세지를 보냈는데(좌) 시리얼로 표시되는 내용을 줄이자 모두 정상 수신함(우)]
ODB 통신방법 정리 : http://uglytree.tistory.com/category/CAN/OBD-II
UDS 소개 : http://hoyoung2.blogspot.kr/2013/11/can-protocols.html
ODB PID wikipidia : https://en.wikipedia.org/wiki/OBD-II_PIDs
CAN Shield D-SUB 9핀
CAN_L : 6(x) --> 5
CAN_H : 4(x) --> 3
'만들기' 카테고리의 다른 글
Arduino ULN2003 Step Motor Driver (0) | 2015.08.30 |
---|---|
Arduino ESP8266 AP join error troubleshoot for Cactus Micro (2) | 2015.06.20 |
아두이노+ESP8266 WiFi Cactus Micro 보드 (0) | 2015.06.17 |
P채널 N채널 MOSFET 사용법 (0) | 2010.12.31 |
IOT (internet of things) (0) | 2010.12.05 |