MCP2515 CAN controller IC and MCP2551 CAN transceiver compared to a dime.

The building of a CANduino

Finished CANduino (Right) compared to Arduino Uno with CAN shield (Left).

Finished CANduino (Right) compared to Arduino Uno with CAN shield (Left).

Controller Area Network (or CAN) is a communication protocol used throughout the automotive industry to facilitate communication between low level microcontrollers and sensors. CAN is a robust protocol, as well as being resilient to “noise” (electrical signal interference), easy to implement and straightforward to interface with. The goal of this project was to create a small versatile board based on an Arduino which implements the CAN communication protocol.

Early circuit schematics for the CANduino

Early circuit schematics for the CANduino

Currently, one of the simplest ways to use CAN with an Arduino is with the Seeed studio’s CAN Shield. However, the CAN Shield costs $30, which is quite a high price, and if you add to that the cost of an Arduino UNO, which range in cost from $5 for a clone to $35 for an official board, this becomes a very expensive option. 

On top of that, an Arduino UNO with a CAN shield stacked on top of it is quite bulky. All of these concerns were addressed when Adam Hjermstad, one of the team’s electrical engineering students, decided to design the CANduino for our hybrid vehicle.

To keep the CANduino’s size as small as possible it uses surface mount device (SMD) components. The board also features the same CAN integrated circuits (ICs) that the Seeed studio CAN shield uses and has components to step down standard automobile 12V to 5V in order to power everything.

Prototype on a breadboard being tested

Prototype on a breadboard being tested

With the design out of the way, some prototyping was done. The prototype uses through hole components and was missing some supporting hardware, but everything else is consistent with the design. Once the design was confirmed as functionally sound, the next steps happened in rapid succession.

First, the circuit design was formalized in Altium Designer software, then the layout and routing was completed. Next, the design was sent for manufacturing. After this, all the required components were ordered. Most were purchased from Digikey, but Microchip was kind enough to provide samples of their CAN controller and CAN transceiver ICs. 

Printed Circuit Boards when they arrived from OSHpark.

Printed Circuit Boards when they arrived from OSHpark.

Once everything arrived at the team’s garage, the first board was built slowly with intermittent testing. The power supplies were built first, then the microcontroller was added, programmed, and tested. Once this was finished, the CAN ICs were added and CAN communication was tested. Everything was confirmed functional. CAN was tested thoroughly again and all the header pins were retested to make sure they were all routed properly. 

MCP2515 CAN controller IC and MCP2551 CAN transceiver compared to a dime.

MCP2515 CAN controller IC and MCP2551 CAN transceiver compared to a dime.

This concluded the CANduino project. We plan on using several CANduinos in the vehicle this season: one to control our power distribution box, and another to interface with our vehicle’s accelerometer.

2 thoughts on “The building of a CANduino

  • By Yashasvi Karnena - Reply

    Hi guys,
    I represent Pravega Racing, Vellore India. And we’re operating on PE3 ECU for the Honda CBR600RR engine and the ECU works on SAE J1939 standard. We’re using a Sparkfun CAN shield to build our telemetry system but we’re unable to initiate communication with the CAN bus. Whereas our data logger works perfectly fine. Could you guys help is with this issue since you guys seem exprerienced with CAN bus

Leave a Reply

Your email address will not be published. Required fields are marked *
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>