Hi all,
I have been roped in to help a school with their project of making a dual axis solar tracker constructed from mostly recycled parts.
At first I was going down the route of no controller and just using an array of smaller panels to move the main panel but after the kids showed loads of excitement about coding I've led them down the Arduino route instead. Only issue is I've not used them before.
So I have had a little play with a kit I bought and had some success with LDR's and tiny servos but now have to scale it up.
I have sourced a 50w 4.5kg (9.9lb) 600mm (23in) square solar panel and a few old 12v 12ah fire alarm batteries. but need to settle on the best way to go next.
The project needs to be as green as possible so we are trying to use as many recycled parts as possible.
What the children have come up with so far is the idea of using two 12v windscreen wiper motors to move the panel.
So I'm thinking we need the folowing:
ARDUINO UNO REV3 - Code: A000066
ARDUINO MOTOR SHIELD REV3 - Code: A000079
2 x wiper motors
4 x GROVE - LIGHT SENSOR (P) V1.1 - Code: C000162
1 x real time clock module
Placing the light sensors at the 4 sides of the panel slightly set back so the Arduino can do a comparison between the pairs driving the wiper motors from the motor shield until the light sensors match.
The RTC would turn off the tracking during dark hours and send panel back to start position.
Does this sound correct?
Would the motor shield work driving the car wiper motors.
If you want green, the last motor driver to choose is the ARDUINO MOTOR SHIELD REV3. The L298 chip is ancient and inefficient technology. The L298 drops at 2 to more that 4V and that is shed as heat. Modern MOSFET output drivers are much much better. Besides, I doubt that the L298 would handle the current that a windshield wiper motor needs (L298 max at 4A [on a goof day] with good heat sink and cooling).
To choose a proper driver, the stall (starting) current needs to be known. You can get an estimate of the stall current, measure the resistance of the motor winding. Put the Ohmmeter across the power wires to the motor, measure the resistance, turn the motor a bit, measure and repeat several times. Divide 12V (motor rated voltage) by the lowest resistance observed to get the estimated stall current. Then you can use that value to choose a driver. Pololu has a good selection of DC motor drivers.
For the sensors have 2 light sensors with a barrier between on each axis to sense sun position (see picture). And I would use Light Dependent Resistors (LDR) as you don't need the speed nor the sensitivity of phototransistors.
I don't see the need for the RTC as you have sensors that tell you the light level.
groundFungus, many thanks for the input. The lower powered DC motor drivers look perfect for what we need.
I will try and dig out a couple of windscreen motors and work out their starting current.
I went with wiper motors as they are readily available and powerful although more powerful than i need and probably not very efficient. Also cars seem to be an easily accessed source for 12v motors.
Can you think of any other motor I could use that would be appropriate and readily available?
Without knowing how much torque is required, no, I can't recommend a motor. If windshield wiper motors are handy and will develop enough torque I see no reason to not use them (it is the L298 that I don't like). If the reduction gears in the motors are worm drive (like some wiper motors that I have seen) there is an added bonus in that the motor can't easily be back driven. That is, they can hold their position without power.
Well I got hold of 2 x car electric seat motors which look a better size than the wiper motors and give about 10cm of linear movement through a piston via worm gear and screw.
They are heavily geared and take a good few seconds to travel between the limits.
Do I need a driver for them or could I just use two micro switches to stop them before their limits?
Stall current is 26a.
MightyJoeYoung:
Do I need a driver for them or could I just use two micro switches to stop them before their limits?
Stall current is 26a.
An Arduino cannot directly switch a current of 26 Amps.
If you are content for the motors to be simply ON or OFF then you could use relays to switch the motor current. However that gets complicated if you want bi-directional motion and a high-current motor driver would make things simpler. The motor driver would also allow the Arduino to control the speed of the motors.
Also, an Arduino almost certainly cannot directly control the current in the relay coils so you would need a transistor circuit between the Arduino and each relay coil.
You probably can get solid state relays that could be directly controlled by an Arduino but they would probably cost as much or more than a suitable DC motor driver.
How big is the solar panel you are trying to move? Do you really need such a powerful motor? I imagine that a small motor driving a length of screwed rod would be sufficient.
Robin2:
If you are content for the motors to be simply ON or OFF then you could use relays to switch the motor current. However that gets complicated if you want bi-directional motion and a high-current motor driver would make things simpler.
Frankly, I don't think it is that complicated. Just two SPDT relays - the common sort - per motor. It is the relay version of an H-bridge.
Speed control is not appropriate for a solar tracker. Precisely why an Arduino or similar microcontroller is required is questionable.
Paul__B:
Frankly, I don't think it is that complicated.
If the OP also needs transistor circuits between the Arduino and the relay coils then it seems to me to be getting sufficiently complicated (inconvenient might be a better word) to tip the balance in favour of a motor driver.
Thanks for all your replies.
We have decided on the seat motors as we are trying to use reclaimed items to make the project.
The panel we have is 60cm x 60cm and weighs 3.5kg.
The up and down motion should be easy by extending the threaded bar out put and pivoting the panel one end driving it up and down.
The rotary motion I feel is a bit more tricky.
I have got a a set of relays and was going to use them but the students got excited about the Arduino and I think it's good to give them an insight in the use of PLC's.
MightyJoeYoung:
The panel we have is 60cm x 60cm and weighs 3.5kg.
The up and down motion should be easy by extending the threaded bar out put and pivoting the panel one end driving it up and down.
The rotary motion I feel is a bit more tricky.
This sounds like a mechanical engineering problem rather than a computer / Arduino problem.
A properly balanced 3.5kg load should be capable of movement (especially rotation) by a small motor.
Well a lot has developed since first posting and the kids have now built the unit mechanically.
Problem is we are running out of time with wiring it up and my mind is fried!! Haha
I have been given 2 X IBT_2's which I thought I could use to drive the motors slowly and switch their directions.
The idea being that the motor will be driven untill the ldr's are balanced then wait for a set period before balancing again.
When they get to max travel a micro switch is pressed to stop any further drive in that direction.
Efficiency has gone out the window and just getting it working and moving is now the priority. Next year's project for them can be to revisit it to evaluate it, looking at efficiency and other methods.
I realise this is all lots of overkill and they don't really need the Arduino and the IBT's are overkill but it is the route they are exploring and hopefully it will give them lots to review and evaluated in their conclusions once it's all working.
Is this all possible.
Thank you all so much in advance for your advice, really out of my depth here.
It usually helps in projects like these to do some subset projects to prove out some of your functions. Exercising one of the motors would be one; reading the LDRs would be another. As a bonus, the students will see some immediate progress when you get one working.