International Journal of Aerospace Engineering

International Journal of Aerospace Engineering / 2013 / Article

Research Article | Open Access

Volume 2013 |Article ID 549080 |

Mark A. Post, Junquan Li, Regina Lee, "A Low-Cost Photodiode Sun Sensor for CubeSat and Planetary Microrover", International Journal of Aerospace Engineering, vol. 2013, Article ID 549080, 9 pages, 2013.

A Low-Cost Photodiode Sun Sensor for CubeSat and Planetary Microrover

Academic Editor: Hui Hu
Received21 Jul 2013
Accepted04 Nov 2013
Published17 Dec 2013


This paper presents the development of low-cost methodologies to determine the attitude of a small, CubeSat-class satellite and a microrover relative to the sun's direction. The use of commercial hardware and simple embedded designs has become an effective path for university programs to put experimental payloads in space for minimal cost, and the development of sensors for attitude and heading determination is often a critical part. The development of two compact and efficient but simple coarse sun sensor methodologies is presented in this research. A direct measurement of the solar angle uses a photodiode array sensor and slit mask. Another estimation of the solar angle uses current measurements from orthogonal arrays of solar cells. The two methodologies are tested and compared on ground hardware. Testing results show that coarse sun sensing is efficient even with minimal processing and complexity of design for satellite attitude determination systems and rover navigation systems.

1. Introduction

One of the key problems in the development of attitude determination and control systems (ADCS) for small satellites is the use of attitude sensors small enough and efficient enough to fit within mass and power budgets. One of the simplest and most common sensors for attitude determination is the sun sensor [1], which measures the angle of incident light from the sun with respect to an inertial body frame. Both single-axis and dual-axis sensors are available, though a dual-axis sensor can be constructed from two compact single-axis sensors, resulting in lower component costs and processing requirements [2, 3]. In other sun sensor applications, both CCD and CMOS technology have been used to achieve fine pointing accuracy [4, 5], and software methods can be used to increase the accuracy of a sensor [6]. Although several embedded sun sensors for nanosatellite ADCS hardware are now available, it is desirable in many nanosatellite development programs to develop the sun sensors in-house using commercial off-the-shelf (COTS) hardware [7], both for reasons of cost and to increase the potential for further research within their own program. Sun sensors are also used on planetary rovers when other sensors such as magnetometers or GPS receivers are not sufficient. Measuring solar angles with a sun sensor is a good way of estimating absolute orientation [810]. Typical requirements include an accuracy on the order of 1 degree and a field of view of 30 degrees or 60 degrees [11]. Wide-field-of-view sun sensors [12] suitable for use on CubeSat and microrover platforms are still an open area of research and, in many cases, simpler systems are desirable. Low-cost sensors for research use are usually constructed by graduate students and researchers and must be efficient, compact in size, and robust enough to survive the space environment. In this paper, simple, low-cost, and wide-field-of-view sun sensor methodologies are presented. The sensors described here are under development for the YUSEND (York University Space Engineering Nanosatellite Demonstration) mission at York University [13, 14], which focuses on CubeSat technology development such as for the 1 U CubeSat shown in Figure 1, as well as a microrover under development for the Northern Light Mars Lander Mission, shown in Figure 2 [15, 16].

In this paper, we outline the development of two coarse sun sensor methodologies that are compact and efficient enough for a CubeSat-class nanosatellites and microrovers and can provide reliable solar angle information for embedded attitude determination and localization. There are several basic methodologies that are in use for sun sensors, including the use of Position-Sensitive Photodiodes (PSD), linear and grid sensor arrays such as CCDs and photodiode arrays, and the measurement of sunlight on solar panels used for power. In this work, we make use of the latter two.

First, direct measurement of the solar angle is performed using a photodiode array sensor placed below a slit design in the top that allows light to fall on the sensor element. Second, the solar angle is inferred using separate current measurements from the array of solar cells used for power generation on the exterior of the vehicle. In both cases, the solar angle is calculated by a microcontroller from the geometry of the sun sensor with respect to the vehicle body. For this study, it is assumed that at least a 90° field of view is necessary for each sun sensor, so that complete coverage of the exterior is possible with a sun sensor on each face of a CubeSat. To test and validate the sensors, the sensor hardware is rotated on the spot by a rotary gimbal with angular measurement capability, and simulated sunlight from a Schott 1150 Illuminator light source is provided at a fixed position as shown in Figure 3. The nanosatellite model with sun sensor under test on an optical bench and the light source used is shown in Figure 4. Using embedded fixed-point processing, estimations of the current body orientation are processed and made available by serial interface to an on-board computer, which performs the localization and control determination operations [17].

2. Sensor Designs

2.1. Array Sensor

Photodiode sun sensors have been used often for spacecraft and satellite attitude determination systems [18, 19]. An established and simple method for directly sensing solar angles is to use a simple slit or an other aperture design through which light is allowed to fall at one location on a spatially varying sensor, dependent on the incident angle of light. This design uses a 256-element linear photodiode array, which is both flexible in operation, by allowing the distribution and magnitude of light to be determined, and efficient by utilizing only a single line of sensing elements rather than a matrix such as a Charge-Coupled Device (CCD) array. While some systems use a Position-Sensitive Diode (PSD) as a sensor, an array increases linearity of measurement and provides more flexibility in processing of light distribution data. The TAOS TSL1402R integrated linear photodiode array is used in this design. Reading of data and calculation of solar angles are performed by an Atmel ATMega168PA AVR microcontroller. A block diagram of the connections used between the photodiode array and microcontroller is shown in Figure 5.

For single-axis sensing, a simple linear slit in a mask over the sensor is used, as shown in Figure 6. The slit is positioned vertically centered on the sensor element such that light falls on to the sensor array at angles up to 45° in every direction for a 90° total field of view. For a linear photodiode array with length , a light vector falls at an angle from the normal along the element axis and at an angle from the normal along the perpendicular to the element axis. The photodiode voltage output of the sensor falls at the point of contact with the light vector, at a distance from the center of the array. If the slit is positioned at a distance from the array, this distance is simply

To ensure that , the sensor distance should be and, to ensure , the slit length should be . It is preferable for higher precision measurements to use as small a slit width as possible without significant diffractive effects, but the material thickness around the slit is constrained by , which limits how small the slit width can be, as the beam of light will be “pinched” off at high angles. In this design, and the dimensions used were and . In testing, metal foil with width provided acceptable performance using a slit width of .

Linear arrays typically provide only one axis of attitude estimation, but, because a pattern on the array can be measured, it is also possible to measure elevation across most angles by using an N-slit [4], as shown in Figure 7. By adding additional slits positioned at an angle to the central slit, a pattern with multiple illumination maxima will be projected on to the sensor array and the transverse angle can be determined by the separations and of the central slit and one of the side maxima.

As the field of view of the sensor is limited, more than one sun sensor is needed to cover wide angles. Two single slit sensors or one Z-slit sensor can cover two solid angles of 90° with a pyramidal volume of view, and individual sides of a CubeSat can be covered this way depending on mission pointing requirements. For microrover use, a full 180° of view (horizon to horizon) can be covered by four photodiodes attached to the frustum of square pyramid [19, 20]. In the current study, though, a single N-slit sensor is being studied for partial sky coverage on the microrover due to space limitations.

To estimate the orientation of a microrover from solar angles, the angle of the body with respect to the ground and the angle of the sun with respect to the ground must be considered. The former can be obtained with inertial measurements from an accelerometer at rest measuring the gravity vector, and the latter can be obtained from solar ephemeris data and current time. To simplify the analysis, we assume that the accelerometer is aligned with the sun sensor so that the angle is about the forward-pointing -axis and the angle is about the side-pointing -axis. The rover body angles about the - and -axes with respect to the ground frame and can be calculated from the gravity vector using common aerospace relations as follows:

To obtain the sensed horizontal azimuth of a vertically-centered sun sensor measurement, the angles and must be adjusted for rover body angle and projected on the horizontal plane using the quadrant-aware arctangent function as follows:

The solar ephemeris data must be computed separately from an estimate of the current position, which can be done with a variety of available software. The rover’s heading with respect to true north can then be calculated using the solar azimuth and sensed azimuth by [9]

2.2. Solar Current Sensing

Due to the constraints on space and power available in a nanosatellite, it is preferred to make use of sensing methodologies that focus on the processing of other available data, rather than discrete sensors. One method of doing this is to sample the currents generated by the nanosatellite’s solar arrays, information that is commonly available on small satellites for peak-power tracking or battery charge monitoring. This has the advantage that a range of angles spanning a set of independently measured noncoplanar solar panels can be measured without an external sensor but is in general less accurate than discrete sensors due to the nonlinearities involved. In this study, we consider a cubic body with a fixed solar panel on each orthogonal face, as shown in Figure 8. For a CubeSat geometry, no more than three solar panels are exposed to sunlight at a time in orbit if a point source and negligible reflection from the earth are assumed, with angles , , and . For simplicity, a similar body is assumed for a microrover case, though no solar panel is present on the lower face.

The linearity of this measurement varies depending on the solar cells used. Also, nonlinearities are introduced by variations in the load presented to the solar arrays. For a nanosatellite with a linear or pulse regulated battery charge system, this generally arises from changes in battery charge rate as the battery state changes and can be compensated for by including solar cell voltage or an estimation of the charge system state in the solar calculation to determine total power and current output.

The current sensing circuit is constructed from a bank of differential amplifiers that are read by using the Analog-to-Digital Converter (ADC) channels available on the ATMega168PA microcontroller that also reads the linear array. A current sense resistor of 0.1 Ω creates a voltage difference from current flowing from the solar panels, which is amplified by an OPA2340 rail-to-rail op-amp in differential configuration with a gain of 100. The output gain with respect to the solar panel current is then 10 V/A. It is assumed that no more than 500 mA will be sourced from the nanosatellite solar panel, so an ADC reference of 5 V can be used in measurement. As custom-constructed solar panels often vary slightly in output, it is still necessary to calibrate the ADC measurements performed by the microcontroller. The current sense amplifier circuit used for sensing is shown in Figure 9.

The amount of current a solar panel produces depends on the panel area and changes in angle change the effective area of the solar panel intercepting solar energy. For sunlight with an even power density (W/m2) and constant loading or by using compensation calculations, the effective solar current relative to the maximum solar current intercepted by the solar array varies with the incident angle and can be expressed in general terms as a ratio

Current sensing results are much more noisy and less linear than the results from the photodiode array. In particular, the ADC offsets and gains must be calibrated for each panel separately to ensure that measurements can be compared. Figure 16 shows the output from the solar panels after applying a moving average to remove noise. By applying (5) and determining the angular quadrant around the vehicle that the sun is in, it is possible to extract an estimate of relative solar angle to each panel. Combining several panels allows determination of a solar angle with respect to the body at any angle observed by solar panels. While this method may be considered generally less reliable than direct solar measurement, it does allow solar angle measurement without dedicated sensors at a wider range of angles than a single external sensor would be able to measure. Equations (2), (3), and (4) can be applied for a rover so long as two orthogonal axes of angular measurement can be obtained from the solar panel geometry.

3. Testing Results

3.1. Array Sensor Results

Typical illumination measurements from the photodiode array sun sensor are shown in Figure 10. The voltage output must be inverted so that illumination becomes positive. Then, a centroiding algorithm [4] is used to determine the center of illumination across the sensor (shown with a vertical line). The centroid positions are then used in (1) for each angle sampled to determine the corresponding solar angle by

The estimated, centroided solar angle is plotted in Figure 11, with the actual solar angle used on the gimbal test apparatus shown as a straight line for comparison. In general, very good agreement is achieved between the estimated and actual solar angles. It is worth noting that this angular data is not filtered or smoothed but still achieves consistent tracking.

If an N-slit is used to perform estimation of the transverse angle , multiple illumination centroids are present on the sensor as shown in Figure 12 and must be partitioned separately. However, as the angle increases from the vertical, it is common for one of the illuminated regions to move off the sensor for moderately high angles of and for the other two illuminated regions to approach and ultimately merge together as seen in Figure 13. This poses a problem for centroid partitioning as angle increases. To mitigate this problem, the outer boundaries of the illuminated areas are tracked and the centroids are constrained to be between these boundaries and the midpoint between the boundaries. Having a precise geometry for the N-slit is essential for accuracy in this case, and some calibration must be performed for the alignment of the sensor and N-slit, particularly for the angle that the side slits make with the center slit. Using the centroid from the center slit located at position and the centroid of one of the side slits at position , the angle can be estimated by using [4]

The estimated transverse solar angle obtained from N-slit measurements by using (7) is shown in Figure 14. Reasonable agreement is obtained, but the error is higher than in simple linear slit measurements due to the greater complexity of constructing a precise N-slit. Accurate measurements of angles above approximately 35° could not be obtained due to difficulties accurately partitioning and centroiding the illuminated areas on the sensor at high angles of . The use of a wider N-slit or thinner material and slit width extends the measurable angles of this sensor.

Using both the angles and and precalculated solar ephemeris data, a test of calculating the heading of the microrover was conducted. The sun sensor was mounted on the microrover with the orientation aligned with the body frame as stated above, and the microrover rotated from 165° to 135° away from north. The estimated heading angle for the 30° sweep is plotted in Figure 15, with the externally measured angle superimposed for reference. To improve the accuracy of this measurement, a 2-point moving average was used in processing.

3.2. Solar Current Results

Current measurement using high gains and ADC sensing generates much more noise than digital sensing using a linear array as described above. Although a constant current draw and capacitive decoupling of the amplifiers and microcontroller pins was used in this study, applying a windowed average to the data assuming slow changes in angle was necessary to achieve consistent results. Figure 16 shows the solar panel current output , , and for three solar panels enumerated as (facing the axis), (facing the axis), and (facing the axis) in the direction of increasing angle about a 1 U CubeSat. Smooth reference curves for the actual solar angles presented in gimbal testing with respect to each panel , , and are superimposed for reference.

After filtering the current from each panel , the quadrant that actual solar angle lies in with respect to the satellite body must be determined. The most straightforward method of doing this is to simply identify which panels are exposed to the most sunlight by comparing the relative solar panel currents and assigning the appropriate sinusoid quadrant function using mapping functions. As the greatest change in illumination is present at high solar angles to each panel, it is possible to determine the quadrant of a sine function for the satellite body frame angle by using only and to determine the mapping for only the current as

Using (8), the current from each solar panel is used to obtain an estimated body frame angle over a 180° arc, shown in Figure 17. It is evident that there are a discontinuity and higher inaccuracy near the angle which corresponds to . This is due to the sudden jump in assignment but also to the inaccuracy of determining angles close to the vertical. To mitigate this, a revised mapping given in (9) can be used that takes advantage of the other solar panels’ contributions at high angles to increase the accuracy of measurement. The estimated body frame angle for this case is shown in Figure 18. The revised mapping is as follows:

It should be noted that this estimation is not as reliable if the distribution of solar panels over the body is not symmetrically illuminated, such as in the case of the microrover. Hence, (8) is more appropriate for microrover use where less useful information is obtained at and (9) is more appropriate for nanosatellite use.

4. Comparison of Results and Discussion

To effectively compare the two methodologies described here, it is important to include the error of measurement with respect to the known angles used during testing. Figure 19 shows the estimation error for the linear array angle measurement of from Figure 11 using (6). Figure 20 shows the estimation error of the transverse angle for the array while using an N-slit from Figure 14 using (7), and Figure 21 shows the error in Figure 15 using an N-slit for heading estimation. Finally, Figure 22 shows the estimation error for the solar panel current angle measurement from Figure 18 using (9). The linear array shows a maximum error of approximately ±5° overall with less consistency in the N-slit measurement, while the solar current sensing shows a maximum error of approximately ±7°. These are comparable results, but the linear array data is obtained by centroiding and otherwise unfiltered, while the solar current data requires significant filtering to remove measurement noise. Hence the use of a discrete digital sensor is still expected to provide better reliability and overall accuracy, though with appropriate data processing, solar current measurement can also provide useable and complimentary coarse angle measurements. The tracking accuracy and noise present in microrover heading estimation is comparable to the sensor laboratory tests, but slightly lower as a moving average was used, and indicates that useable heading information can be extracted using a single N-slit sensor.

5. Conclusions

We have implemented and compared two useful methods for coarse solar angle sensing. Using only simple hardware and embedded software implementation, very coarse attitude estimation results can be achieved using either photodiode array or solar panel current measurement methodologies for nanosatellite attitude tracking or microrover navigation. The photodiode array provides good overall accuracy to errors within ±5° without additional filtering and thus requires minimal processing but can be improved beyond this measure if additional filtering is implemented. Dual-axis sensing is possible for a linear array using an N-slit configuration, but precise construction of the slit is essential and transverse angular measurements are more limited. Solar panel current measurements without the use of a discrete sensor can provide angular approximations over the entire exterior of the vehicle to ±7°, but require significant filtering and averaging of measurements, and thus tend to be less accurate and more processing-intensive.

Sun sensor designs such as these are useable in university and research hardware development programs due to their simplicity, robustness, and cost-effectiveness. As testing of both sun sensor configurations was done in parallel, both sensors could also be used in parallel on a CubeSat or microrover to achieve higher accuracy under uncertain conditions. Future work will include refinements to the design of both sun sensor methodologies and further improvements to localization and navigation.

Conflict of Interests

The authors declare that there is no conflict of interests regarding the publication of this paper.


  1. M. Buonocore, M. Grassi, and G. Rufino, “Aps-based miniature sun sensor for earth observation nanosatellites,” Acta Astronautica, vol. 56, no. 1-2, pp. 139–145, 2005. View at: Publisher Site | Google Scholar
  2. A. Ali and F. Tanveer, “Low-cost design and development of 2-axis digital sun sensor,” Journal of Space Technology, vol. 1, no. 1, 2011. View at: Google Scholar
  3. P. Ortega, G. López-Rodríguez, J. Ricart et al., “A miniaturized two axis sun sensor for attitude control of nano-satellites,” IEEE Sensors Journal, vol. 10, no. 10, pp. 1623–1632, 2010. View at: Publisher Site | Google Scholar
  4. M.-S. Wei, F. Xing, B. Li, and Z. You, “Investigation of digital sun sensor technology with an N-shaped slit mask,” Sensors, vol. 11, no. 10, pp. 9764–9777, 2011. View at: Publisher Site | Google Scholar
  5. P. Appel, “Attitude estimation from magnetometer and earth-albedo-corrected coarse sun sensor measurements,” Acta Astronautica, vol. 56, no. 1-2, pp. 115–126, 2005. View at: Publisher Site | Google Scholar
  6. J. P. Enright and G. Godard, “Advanced sun-sensor processing and design for super-resolution performance,” in Proceedings of the IEEE Aerospace Conference, Big Sky, Mont, USA, March 2006. View at: Google Scholar
  7. S. E. Allgeier, M. Mahin, and N. G. Fitz-Coy, “Design and analysis of a coarse sun sensor for pico-satellites,” in Proceedings of the AIAA Infotech at Aerospace Conference and Exhibit and AIAA Unmanned Unlimited Conference, Seattle, Wash, United state, April 2009. View at: Google Scholar
  8. R. Volpe, “Mars rover navigation results using sun sensor heading determination,” in Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS'99), vol. 1, pp. 460–467, October 1999. View at: Google Scholar
  9. A. Trebi-Ollennu, T. Huntsberger, Y. Cheng, E. T. Baumgartner, B. Kennedy, and P. Schenker, “Design and analysis of a sun sensor for planetary rover absolute heading detection,” IEEE Transactions on Robotics and Automation, vol. 17, no. 6, pp. 939–947, 2001. View at: Publisher Site | Google Scholar
  10. P. Furgale, J. Enright, and T. Barfoot, “Sun sensor navigation for planetary rovers: theory and field testing,” IEEE Transactions on Aerospace and Electronic Systems, vol. 47, no. 3, pp. 1631–1647, 2011. View at: Publisher Site | Google Scholar
  11. I. Maqsood and T. Akram, “Development of a low cost sun sensor using quadphotodiode,” in Proceedings of the IEEE/ION Position, Location and Navigation Symposium (PLANS '10), pp. 639–644, Indian Wells, Calif, USA, May 2010. View at: Publisher Site | Google Scholar
  12. J. D. Francisco, J. Quero, J. Garca, C. L. Tarrida, P. R. Ortega, and S. Bermejo, “Accurate and wide-field-of-view MEMS-based sun sensor for industrial applications,” IEEE Transactions on Industrial Electronics, vol. 59, no. 12, pp. 4871–4880, 2012. View at: Google Scholar
  13. J. Li, M. A. Post, and R. Lee, “Design of attitude control systems for CubeSat-class nanosatellite,” Journal of Control Science and Engineering, vol. 2013, Article ID 657182, 15 pages, 2013. View at: Publisher Site | Google Scholar
  14. R. Lee, H. Chesser, M. Cannata, M. Post, and K. Kumar, “Modular attitude control system design for CubeSat application,” in Proceedings of the 16th Bi-Annual Astronautics Conference of the Canadian Aeronautics and Space Institute (CASI ASTRO '12), Quebec, Canada, April 2012. View at: Google Scholar
  15. N. Navarathinam, R. Lee, K. Borschiov, and B. Quine, “Northern light drill for Mars: performance evaluation,” Acta Astronautica, vol. 68, no. 7-8, pp. 1234–1241, 2011. View at: Publisher Site | Google Scholar
  16. M. A. Post, M. A. L. R, and B. M. Quine, “Beaver micro-rover development for the Northern light mars lander,” in Proceedings of the 16th Bi-Annual Astronautics Conference of the Canadian Aeronautics and Space Institute (CASI ASTRO '12), Quebec, Canada, April 2012. View at: Google Scholar
  17. S. Chouraqui, M. Benyettou, and M. A. Si, “Sensor vectors modeling for small satellite attitude determination,” Journal of Applied Sciences, vol. 5, no. 10, pp. 1739–1743, 2005. View at: Google Scholar
  18. M. A. Post, J. Li, and R. Lee, “Nanosatellite sun sensor attitude determination using low cost hardware,” in Proceedings of the 23th AAS/AIAA Space Flight Mechanics Meeting (AAS/AIAA '13), Kauai, Hawaii, USA, February 2013. View at: Google Scholar
  19. J. C. Springmann and J. W. Cutler, “Optimization of directional sensor orientation with application to photodiodes for spacecraft attitude determination,” in Proceedings of the 23th AAS/AIAA Space Flight Mechanics Meeting (AAS/AIAA '13), Kauai, Hawaii, USA, February 2013. View at: Google Scholar
  20. T. Tambo, M. Shibata, Y. Mizuno, and T. Yamauchi, “Search method of sun using fixed five photodiode sensor,” IEEJ Transactions on Sensors and Micromachines, vol. 129, no. 2, pp. 53–59, 2009. View at: Publisher Site | Google Scholar

Copyright © 2013 Mark A. Post et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

More related articles

 PDF Download Citation Citation
 Download other formatsMore
 Order printed copiesOrder

Related articles

Article of the Year Award: Outstanding research contributions of 2020, as selected by our Chief Editors. Read the winning articles.