The saga of the dual axis solar panel controller continues. As an R&D project I couldn’t put a lot of time into this design this week. Here is what I did get accomplished.
During the design of various motor control systems I’ve run into a few ICs that allow for a peculiar drive method. I’ve seen it referred to as phase drive and direction drive. I’ve never implemented it in a product that’s been produced, but lately I have decided to give it a shot. The traditional method I’ve used for driving a DC motor in a closed-loop application is, simply stated, to drive it forward or reverse. At a direction change the drive signal is typically small. This is particularly true if you implement step limits on the PWM signals change from update-to-update. Doing it this way reduces inductive voltage spikes from high speed reversals, saving your circuit from from death and destruction.
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.
Mixing RC transmitter signals for robot drive control is easy with out BM011 Dual Motor Quad Servo Controller. This is a design we’ve been working on for a bit, and the test software and microcontroller firmware are ready to release. This is a completely open source hardware design. The BM011 can be used to control two DC motors, can output 4 0.5mS-2.5mS pulses for driving RC servos, and read up to 4 servo channels. Files should be available on our web site within a couple of weeks.
Whew! Just spent a good four hours writing code that turned out to be pretty simple. We sell the BM004 electronic compass that’s great for robotics. But I got the robotic compass blues.
We’ve been pretty busy around here doing contract work, so there’s not been much time for just doing fun things. As part of the design effort going into an Arduino clone that control servos and motors independent of the Arduino Atmel part we put together an experimental robot chassis. The chassis was designed in Sketchup and the parts were fabricated from Plexiglas by Ponoko.