As mentioned previously, we’ll be utilizing a linear CCD image sensor in our spectrometer. I’ve chosen the Toshiba TCD1304A because it provides over 3000 pixels of resolution, has response down into the UV range and is readily available for less than $20. Please refer to the internal circuit diagram below:
The data sheet for this part is quite confusing, and there aren’t any reference designs to be found around the ‘net. The Integration Clear Gate (ICG) pin doesn’t really control integration time, as the name might suggest. The leading edge of ICG begins readout of a new line of data from the analog shift registers. There are two shift registers, one for even and one for odd pixels, and the two pixel streams are multiplexed at the output buffer (another detail conveniently omitted from the data sheet). The Shift Gate (SH) pin controls integration time by gating (shutting off) the accumulation of charge in the analog shift registers. Many CCDs require multiple clock phases to read out the data, but Toshiba has placed some of the clock generation logic onboard, and you only need to provide a master clock (φM). One pixel is read out for each four cycles of φM.
Since CCDs are dynamic devices (compared to static CMOS image sensors), the AC specifications call out both minimum and maximum periods for the clock signals. Additionally, the TCD1304A has setup-and-hold timing requirements between ICG, SH and φM, the bottom line being that it is a tricky device to interface to a microprocessor without violating any of the AC specifications. Initially, I thought I would need additional logic circuitry to generate the timing signals, but it turns out that the LPC1768 processor is fast enough and flexible enough to generate the timing signals we need and also capture 12 bits of analog data for each pixel. In the next installment, we’ll take a look at how this is accomplished.