-
Side glow cable with LEDs
Many projects require illumination. An LED is often a good choice because it can be bright while using a minimum of current. An ultra bright LED can even drive enough light through short lengths of side glow fiber optic cable. This cable is flexible plastic cable with a reflective core to direct light to the side, as opposed to simply transmitting the light to the end of the cable. While it is designed to be used with bright halogen bulbs that push light through hundreds of feet of cable, I was interested to see how well an LED could work with just a few feet of cable.
My wife and I are interested in making safety clothing for night bicycle riding and thought this might be useful. We ordered a five foot section of 3mm wide cable from here. Once I had the cable in hand, I attached a bright red LED to each end with shrink tubing.
A quick test shows that two LEDs provides a fairly even glow along the entire length of the tube. Each LED was rated to deliver 18,000 millicandelas of light.
This looks like it could be used on a bicycle helmet to provide a flashing illumination. More to come as we experiment.
-
Improving a book light
I love to read. Often, I use a portable light that clips onto the book. It works OK, but two things bugged me about it. First, it required four AA batteries. Second, it used an incandescent bulb that is bright, but which produced glare and hot spots on the page.
I had been experimenting with a simple circuit called a Joule Thief. This circuit boosts a DC voltage to a higher voltage. It’s is easy to make with easy to obtain parts. The Web is full of plans for these devices. The advantage for this project, is that such a circuit can drive a bright white LED from a single 1.5 Volt battery. I figured that I could easily fit the circuitry and a single AAA battery into the battery compartment of the book light. This would save batteries and provide a more even light across the page of a book.
I replaced the incandescent bulb with a bright white LED that I encased in aquarium sealant inside of a short length of clear plastic tubing. This helped to diffuse the light along the approximately two inches of tubing that the LED was attached to. Here’s the final assembly and it’s use.
-
Vex Servo Motor
Vex servo motors have a lot of good features. They are compact, powerful, and easy to mount and connect to things like gear shafts, beams, levers. I’ve been using micro controllers to operate these in previous projects, but decided to go old school and use a 555 timer. I really just want to do something to try out my new USB oscilloscope. I found this page with a couple of good plans.

Breadboarding this was fairly easy and took just a few minutes. I keep a lot of components around with breadboard wire already soldered, so that makes prototyping a lot faster.

Before I attached the motor, I verified that the circuit was performing as needed. With the oscilloscope set to show 5 ms per division I could measure the minimum pulse width of 1.15 ms and a maximum width of 2.75 ms.
This seemed good enough to try, so I plugged in the motor. The black wire is ground, the red (or orange) wire is positive, and the white wire is the signal (pin 3 on the 555). I had nearly the full 100 degree rotation in the motor as I turned to potentiometer shaft back and forth from minimum to maximum.
Just for fun, I substituted a flex sensor for the potentiometer. Not quite the same amount of rotation, but, I didn’t bother changing any other component values.
Servo Motor with Flex Sensor from Patrick Lewis on Vimeo.
-
Taking apart a Flip Ultra 30
The Flip camera is great and cheap enough to risk destroying it. Broken down to its bare bones, it is still a little bigger than its predecessor, the Pure Digital One-use camera. However, the built in USB port and connector, and the ability to connect the Flip to a PC without needing the hack it to access stored videos, makes it more useful in the long run. In short, a great camera for projects that need small, light, durable video recording hardware.
-
Re-inventing the scale.
Must have been a long winter stuck inside to try something like this. The idea was to make a scale using a couple of pennies and conductive foam used for packing electronic parts. The first thing was to solder some wire onto pennies. I used a torch instead of a soldering iron because pennies can soak up a lot of heat.

Pennies with hookup wire soldered to them. Foam is packing from a power MOSFET.
The next step was cut some plexiglass sheets and then use some double stick tape to attach a penny to each sheet. Then I bolted the two sheets together, presssing the foam in between. Here’s the assembled unit.

Platform assembled, and hooked up to ohmmeter to test base resistance.
This setup didn’t work out so well as a scale. Heavier objects placed on the scale took a long time to reach a stable value. I figure that the foam continued to compress slightly for two minutes or more. Also, it took a similar amout of time for the scale to return to it’s base value.
This arrangement seems to work best not as a scale, but as a pressure pad, particularly as a pressure-relief pad. For example, it might work well to sense when an object, such as a book, is lifted. Don’t anyone dare try to steal my “Programming Python book!”
-
Power MOSFET tutorial
Best short description of how to use
power MOSFETS that I’ve ever found.Now I know why the power sucking pig of an electomagnet I made from hookup wire and a nail is so hard to drive with a power MOSFET.
Also, shows why sometimes you are better off just buying controller chips that do the job you want than to try to roll the circuitry yourself with discreet components.
-
Arduino controlled arm
Controlling 3 motors with an Arduino board.
I dug out an old robot arm kit that I had built a long time ago. It was originally operated by push buttons for each motor with a slide switch to reverse the polarity of the current and thus the direction of the motor.
With an Arduino module, a couple of H-bridge chips, and a bit of surfing for ideas, I managed to automate it to drop a washer in a small container. The main idea comes from this page page, which describes how to hook up and control one motor. Learning to control two motors is largely inspired by this diagram.
Here it is in action. I had bigger plans for what it would do, but, it is after all, just a cheap kit with plastic parts. The jaws barely have enough grip to hold a small washer. It is a good proof of concept for controlling multiple motors with a single arduino board.


Wiring code for robot arm
[code lang="java"]
int motor1Pin1 = 3; // H-bridge leg 1
int motor1Pin2 = 4; // H-bridge leg 2
int motor1SpeedPin = 9; // H-bridge enable pin
int motor2Pin1 = 5;
int motor2Pin2 = 6;
int motor2SpeedPin = 10;
int motor3Pin1 = 7;
int motor3Pin2 = 8;
int motor3SpeedPin = 11;int ledPin = 13; //LED
void setup() {
// set all the other pins you're using as outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor1SpeedPin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(motor2SpeedPin, OUTPUT);
pinMode(motor3Pin1, OUTPUT);
pinMode(motor3Pin2, OUTPUT);
pinMode(motor3SpeedPin, OUTPUT);pinMode(ledPin, OUTPUT);
// set speedPin high so that motor can turn on:
digitalWrite(motor1SpeedPin, HIGH);
digitalWrite(motor2SpeedPin, HIGH);
digitalWrite(motor3SpeedPin, HIGH);// blink the LED 3 times. This should happen only once.
// if you see the LED blink three times, it means that the module
// reset itself,. probably because the motor caused a brownout
// or a short.
blink(ledPin, 3, 100);
}void loop() {
delay(5000);
digitalWrite(motor2Pin1, HIGH); // Arm up
digitalWrite(motor2Pin2, LOW); //
delay(1000);
digitalWrite(motor2Pin1, LOW);
delay(500);digitalWrite(motor3Pin1, LOW); // Arm left
digitalWrite(motor3Pin2, HIGH); //
delay(2500);
digitalWrite(motor3Pin2, LOW);
delay(500);digitalWrite(motor2Pin1, LOW); // Arm down
digitalWrite(motor2Pin2, HIGH); //
delay(1100);
digitalWrite(motor2Pin2, LOW);
delay(500);digitalWrite(motor1Pin1, HIGH); // open jaws
digitalWrite(motor1Pin2, LOW); //
delay(4000);
digitalWrite(motor1Pin1, LOW);
delay(500);digitalWrite(motor2Pin1, HIGH); // Arm up
digitalWrite(motor2Pin2, LOW); //
delay(1000);
digitalWrite(motor2Pin1, LOW);
delay(500);digitalWrite(motor3Pin1, HIGH); // Arm right
digitalWrite(motor3Pin2, LOW); //
delay(2000);
digitalWrite(motor3Pin1, LOW);
delay(500);digitalWrite(motor2Pin1, LOW); // Arm down
digitalWrite(motor2Pin2, HIGH); //
delay(1100);
digitalWrite(motor2Pin2, LOW);
delay(500);
}/*
blinks an LED
*/
void blink(int whatPin, int howManyTimes, int milliSecs) {
int i = 0;
for ( i = 0; i < howManyTimes; i++) {
digitalWrite(whatPin, HIGH);
delay(milliSecs/2);
digitalWrite(whatPin, LOW);
delay(milliSecs/2);
}
}[/code]










