CURRENT ISSUE

Contests

bottom corner

FEATURE ARTICLE



Issue #217 August 2008

Subcategory Winner - Microchip 2007 Design Contest
INTELLIGENT ENERGY SOLUTIONS
Electric Vehicle Inverter Design
Build A System For Powering AC Induction Motors
by Dan Hall, Tristan Kasmer, Doug Krahn, Adam McIntyre, and Dena Ponech

Start | Power Inverter | Gate Drivers | Control Board | Space Vector Modulation | PID Tuning | Altering Motor Control Parameters | HMI | Protocol | Firmware/Software | Sources & PDF

PROTOCOL

Communication with the motor controller is through the CAN bus protocol. The CAN bus is a broadcast, differential serial bus. CAN was developed to be a robust communication protocol for particularly noisy environments; therefore, it is already commonly used in the automotive industry. Because CAN is a broadcast bus, there is no way to send a message to just one specific node. All nodes will invariably pick up all traffic. However, the CAN bus hardware provides local filtering so each node may react only to the relevant messages.[15] Because our development did not require a great deal of message traffic and uses only two nodes, we chose not to use the CAN bus filters and identifiers. We developed our own protocol using headers and identifiers contained within the data portion of the CAN bus packet. This would be a disadvantage in more complex systems because all bus traffic is picked up by all nodes. To reduce microprocessor overhead in these designs, use the filters to receive only those messages required for processing by the specified node.

The CAN bus protocol also has error detection accomplished by the following methods: monitoring (transmitters compare the bits to be transmitted with the bits detected on the bus), cyclic redundancy check (CRC), bit stuffing, and message frame check.

Because the CAN bus protocol handles most of the error checking and timing issues, we did not need to introduce elaborate error-handling algorithms. We simply added headers and checksums to the data that is sent in a function called sliders() (see Listing 2). This function assembles and sends the PID tuning parameters and waits for an acknowledgment package, ACK or NAK, from the motor control microcontroller when the parameters are received before taking any further action.

Previous | Next                *| Subscription Deals |*

 


bottom corner