<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s111009764</article-id>
<article-id pub-id-type="publisher-id">sensors-11-09764</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Investigation of Digital Sun Sensor Technology with an <italic>N</italic>-Shaped Slit Mask</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Wei</surname><given-names>Min-Song</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Xing</surname><given-names>Fei</given-names></name><xref ref-type="corresp" rid="c1-sensors-11-09764">*</xref></contrib>
<contrib contrib-type="author">
<name><surname>Li</surname><given-names>Bin</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>You</surname><given-names>Zheng</given-names></name></contrib>
<aff id="af1-sensors-11-09764">State Key Laboratory of Precision Measurement Technology and Instruments, Department of Precision Instruments and Mechanology, Tsinghua University, Beijing 100084, China; E-Mails: <email>wms09@mails.tsinghua.edu.cn</email> (M.-S.W.); <email>lbin@tsinghua.edu.cn</email> (B.L.); <email>yz-dpi@mail.tsinghua.edu.cn</email> (Z.Y.)</aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-11-09764">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>xingfei@mail.tsinghua.edu.cn</email>; Tel.: +86-10-6278-6000.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2011</year></pub-date>
<pub-date pub-type="epub">
<day>18</day>
<month>10</month>
<year>2011</year></pub-date>
<volume>11</volume>
<issue>10</issue>
<fpage>9764</fpage>
<lpage>9777</lpage>
<history>
<date date-type="received">
<day>6</day>
<month>8</month>
<year>2011</year></date>
<date date-type="rev-recd">
<day>27</day>
<month>9</month>
<year>2011</year></date>
<date date-type="accepted">
<day>17</day>
<month>10</month>
<year>2011</year></date></history>
<permissions>
<copyright-statement>© 2011 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2011</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>Nowadays sun sensors are being more widely used in satellites to determine the sunray orientation, thus development of a new version of sun sensor with lighter mass, lower power consumption and smaller size it of considerable interest. This paper introduces such a novel digital sun sensor, which is composed of a micro-electro-mechanical system (MEMS) mask with an <italic>N</italic>-shaped slit as well as a single linear array charge-coupled device (CCD). The sun sensor can achieve the measurement of two-axis sunray angles according to the three sun spot images on the CCD formed by sun light illumination through the mask. Given the CCD glass layer, an iterative algorithm is established to correct the refraction error. Thus, system resolution, update rate and other characteristics are improved based on the model simulation and system design. The test of sun sensor prototype is carried out on a three-axis rotating platform with a sun simulator. The test results show that the field of view (FOV) is ±60° × ±60° and the accuracy is 0.08 degrees of arc (3σ) in the whole FOV. Since the power consumption of the prototype is only 300 mW and the update rate is 14 Hz, the novel digital sun sensor can be applied broadly in micro/nano-satellites, even pico-satellites.</p></abstract>
<kwd-group>
<kwd>sun sensor</kwd>
<kwd><italic>N</italic>-shaped slit</kwd>
<kwd>linear CCD</kwd>
<kwd>simulation</kwd>
<kwd>prototype design</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>As an essential component of satellites, the sun sensor has been widely used to measure the incident angle of the sunrays in the satellite-fixed coordinates [<xref ref-type="bibr" rid="b1-sensors-11-09764">1</xref>,<xref ref-type="bibr" rid="b2-sensors-11-09764">2</xref>]. Sun appearance sensors and analog sun sensors are representative of conventional types [<xref ref-type="bibr" rid="b3-sensors-11-09764">3</xref>]. Given the requirements for accuracy, power consumption and size, conventional sun sensors cannot be used any longer in micro/nano-satellites. With the development of imaging devices, such as array Charge-Coupled Devices (CCD) or Active Pixel Sensors (APS), these digital sun sensors have been an attractive focus of research [<xref ref-type="bibr" rid="b4-sensors-11-09764">4</xref>,<xref ref-type="bibr" rid="b5-sensors-11-09764">5</xref>]. By calculating the sunray angles from the location of sun spots formed on the imaging device, digital sun sensors have the merits of a large field of view as well as high accuracy and reliability, which exactly meet the requirements and trends of sun sensors [<xref ref-type="bibr" rid="b6-sensors-11-09764">6</xref>].</p>
<p>Recent years have seen substantial growth in the research on digital sun sensors and related products. Those sensors that adopt planar APS as focal plane detectors usually can determine two-axis sunray angles with higher accuracy and resolution [<xref ref-type="bibr" rid="b7-sensors-11-09764">7</xref>–<xref ref-type="bibr" rid="b11-sensors-11-09764">11</xref>]. For instance, TNO TPD has a long history of work on digital sun sensors and their product based on the planar APS can achieve an accuracy of 0.024° (2σ) in the whole 120° × 120° FOV, with a power consumption of 1 W [<xref ref-type="bibr" rid="b7-sensors-11-09764">7</xref>]. Another two-axis digital sun sensor developed by Tsinghua University also exploited a planar CMOS APS image sensor and its angle accuracy was 0.1° in the whole 128° × 128° FOV, with a power consumption of 2.5 W [<xref ref-type="bibr" rid="b9-sensors-11-09764">9</xref>]. On the other hand, those sensors that adopt linear image detectors to achieve two-axis sunray angles have also been studied [<xref ref-type="bibr" rid="b12-sensors-11-09764">12</xref>–<xref ref-type="bibr" rid="b14-sensors-11-09764">14</xref>]. It has been proven that two linear image sensors mounted perpendicularly function well to determine the sun vector. Such a digital sun sensor with low power consumption (500 mW) was implemented in [<xref ref-type="bibr" rid="b12-sensors-11-09764">12</xref>] and its accuracy was 0.05° in FOV of 90°. What is more, Sinclair Interplanetary has designed a series of products from SS256 to SS441 with linear image detectors. The digital sun sensor SS441 realized an accuracy of 0.1° in ±70° FOV and consumed only 300 mW [<xref ref-type="bibr" rid="b13-sensors-11-09764">13</xref>]. Nevertheless, its update rate is only 5 Hz, which is mainly caused by the complex algorithm used.</p>
<p>Considering all the aforementioned shortcomings, such as high power consumption [<xref ref-type="bibr" rid="b7-sensors-11-09764">7</xref>,<xref ref-type="bibr" rid="b9-sensors-11-09764">9</xref>], small FOV [<xref ref-type="bibr" rid="b12-sensors-11-09764">12</xref>] and low update rate [<xref ref-type="bibr" rid="b13-sensors-11-09764">13</xref>], this article presents a novel digital sun sensor with large FOV, high accuracy, low power consumption, and high update rate which can achieve the measurement of two-axis sunray angles with a single linear CCD. This kind of sun sensor is composed of a micro-electro-mechanical system (MEMS) mask and a single linear CCD. Its field of view is ±60° × ±60° and the accuracy is 0.08 degrees of arc (3σ) in the whole FOV. The prototype only consumes 300 mW and the update rate is 14 Hz.</p></sec>
<sec>
<label>2.</label>
<title>Principle and Modeling</title>
<sec>
<label>2.1.</label>
<title>Principle of Novel Digital Sun sensor</title>
<p>A linear CCD based sun sensor usually adopts the combination of an optical mask with a single slit on it and a linear CCD detector (see <xref ref-type="fig" rid="f1-sensors-11-09764">Figure 1</xref>) [<xref ref-type="bibr" rid="b15-sensors-11-09764">15</xref>]. When the sunray moves toward the sun sensor at a certain angle, the mask plane can block most of the sunray while only a small portion can pass through the slit and reach the detector plane, forming a light spot (see <xref ref-type="fig" rid="f2-sensors-11-09764">Figure 2</xref>).</p>
<p>By analyzing the location of the spot, the sun vector can be reconstructed and the incident angle <italic>θ</italic> can be calculated as:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula>where <italic>x<sub>c</sub></italic> denotes the distance between the sun spot and the slit sight point and <italic>h</italic> denotes the distance between the mask plane and the focal plane.</p>
<p>To maximize the merits of the linear CCD and accomplish the measurement of two-axis sunray angles, a novel scheme has been introduced in this paper. We put forward a mask with an <italic>N</italic>-shaped slit on it to meet the acquirements (see <xref ref-type="fig" rid="f3-sensors-11-09764">Figure 3</xref>).</p>
<p>The special slit is composed of a central slit and two paralleling diagonal slits, which interconnect end to end, like the italic ‘<italic>N</italic>’. And the linear CCD locates just below the mask at a certain distance <italic>h</italic>. Initially, the focal plane parallels to the mask plane while the central slit is perpendicular to the linear CCD.</p>
<p>The principle of the novel digital sun sensor is based on the different shifts of the three detected sun spots. It is assumed that three sun spots denoted as <italic>Y</italic><sub>0</sub>, <italic>Y</italic><sub>1</sub> and <italic>Y</italic><sub>2</sub> are detected on the default situation (the sunray is parallel to the Z/Za-axis). Compared with the default situation, when an incident sunray deflects in the Xa-Za plane—where <italic>v</italic> denotes the defection angle as shown in <xref ref-type="fig" rid="f3-sensors-11-09764">Figure 3(a)</xref>, the central spot remains still while the other two spots shift the same distance in the same direction. When the incident sunray deflects in the Ya-Za plane—where <italic>μ</italic> denotes the defection angle as indicated in <xref ref-type="fig" rid="f3-sensors-11-09764">Figure 3(b)</xref>, all three spots shift the same distance in the same direction. Generally, if the sunray travels at a random angle of incident in the FOV, the three spots trend in two distinguishable responses subject to different orientations of the sunray. As shown in <xref ref-type="fig" rid="f3-sensors-11-09764">Figure 3(c)</xref>, Δ<italic>y</italic><sub>1</sub> which denotes the distance between <italic>Y</italic><sub>0</sub> and <italic>Y</italic><sub>0</sub>′ contains the information related to the deflection angle in the Ya-Za plane while Δ<italic>y</italic><sub>2</sub> which denotes the distance between <italic>Y</italic><sub>1</sub> and <italic>Y</italic><sub>1</sub>′ (or between <italic>Y</italic><sub>2</sub> and <italic>Y</italic><sub>2</sub>') contains the information related to the deflection angles both in Ya-Za plane and Xa-Za plane. Taking vector superposition into account, the two-axis sunray angles can be calculated as:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>Δ</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>Δ</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>δ</mml:mi></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>δ</mml:mi></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>μ</italic>, <italic>v</italic> denote the sunray horizontal and azimuth orientation in the satellite-fixed coordinates, respectively, which can be illustrated clearly in <xref ref-type="fig" rid="f4-sensors-11-09764">Figure 4</xref>; <italic>ȳ</italic><sub>1</sub> denotes the initial distance between the central sun spot and the origin of coordinates while <italic>ȳ</italic><sub>2</sub> denotes the initial distance between either sideways sun spot and the origin of coordinates; <italic>y</italic><sub>1m</sub> denotes the measurement distance between the central sun spot and the origin of coordinates while <italic>ȳ</italic><sub>2</sub> denotes the measurement distance between either sideways sun spot and the origin of coordinates; and <italic>δ</italic> donates the angle between the central slit and the diagonal slit.</p>
<p>Given the fact that Euler angles are more widely used to scale the attitude of a satellite, we could adapt the equations into the form of Euler angles (<italic>α</italic>, <italic>β</italic>, <italic>γ</italic>) which are defined as mode zxy. When the sunray travels with the incident angle of <italic>θ</italic>, all related angles can be observed in <xref ref-type="fig" rid="f5-sensors-11-09764">Figure 5</xref>, except the angle <italic>α</italic> which cannot be measured by a two-axis sun sensor.</p>
<p>On the basis of the analysis of fundamental geometrical relations, we have:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>β</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>μ</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ν</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>γ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p></sec>
<sec>
<label>2.2.</label>
<title>Modeling of Refraction Error Correction</title>
<p>Furthermore, the main error of this digital sun sensor is the sunray refraction error caused by the glass protection layer of the CCD [<xref ref-type="bibr" rid="b16-sensors-11-09764">16</xref>]. As shown in <xref ref-type="fig" rid="f5-sensors-11-09764">Figure 5</xref>, we introduce a correction coefficient <italic>k</italic> to measure the error, which can be defined as follows:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mo>′</mml:mo></mml:msup>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi>l</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>l</mml:mi></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>&gt;</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:math></disp-formula>where <italic>n</italic><sub>1</sub>, <italic>n</italic><sub>2</sub>, <italic>n</italic><sub>3</sub> denote the light refractive index of the vacuum, CCD protecting glass and air, respectively, and the superscript ′ indicates the ideal value without the refraction.</p>
<p>From the explanation about the principle and the geometrical relations, we have:
<disp-formula id="FD9">
<label>(9)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD10">
<label>(10)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:math></disp-formula></p>
<p>So the fundamental equations can be corrected with <italic>k</italic> as follows:
<disp-formula id="FD11">
<label>(11)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>μ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD12">
<label>(12)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>ν</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>γ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD13">
<label>(13)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>β</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>arctan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>k</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>h</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>The key process to correct the refraction error is to calculate the value of <italic>k</italic>, however, it is obvious that <italic>k</italic> is a function of incident angle <italic>θ</italic> while <italic>θ</italic> cannot be measured directly. We have noticed that <italic>l</italic> can be computed directly from <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref> according to the measurement of the spots. Although <italic>l</italic> is a function of incident angle <italic>θ</italic> from <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref> as well, there is no analytic solution for <italic>θ</italic>. To deal with this problem, an iterative algorithm based on the Newton iteration method has been established. Substitution of <italic>n</italic><sub>1</sub> and <italic>n</italic><sub>3</sub> with constant 1 into <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref> yields the basic iterative equation:
<disp-formula id="FD14">
<label>(14)</label>
<mml:math display="block">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi></mml:mrow>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi></mml:mrow>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></disp-formula></p>
<p>Then the incident angle can be calculated through iteration as follows:
<disp-formula id="FD15">
<label>(15)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mi>F</mml:mi>
<mml:mo>′</mml:mo></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>where:
<disp-formula id="FD16">
<label>(16)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>k</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mi>l</mml:mi></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD17">
<label>(17)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mi>F</mml:mi>
<mml:mo>′</mml:mo></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mtext>cos</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mtext>cos</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>arcsin</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>k</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mtext>sin</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>The initial incident angle for iteration can be obtained through the two-axis angles measured with the equation below:
<disp-formula id="FD18">
<label>(18)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mtext>tan</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mtext>tan</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:mi>ν</mml:mi>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mtext>tan</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:mi>μ</mml:mi></mml:mrow></mml:math></disp-formula></p>
<p>To sum up, the correction coefficient <italic>k</italic> can be calculated from the sun spots obtained by using the iterative algorithm for incident angle <italic>θ</italic>, and the sun angles (<italic>μ</italic>, <italic>v</italic>) or (<italic>β</italic>, <italic>γ</italic>) can be derived from the <xref ref-type="disp-formula" rid="FD11">Equations (11</xref>–<xref ref-type="disp-formula" rid="FD13">13)</xref>. Furthermore, this algorithm can be applied to both CMOS APS and CCD based sun sensors.</p></sec></sec>
<sec sec-type="methods">
<label>3.</label>
<title>Simulation Analysis</title>
<p>To optimize the features of the sun sensor, the relationship between the structural parameters and the system functional characteristics should be carefully considered. Therefore, the FOV and system resolution are analyzed in this section for the design of optical head, based on the <xref ref-type="disp-formula" rid="FD2">Equations (2)</xref> and <xref ref-type="disp-formula" rid="FD3">(3)</xref>. These two fundamental equations are analogous, indicating that the incident angle is subject to the spot displacement and the constant quantity <italic>h</italic> or <italic>h</italic>tan<italic>δ</italic>. If we assume that <italic>δ</italic> = 45°, the constant in both equations would be substantially the same, which also results in the same resolution and FOV in both axes. Since we have declared <italic>δ</italic> = 45°, the equation of system resolution based on <xref ref-type="disp-formula" rid="FD2">Equations (2)</xref> and <xref ref-type="disp-formula" rid="FD3">(3)</xref> can be abstractly presented as:
<disp-formula id="FD19">
<label>(19)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:msup>
<mml:mtext>cos</mml:mtext>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>d</italic>(<italic>y</italic>), <italic>d</italic>(<italic>a</italic>) denote the distance resolution of CCD and the angle resolution of the sun sensor at a certain-axis sunray angle of <italic>a</italic>, respectively. The relationship between FOV and <italic>h</italic> can be presented as follows:
<disp-formula id="FD20">
<label>(20)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mo>Δ</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>Δ</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>From <xref ref-type="fig" rid="f6-sensors-11-09764">Figure 6</xref>, we can conclude that the greater <italic>h</italic> the higher resolution, while on the contrary, the higher <italic>h</italic> the smaller FOV. That is to say, the trade-off between higher system resolution and larger sensor FOV should be considered during the design of <italic>h</italic>. In addition, the resolution varies at different incident angles which can also be revealed from <xref ref-type="fig" rid="f6-sensors-11-09764">Figure 6</xref>, and the greater incident angle the higher resolution.</p>
<p>The first priority of our design is that <italic>h</italic> should satisfy the requirement of FOV, followed by the optimization of the system resolution. According to this criterion, we calculate the relationship between <italic>h</italic> and FOV from <xref ref-type="disp-formula" rid="FD20">Equation (20)</xref>, when the other parameters are explicit, such as the geometric dimensioning of the CCD. Then the parameters of <italic>N</italic>-shaped slit is taken into account to restrain the geometric position of the sun spots to make sure that all three spots are within the photosensitive region of the detector in the whole FOV. Thus, to accomplish a ±60° × ±60° FOV, <italic>h</italic> = 3.5 mm is calculated. A Toshiba product is used as sun imaging detector with pixel size 8 μm long by 64 μm wide.</p>
<p>As for the optimization of system resolution, we introduce a first-order centroiding algorithm by having the pixel resolution of CCD subdivided from 1 pixel into 0.1 pixel [<xref ref-type="bibr" rid="b17-sensors-11-09764">17</xref>,<xref ref-type="bibr" rid="b18-sensors-11-09764">18</xref>]. Since the sun spot detected by the CCD and sampled by the process unit (see <xref ref-type="fig" rid="f7-sensors-11-09764">Figure 7(a)</xref>) actually composes of several serial points with certain grey value, so if we consider one sun spot as an assembly of rectangles as shown in (<xref ref-type="fig" rid="f7-sensors-11-09764">Figure 7(b)</xref>), the centroid of the assembly can indicate the accurate location of the sun spot</p>
<p>From basic physical law, the sum of the serial rectangles’ gravitational potential energy equals the gravitational potential energy of the assembly. If we assume the gravitational potential energy along axis of grey value is zero and the unit area density is 1, then the total energy can be calculated as follows:
<disp-formula id="FD21">
<label>(21)</label>
<mml:math display="block">
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>Δ</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>g</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>Δ</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>where <italic>y<sub>i</sub></italic>, <italic>y<sub>c</sub></italic> denote the pixel number of the rectangles within the sun spot and the centroid of the sun spot, respectively, and <italic>v<sub>i</sub></italic> denotes the grey value of the corresponding point:
<disp-formula id="FD22">
<label>(22)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>Since the distance resolution of chosen CCD can be subdivided into 0.8 μm, the system resolution can be simulated as shown in <xref ref-type="fig" rid="f8-sensors-11-09764">Figure 8</xref> from <xref ref-type="disp-formula" rid="FD19">Equation (19)</xref>. We can conclude that the worst solution occurs at the zero incident angle and the system solution has been designed to be superior to 0.02°.</p>
<p>By employing the Toshiba CCD, which can provide a pixel resolution of 0.8 μm with the help of centroiding algorithm, the FOV is ±60° × ±60°, and system resolution is 0.02° when <italic>h</italic> is designed to be 3.5 mm.</p></sec>
<sec sec-type="methods">
<label>4.</label>
<title>Mechanical and Electrical Design</title>
<p>To obtain the goals of larger FOV, smaller size and lower power, both hardware and software of the sun sensor must be designed scrupulously. It has been a great help to achieve the aimed FOV by using MEMS-based technology to fabricate the mask. The construction of the sun sensor prototype mainly consists of frames, circuit board and the mask with an <italic>N</italic>-shaped slit (see <xref ref-type="fig" rid="f9-sensors-11-09764">Figure 9</xref>). More accurately, the frames contribute to restrain the distance between the mask plane and the focal plane as well as holding the inner units of the sun sensor; the circuit board integrates the optics to electronics conversion and carries out data processing; the mask forms the image of the incident sunray.</p>
<p>Besides, the mask is fabricated via MEMS processes to archive a thin mask layer for decreasing its adverse effect of the FOV, while it also has the capability to decay the incident sunray to keep the detector working at a proper intensity range [<xref ref-type="bibr" rid="b19-sensors-11-09764">19</xref>]. During the brief manufacture process, firstly a Cr mask layer is deposited on the glass base, and then, the photoresist, serving as the lithographic mask, is patterned to form the <italic>N</italic>-shaped slit. After the lithographic process, the <italic>N</italic>-shaped slit will be formed in the Cr mask layer. The prototype is shown in <xref ref-type="fig" rid="f10-sensors-11-09764">Figure 10</xref>.</p>
<p>The electrical design has been accomplished by integrating all the component devices into one circuit board. And the program is designed as what the program flowchart (see <xref ref-type="fig" rid="f11-sensors-11-09764">Figure 11</xref>) shows. After power-on and initialization of the system, CCD detector will be activated and the analog output of the CCD will be sampled. If there is no previous sun spots data, the whole frame data will be read and analyzed to determine the three sun spots in the acquisition mode. If the sun spots have been detected in the previous cycle, only certain assigned data around the forecasted sun spots will be analyzed to find out the precision sun spots in tracking mode. After the sun spots are acquired based on centroiding algorithm, two-axis sunray angles can be calculated from iterative equations. It is obvious that the tracking mode will save much processing time and then predict a higher update rate.</p></sec>
<sec sec-type="results">
<label>5.</label>
<title>Experiments and Results</title>
<p>In the test and calibration of the sun sensor, the set-up at ambient conditions serves as the testing system, which consists of a sun simulator and a three-axis gimbals rotary table (see <xref ref-type="fig" rid="f12-sensors-11-09764">Figure 12</xref>).</p>
<p>The sun simulator can send a parallel light beam and the rotating platform can provide different incident sunray angles with a position accuracy of 0.001°. The performance test indicates that the FOV of the sun sensor is larger than ±60° × ±60°, and the maximum error between the measured sun position in the form of incident angle and the setting position through the rotary table is less than 0.08 degrees of arc (see <xref ref-type="fig" rid="f13-sensors-11-09764">Figure 13</xref> for the half FOV statistics).</p>
<p>The entire performance characteristics as well as physical parameters of the sun sensor have been summarized in <xref ref-type="table" rid="t1-sensors-11-09764">Table 1</xref>.</p></sec>
<sec sec-type="conclusions">
<label>6.</label>
<title>Conclusions</title>
<p>In this paper, a novel digital sun sensor to meet the requirements of the modern application of micro/nano-satellites has been proposed. This sun sensor relies on a MEMS mask with an <italic>N</italic>-shaped slit and a single linear array CCD to achieve two-axis sunray angles by distinguished measurement of the sun spots. Furthermore, a correction coefficient has been introduced with the analysis of the refraction error to improve the accuracy. In addition, system design and simulation to accomplish the prototype of the sun sensor are also presented. The experimental results show that the field of view is ±60° × ±60° and the accuracy is 0.08 degrees of arc (3σ) in the whole FOV. The sun sensor can work at an update rate of 14 Hz, while consuming only 300 mW. The novel sun sensor introduced in this paper provides a broad application in the future, for it accomplishes a high accuracy with light mass, small size and low power consumption.</p></sec></body>
<back>
<ack>
<p>This work has been carried out in the State Key Laboratory of Precision Instrument Measurement, Tsinghua University under the financial support by the National 863 Project (No. 2008AA12A216) and China NSF project (No. 60807004). The authors also wish to acknowledge the contributions made by Wen Jiang for the efforts of amending the paper.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-11-09764"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rufino</surname><given-names>G</given-names></name><name><surname>Grassi</surname><given-names>M</given-names></name></person-group><article-title>Multi-aperture CMOS sun sensor for microsatellite attitude determination</article-title><source>Sensors</source><year>2009</year><volume>9</volume><fpage>4503</fpage><lpage>4524</lpage><pub-id pub-id-type="doi">10.3390/s90604503</pub-id><pub-id pub-id-type="pmid">22408538</pub-id></citation></ref>
<ref id="b2-sensors-11-09764"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>He</surname><given-names>L</given-names></name><name><surname>Hu</surname><given-names>Y-H</given-names></name></person-group><article-title>The principium and developing direction of the sun sensors</article-title><source>Sens. World</source><year>2006</year><volume>1</volume><fpage>12</fpage><lpage>14</lpage></citation></ref>
<ref id="b3-sensors-11-09764"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Milton</surname><given-names>CP</given-names></name><name><surname>Jenifer</surname><given-names>LK</given-names></name></person-group><article-title>Using the Sun Analog Sensor (SAS) data to investigate solar array yoke motion on the GOES-8 and -9 spacecraft</article-title><conf-name>Proceedings of SPIE</conf-name><conf-loc>Denver, CO, USA</conf-loc><conf-date>August 1996</conf-date><fpage>753</fpage><lpage>763</lpage></citation></ref>
<ref id="b4-sensors-11-09764"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hales</surname><given-names>JH</given-names></name><name><surname>Pedersen</surname><given-names>M</given-names></name></person-group><article-title>Two-axes MOEMS sun sensor for Pico satellites</article-title><conf-name>Proceedings of the 16th Annual AIAAA/USU Conference on Small Satellites</conf-name><conf-loc>Logan, UT, USA</conf-loc><conf-date>12–15 August 2002</conf-date></citation></ref>
<ref id="b5-sensors-11-09764"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>You</surname><given-names>Z</given-names></name><name><surname>Sun</surname><given-names>J</given-names></name><name><surname>Xing</surname><given-names>F</given-names></name><name><surname>Zhang</surname><given-names>G-F</given-names></name></person-group><article-title>A novel multi-aperture based sun sensor based on a fast multi-point MEANSHIFT (FMMS) algorithm</article-title><source>Sensors</source><year>2011</year><volume>11</volume><fpage>2857</fpage><lpage>2874</lpage><pub-id pub-id-type="doi">10.3390/s110302857</pub-id><pub-id pub-id-type="pmid">22163770</pub-id></citation></ref>
<ref id="b6-sensors-11-09764"><label>6.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Falbel</surname><given-names>G</given-names></name><name><surname>Paluszek</surname><given-names>MA</given-names></name></person-group><article-title>An ultra low weight/low cost three axis attitude readout system for nano-satellites</article-title><conf-name>Proceedings of the 2001 IEEE Aerospace Conference</conf-name><conf-loc>Big Sky, MT, USA</conf-loc><conf-date>10–17 March 2001</conf-date><fpage>2469</fpage><lpage>2481</lpage></citation></ref>
<ref id="b7-sensors-11-09764"><label>7.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>de Boom</surname><given-names>CW</given-names></name><name><surname>van der Heiden</surname><given-names>N</given-names></name></person-group><article-title>A novel digital sun sensor: Development and qualification for flight</article-title><conf-name>Proceedings of the 54th International Astronautical Congress of the International Astronautical Federation (IAF)</conf-name><conf-loc>Bremen, Germany</conf-loc><conf-date>29 September–3 October 2003</conf-date></citation></ref>
<ref id="b8-sensors-11-09764"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname><given-names>F-F</given-names></name><name><surname>Feng</surname><given-names>J</given-names></name><name><surname>Hong</surname><given-names>Z-W</given-names></name></person-group><article-title>Digital sun sensor based on the optical vernier measuring principle</article-title><source>Meas. Sci. Technol</source><year>2006</year><volume>172</volume><fpage>2494</fpage><lpage>2498</lpage></citation></ref>
<ref id="b9-sensors-11-09764"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ding</surname><given-names>T-H</given-names></name><name><surname>Bi</surname><given-names>Y-G</given-names></name><name><surname>Wang</surname><given-names>P</given-names></name></person-group><article-title>Micro-digital sun sensor with CMOS APS</article-title><source>J. Tsinghua Univ. (Sci. Technol.)</source><year>2008</year><volume>48</volume><fpage>203</fpage><lpage>206</lpage></citation></ref>
<ref id="b10-sensors-11-09764"><label>10.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Xie</surname><given-names>N</given-names></name><name><surname>Theuwissen</surname><given-names>AJP</given-names></name></person-group><source>An Autonomous Low-Power High-Resolution Micro-Digital Sun Sensor</source><comment>Available online: <ext-link xlink:href="http://www.harvestimaging.com/pubdocs/161_ISPDI_2011.pdf" ext-link-type="uri">http://www.harvestimaging.com/pubdocs/161_ISPDI_2011.pdf</ext-link> (accessed on 6 August 2011)</comment></citation></ref>
<ref id="b11-sensors-11-09764"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chang</surname><given-names>YK</given-names></name><name><surname>Lee</surname><given-names>BH</given-names></name></person-group><article-title>Development of high-accuracy image centroiding algorithm for CMOS-based digital sun sensors</article-title><source>Sens. Actuat. A</source><year>2008</year><volume>144</volume><fpage>29</fpage><lpage>37</lpage><pub-id pub-id-type="doi">10.1016/j.sna.2007.12.018</pub-id></citation></ref>
<ref id="b12-sensors-11-09764"><label>12.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Chum</surname><given-names>J</given-names></name><name><surname>Vojta</surname><given-names>J</given-names></name><name><surname>Base</surname><given-names>J</given-names></name><name><surname>Hruska</surname><given-names>F</given-names></name></person-group><article-title>A simple low cost digital sun sensor for micro-satellites</article-title><conf-name>Proceedings of the 5th IAA Symposium on Small Satellites for Earth Observation</conf-name><conf-loc>Berlin, Germany</conf-loc><conf-date>4–8 April 2005</conf-date></citation></ref>
<ref id="b13-sensors-11-09764"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Enright</surname><given-names>J</given-names></name><name><surname>Sinclair</surname><given-names>D</given-names></name><name><surname>Li</surname><given-names>C</given-names></name></person-group><article-title>Embedded algorithms for the SS-411 digital sun sensor</article-title><source>Acta Astronaut</source><year>2009</year><volume>64</volume><fpage>906</fpage><lpage>924</lpage><pub-id pub-id-type="doi">10.1016/j.actaastro.2008.11.008</pub-id></citation></ref>
<ref id="b14-sensors-11-09764"><label>14.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Enright</surname><given-names>J</given-names></name><name><surname>Yam</surname><given-names>A</given-names></name><name><surname>Li</surname><given-names>C</given-names></name></person-group><article-title>Modelling and testing of two-dimensional sun-sensors</article-title><conf-name>Proceedings of the 2007 IEEE Aerospace Conference</conf-name><conf-loc>Big Sky, MT, USA</conf-loc><conf-date>3–10 March 2007</conf-date><fpage>1</fpage><lpage>11</lpage></citation></ref>
<ref id="b15-sensors-11-09764"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>J-F</given-names></name><name><surname>Ding</surname><given-names>T-H</given-names></name><name><surname>Zheng</surname><given-names>Z-M</given-names></name></person-group><article-title>Image processing of digital sun sensor using modified moment method</article-title><source>J. Tsinghua Univ. (Sci. Technol.)</source><year>2006</year><volume>46</volume><fpage>625</fpage><lpage>628</lpage></citation></ref>
<ref id="b16-sensors-11-09764"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xing</surname><given-names>F</given-names></name><name><surname>You</surname><given-names>Z</given-names></name><name><surname>Zhang</surname><given-names>G-F</given-names></name><name><surname>Sun</surname><given-names>J</given-names></name></person-group><article-title>A novel active pixels sensor (APS) based sun sensor based on a feature extraction and image correlation (FEIC) technique</article-title><source>Meas Sci Technol</source><year>2008</year><volume>19</volume><fpage>125203:1</fpage><lpage>125203:9</lpage></citation></ref>
<ref id="b17-sensors-11-09764"><label>17.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Hancock</surname><given-names>BR</given-names></name><name><surname>Stirbl</surname><given-names>RC</given-names></name><name><surname>Cunningham</surname><given-names>T</given-names></name></person-group><source>CMOS Active Pixel Sensor Specific Performance Effects on Star Tracker Imager Position Accuracy</source><comment>Available online: <ext-link xlink:href="http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/12541/1/01-0733.pdf" ext-link-type="uri">http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/12541/1/01-0733.pdf</ext-link> (accessed on 6 August 2011)</comment></citation></ref>
<ref id="b18-sensors-11-09764"><label>18.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fillard</surname><given-names>JP</given-names></name></person-group><article-title>Sub-pixel accuracy location estimation from digital signals</article-title><source>Opt. Eng</source><year>1992</year><volume>31</volume><fpage>2465</fpage><lpage>2471</lpage><pub-id pub-id-type="doi">10.1117/12.59956</pub-id></citation></ref>
<ref id="b19-sensors-11-09764"><label>19.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xing</surname><given-names>F</given-names></name><name><surname>You</surname><given-names>Z</given-names></name><name><surname>Zhang</surname><given-names>G-F</given-names></name></person-group><article-title>Sun sensor based on the MEMS sunlight lead-in</article-title><source>J. Funct. Mater. Devices</source><year>2008</year><volume>14</volume><fpage>246</fpage><lpage>250</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Table</title>
<fig id="f1-sensors-11-09764" position="float">
<label>Figure 1.</label>
<caption>
<p>Schematic of digital sun sensor with single slit.</p></caption>
<graphic xlink:href="sensors-11-09764f1.gif"/></fig>
<fig id="f2-sensors-11-09764" position="float">
<label>Figure 2.</label>
<caption>
<p>Light intensity distribution of digital sun sensor with single slit.</p></caption>
<graphic xlink:href="sensors-11-09764f2.gif"/></fig>
<fig id="f3-sensors-11-09764" position="float">
<label>Figure 3.</label>
<caption>
<p>Principle schematic of digital sun sensor with N-shaped slit: <bold>(a)</bold> incident sunray deflects in the Xa-Za plane; <bold>(b)</bold> incident sunray deflects in the Ya-Za plane. <bold>(c)</bold> sunray travels at a random angle of incident.</p></caption>
<graphic xlink:href="sensors-11-09764f3a.gif"/>
<graphic xlink:href="sensors-11-09764f3b.gif"/></fig>
<fig id="f4-sensors-11-09764" position="float">
<label>Figure 4.</label>
<caption>
<p>Illustration of angle definitions.</p></caption>
<graphic xlink:href="sensors-11-09764f4.gif"/></fig>
<fig id="f5-sensors-11-09764" position="float">
<label>Figure 5.</label>
<caption>
<p>Illustration of the refraction error.</p></caption>
<graphic xlink:href="sensors-11-09764f5.gif"/></fig>
<fig id="f6-sensors-11-09764" position="float">
<label>Figure 6.</label>
<caption>
<p>Simulation of resolution and FOV subject to <italic>h.</italic></p></caption>
<graphic xlink:href="sensors-11-09764f6.gif"/></fig>
<fig id="f7-sensors-11-09764" position="float">
<label>Figure 7.</label>
<caption>
<p>Illustration of the centroiding algorithm. <bold>(a)</bold> data plot of two sun spots detected by CCD; <bold>(b)</bold> abstract of sun spot.</p></caption>
<graphic xlink:href="sensors-11-09764f7.gif"/></fig>
<fig id="f8-sensors-11-09764" position="float">
<label>Figure 8.</label>
<caption>
<p>System resolution with respect to the incident angle.</p></caption>
<graphic xlink:href="sensors-11-09764f8.gif"/></fig>
<fig id="f9-sensors-11-09764" position="float">
<label>Figure 9.</label>
<caption>
<p>Outline of sun sensor prototype.</p></caption>
<graphic xlink:href="sensors-11-09764f9.gif"/></fig>
<fig id="f10-sensors-11-09764" position="float">
<label>Figure 10.</label>
<caption>
<p>Prototype of digital sun sensor with <italic>N</italic>-shaped slit.</p></caption>
<graphic xlink:href="sensors-11-09764f10.gif"/></fig>
<fig id="f11-sensors-11-09764" position="float">
<label>Figure 11.</label>
<caption>
<p>Program flowchart.</p></caption>
<graphic xlink:href="sensors-11-09764f11.gif"/></fig>
<fig id="f12-sensors-11-09764" position="float">
<label>Figure 12.</label>
<caption>
<p>Test system for the sun sensor.</p></caption>
<graphic xlink:href="sensors-11-09764f12.gif"/></fig>
<fig id="f13-sensors-11-09764" position="float">
<label>Figure 13.</label>
<caption>
<p>Measurement error statistics of sun sensor performance test.</p></caption>
<graphic xlink:href="sensors-11-09764f13.gif"/></fig>
<table-wrap id="t1-sensors-11-09764" position="float">
<label>Table 1.</label>
<caption>
<p>Performance of sun sensor.</p></caption>
<table frame="box" rules="cols">
<thead>
<tr>
<th align="center" valign="bottom"><bold>Characteristics</bold></th>
<th align="center" valign="bottom"><bold>Performance</bold></th></tr>
<tr>
<th colspan="2" align="center" valign="bottom">
<hr/></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">FOV</td>
<td align="center" valign="top">±60° × ±60°</td></tr>
<tr>
<td align="left" valign="top">Accuracy</td>
<td align="center" valign="top">0.08° (3σ)</td></tr>
<tr>
<td align="left" valign="top">Resolution</td>
<td align="center" valign="top">0.02°</td></tr>
<tr>
<td align="left" valign="top">Size</td>
<td align="center" valign="top">80 mm × 60 mm × 30 mm</td></tr>
<tr>
<td align="left" valign="top">Mass</td>
<td align="center" valign="top">133 g</td></tr>
<tr>
<td align="left" valign="top">Power consumption</td>
<td align="center" valign="top">300 mW</td></tr>
<tr>
<td align="left" valign="top">Update rate</td>
<td align="center" valign="top">14 Hz</td></tr></tbody></table></table-wrap></sec></back></article>
