Some time ago I asked our intern, Manny, to design an Arduino clone. This was primarily a learning exercise. He’s worked with the Arduino platform one some projects, and created schematic/PCB/firmware for a Microchip PIC based project. This project was designed to combine those experiences to create a more generic tool. I felt the results of his effort were pretty cool, so I thought I’d share some of the concepts here.
Atmel’s AtmelStudio version 7 allows you to import Arduino sketches and debug them. This brings the Arduino into the realm of a professional design engineer tool.
I tasked our intern with creating an Arduino clone. His job is to create a schematic and printed circuit board with connections similar to our Firstbot product (shown above). The main reason for the task was to introduce him to the concept of a bootloader and familiarize him with the popular Arduino product line. It also helps that he gets more experience writing C code for microcontrollers, and creating a printed circuit board. If you don’t know what a “bootloader” is you can read about it here.
Back in the late ‘90s we created some small robots for a Microchip technical conference. They rolled around and used a servo with an IR sensor mounted on it to detect objects. They had a bit of a Wall-e look, long before that look was made cool by the movie. Whenever they detected an object they would play a random message that we recorded onto an application. I was thinking of those robots when I came up with the single message record/play breakout module.
I’m in the process of adding the BM017 Color Sensor to our web site. This breakout module is based on the TCS34725 by AMS (formerly Taos). You can use it to detect red, green, blue, and clear color values from object in front of the sensor. I covered basic use of the sensor in my post Sensing Color with the Arduino and the TCS34725. The code I use here builds on that blog post.
I was interested in writing some Arduino code that would use the BM017 to sense colors and then use the readings to drive an RGB LED. The goal was to place a color in front of the sensor and have the RGB LED turn the same color. It turns out this is pretty easy to do, but there are a couple of “gotchas”.
NFC is used for short range exchanges of data. It can be used to read and write to smart cards and to interface with parasitically powered EEPROM. One interesting application of NFC is the post production programming of variables into electronic assemblies. You could, for example, program a set of variables into a motion control module by waving a NFC master unit over an EEPROM located on an unpowered board, and adjust the EEPROM contents.
PID motor control with an Arduino can be accomplished using simple firmware. In this example we use our Firstbot Arduino-Compatible controller to implement a PID based position controller using analog feedback and a potentiometer for control. This is similar in operation to a hobby servo, but the potentiometer provides the control signal instead of a pulse from a receiver (and of course you are using a motor, not an RC servo).
An Arduino motor position controller can be built using an Arduino Uno and our Motion Mind 3 motor controller. This example describes how to interface an Arduino Uno with a Motion Mind 3 to create a closed loop motor position controller. This example and the associated code can be downloaded from our web site as Application Note 1008 (AN1008).
We’re about to put into production an Arduino compatible robot controller. The design carries two microcontrollers. The first is Atmel’s ATmega328. This controller is loaded with the Arduino open-source bootloader. That means you can interface to it, and load programs, like any other Arduino. The second microcontroller is a Microchip PIC16F1829. It’s loaded with an open-source C program that matches our BM011 dual motor quad servo controller. We’re calling the product the Firstbot, since it’s a great platform to develop your first robot on.
Initially I don’t think we’ll sell it with the connectors installed (to keep the cost down). We might have an add-on packet that includes 0.1” male and female headers. The male headers are shown in the image above. The design has 2 DC motor controllers that can carry 1A continuous and 5A peak (5-28V). There are 4 servo input channels allowing you to connect it to an RC receiver. There are also 4 servo output channels, allowing you to drive 4 RC servos. The motor control firmware is open-source and written using Microchip’s XC8 compiler. There’s a small connector for a 0.05” spacing header that can be used with an adapter board to connect a PICKit3 to the board, and customize the motor controller.
Single unit pricing will be ballpark $30. Available in the next few weeks.