Ocean Optics USB2000 Firmware update
This is a compilation of info about Ocean Optics USB2000 spectrometers and a guide to flashing them with firmware on the board level...
A collection of web-based utilities for scientific and engineering tasks.
An interactive tool to browse and compare emission spectra from the NIST Atomic Spectra Database.
A tool to calculate calibration coefficients from spectral lamp data.
Hello! I'm Bilal Abboud, a young laser scientist and engineer from Berlin. I currently study Laser Science & Photonics at the Berliner Hochschule für Technik. This website showcases some of the personal projects I've worked on.
Loading data from repository...
This is a compilation of info about Ocean Optics USB2000 spectrometers and a guide to flashing them with firmware on the board level...
Disclaimer: I am not responsible for any damages caused by using this procedure. You can use it at your own risk.
The Ocean Optics USB2000 is a compact crossed Czerny-Turner type spectrometer with SMA905 fiber optic input and a 10-pin IO (connector is Samtec IPS1-105-01-S-D-RA, avail. from Mouser)...
...and the real thing:
While it is rare to find units that are configured to measure spectra beyond 880nm...
You will need:
Use a razor blade or a suitable alternative...
If you have located all four corner screws, unscrew them.
Once the screws are removed, pull the the lid up...
First locate the EEPROM, on which the firmware is stored...
close-up view:
Now use a mini probing grabber to connect to the following pins:
It should look something like this:
Load the firmware file usb2000v2510.iic
onto the SD card. Now put the SD card into the Arduino SD shield. Use the Arduino to run the following code:
#include
#include
#include
#include
#define PROG_FNAME "USB200~1.iic"
#define PROG_VERIFY 0
#define PIN_SDCARD_CS 4
#define UART_BAUD 9600
#define EEPROM_I2C_ADDR 0x51
#define EEPROM_BASE 0
Sd2Card card;
byte eeprom_read(int i2c_addr, unsigned int dev_addr)
{
byte data = 0xff;
Wire.beginTransmission(i2c_addr);
Wire.write((int)(dev_addr >> 8));
Wire.write((int)(dev_addr & 0xff));
Wire.endTransmission();
Wire.requestFrom(i2c_addr, 1);
if (Wire.available())
data = Wire.read();
return data;
}
int eeprom_write(int i2c_addr, unsigned long dev_addr, byte data)
{
Wire.beginTransmission(i2c_addr);
Wire.write((int)(dev_addr >> 8));
Wire.write((int)(dev_addr & 0xFF));
Wire.write(data);
Wire.endTransmission();
return 0;
}
int prog_eeprom(const char *fname)
{
char buf[64];
uint8_t e_byte;
uint8_t f_byte;
File f;
char c;
Serial.println("Opening firmware file");
f = SD.open(fname, FILE_READ);
if (!f) {
Serial.println("Could not open file");
return -1;
}
Serial.print("Will reprogram EEPROM. Continue? [y/N]");
while (!Serial.available()) {
yield();
}
c = Serial.read();
if (c != 'y') {
Serial.println("Aborting");
return -1;
}
Serial.println("");
Serial.print("Programming EEPROM (");
Serial.print(f.size());
Serial.print(" bytes)\n");
for(unsigned long i = 0; i < f.size(); i ++) {
f_byte = f.read();
eeprom_write(EEPROM_I2C_ADDR, EEPROM_BASE + i, f_byte);
delay(10); /* usec */
#if PROG_VERIFY
e_byte = eeprom_read(EEPROM_I2C_ADDR, EEPROM_BASE + i);
if (f_byte != e_byte) {
sprintf(buf, "Could not verify byte at %08x: 0x%x (should be 0x%x)", i, f_byte, e_byte);
Serial.println(buf);
return -1;
}
#endif /* PROG_VERIFY */
}
f.close();
return 0;
}
void setup()
{
int rc;
Wire.begin();
Serial.begin(UART_BAUD);
while (!Serial)
; /* wait for serial monitor */
Serial.println("Initializing SD card");
if (!SD.begin(PIN_SDCARD_CS)) {
Serial.println("Could not initialize SD card");
while (1);
}
Serial.println("Programming EEPROM");
rc = prog_eeprom(PROG_FNAME);
if (rc) {
Serial.println("Programming failed");
while (1) ;
}
Serial.println("Programming complete");
}
void loop()
{
/* stub */
}
After this, your USB2000 spectrometer should have been flashed... Good luck and have fun!
This Microscope consists of a Mitutoyo FS70L4 as its core and a Physik Instrumente six-axis closed-loop piezo hexapod stage...
This Microscope consists of a Mitutoyo FS70L4 as its core, shown here from both sides:
It uses a Physik Instrumente six-axis closed-loop piezo hexapod stage for high-precision sample manipulation that was kindly provided by Prof. Dr. Georg Sommerer at the Berliner Hochschule für Technik (laserscience.berlin).
It is currently equipped with a passively q-switched 1064nm DPSS laser or an optional TEEM Photonics 266nm sub-nanosecond pulsewidth deep UV laser for the most delicate work (teardown documentation coming soon).
Additional components include an Ocean Optics USB2000+ UV-NIR spectrometer for LIBS and Raman Analysis, a TILL Photonics Polychrome IV tunable wavelength short arc xenon light source, as well as a LabJack T4 for general control. It is also capable of conducting Infrared in-situ microscopy or IRIS in short. See Bunnie Huang's work for more info about that :-)
An exploration of interferometric reflectance imaging microscopy, a powerful technique for label-free sensing of nanoparticles and viruses...
Full content for the IRIS microscopy project...
A project on a compact, deep UV, sub-nanosecond microchip laser. Analysis, teardown, and potential applications...
Full content for the 266nm microchip laser project...
Details the process of adapting a large-format Gen 2 image intensifier tube for use in a custom night vision device, including the power supply and optics...
This project documents the exciting challenge of building a usable night vision device around a classic, large-format Mullard/Philips XX1332 Gen 2 image intensifier tube...
A detailed teardown and analysis of the high-end, gateable Stanford Photonics Intensified CCD camera system...
Full content for the Stanford Photonics camera teardown project...
Design and construction of a power supply for Hamamatsu Chevron MCP tubes with adjustable gain, ABC, and fast autogating...
Full content for the Gen 3 power supply project...
A straightforward, step-by-step guide for assembling a PVS-14 monocular from a kit and a sourced image intensifier tube...
Full content for the PVS-14 build guide project...
A guide on common maintenance procedures for TEC-cooled scientific CMOS cameras, including vacuum chamber repumping and sensor cleaning...
Full content for the sCMOS camera servicing project...
Crafting a sterling silver bracelet using traditional wire-weaving techniques to create a twisted foxtail chain...
Full content for the silver bracelet project...
Just some sandstone and a weekend's worth of time
Full content for the stonemasonry project...
My first time blacksmithing a few years ago to create a simple bottle opener.
Full content for the blacksmithing project...
A technical guide on converting a Canon 6D DSLR to a monochrome-only camera for astrophotography by removing the Bayer matrix...
Full content for the Canon 6D mono conversion project...
Building an automated test setup for cycling batteries inside an environmental chamber to study performance of space batteries under different conditions...
Full content for the automated battery cycler project...