I finally received the PCB for this design. And in general it turned out okay. There were a couple of shortcoming in my design that will force me to to re-spin the PCB, so it’ll be a while before I can finish everything up. But having the PCB gives me the ability to debug my firmware and test the overall concept for this solar panel tracker.
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.
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.
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.
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.
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).
I spent a couple of days adding velocity control to our Synaptron Micro motion controller. I should probably be more clear. The product already has the ability to use the velocity measurement from a quadrature encoder as a feedback source. Meaning you can operate a motor at a PID controlled velocity. What you couldn’t do was operate as a position controller with a velocity limit applied to the movement. Okay you could already do that too, but the methods were a little “complicated”. The desire for a less complicated velocity control method came about when working on the articulated robot wheel. Laziness, the mother of invention.
For those not familiar with the Synaptron Micro the product is configured by modifying internal register settings. For some applications, such as analog control of position, you only need to configure the device once. For other modes such as serial control of position it is assumed you have a controller that is continuously in contact with the Synaptron Micro motion controller.
The video above shows the results of the velocity control that was added, while the remainder of this blog entry covers other methods of controlling motor speed during movement. Here are the four ways you can now control a motor’s velocity while moving to a position…