UPDATE 10/04/2017 7:17:PM
New 8-Bit TCD1304 CCD detector driver board
8-Bit Main SCH 1
8-Bit Sheet 2
Cost analysis comparing Raman Spectrometers and Lasers from StellerNet Inc. to the DAV5 V3.01 3D printable Raman Spectrometer:
DAV5 V3.01 Raman Spectrometer uses an Aries 532nm 150mW CW/DPSS Green Laser
Cost - $ 199.99 US
The DAV5 V3.01 3D Printable Raman Spectrometer
DAV5 V3.01 Raman Spectrometer - $ 657.35 US
Here is the 3D view of the turret control interface unit for controlling the stepper motor, which turns the diffraction grating mount inside the spectrometer.
2 new spectral images today using a 0.1 mm acetate (film) slit, I allowed only 2 mm in length, of light to pass through the monochromator.
I cleaned the CCD noise up a bit and readjusted R4 and R7, and it certainly made a big difference, also the significantly narrower slit width makes a difference too.
The values for R4 and R7 are approximate for the breadboard, since the runs are longer than they would be on a PCB, but this gives me a great calibration starting point when the circuit is put together and ready for testing.
As you can see in the above image, the entrance slit is a rig I designed about a year and a half ago.
New CCD Spectrograph Hardware and Software
This unit captures all of the TCD1304's 3648 pixels using the ADC0820 8-bit half-flash converter. The time to digitize a frame is 32mS. At 115.2kBaud it takes a couple of seconds to download a frame.
An ATmega1284 was chosen as the microcontroller. It has 16kB of RAM, which is double the Arduino Mega2560. The sensor is the Toshiba TCD1304AP, a 3648 pixel linear CCD sensor which operates on a single voltage (3.0V to 5.5V). The sensor is driven directly by the microcontroller, and the analog output is buffered by a transistor and an op-amp. The signal is digitized by an AD0820 analog to digital converter.
The ADC0820 has + and - reference inputs, and this design takes advantage of them. A pot is used to set the maximum range of the ADC, and another pot sets the minimum range. In this way you can tune out the unused portion of the range and get all 256 values from the ADC.
The things that set this spectrograph apart from the last one are its ability to read all 3648 pixels from the CCD, and read them faster than the previous version. Because the AD0820 is so fast, I was able to tighten the code up and get all of the pixels read in 32mS. It reads 3694 pixels, but the first 30 and the last 16 are dark reference or dummy pixels and are discarded.
The Mclk signal has increased from 380kHz to 470kHz on this version.
The firmware can be downloaded here: Arduino CCD 8 Bit Driver Firmware
Stepper program for the 28YBJ-48 (stepper MTR) and degrees step
Speed is controlled by a delay between each step.
The longer the delay the slower the rotation.
That delay value is obtained by reading and analog-to-digital
cover (A0 in this case/10K trimmer POT) which gives a value from
0 to 1023.
The value is divided by 4 and add 10 for a delay
in milliseconds:delay(analogRead(0)/4 +10)
For faster speeds change 10 to say 2.
This is calculated between every step to vary speed while stepping.
I incorporated unsigned long int Val, in order read a little bit more of the AN/Map
A nice feature of unsigned int's: if a val is unsigned, then val / 4 is optimized by the compiler into a bit shift, much more efficient than the actual division you would get if val was signed.
Highlights of this code:
1) NO debouncing program
2) NO external Stepper lib
3) NO PWM
4) unsigned long int val = (analogRead('...') / 4 + 2); if a val is unsigned, then val / 4 is optimized by the compiler into a bit shift, much more efficient than the actual division you get if val was signed.
5) Push button control incorporates 2 functions per switch;
1: momentary push & release = Start/Stop
2: press & hold...