Last updated: 2003-08-21 by C. W. Engelbracht
The MIPS CSMM (Cryogenic Scan Mirror Mechanism) is configured by setting the values of a series of registers. These registers control the output of a pair of DACs (Digital to Analog Converters) that, in turn, control the servo mechanism that drives the scan mirror. Near the center position, the coarse DAC has a resolution of about 17" per LSB (Least Significant Bit) while the fine DAC has a resolution 8 times smaller, about 2" per LSB. These are CSMM deflection angles (the conversion to angles on the sky is discussed below) and they vary with position, as discussed below.
The registers used to configure the CSMM are set using CE (Combined Electronics) command parameters described below:
Table 1: CSMM Configuration Parameters |
||||
Parameter |
Command |
DAC |
Values |
Comment |
posindex |
cescanpos |
coarse |
0 - 127 |
coarse position for even-numbered DCEs (i.e., scanpos1) |
scanmode |
cescancon |
N/A |
0(chop)/1(ramp) |
disable/enable ramping motion |
rampdir |
cescancon |
N/A |
0(pos)/1(neg) |
set direction of ramping motion (ignored in "chop" mode) |
scanpos2 |
cescancon |
coarse |
0 - 4095 |
coarse position for odd-numbered DCEs (0 = scanpos1) |
relpos1 |
cescancon |
fine |
0 - 4095 |
fine position for even-numbered DCEs |
relpos2 |
cescancon |
fine |
0 - 4095 |
fine position for odd-numbered DCEs |
stepoffset |
cescancon |
fine |
-2047 - 2047 |
fine position cumulatively added to each DCE |
rampslope |
cescancon |
fine |
0 - 511 |
rate of ramping motion (ignored in "chop" mode) |
stimcycle |
cegestim |
N/A |
1 - 63 |
number of DCEs in each repeat of pattern |
The values for the various posindex entries are indicated in Table 2. In response to a CESCANPOS command, the flight software sets both scanpos1 and scanpos2 to the values indicated in Table 2, and sets relpos1 and relpos2 to their central values of 0x800 (2048 decimal). Posindex values not listed are not yet defined and are currently set to 0x800 (2048 decimal).
Table 2: Posindex Values |
|||
Posindex | Hex | Decimal | Comment |
0 | 79D | 1949 | SM_CURRENT = 0 |
1 | 7D7 | 2007 | Optical zero |
2 | 7D7 | 2007 | Optical zero |
3 | 7D7 | 2007 | Optical zero |
4 | 748 | 1864 | WFOV Pos 1 - 0.75deg |
5 | 75B | 1883 | WFOV Pos 2 - 0.65deg |
6 | 76E | 1902 | WFOV Pos 3 - 0.55deg |
7 | 781 | 1921 | WFOV Pos 4 - 0.45deg |
8 | 794 | 1940 | WFOV Pos 5 - 0.35deg |
9 | 7A7 | 1959 | WFOV Pos 6 - 0.25deg |
10 | 7BA | 1978 | WFOV Pos 7 - 0.15deg |
11 | 7CD | 1997 | WFOV Pos 8 - 0.05deg |
12 | 7E1 | 2017 | WFOV Pos 9 +0.05deg |
13 | 7F4 | 2036 | WFOV Pos 10 +0.15deg |
14 | 807 | 2055 | WFOV Pos 11 +0.25deg |
15 | 81A | 2074 | WFOV Pos 12 +0.35deg |
16 | 82D | 2093 | WFOV Pos 13 +0.45deg |
17 | 840 | 2112 | WFOV Pos 14 +0.55deg |
18 | 853 | 2131 | WFOV Pos 15 +0.65deg |
19 | 866 | 2150 | WFOV Pos 16 +0.75deg |
22 | ACD | 2765 | 70 dark1 - 60 |
23 | AE1 | 2785 | 70 dark1 - 40 |
24 | AF5 | 2805 | 70 dark1 - 20 |
25 | B1D | 2845 | 70 dark1 + 20 |
26 | B31 | 2865 | 70 dark1 + 40 |
27 | B45 | 2885 | 70 dark1 + 60 |
28 | 53D | 1341 | 70 dark2 - 60 |
29 | 551 | 1361 | 70 dark2 - 40 |
30 | 565 | 1381 | 70 dark2 - 20 |
31 | 58D | 1421 | 70 dark2 + 20 |
32 | 5A1 | 1441 | 70 dark2 + 40 |
33 | 5B5 | 1461 | 70 dark2 + 60 |
36 | C7E | 3198 | 24 +Y POM Edge |
37 | 59B | 1435 | 24 -Y POM Edge |
38 | 9CA | 2506 | 70 WF POM Edge |
39 | 508 | 1288 | 70 NF POM Edge |
40 | 95A | 2394 | 160 POM Edge |
41 | C94 | 3220 | SED Nominal Start |
61 | 36B | 875 | 70um NFOV Nominal |
62 | 3B6 | 950 | 70um NFOV IOC SCR398 |
101 | 2B2 | 690 | 24um dark |
102 | B09 | 2825 | 70um dark 1 |
103 | 579 | 1401 | 70um dark 2 |
104 | C8A | 3210 | 160um dark |
105 | 37B | 891 | 70um FF stim (WFOV) |
106 | 708 | 1800 | 70um FF stim (SED) |
111 | 27F | 639 | -7.40deg |
112 | 33B | 827 | -6.41deg |
113 | 3F7 | 1015 | -5.43deg |
114 | 4B3 | 1203 | -4.44deg |
115 | 56F | 1391 | -3.45deg |
116 | 62B | 1579 | -2.47deg |
117 | 6E7 | 1767 | -1.48deg |
118 | 7A3 | 1955 | -0.49deg |
119 | 85F | 2143 | +0.49deg |
120 | 91B | 2331 | +1.48deg |
121 | 9D7 | 2519 | +2.47deg |
122 | A93 | 2707 | +3.45deg |
123 | B4F | 2895 | +4.44deg |
124 | C0B | 3083 | +5.43deg |
125 | CC7 | 3271 | +6.41deg |
126 | D83 | 3459 | +7.40deg |
127 | 800 | 2048 | Reserved for SCANABS Command |
CSMM motion is described by a pair of similar equations that use the parameters in Table 1. The first equation is used for even-numbered DCEs (starting with 0) and the second is used for odd-numbered DCEs. Note that relpos1, relpos2, and stepoffset use the fine DAC (see Table 1) which is a factor of 8 smaller (in "/LSB) than the coarse DAC used by scanpos1 and scanpos2.
Equation 1: | scanpos1 + relpos1 + stepoffset * (DCE# +1) (DCE# = 0, 2, 4...) |
Equation 2: | scanpos2 + relpos2 + stepoffset * (DCE# +1) (DCE# = 1, 3, 5...) |
For example, if posindex is set to 1 (which would set scanpos1 to 2007), scanmode to "chop", scanpos2 to 0, relpos1 to 2048, relpos2 to 3000, stepoffset to -50, stimcycle to 6, numdce to 6, and framecnt to 2 (so that the DCE duration was 3 MIPS seconds) the sequence of scan mirror positions (in the units used by SCANABS, i.e., the coarse DAC) would be as shown below, where the SCANABS positions are printed on the left and plotted one per DCE on the right:
|
Figure 1 |
If the CSMM is configured in "ramp" mode, the starting point of each DCE is computed as above and the ramp motion is added according to the "rampslope" (which uses the fine DAC - see Table 1) parameter.
N.B. The CSMM should never be configured so that it violates its operational range by running into the hardstops at SCANABS 610 and 3486. Doing so could result in damage to the CSMM. Furthermore, the behavior of the CSMM is undefined if it is driven outside the 0 - 4095 range of the fine DAC, so don't do that, either.
A perl script which computes the CSMM motion based on these equations and the parameters in Table 1 can be found here. The script will optionally print or plot the results and will warn you if you violate the hard stops or the fine DAC range. Please use this script or some equivalent test before trying out an untested CSMM configuration.
The CSMM deflection angle as a function of DAC count (e.g., the coarse DAC used by SCANABS) is not quite linear. This is shown in Figure 2, where the red points indicate the data as recorded in this spreadsheet (csv,xls) and the blue lines fits to those data. The top plots show the CSMM angle as a function of SCANABS along with linear fits to those data, while the bottom plots show the derivatives of those data (i.e., the CSMM gain) along with quadratic fits. The fits to the CSMM gain are listed below. The perl script which computed these fits is found here (PDL and perl-PGPLOT modules required to run).
Figure 2: CSMM Gain (Coarse DAC)
The CSMM gain data are fit by the following equations, where x is the coarse DAC (i.e., SCANABS) value:
Equation 3 (CE1): | 2.619e+01 - 8.828e-03 * x + 2.213e-06 * x2 |
Equation 4 (CE2): | 2.649e+01 - 8.817e-03 * x + 2.145e-06 * x2 |
Nominal gain values for the most commonly-used modes are listed in Table 3. The values in this table are averages in the 200-300 SCANABS count region around the nominal SCANPOS values from Table 2.
Table 3: Nominal CSMM Gain Values (Fine DAC) |
|
Mode |
Gain (CSMM "/LSB) |
scan and most photometry modes |
2.17 |
fine-scale 70µm photometry |
2.52 |
SED |
2.62 |
Photometry (and SED) mode configuration is driven by 4 parameters: 1) the array pixel scale, 2) the number of DCEs in the dither pattern, 3) the separation between DCEs 0 and 1, and 4) the separation between DCEs 0 and 2. The choice of CSMM parameters is made using the following rules:
Several constants are needed to convert the descriptions of the source positions in the various observing modes (e.g., in the MIPS SDD (System Description Document)), as captured below:
Table 4: Useful Constants for CSMM Configuration |
|
Description | Value |
optical gain (arcsec in CSMM space / arcsec on sky) | 32.635 |
24µm pixel scale | 2.55 arcsec |
70µm coarse pixel scale | 9.84 arcsec |
70µm fine pixel scale | 4.99 arcsec |
160µm pixel scale | 15.99 arcsec |
SED pixel scale | 10.13 arcsec |
average fine DAC gain in wide field mode | 2.17 arcsec/LSB |
average fine DAC gain in narrow field mode | 2.52 arcsec/LSB |
average fine DAC gain in SED mode | 2.62 arcsec/LSB |
A perl script which uses these rules and constants to compute CSMM parameters can be found here. The descriptions of the various photometry modes are summarized in Table 5, and the computed parameters are summarized in Table 7.
Table 5: Photometry/SED Mode Descriptions |
|||
Mode | Number of Dither Positions | DCE 1 - DCE 0 | DCE 2 - DCE 0 |
24µm small field | 7 | -46 pixels | 4.5 pixels |
24µm large field | 5 | -3 pixels | 1.5 pixels |
70µm small field | 5 | -7 pixels | 3.5 pixels |
70µm large field, top | 6 | 1.9 arcminutes | -2.5 pixels |
70µm large field, bottom | 6 | -1.9 arcminutes | 2.5 pixels |
70µm fine scale, small field | 8 | 2.5 arcminutes | -1.5 pixels |
70µm fine scale, large field, top | 8 | 2.5 arcminutes | -1.5 pixels |
70µm fine scale, large field, bottom | 8 | -2.5 arcminutes | 1.5 pixels |
160µm small field | 5 | -2 pixels | 1 pixel |
160µm large field, top | 2 | 2.5 arcminutes | 0 |
160µm large field, bottom | 2 | -2.5 arcminutes | 0 |
SED, 1' chop | 7 | 1 arcminutes | 0 |
SED, 2' chop | 7 | 2 arcminutes | 0 |
SED, 3' chop | 7 | 3 arcminutes | 0 |
SED, -1' chop | 7 | -1 arcminutes | 0 |
A sample plot of CSMM positions for one stimcycle in the 24µm small-field photometry mode is shown in Figure 3.
Figure 3
Scan mode configuration is driven by 5 parameters: 1) the interval between stimflashes, 2) the DCE duration, 3), the 160µm pixel scale, 4) whether the map is filled (no gaps at 160µm) or sparse (gaps at 160µm), and 5) the scan direction (forward (positive) or reverse (negative)). Once these parameters are selected, the others are fixed by the necessity of having the CSMM get far enough ahead of the telescope in one stimcycle to allow room for a stimflash DCE. This means, for example, that we are not free to adjust the scan rate to match the spacecraft motion - the spacecraft must adjust to match the CSMM motion.
A perl script which computes CSMM parameters for scan mode based on input like that in Table 6 can be found here.
Table 6: Scan Mode Descriptions |
|||
Mode | Stimcycle Duration | DCE Duration | Map Type |
fast scan | 120s | 3s | sparse |
medium scan | 120s | 4s | filled |
slow scan | 120s | 10s | filled |
Sample plots of CSMM positions for one stimcycle in fast and slow scans can be found in Figure 4.
Figure 4: CSMM positions for a reverse leg in fast scan (left panel) and slow scan (right panel) | |
![]() |
![]() |
Table 7: MIPS Observing Mode CSMM Parameters |
|||||||||
Mode | Posindex | Scanmode | Rampdir | Scanpos2 | Relpos1 | Relpos2 | Stepoffset | Rampslope | Stimcycle |
24µm small field | 1 | 0 | 0 | 0 | 1510 | 3360 | -86 | 0 | 7 |
24µm large field | 1 | 0 | 0 | 0 | 2078 | 2222 | -29 | 0 | 5 |
70µm small field | 1 | 0 | 0 | 0 | 2307 | 3602 | -259 | 0 | 6 |
70µm large field, top | 1 | 0 | 0 | 0 | 2166 | 266 | 185 | 0 | 7 |
70µm large field, bottom | 1 | 0 | 0 | 0 | 1930 | 3830 | -185 | 0 | 7 |
70µm fine scale, small field | 61 | 0 | 0 | 0 | 2780 | 789 | 48 | 0 | 9 |
70µm fine scale, large field, top | 61 | 0 | 0 | 0 | 2780 | 789 | 48 | 0 | 9 |
70µm fine scale, large field, bottom | 61 | 0 | 0 | 0 | 1316 | 3307 | -48 | 0 | 9 |
160µm small field | 1 | 0 | 0 | 0 | 2168 | 2769 | -120 | 0 | 6 |
160µm large field, top | 1 | 0 | 0 | 0 | 3176 | 920 | 0 | 0 | 2 |
160µm large field, bottom | 1 | 0 | 0 | 0 | 920 | 3176 | 0 | 0 | 2 |
SED, 1' chop | 41 | 0 | 0 | 0 | 2422 | 1675 | 0 | 0 | 7 |
SED, 2' chop | 41 | 0 | 0 | 0 | 2796 | 1301 | 0 | 0 | 7 |
SED, 3' chop | 41 | 0 | 0 | 0 | 3169 | 927 | 0 | 0 | 7 |
SED, -1' chop | 41 | 0 | 0 | 0 | 1674 | 2421 | 0 | 0 | 7 |
fast scan, forward leg | 1 | 1 | 0 | 0 | 2048 | 2048 | -29 | 39 | 33 |
fast scan, reverse leg | 1 | 1 | 1 | 0 | 2048 | 2048 | 29 | 39 | 33 |
medium scan, forward leg | 1 | 1 | 0 | 0 | 2048 | 2289 | -19 | 102 | 25 |
medium scan, reverse leg | 1 | 1 | 1 | 0 | 2048 | 1807 | 19 | 102 | 25 |
slow scan, forward leg | 1 | 1 | 0 | 0 | 2048 | 2288 | -44 | 252 | 11 |
slow scan, reverse leg | 1 | 1 | 1 | 0 | 2048 | 1808 | 44 | 252 | 11 |
24µm dark | 101 | 0 | 0 | 0 | 2048 | 2048 | 0 | 0 | depends on DCE time |
70µm dark 1 | 102 | 0 | 0 | 0 | 2048 | 2048 | 0 | 0 | depends on DCE time |
70µm dark 2 | 103 | 0 | 0 | 0 | 2048 | 2048 | 0 | 0 | depends on DCE time |
160µm dark | 104 | 0 | 0 | 0 | 2048 | 2048 | 0 | 0 | depends on DCE time |