Yes we CAN
CAN modules: a collection of CAN centric modules
CAN is the key for next generation UAVs and drones. Why is this?
Todays systems are largely based on tradition interfaces such as PWM, I2C, SPI, or UART. ESCs are typically controlled by PWM. The refresh rate is slow (50 Hz) and it is uni directional. There is no feedback channel back from the ESC to the flight controller. So the flight controller has to control the ESCs blindly. In simple terms the control method is like: “give me more power”, “give me less power” or “give me full power”. Value wise PWM is an analog system. A digital interface could give more precise control. Like “give me 1534 rpm”. But I2C, SPI and UART are not the solution. I2C has been designed as on on-board bus (on PCBs) and not as wired bus. In harsh environments as on drones stable and error free communication via wired I2C busses is not possible. Also SPI is designed as a local high speed bus to be used on PCBs. UARTs would be an option but they are a point to point interface. The standard UART does not support a multi drop configuration to control multiple entities with a singe interface.
CAN is the ideal solution. It is very robust as it allows error free communication in harsh environments. It a fairly fast (1Mbit/s). It supports a multi drop bus with up to about 100 devices. This is more than sufficient for a typical drone. It supports a total bus length of 25 meters. And it has many safety features to get rid off faulty devices, so that they do not disturb the communication of the other devices. And it is readily available on most STM32 micro controllers. Just a CAN transceiver chip needs to be added.
Another key is redundancy. Also here CAN can help. First its multi drop architecture allows to use multiple devices. You may use 2 flight controllers who share the CAN bus. These flight controllers may have their primary sensors on board but they also my access a CAN based sensor module for redundancy. Both flight controllers may access all ESCs. For even more redundancy you may use 2 CAN busses. This will also double the data rate. Some of our products already support two CAN busses Examples are the modular flight controller (38180) and the Edison compute module (38178).
As a 1Mbit/s data rate may sound high, it is still very low when compared to todays PC network interfaces such as Fast Ethernet (100Mbit/s) and Gigabit Ethernet (1000Mbit/s). In order to get a very high refresh rate on the CAN interface to the ESCs close attention must be given, to implement the CAN protocol is a very efficient manner. The UAVCAN protocol has been developed with this in mind. Example: a typical CAN data packet may have a payload of 8 bytes and a total size of 16 bytes. This is 128 bits. So approximately 8000 of these packets can be send per second (1Mbit/ 128). The goal is to run the ESCs with an update rate of 1kHz minimum.
Auvidea is developing a line of CAN centric products for UAV and drone systems. In particular these are:
- USB to CAN adapter for PCs and embedded systems like the Raspberry Pi
- SPI to CAN adapter for embedded system which do not have a CAN controller
- CAN peripherals to bridge to sensors, legacy interfaces (PWM, UART, I2C), wifi modules and more
- compute modules with CAN (like Intel Edison)
- modular motherboards with multiple CAN slots