[Part 1] Project Initiation

For our senior mechatronics design class, we decided to make automatic solar panel cleaner. The basic idea behind this is this.

1. Should be able to effectively and reliably detect the amount of dust piling up on the panel
2. Should clean the panel if the dust prevents an effective operation of solar panels
3. Should be efficient so that the power consumption of the system does not negatively effect the performance of the panel.

With these simple design performance goal, I have setup an electronic prototype which carries out three design goals as efficient as possible. In order to achieve the first goal, a clever array of phototransistors in the solar panel is necessary. Embedding the sensors within the solar panel array is most effective, but this degrades commercial marketabilities as the panel and light sensor module cannot be sold separately. Any existing system has to be replaced with this system in order to have automated cleaning systems. It is possible to have two sets of light sensor array at the top and bottom of the panels so that the sensor modules can be detachable. This effectively increases marketability since this flexibility in design allows the system to be applicable on existing solar panel systems. 

The second goal operates in conjunction with the first goal and it will be achieved in a form of stimulated "proportional loop." It's not a perfect proportional loop since the incident light level is heavily discretized to the number of phototransistors and the amount of "cleaning" actions will be individually programmed out according to the discrete levels of phototransistor readings. Nevertheless, the underlying idea is the same, the more phototransistor detects dirtiness, the longer the cleaning durations be.

The last goal is achieved by having multiple microcontrollers, each of which is capable of operating independent of another (Independency is critical for this purpose.) The actions that need not be performed frequently, such as the actual cleaning actions, including other motor actuated mechanisms should be separated out from the main control system so that they can be "turned off," when they are not needed. In the case of this specific problem, this method effectively tackles the most fundamental power consumption issues. For example, think about a massive array of solar panels, say 500 in total. The entire population of the panels can be managed by "one" master CPU which is programmed to periodically turn on/off all the "five hundred" slave cpus when its necessary. The cleaning system of the entire power grid is maintained by one CPU, effectively minimizing the amount of stand-by power needed to run the system. How sweet does this sound?

However, the independency constraint is a problem. Because the synchronization of data signals between CPUs is a challenging job. Here is what I have thought through to solve this problem once and for all.

1. Grant the master CPU with the right to turn on/off its slave CPUs at will
2. The slaves have to report back to their master the status of dirtiness and if it initiated the cleaning procedure in a predifined amount of time.
3. The master CPU is given with the minimum response time its slaves can response. (which was measured in reality)
4. The master CPU also knows the preprogrammed routines that its slaves are ordered to do

This beautifully solves the synchronization problem. Here is an example of its actual operation.

1. The master turns on its slave.
2. The slave follows preprogrammed routines (measure dirtiness and initiate cleaning mechanism if needed)
3. The slave is forced to report dirtiness status and other infos after a predefined amount of time from the activation by the master.
4. The master waits for the signal time and when its about time, initiate transmission channels and stand-by for the signal.
5. If the master receives the report back from the slave, get out from the transmission stand-by mode and turn the slave off to conserve power. If the slave reports any needs to clean the system, wait for the slave to finish the job and then terminate the slave.
6. The master waits for a predefined amount of time until it seeks out the slave again.
7. Nest 1-6 in a loop process.

See the next post for pictures and following updates.

No comments: