Featured post

Shutter emulation on Canon EOS1100D DSLR

Canon must be proud to produce one of the most hacked cameras out there. From custom ROMs (see the brilliant Magic Lantern project), IR-cut filter removal, to full peltier-cooled mods.

This post describes how to add yet another EOS mod to this increasing list.
Besides astro-photography, a major application for DSLRs is in all-sky stations for weather, night-time or meteorite observations. Not to mention time-lapse photography. The bane of these frontiers is the fact that the mechanical shutter in the camera body tends to wear out after so many clicks. Then either a new body must be found, or the shutter unit replaced.

Fortunately, it turns out that there is an easy alternative! The shutter unit can be removed entirely, and the signals can be generated by an off-board processor that emulates the proper signals to keep the camera happy. In essence, the camera thinks its happily talking to a (non-existent) healthy shutter. This way, the body can be used indefinitely,

Theory of operation

Shutter assemblyThe EOS1100D shutter basically consists of two connected and spring-loaded blades. An electromagnetic coil triggers the main tension spring that folds the shutter blades to the bottom of the assembly, thereby opening the shutter. Another spring then opens the blades again, closing the shutter. In the end, the DC motor (top, with red/black wires) re-tensions the springs for the next actuation.

Although the shutter is mostly mechanical in nature, with a simple triggering mechanism, the camera still wants to monitor the various components to see if they are in working order (if not, report an error). Here comes in the flatcable.

Flatcable

shutter_flatcableFigure 1: flatcable (pins marked 1 through 12)
This 12-pin flatcable interfaces the shutter to the camera electronics. Two of these pins, marked “coil”, trigger the shutter actuation. The rest is used for status & feedback to the camera, either the optical feedback and (limit-)switch feedback from the big rotary disk.

Below is a picture that shows the optical feedback part deep inside the shutter housing. On lid contains the IR-LED, the other lid (blue, bottom) shows the phototransistor. One of the gears has a kind of lid that slides in the gap, unblocking the IR-light, and generating a signal pulse.
eos1100d_opto1

Mirror lock-up

The EOS1100d is an entry level DSLR. At the time of its introduction, it was the cheapest canon DSLR to buy. With decent resolution, cheap price, and ability to be controlled remotely by gPhoto2, it formed the ideal candidate for an automatic camera station.
A cost-cutting consequence in the EOS1100D when compared to its more expensive siblings, is that it has no dedicated mirror lock-up subsystem. Instead, the mirror lock-up mechanism is directly driven by a pin attached to the shutter assembly. This also explains why there is no mirror lock-up support in the firmware for this camera (or in Magic Latern, for that matter).

Consequently, for this particular mod for the EOS1100D, the MLU assembly must also be removed. The advantage is that there are no more mechanical parts left to fail. But it also means that we lose the ability for electronic metering, i.e., we have to try exposure times manually to find the correct shutter/aperature/ISO for the scene. For night time photography, this is not such a big deal, because using sun elevation and moon phase the exposure can be appropriately programmed. For daytime, its a different matter! Either gamble, or program some smart digital metering as a substitute. After all, exposures are now really free of charge!

Implementation

From reverse engineering point of view, we only need to identify a few properties of the FC pins. Is the pin used? Is it an input or output? If an output, what type? And finally, what is the trigger? At first, I attempted by treating the shutter as a black box, and reverse engineer by looking at the electrical properties of the signals alone. In this I eventually succeeded with the emulation, but at the cost of a great deal of time. After inspecting the actual shutter assembly, and the FC, it became instantly apparent what the FC pins are used for. So, if you attempt to repeat this exercise for another camera – don’t do as I did – just disassemble the thing immediately.

Approach

For the reverse engineering, we need to measure the FC pin signals. This can only be done if you can access the pins. Of course, the back panel of the camera must be removed. It is quite tiresome to remove the back panel, make some adjustment, and re-adjust the backpanel again. Luckily, we can leave the backpanel off, and control the camera by laptop using gPhoto2.

Results

The following is a list of flatcable pins as best as I could identify. I regard this list with a high degree of probability.

EOS1100D shutter flatcable pins

FC pinInput/OutputEmulatedDescription
P1InputYesOpto-feedback
P2GNDNoReturn GND for phototransistor/diode.
P5OutputTrigger!On/Off IR-LED
P6OutputNoCoil pin 1
P7OutputNoCoil pin 2 (67Ohm ESR w.r.t. P6)
P8InputYesRotary FB
P9InputYesRotary FB
P10InputYesRotary FB
P11GNDNoReturn GND for Rotary
P12InputYesRotary FB
P3UnknownUnknownNot used / model extension
P4UnknownUnknownNot used / model extension

Next in line are the signal timings. There are two distinct modes of shutter operation – a long exposure mode, and a short exposure mode. The long exposure mode starts for exposure times of 1/60s and longer. For 1/50s and lower, the shutter works in short exposure mode. The key difference is that in long exposure mode, there are two separate triggers, shifted in time depending on the actual exposure time, for shutter-open and shutter-close.

Shutter signal timing sequence for the long mode

 

The curvy blue lines indicate the offset of the various signals with respect to the start of the trigger (rising edge). The other lines show the duration of the various pulses. In between, the time is indeterminate and depends on the actual exposure time. That is why there are two separate trigger pulses in this mode, one for shutter-open, and one for shutter-close.

 

Shutter signal timing sequence for the short mode

 

 

 

 
 

 

 

 

 

 

In the short mode, there is only one trigger pulse, and all the signals can be related against the rising edge. In short mode, the trigger pulse varies between 130ms and 120ms, again depending on exposure time (120ms @ 1/2000s). In long mode, the first trigger pulse is always 110ms. That is how they can be told apart. Alternatively, the coil signal P7 can be monitored for de-activation (rising edge again).

The idea is now to hook the used signal wires off the FC (best to use the big circular test pads, see Figure1), monitor the trigger signal, and pump out the feedback signals with the proper timings. For the trigger, the coil signal is not used. It turns out that the IR-LED is activated a little bit before the coil is activated (which makes sense!), and we might need to change the P1 signal level even before the coil is energized. However, a small complication is that the trigger signal, P5, is not CMOS/TTL compatible. Idle it is 800mV, and triggered it is 1200mV. This is because the trigger signal is actually an output stage of the dual BJT package indicated with the arrow in figure 2. One solution is to catch this signal with a comparator, the other solution is to hook the TTL signal off the base of the BJT package, indicated as the middle pin by the arrow. The nice thing about the first solution, is that you can fully connect the emulation on the flatcable only. The connector pins are very small, and it takes quite some patience to solder wires with such small pitch.
shutter_pcb1Figure 2: Camera point of view, white shows FC receptacle. The indicated package is a dual BJT, likely a Toshiba RN4982FE or similar, and drives the IR-LED. The big SOT23 MOSFET in the bottom drives the coil.

The actual modification will continue here.

Shutter emulation EOS1100D, part 2

Plan of approach

If you plan to do this mod yourself, please read the postscript first!

This post describes how to replace the shutter by the microcontroller that will emulate the signals. Any micro can be used; the only requirement is enough GPIOs for the 5 signals and trigger, and sufficient effective speed to handle sequential timings up to about +- 100us resolution. I like ARM, so I go with a STM32F042 I had lying around. If you prefer Arduino, go ahead. It will work, too.

One additional requirement for me is to be able to fit all the parts back in the camera body, leaving it outwardly intact. Because of these, the STM32F042 works nicely. It is a large package to hand-solder, yet small enough to fit inside the EOS1100D body. The body has plenty of free space inside, so that’s no problem.

eos1100d_shutter_mcu1

Figure1: the STM32F042 on the operation table. Some wires are already soldered on, and fixated with some glue.

Except for signal P1, the remainders are simple limit switches that are mechanically connected to GND. P1 is the output of a phototransistor, and typically this is also pulled to ground. All signals are pulled-up by the camera PCB. This was explicitly confirmed by measuring signal levels without the flatcable being connected. This means we can hook up to the signals by just using a N-MOSFET with the source connected to GND, and we don’t need to care about any bias resistors.

Figure 2: Schematic of the microcontroller interface based on the STM32F042 ports. The comparator is necessary to convert the trigger level to CMOS/TTL levels. Alternatively, the signal can be pulled off the “6B” chip as indicated in part1 of the post, but then consequently, the “mod” is not flatcable-only.

Finally, to activate (active-LOW) a signal, one needs to drive PA[3:7] high. This way, the interface is complete, once the timings are taken care of.

Implementation

I decided to hand-solder a small PCB that would fit inside the EOS1100D body. First, all the necessary wires were soldered to the MCU, see the table for reference. When this was done, I selected some small strip PCB unused from another project, and layed out the FETs to minimize the wiring (i.e. dead-bug style source pins tied together). The FETs, MCU were fixed to the PCB with a drop of super glue. Next, two “bars” were placed, one for GND and one for VDD (+3.3V). This makes it easier to solder many wires to the GND/VDD without risking dislodging the previously soldered wires. The wire is thin coil wire, the ends burned away with the soldering iron to expose the bare copper.

PinFunctionInput/OutputSpecialFunction AfterRemarks
7NRSTInput/OutputSWD resetOnly for programming
8VSSAPowerGNDUsed for Reset+RCC subsystem
9VDDAPower3.3VUsed for Reset+RCC subsystem
13PA3Outputpush-pullFC-P1
14PA4Outputpush-pullFC-P9
15PA5Outputpush-pullFC-P10
16PA6Outputpush-pullFC-P8
17PA7Outputpush-pullFC-P12
18PB0Inputpull-downFC-P5
20PB2Inputpull-down, 5V tolerant I/OFC-P7
23VSSPowerGND
24VDDPower3.3V
34PA13Input/OutputSWDIOOnly for programming
35VSSPowerGND
36VDDIO2Power3.3V
37PA15Input/OutputSWCLKOnly for programming
44BOOT0InputPulled to GND for flash boot
47VSSPowerGND
48VDDPower3.3V
EOS1100D shutter emulation MCU pinout
ALT

Figure3: the emulation logic, with the FETs and STM32F042C6T6 MCU.

Figure 4: The completed work with the emulation PCB and the EOS1100D mainboard. Except for P5, all signals are intercepted from the flatcable test points. The only connections to the main board are for the 3.3V power and trigger P5.

Figure 4: The completed work with the emulation PCB and the EOS1100D mainboard. Except for P5, all signals are intercepted from the flatcable test points. The only connections to the main board are for the 3.3V power and trigger P5.

Finally, using Gary Honis’ excellent camera disassembly instructions (link), the camera can be put together easily again. After the shutter and mirror have been removed, there is a lot more space available than I first anticipated, so the emulation PCB didn’t need to be that small. Of course, the PCB can also be left outside – perfect if you want to implement this with an Arduino or STM32-DISCOVERY. Just keep the wires as short as possible, because long wires can pick up noise that couples back into the camera electronics.

The picture below shows the final product. The camera looks like new and unmodified, except for the missing mirror and shutter.

Figure 5: the finished product. The only sign of modification are the missing shutter and mirror.

Figure 5: the finished product. The only sign of modification are the missing shutter and mirror.

Source code

Full source code for the MCU is available on the github project. The code is “bare-bones”, no IDE or special tools are needed to compile it. Just run the make file with a GCC ARM-CORTEX toolchain. Here is an excerpt for the relevant parts of the source code.

Below are the interrupt handlers. The first, “irq_trigger”, will take action based on P5 rising or falling edge. It will simply pass the event to the active state machine.

/**
 * @brief Handle the P5 IRQ (rising & falling edges)
 */
__attribute__((__interrupt__)) void irq_trigger(void)
{
    if (EXTI_GetITStatus(EXTI_Line0) != RESET) {
        uint8_t const set = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0);
        if (set == Bit_SET) {
            /* Rising Edge */
            shutter.state(&shutter, TRIG1_ACTIVATE);
        } else {
            shutter.state(&shutter, TRIG1_DEACTIVATE);
        }
    }

    EXTI_ClearITPendingBit(EXTI_Line0);
}

/**
 * @brief Handle the application timer
 */
__attribute__((__interrupt__)) void irq_tim2(void)
{
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

        timer_do(&shutter);
    }
}

The state machine implementation is done in the following blocks. The most interesting one is “handler_state_open()”, which has to decide, based on P7, if the shutter is going into a “short” exposure mode (1/50s or less), or will stay in long mode. It does this by monitoring signal P7 in a certain time window.

The “timer_do()” function should be called with sufficient timer granularity so as to keep up to date with the timings. In this code, it is tuned to run at +- 100us intervals. It doesn’t matter so much, as long as it is faster than 500us. The function will toggle the outputs according to the timings.

/**
 * @brief Handle events when shutter is in the close state
 */
static void handler_state_close(T_SHUTTER* const sh, T_TRIGGER const action)
{
    __disable_irq();
    if (action == TRIG1_ACTIVATE) {
        start_timebase();
        sh->active = 1;
    } else if (action == TIMER) {
        if (!sh->timing->trig) {
            stop_timebase();
            sh->phase = PHASE_IDLE;
            sh->state = handler_state_idle;
            sh->timing = NULL;
            sh->active = 0;
        }
    }
    __enable_irq();
}

/**
 * @brief Handle events when the shutter is in the open state
 */
static void handler_state_open(T_SHUTTER* const sh, T_TRIGGER const action)
{
    __disable_irq();

    if (action == TIMER) {
        // Assume we are in long mode, unless
        // Trig2/P7 signfies we are short mode instead
        if ((TIMESTAMP() >= TRIG2_P7_SAMPLE_WAIT) && (TIMESTAMP() < TRIG2_P7_SAMPLE_HOLD) &&
           (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_2)==Bit_SET)) {
            start_timebase();               // reset counter
            sh->phase = PHASE_CLOSE_SHORT;
            sh->state = handler_state_close;
            sh->timing = timing_close_short;
        }
    } else if (action == TRIG1_DEACTIVATE) {
        // Reset P1 (in line with falling edge of P5/Trig1
        GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_RESET);
        sh->active = 0;
        stop_timebase();
        sh->phase = PHASE_CLOSE_LONG;
        sh->state = handler_state_close;
        sh->timing = timing_close_long;

    }

    __enable_irq();
}

/**
 * @brief Handle events when the shutter is in the idle state
 */
static void handler_state_idle(T_SHUTTER* const sh, T_TRIGGER const action)
{
    __disable_irq();

    if (action == TRIG1_ACTIVATE) {
        start_timebase();
        sh->phase   = PHASE_OPEN;
        sh->state   = handler_state_open;
        sh->timing  = timing_open;
        sh->active  = 1;
    }

    __enable_irq();
}

/**
 * @brief Called every 100us or so for timekeeping
 */
static void timer_do(T_SHUTTER* const sh)
{
    if (!sh->active)
        return;

    /* Check for the I/O timings and set them */
    if (sh->timing && sh->timing->trig && (TIMESTAMP() >= sh->timing->trig)) {
        *sh->timing->io_reg = sh->timing->state;
        sh->timing++;
    }

    /* Handle state dependent timer events */
    sh->state(sh, TIMER);
}

Finally, all the timings are contained in tables, and are organized in the relevant shutter states. The first line shows the trigger time in microseconds, since elapse of initial trigger from P5. The second column shows the pin action, i.e. P9_CLR means turning P9 GPIO “low”, which has the effect of making P9 high, because it is pulled up by the EOS mainboard. On the other hand, P1_SET means energizing the FET gate, making the Source-drain channel conductive, hence pulling P1 to GND (making it “low”).

/** Shutter-open timings */
static const T_SHUTTER_TIMING timing_open[] =
{
     {25850/TB,        P9_CLR},
     {34000/TB,        P1_SET},
     {35100/TB,        P10_SET},
     {39400/TB,        P1_CLR},
     {42000/TB,        P1_SET},
     {62900/TB,        P10_CLR},
     {71400/TB,        P12_SET},

     {0, 0, 0},       // END
};

/** Shutter-close timings for long mode */
static const T_SHUTTER_TIMING timing_close_long[] =
{
     {200/TB,           P1_SET},
     {5900/TB,          P1_CLR},
     {7200/TB,          P1_SET},
     {8600/TB,          P1_CLR},
     {34800/TB,         P12_CLR},
     {71100/TB,         P8_SET},
     {107600/TB,        P8_CLR},
     {108000/TB,        P9_SET},

     {0,0, 0},         // END
};

/** Shutter-close timings for short mode */
static const T_SHUTTER_TIMING timing_close_short[] =
{
     {2800/TB,          P1_CLR},
     {4300/TB,          P1_SET},
     {5600/TB,          P1_CLR},
     {31600/TB,         P12_CLR},
     {67800/TB,         P8_SET},
     {104000/TB,        P8_CLR},
     {105000/TB,        P9_SET},

     {0,0, 0},         // END
};

Postscript

This mod has a big impact on the function of your camera. So beware! To name a few we came across:

  • Removal of the mirror (mandatory in this EOS1100D mod, but not so for more advanced models that support an independent mirror-lock-up function) causes you to loose automatic metering and the ability to look through the viewfinder/lens. You can still use the movie-mode though.
  • Movie mode works, but will give “err. 20” after you switch back. So you have to power off the camera to restore function (remove battery).
  • The shutter is necessary for bright scenes to keep the chip from over-exposing. It turns out that while the camera is reading out the image sensor, the “lower part” is still sensitive to light. After this mod, the camera is totally useless in bright scenes like daylight! It will only work if the exposure time is about equal the read-out time (i.e. 1″ or more). In dusk or night conditions its fine. Alternatively, if aperature can be really fixed, then daylight might also be okay, but I didn’t test this.

Credits

  • Kanoa Withington, (CFHT, pikotek), who started the EOS450 mod, and for many helpful discussions and encouragements during development
  • Gary Honis, for his excellent EOSxxx disassembly page
  • Mark-Jaap ten Hove & Jaap van ‘t Leven for donating a EOS1100D for the mod. (link, link)
  • Volkssterrenwacht Bussloo, for testing out the mod (link)

The night sky from my home

After a few weeks of persistent weather with cirrus clouds, past weekend, 17apr2015, brought an extensive dry polar air mass over my home (“Windhoek”, because there is no spot the wind does not touch, and a quip after the famous night-sky wonderland of Namibia). The kind that often makes springtime such an oppertune time for stargazing.

The clear skies gave an excellent oppertunity to gauge the quality of the sky over our new house, which is located in a rural area some 10km away from two small cities (100k people). The immediate vicinity (~2km) is virtually clear from light sources, as the neighbors (almost all of whom are farmers) do not unnecessarily light their yards.

To this end, I determined the size and amount of city lights on the horizon, star counts, SQM readings, and photograhic examination.

Light pollution domes
S-SW: By far the largest dome is Deventer (10km, 100k pop) , and spans a 70-degree azimuthal swath reaching up to 40 degrees elevation. The eastern edge of the dome starts right past the meredian. The dome is yellowish / orange, with a clear bright spot exactly where the city center is; with massive sky-pointed lights that shines on a medieval church complex.
N: A smaller dome is caused by Raalte (8km, 20k pop)in the North. It spans about 20 degrees in azimuth, but also reaches up to 30~40 degrees. Contrary to Deventer, the appearance is bright white, almost like zodiacal light.

compare_19apr2015_2350UT_240s_800ISO

Visual impression
There are some trees in the distance along the eastern hemisphere. In the west, there is clear view up to the horizon. I could easily see the moon, mars and mercury at 3 degrees altitude with binoculars.

Apart from the North and South, the rest of the horizon is pretty decent with many small domes that pose no threat, all of them being below 10 degrees. Especially the E-SE is very nice. The line of sight does not pass any populated area in that direction for 30 to 40km.

Finally, the zenith is best. The zenithal dome of about 75 degrees (extending to the South-east) is very dark, with no apparant light pollution. Hundreds of tiny stars, just beyond direct vision, are simmering there. It kind of resembles a dark area in the French countryside.

The milky way, rising before dawn up to 40 degrees, showed some detail. It could be seen to stretch from Cassiopeia in the north down to the Scutum cloud in the south-east. The dark rift was pronounced, and the North America Nebula standing out clearly. The cygnus/scutum split of the milky way was also noticable, and some hints of structure in the southern milky way was visible.
M13 could be seen unaided (barely) at 45 degrees elevation in the east, but becomes very easy to see once overhead just before dawn.

dsg

SQM readings
On two nights, I measured the V-band flux in a 20-degree cone using a calibrated Unihedron SQM sensor (the SQM-LE version, link). I measured the readings manually, one time in the evening when the sun went below -18 degrees (2100UT) and one time before dawn (0100UT). Depending on wether Vega or the milky way crossed the view, the readings varied between 20.84 and 20.91
Once the weather station is set-up, this site will collect permanent and continuous readings.

Star counts
Using a star chart, you can count the stars you can barely see in a predefined area (link), and this is a measure of the NELM. For this method, I exclusively looked at the very zenith. To prepare, I dark-adapted for at least 1 hour, and sat in a dark corner with dark sheds around so that I only saw the zenith, without being influenced by the bright domes in the North and South. On two nights, I counted 3 different areas. Again around 2200UT, and 0100UT. Every area I counted at least 2 times, at different times. I counted areas Q, I and F (see pdf in the link), with the results an indicated NELM of 6.4, 6.5, 6.5 giving an average of 6.5 zenithal NELM.

Photographic evidence
Usually subtle light pollution shows up in a picture, even when you don’t see it visually. So I took a picture of Deneb region, which was rising in the east at an altitude of about 40 degrees. Imaged with 24-105mm F4 at 6400ISO, raws, unmodified Canon 6D at 105mm/F5.0 stack of 39 images of 60s exposure. Levels adjusted and 50% crop. The top looks slightly more yellowish. But this is more or less the natural milky way color, so I do not think any light polution is obvious. Besides, the top is higher in the sky, with less influence by the pollution.. I’m very happy with this finding!

Nan_39_60s_6400iso

 

Comparison of shot count vs noise

Saturday 24Jan2015 I took some images with Bussloo’s awesome C14-XLT mounted on AP1200. That day some snow fell over most of the eastern part of the Netherlands, causing a brightening of 0.5 mag/arcsec^2 compared to normal dark nights. Anticipating the bright background, I decided to shoot some planetary nebulae.

All images have 3 darks, and a couple of flats. The flats were taken in the observatory from the ceiling in a few different positions. Altough not perfect (there is a slight gradient from left to right because of uneven illumination), it is still a major improvement over images taken without flats. With these low-noise digital cameras, FLATs are far more important that Darks.

First, low in the south, NGC1535, 34x30s, with a Canon 6D at 6400 ISO. Image shows full frame at 50% scalingNGC1535 C14 Canon 6D, ISO6400, 34x30

Eskimo Nebula, same settings but at 58x30s. The Eskimo was higher up the sky, so the sky count was significantly less. Image shows full frame at 50% scaling

eskimo_58_30s_50crop

Finally, a galaxy to finish things off, with a longer exposure time: 11x150s
NGC3184, Image shows full frame at 50% scaling

ngc3184_11_150s_50crop

Finally, a comparison between these three, with equal stretch applied. The most stacked images have the smoothest background, and can be stretched furthest. These images are all center cropped at 100% resolution. Left-side images as they appear after stacking (32-bit mode), right-side images all have identical stretch applied. The Eskimo is the clear winner here.

vergelijking
The total exposure times are:
Eskimo: 1740s, S/N = 7.6
NGC1535: 1020s, S/N = 5.8
NGC3184: 1650s, S/N = 3.3

Comparison: 1 frame would have S/N = 1.

Interestingly, Eskimo and NGC3184 have nearly identical exposure times, yet Eskimo has far superior noise levels, and can be stretched further. However, the focus setting was excellent for Eskimo, and slightly less optimal for NGC3184. Also, the sky backgrounds are quite different. It makes a direct comparison, and conclusion, not yet possible.

AP1100GTO first impressions

Here are the results of Volkssterrenwacht Bussloo‘s new AP1100GTO mount performance.
The PEC graphs were made with QtiPlot and PHD guiding with guide-ouput turned off. In this way, the deviations of the guide star are tracked.

Mount setup
primary scope C14 XLT, using enhanced visual finder scope as a guider with a DMK0.24 camera. The finder turns out to have a focal length of 175mm, and combined with the camera gives a FOV of ~ 1 degree and resolution of 6.6″/px

This is ideal, because it allows at least 0.5″ motion detection, and the large FOV ensures there is almost always a suitable guide star in the field with 2s integration time.

Finder scope turned guide scope

After a couple of “N-Star” alignment iterations offered by the AP mount, the polar alignment was decent. Below the DEC-drift of a star on the equator near the meridian. The drift rate implies the mount is about 7.5′ off-set from the pole. This is good enough for visual use; any GOTO point will be within 15′ of the eyepiece center. But this is not good enough for unguided photography, and limits the exposure time to ~ 30 to 60s

Drift in declination of a star on the equator, near the meridian

Next, after removing the drift due to polar alginment, the mount’s periodic error remains. On this night, the seeing had a FWHM of 1.5″, and shows the large spread of the measurement points. The red graph is the best fit.

Result, the AP1100GTO mount has 3.2″ p-p periodic error, with a period of ~ 360s. The mount advertised 5″ p-p max. Clearly, the mount performs significantly better than this!!

no_pec

Next, the mount comes with a factory-determined PEC curve. Below the measurements with PEC turned on: The residual curve has a PE of about 1.5″ p-p (or slightly better), so the PEC clearly works. What I can’t explain is the period, which now is about 100s instead of 360s. Although the absolute error is reduced, the changes happen 3x faster than with PEC off. But because the total error is so small, I’m not sure this would be a problem for autoguiding or not.

In any case, it proves that one can take unguided pictures with this mount (if properly polar aligned) with up to 1000mm focal length.

pec

Finally, some real-world results. Below the autoguiding output. This is nothing short of excellent, both DEC and RA deviations are seeing-limited, and the resulting picture over the 1400s would be perfectly guided.

guide

Below the result; cropped single RAW frame of M76, 300s with a canon 6D @ 3200 ISO at the focal point of the C14.

M76_300s_C14

The focus was quite bad; the stars were focussed down to 10″. Unfortunately, the resulting image doesn’t have perfectly round stars, as the crop below (100%) shows.

M76_300s_C14_fill

Along the RA axis, the star size is 30px, and along the DEC axis, 26px. This amounts to 1.2″ drift. Considering the guider output, this is probably due to flex in the guider itself. The DMK camera was attached in a very ad-hoc fashion to the finder. A tiny strain on the cable was easily detectable.

Conclusion
The AP1100GTO is a fantastic mount, that is an absolute pleasure to work with. It performs even better than advertised, and can potentially allow unguided photography with focal lengths up to 1000mm. To do photography with the C14 with 4000mm focal length, auto-guiding is required, and can easily be achieved using PHD guiding and the 175mm finder scope.

(PHD settings: RA aggressiveness 80%, hysterises 10%, minimum motion 0.05px (<– this is essential!), and maximum duration: 750ms)

FLT98 w/P-FLAT68 flattener analysis

The first run with the newly acquired FLT98 with the first generation TMB field flattener (P-FLAT68) showed some interesting and unexpected results. On the night of the 2nd May, 2014, a couple of images were taken in order to assess the performance of this setup. No dark frames or flat fields were taken.

The camera is a Canon 6D, shooting in raw mode, with all noise reduction turned off at 1600 ISO. The camera was attached to the P-FLAT68 with a T-thread canon adapter to the FLT98. The image sensor measures 36x24mm, which means that any circular opening of less then 43.3mm will cause vignetting. T2 thread has an outer diameter of 42mm, and an inner diameter of 37.5mm, so vignetting was expected.

P-FLAT68 streched

P-FLAT68 streched

The above image shows a scaled 100% view of a stacked image series. Surprisingly, 3 distinct vignetting regions can be identified. Region A is obviously due to the T2 bottleneck. But regions B and C are much harder to explain. One possibility is some kind of shadow effect in the inner rectangular body space of the camera, but most probably it is artificial. I discovered later that my camera settings were still set to apply the 24-105mm lens abberation correction!

Next on the list is the sharpness performance of the P-FLAT68. The image below shows the results. Each of the five blocks shows a 100% cutout of one of the corners and the center.
FLAT68 corners and center

Evidently the field flattener (FF) is not very effective. The corner results are inconsistent and highly asymmetric with severe astigmatism, whereas the center sharpness is very good. It is very important to place the imager at the right distance behind the FF for best results. Any deviation in the distance would degrade performance, but should still show symmetrical corners. Barring a serious optical defect, the current results show that the optical path is inclined w.r.t. the optical axis.

Feathertouch attachement on FLT98

Feathertouch attachement on FLT98

The likely suspect. The base of the FLT98 tube is not properly secured with the Feathertouch focusser ring. One side shows a 1.25mm offset, which causes the FF and camera to be 0.7 degrees inclined to the optical axis.

Hopefully in next post, the improved results with proper attachment of focusser.

Fun with exponents

From the definition of the derivative:
\frac{d f}{dx} = f'(x) =  \lim_{\Delta x\to 0} \frac{f(x+\Delta x)-f(x)}{\Delta x}

Now let
f(x)=a^x
with a a real constant.

The derivative takes the form (implicitly assuming the limit)
f'(x) = \frac{a^{x+\Delta x}-a^x}{\Delta x} = \frac{a^{x}a^{\Delta x}-a^x}{\Delta x}=a^x\left(\frac{a^{\Delta x}-1}{\Delta x}\right)

The last term on the right side in brackets converges to some finite value, (in fact, it converges exactly to ln(a)). Now from the definition of e. By choosing a to converge to 1, we have in fact ln(a)=1=ln(e), so it follows that:

\lim_{\Delta x\to 0}\left(\frac{e^{\Delta x}-1}{\Delta x}\right)=1
rewriting,
\lim_{\Delta x\to \infty} e^{1/\Delta x}=1+\frac{1}{\Delta x}

By raising both sides to the power \Delta x, we arrive at the remarkable formula for e,

e = \lim_{n \to \infty}\left(1+\frac{1}{n}\right)^n

Nieuw Heeten testopnamen

Paar testopnamen vanuit Nieuw Heeten, 29/09/2013. 10 graden, sterke oostenwind, transparante lucht. Grensmagnitude 6.2 ~ 6.4

Veel lichtvervuiling langs de horizon, met name in het oosten (Rijssen??) en zuidwesten (Deventer). Zenithaal en noordelijk uitstekend.M13 was net zichtbaar met het blote oog(!) op ca. 50 graden.

Opnamen vanuit RAW naar JPG via ImageMagick en UFRaw, zelfde bewerking per foto. 30″ ISO1600 met Canon 40Da, 50mm/F2.0. Gebieden: Hercules, Cyngus, Scutum, Cassiopeia, Horizon oost en Horizon west.