The design problems we're break down into two parts: theoretical and practical. This week we'll focus mostly on the theoretical, and next week we'll address the practical.
The purpose of the Sun tracker is to keep an image of the Sun focused on a single spot over a long period of time, during which the Sun will transit a significant portion of the sky. So the tracker needs to know these things: (1) the position of the Sun, (2) the angle of the mirror, and (3) the position of the target.
The physics of reflection is simple: the angle of reflection is equal to the angle of incidence. In mathematical terms, that means that given a unit vector from the mirror to the Sun (call it `hat s`) and a unit vector from the mirror to the target (call it `hat t`), the desired normal to the mirror is just `hat s + hat t`.
But the situation isn't quite so simple. While we can know `hat s` by doing some astronomical calculations, it's not so obvious how we find `hat t`: that's a surveying problem. Bear in mind that the target is going to be some 30m away, and we need to make measurements accurate to <1 degree. We can't just eyeball it. Adding to the problem, it's actually not even trivial to know the angle of the mirrors. Lego motors can keep track of how many rotations they've done, but they don't store this value forever. Once the power is removed, the data is lost. So when we turn on our device, the initial state of the mirror is going to be unknown. Lastly, even though we can know `hat s` in horizontal coordinates (oriented with `hat x` pointing north, `hat y` pointing east, and `hat z` pointing to the zenith, we don't know them in the coordinates of the tracker itself, which will be rotated (unless we require it to be carefully aligned) in relation to the Earth. And don't forget that all of the vectors here are 3-dimensional.
At first blush it looks like we need to make some compromises. For example, we could require the tracker to be aligned with the horizontal system, in which case we can know `hat s` in tracker coordinates. Or we can install some tiltmeters to the mirror controllers (these can be obtained for about $25 each) to let us determine the initial orientation of the mirror. Or we can force the mirror into a particular start orientation and then initialize the motor tachometers. Or we can use some known aim point or points to initialize the mirror. I spent some time thinking about all these possibilities before I had an epiphany: it's all unnecessary.
We can simplify the situation considerably. Suppose for a moment that everything is just 2-dimensional. Then the basic setup looks like this:
Note that this picture is accurate regardless of what direction we view the system from. In particular, if we view it from the side, where the angle shown is altitude, then it's easy to see that the desired altitude of the mirror is just the average of the altitude angle to the Sun and the altitude angle to the target. Or if we view it from the top, where the angle shown is azimuth, then the desired azimuth of the mirror is just the average of the azimuth angle to the Sun and the azimuth angle to the target.
We still have the problem of actually knowing these values, but here's where the epiphany comes in: we don't need to! The target isn't moving; only the Sun is. When the Sun's altitude changes by 2 degrees, the averaging we described above implies that the mirror's altitude needs to change by 1 degree; the same is true of azimuth. So the tracker can just update altitude and azimuth at just half the rate of the Sun and the image should stay on target.
Next week, we look at how to determine the Sun's location...
No comments:
Post a Comment