SparkFun will be closing on Monday for Memorial Day (5/28). Orders placed after 2pm MT on Friday (5/25) will process and ship out on Tuesday (5/29).
How a couple of engineers' desire to bridge the gap between the industrial space and the maker movement created something new.Favorited Favorite 0
This is a guest post by James Blakey-Milner, CAN485 Project Lead at Atlantis Specialist Technologies (AST)
The CAN485 project came into being as a response to frustrations we were having in some of our own projects, which are focused in R&D and industrial automation.
A common industrial application would include VFDs (Variable Frequency Drives) or servo drives being controlled by a PLC (Programmable Logic Controller). Typically these would all be on an RS485 network using an industrial protocol like Modbus. In another common setup we would be interfacing a PLC to some piece of equipment using a vendor-specific protocol, usually also over an RS485 physical link.
We had a few frustrations in situations like these. The first was that implementing nonstandard protocols in PLCs tends to be a bit of a headache. In one application we were using a weigh module, which had a simple ASCII interface over RS485. We needed to interface this to a PLC. An extension module was required to implement this custom protocol. We had a hard time getting it to work properly. Programming options were very limited, the software was difficult to use, and documentation in general was poor.
This was really frustrating. In order to do something simple we had to buy an additional expensive piece of equipment. On top of that, it was a pain to use. Out of situations like this we developed the desire to use microcontrollers for our communications interfacing rather than PLC extension modules.
We were familiar with Arduino boards from other projects. Their main attraction to us was their ease of use. They take care of the tedious parts of embedded design as well as providing a simple IDE and libraries for common functions. This allowed us to go straight to developing applications without having to spend unnecessary time in development. We preferred the Pro Mini because of its form factor. It is small enough that we could physically embed the whole board into our applications, as opposed to having custom PCBs made.
We wanted to translate this ease of use into our industrial applications. So we began working on shields for Arduino to add RS485 and Modbus communications support. Our goal was to get to a cheap and easy alternative to using PLC modules in our projects.
Some other frustrations were encountered in an R&D project in which we were developing a robot arm. We were using off-the-shelf servo motor units to control six joints. These motor nodes had onboard controllers, which were controlled over an RS485 network using a vendor-specific protocol.
Unfortunately we had several issues with these motor nodes. When attempting communication at higher baud rates, some of the nodes would randomly stop responding and require a systemwide reset to restore function. The control system implemented on the motor nodes was also strange and not well-documented. We eventually figured out how to tune the various parameters by a combination of trial and error and reverse engineering.
We had to work around the communications problems by running at a much lower baud rate than desired (or claimed by the manufacturer). The end result was unsatisfactory system performance. We realized that if we could just program the motor controllers, we would be able to fix the issues ourselves.
At this point we began working on what would become the CAN485 board. In response to the issues encountered in the robot project, we were considering developing our own motor control nodes. We also started looking at CAN as an alternative to RS485. CAN is a slightly higher-level protocol than RS485 (the data link layer in the OSI model). This comes with attractive features like collision resolution, message prioritization and error checking. It was also attractive because of its popularity in the industrial and automotive spaces.
Our concept developed from a motor control node to a CAN shield for Arduino. We then realized we could develop our own Arduino variant based on the AT90CAN chip. An upside of that decision is that we could adopt the pro-mini form factor that we loved. This is when the hardware design really started to come together. We began to think of CAN485 as a product rather than an internal project. We still wanted to be able to interface to RS485 devices, so we added a transceiver, and the CAN485 was born.
As a company our focus is on R&D and Industrial Automation. We began looking for partners in industry to help us with manufacturing and distribution. We love SparkFun products and have used them for years. They are our go-to supplier for any electronics development bits and pieces. More than that we love their company and what they’re all about. Their commitment to open technology and the maker community is making it easy for people everywhere to innovate, have fun and create cool stuff. We reached out to them, and here we are today.
While working on the CAN485 project we began to develop a simple vision: to bridge the gap between the industrial space that we come from and the maker movement. To that end we are going to be releasing shields for the CAN485 that will extend its interfacing capabilities.
James Blakey-Milner’s highly focused, analytical thinking and project management skills have earned him the well-deserved spot as lead for the CAN485 project. He has been responsible for all of the software development (Arduino integration and libraries), documentation, high-level electronics design and review of board detail design. His cross-functional engineering design with an emphasis in embedded and software systems has made him a pivotal part of a number of projects at Atlantis Specialist Technologies (AST), most notably an industrial automation project that he helped develop for the defense industry. During off time you will find James on the mountain, at a music festival or sharpening his skills.