Dual Axis Solar Panel Tracker / Controller Part 5


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.

[Read more…]

Dual Axis Solar Panel Tracker / Controller Part 3


I’ve been working on a solar panel tracker/controller as an R&D project (previous blog entries part 1 and part 2).  I was able to finish the circuit board design a couple of weeks ago.  I want to panelize it with some other projects so I haven’t shipped it off yet.

[Read more…]

Dual Axis Solar Panel Controller / Tracker Part 2


Last week I discussed my latest project, an accelerometer based dual axis solar tracker (that blog is here).  When starting a project its easy to get lost in the details.  For example, this project has a whole host of possible control functions and interfaces.  I’ve always found it useful to start my work on the schematic and hardware.  So that’s what I did.

Since this is an R&D project I decided to use some components I haven’t used before.  This design will control a 24VDC brushed motor, and a 12VDC brushed motor.  I’m going to use two St Microelectronics PN:  VNH3SP30-E.  They’re rated for 40V and 30A (although there’s no way they can handle 30A without melting off the PCB).  One feature I like about these controllers is that they only need a single PWM channel for proportional control.  Two other digital channels are used to provide direction.  Here’s a section of the schematic that shows the connections between a PIC16F1789 and two of the motor controllers (click the image for a better view).


In the end, this control system will be used to control our dual axis controller that uses a worm gear for horizontal movement, and a linear actuator for vertical movement.  Here’s a photo of the assembly in front of the old college text books we could never bring ourselves to throw away.  Both the worm gear and linear actual came with feedback.  The worm gear was very expensive and has an encoder on the motor.  the linear actuator was pretty cheap and came with a potentiometer that failed in about a month.  That was one catalyst for attempting that has the position feedback on the control board via an accelerometer.


So for this first run at this design I generated a schematic (here’s a PDF), bill-of-materials (and another PDF), and a circuit board layout.

The circuit board ended up being about 2.5” x 3.5”.  Here’s what the top copper layer looks like.  The 6 dots on the upper and lower right-hand side of the board are for mounting automotive style blade fuses.

Finally, I ran though the list of components I selected to see if any were not able to operate over the industrial temperature range of –40C to 85C (or -40F to 185F).

Here is the column from my bill-of-materials.


There are a couple of interesting findings.  First, I have an 8MHz oscillator on the design that has the smallest range of operation (-20C to 70C).  I’m actually going to use the internal oscillator available in the microcontroller, and I don’t see clock timing to be an incredibly important issue in this design.  I added the oscillator part to the schematic as kind of a back-up plan but don’t plan on using it.  So I’ll ignore that problem for now.

The next lowest temp. range part is the PDV-P7002, a photocell I will be using to detect daylight.  For a part like this, whose resistance changes with light, I would guess that it goes “out-of-specification” outside of its operating range.  I doubt it quits working.  I’ll have to research that some more, but since I’m using the photocell as a yes/no type input I can accommodate a wide resistance variance.

That leaves me with some ceramic caps that don’t meet my operating temperature range, and I can certainly select a similar part with an extended temperature range, so I’m probably good there.

I guess there was one other issue.  The small metal buttons I have on this design (E-Switch parts) had no temperature rating.  I thought that was interesting.  These are not the kind of buttons you would use in an outdoor design, but no temperature rating?

And now for a sanity check.  Am I really going to run this design between –40C and 85C.  Nope.  This is R&D, it’ll spend its life in my office.  If this were a consulting contract we would design for this temperature but suggest our clients place test fixtures in the intended environment to collect operating data and/or make use of a temperature chamber for extended temperature testing.

That’s as far as I was able to get this week.  I’ll try to take some time over Christmas break to order the circuit board.  I need to panelize it with some other designs so it doesn’t cost an arm and a leg.  Hopefully I can begin writing code in January.

Dual Axis Solar Panel Controller / Tracker


I enjoyed the disco bike light project I recently completed.  For that project I took a design idea and ran it through a process similar to what we do for clients that hire us for electronic engineering services.  That process made writing about the design a little more structured and I ended up with something I could test and use.

I’m going to do that again, but this time with a dual axis solar tracker controller/tracker.

[Read more…]

Motion Mind 3 Software Update


I just got back from vacation, and that left me with some tech-support catch up to do.  I had a customer ask about some of our PID tuning software for the Motion Mind 3 motion control module which is pretty out of date.

[Read more…]

Phase Drive Not So Cool


A few weeks ago I posted about a design where I would try a motor drive technique called “phase-drive”.  You can read that post at Phase Drive a DC Motor.

In summary, “phase-drive” runs a motor at its stall point.  To stop the motor you run it 50% forward and 50% reverse, switching back and forth over short periods of time.  To move the motor forward you would begin increasing the forward percentage and decreasing the reverse percentage of the drive signal.  For example, 51% forward, 49% reverse is the slowest forward speed you could have.   100% forward and 0% reverse would be the fastest.  You might run the pulse-width-modulation (PWM) at around 15KHz to keep the switching sounds less audible, and update the forward/reverse percentage every millisecond.

This is hard on the circuit as well as the motor.  Why do this?  We had a customer that was running an ungeared motor in a position control system and the load was overpowering the torque the motor could provide.  Since it was a position control design there was no electrical “push” resisting the motor’s load when the system was “in position” (PWM was 0 when PID output was 0).  I wanted to see if this method could provide some resistance to the load by driving the motor even when it was in position.  The eventual solution was to use a geared motor, but I added circuitry to test the phase drive technique on our design out of curiosity.

In the end phase-drive did provide additional resistance to the load.  And if that was the end of it, I might have used it.  But I never really got to the point of quantifying how much better the load resistance was using phase-drive.  The motor was extremely hot to the touch after just 10-15 minutes of hitting it with phase drive.  Within a half hour of testing I was back at the solder station reconfiguring the board to drive it in the standard fashion.  Phase drive was just not cool.

What was cool was the H-bridge circuit we were using.  A pair of Infineon BTN8960TA high current half-bridges with some external spike protection components seemed to work very well  (there’s a schematic of the h-bridge on the post linked above).  The picture above shows the H-bridge portion of the circuit, top and bottom.  This circuit regularly drew 6-7A without generating any fault conditions or getting warm.  The BTN8960TA are rated for much more current than that, something like 30A.  However, thermal issues always seem to be the key to providing large currents to the load and you can see that our footprint for the design is pretty small. I was happy with the efficiency we got from the parts.  We used a 10-bit PWM drive signal with a period of 7.8KHz.

In fact, I liked the BTN8960TA so much that I had extra parts ordered so I could put them on a breakout module.  I’m looking forward to experimenting with these parts and using them in new designs.

Phase Drive a DC Motor


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.

[Read more…]

PID Motor Control with an Arduino


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).

[Read more…]

Arduino Motor Position Controller


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).

[Read more…]

Arduino Compatible Motor Controller


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.