Thursday, November 19, 2015

Pager muscle improvements

I'm back to the larger 260 balloons to have enough structural strength for the approximately 6 g (with logic battery) Tinyduino controller and motor board.
Latest version details:

Safety pins:

for clevises: size 00 = 3/4"

for joints: size 1 = 1-1/16"

All knots:

Quadruple overhand stop knots

All elastic bands:

Loom bands (Rainbow, Cra-Z-Loom, etc.)

Motor leads:

36 gauge magnet wire (twisted pairs)


Qualatex 260Q Diamond Clear (tied and trimmed at both ends to give custom length.)


1-lb test Berkley Fireline (5" untwisted length between stop knots)


Solarbotics TPM2 4mm diameter pager motor

Tapered bushing:

insulation from 22 gauge solid wire tapered by stretching above candle flame

Motor harness tape:

1/8" width of 3M 863 clear strapping tape

Monday, November 16, 2015

Pager muscles for balloon sculptures

A pager muscle is just a pager motor with a length of high-performance fishing line attached. The twisting of the line causes it to shorten and pull the two sides of the joint closer together.
Right now I am working on a practical way to actuate balloon sculptures or balloonbots if you will. A YouTube video shows how it works.

In the video the motor is being driven by a 9-V battery that is pulse-width modulated down to 80/255, or effectively a 3-V supply. The controller drives the motor for 150 msec in one direction and 120 msec in the other direction with 100 msec rests between changes of direction.

Here is the Arduino sketch used for the demo:

int motorDirPin = 2;      // Motor direction connected to digital pin 2
int motorSpeedPin = 3;    // Motor speed connected to digital pin 3
int motorSleepPin = A3;      // Motor sleep to analog pin 3
int forwardSpeed = 80;
int pulseLength = 150;
int reversePulseLength = 120;
int restLength = 100;

void setup()
  pinMode(motorDirPin, OUTPUT);       // sets the pin as output
  pinMode(motorSpeedPin, OUTPUT);     // sets the pin as output
  pinMode(motorSleepPin , OUTPUT);     // sets the pin as output

  digitalWrite(motorDirPin, LOW);     // sets the default dir to be forward
  digitalWrite(motorSpeedPin, LOW);   // sets the default speed to be off
  digitalWrite(motorSleepPin , HIGH);   // sets the sleep mode to be off

void loop()

  // Set the motor direction to forward
  digitalWrite(motorDirPin, LOW);   
  analogWrite(motorSpeedPin, forwardSpeed);      // speed forward
  analogWrite(motorSpeedPin, 0);      // 0 speed forward
  // Setndirection to reverse
  digitalWrite(motorDirPin, HIGH);    
  analogWrite(motorSpeedPin, (255-forwardSpeed));      // speed reverse
  analogWrite(motorSpeedPin, 255);      // 0 speed reverse