Sunday, October 4, 2015

Frozen Time Photography and a Super Bright LED module

Stop action photography is commonly done in a dark room with a camera on the "bulb" setting (shutter held open)... a bright light source is flashed right at the time desired.   Normally this light is from an Xeon flash tube (commonly found in camera flashes).

I was looking at my 100W LED module and I was wondering if it could act as a substitue... while not as bright as an Xeon tube it's far more controllable in regards to light pulse duration and inter-pulse control.

Arduino sketch:

// flash_control
//   enables a 100W LED panel to be used in stop-motion photgraphy
// Sketch is for illustrative purposes only  The sketch is  provided as is without any guarantees or warranty or suitability to purpose.
//  dependencies:
//  - high side switch constructed of a npn transistor and pmos pass fet
//  - u8glib required for driving OLED display
//  - Ardunio Nano (rev 3... 
//  - 128 x 64 OLED display. i2c interface... ""
//  - 3 push button switches

#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI ** this is specific to the OLED panel in use... refer to google's library to select different (huge # of panels supported!)

int cycle;

int inPin1 = 12;  
int inPin2 = 11;
int inPin3 = 10;
int inPin4 = 9;

int flash_on_time = 0;   // holds delay time until flash goes off
int button1, button2, button3, button4;
int control_pin = 3;
int armed = 0;
int go_flight = 0;
int i;

#include <Wire.h> //I2C Arduino Library

#define address 0x1E //0011110b, I2C 7bit address of HMC5883

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  char temp[50]; 
  char temp1[50];
  char temp2[50];

  // convert integers into strings so they can  be displayed
  // adriundo or u8g lib never implemented sprintf
   dtostrf(flash_on_time,8, 0, temp2);
  if (armed == 1)
     u8g.drawStr(4,10,"  ARMED");
   u8g.drawStr(4,10,"     ");
   //u8g.drawStr(4,29,"DOWN: ");
  u8g.drawStr(4,52, "On Time: ");
  u8g.drawStr(16,52, temp2);
  if (button1 == 0) {u8g.drawStr(30,30,"1");} else {u8g.drawStr(30,30,"0"); };
  if (button2 == 0) {u8g.drawStr(40,30,"1");} else {u8g.drawStr(40,30,"0"); };
  if (button3 == 0) {u8g.drawStr(50,30,"1");} else {u8g.drawStr(50,30,"0"); };
  if (button4 == 0) {u8g.drawStr(60,30,"1");} else {u8g.drawStr(60,30,"0"); };


void setup(){
  //Initialize Serial and I2C communications
  // make 3 inputs for buttons, 1 for fire control
  pinMode(inPin1, INPUT_PULLUP);  //delay time down
  pinMode(inPin2, INPUT_PULLUP);  //delay time up
  pinMode(inPin3, INPUT_PULLUP);  // arm system
  pinMode(inPin4, INPUT_PULLUP);  //this one fires the led... 
  pinMode(control_pin, OUTPUT);
    //setup oled screen
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {

void loop(){
// inint oled
  button1 = digitalRead(inPin1);
  button2 = digitalRead(inPin2);
  button3 = digitalRead(inPin3);  
  button4 = digitalRead(inPin4);

  if (button1 == 0) if (flash_on_time != 0) flash_on_time--;
  if (button2 == 0) if (flash_on_time != 100) flash_on_time++;

  if (armed ==1) 
    while (digitalRead(inPin4) == 1)
      go_flight = 1;   // set token
      armed = 0;
   if (go_flight == 1)   

      delayMicroseconds(flash_on_time * 100);  //delay flash   
      digitalWrite( control_pin, 1);
      digitalWrite( control_pin, 0);
        armed =0;  go_flight = 0;   // consume token
  if (button3 == 0) armed =1; 

   do { 
      }  while( u8g.nextPage() );

Sunday, September 20, 2015

Assembly Check of a Solar Motion Light Sensor

There is a side of my house which gets rather dark.   A quick check at Amazon shows the solution: a battery powered LED panel with a light sensor and motion sensor... all  recharged by a solar panel.  It's a good looking product and it looks great when installed.

However, as with many things Amazon my quality expectations are starting to become very low.  I don't expect this panel to last very long... 

The sad thing about this unit is that the electronic components are all pretty plausible. The LEDs are nice, the Li-ion battery has a reasonable capacity and the electronic circuits seem well considered. The light diffusion panel, in particular, is well done.

However I suspect this will all be let down with small oversights on the case design: for only a few pennies more this assembly could made to have a longer service life. Some of the gasket design could have been improved without any actual cost increase. Other small bits such as potting the electronics would also add cost but dramatically improves reliability.

Sunday, September 13, 2015


What started out as a debug session on a dead LED bulb turned into an interesting exercise in creating probes small enough to contact the small bonding-wire bumps of an LED die.

I was fully expecting on doing a video on a dead capacitor (the most likely failure mode).... but the power supply looked just fine.  The failure was with one of the LEDs.

Sunday, June 14, 2015

What's Inside? Honeywell 3 Axis Compass HMC5883L

One of the more remarkable bits of the last 20 years is how previously very complex and expensive technology has been shrunk in size and cost.

The Honeywell HMC5883L 3 axis compass is a good example.

These sensors probably find high volume applications in cell phones.

It's still a marvel to me how one could fabricate three small bits of silicon (including 2 which are undoubtedly MEMS), package them into a single substrate and then assemble it into an Arduino friendly board for a of 99 cents!

Thursday, June 4, 2015

Poor Man's Metallurgical Microscope

In retrospect I should have bought a metallurgical microscope for the type of work I do..... this video explains how I work around the limitation of a biological microscope to added top side illumination.

A fun outing with fabricating some moderately precise components on a metal lathe.

Saturday, May 30, 2015

AIMOmeter MS8217 Multimeter: Fluke 17B clone with lots of problems....

In the sincerest form a flattery some vendor has copied the exact case of a meter from the much better known Fluke corporation.

Sadly, they did not copy the quality inside such a meter.  Some clear design errors in the meter.

While I did not expect much for $29.99, I was surprised that I was able to buy the meter on  If this was an ebay or alibaba purchase I would have been not as surprised.... I don't know why.  I guess I need to be vigilant no matter what the vendor.....

Some clear design errors which is just so surprising when they could be easily avoided.

Monday, May 18, 2015

Filament LED Long Term Test

There has been much speculation on the service life of these filament LEDs.  Sounds like a good topic to study so I bought one and have been running it 24/7 while mapping out the light output.

At the ~600 hour mark (1 month) I am now getting a sense of the life time of the bulb.