We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
How do I decide which ARM board to go for if I am aiming to use it as a micro-controller to run sensors, actuators, motors, and solar panels? And I wish to power up the board via Li-ion battery pack.
jensbauer joealderson albanrampon Thanks for all your input. I'm gonna try my on ground simulation with an Arduino Due first becus I have more experience using the Arduino interface. So I guess I would be able to progress much better with it. Not really v familiar with Keil yet. But still learning it though.
I have a few question not sure if it's applicable. I'm still not sure abt how people determine the Sun vector with sun sensors in cubesat, and also to determine the cubesat position based on Earth. Do you guys know or is there any good readings for it?
Appreciate much! Thanks in advance.
Unfortunately I have no real knowledge about the CubeSat (only what I've found by searching the net).
However, as I've been working a bit with solar panels myself, I made a sun tracker based upon two low-cost photo-resistors.
You can also use two solar panels, but they're much more expensive than the photo-resistors.
What I did, was to have two different angles on the photo-resistors; but in space, you'll probably want more than that; at least 3 (placed in a triangle), as space is 3D, ground is only 2D (right?).
-In fact, when on the ground, you don't need photo-resistors at all, because if you know what time it is, you can calculate where the sun is, since the earth is part of a pretty precise clockwork.
But in space, your device can rotate in all directions, so you could place a photo-resistor on each side of the cube; that would probably be the easiest solution. All photo-resistors would then have an angle of 90 degrees to the neighbouring photo-resistors.
Then you just compare all the ADC readouts and point your panels to where you got the highest readout. While rotating, you will notice that the ADC values for a photo-resistor is getting higher.
You will of course want to position the panel so it takes advantage of that.
Also remember that if you fire your boosters up there, in order to rotate the panel, it'll keep spinning - so go easy on the thrusters...
jensbauer For your low cost sun sensor made by photo-resistor. What data you collected with it? And the data collected, how did you translate it into knowing the position of the sun.
Much appreciated. Thanks.
The two photo-sensors are powered by two GPIO pins and read by one ADC on the shared pin.
The resulting two ADC values are numbers between 0 and 1023 (10 bit ADC), so basically, if value1 is larger than value2, then I turn the motor clockwise; if value2 is larger than value1, then I turn the motor counter-clockwise.
The data are not stored AKA. "collected", as they're used on the fly.
However, I sample the values for a while, before I decide to change the position of the panels.
(A panel can only go in one direction or the other, as there is only one axis).
An improved version might be to use 3 photo-resistors, so that the one in the center (which is parallel with the solar panel) must always have the highest ADC value.
The distance between your CubeSat and the sun is hopefully around 18 lightminutes.
But I think you mean how to find out how much you need to rotate the CubeSat ?
You could collect a number of ADC samples - say 16 for each of the sensors.
Then averaging these results into one value per sensor.
Now you find the two sensors which have the highest values.
If those two sensors are on each side on the cube, you're having a problem: The moon.
-But if the sensors are adjacent, then let's assume you're using a 10-bit ADC (which will give you values between 0 and 1023):
A simple draft would be something like this:
int32_t position = ((value2 + 1) << 16) / ((value1 + 1) << 16);
That would give you a value between 0 and 67108864.
You could subtract (512 << 16) from that value in order to get a signed integer, where 0 is the middle, negative is towards the sensor which provided value1, positive is towards the sensor which provided value2.
You may also want to get familiar with PID, which you can probably use for more than one thing. Just make sure you get things right, so it won't become completely erratic and out-of-control.