User login

Powered by Drupal, an open source content management system

Theory and Practice of Tangible User Interfaces

Lab 6: DC Motor Actuation

Submitted by Seth Horrigan on Tue, 10/14/2008 - 22:41

Assignment: DC Motor: Actuation Assignment 1

Collaborators:

Description

I wanted to make something active and interesting using the motor. I decided to try to actuate a cheap spider ring. I tried using cork, using rubber bands, using posterboard, but nothing worked quite right. The problem was that the motor did not have sufficient torque, so by the time I cranked it up high enough to overcome rotational inertia and get the spiders moving, they would end up spinning wildly then getting tangled up in the motor.

 

In the end, I realized that my best option was not to use the full rotational functionality of the motor, but to allow partial rotation and gravity to counteract each other and provide a sort of jerky motion to the system. In order to do this, I needed a relatively large inertial problem for the motor and the proper code. I settled on a piece of cork (to transfer most of the rotational force of the motor) attached to a coffee stirrer, that acted as the rail on which I hung my spiders. After that, it was just a matter of finding the proper amount of motor output to use and the delays to incorporate.

 

Components Used

  • 1 Arduino board
  • 1 generic solderless breadboard
  • 2 rubber bands to secure the Arduino board to the breadboard
  • wires
  • 1 1k Ohm resistor
  • 1 diode
  • 1 transistor
  • 1 DC high-rotation, low-torque motor
  • 2 AA batteries in a battery pack
  • 1 piece of cork
  • 1 wooden coffee stirrer
  • 9 plastic spider rings
  • 1 pieces of string, disassembled into 7 pieces of thread
  • 1 YamaMotoYama tea bag string, whole
  • hot glue

 

Images and Video

DC Motor connection (software controls actuation, so there is no input device)

An overview of the setup

A closeup of the motor setup.

Spider-ring puppet show - DC Motor in action

A video of the system in action.

 

Arduino Code

/*
* Make a DC motor sporadically rotate an object
* with non-trivial rotation inertia. Designed
* for an array of plastic spiders hanging from
* string for Lab assignment 6.
*
* Seth Horrigan
*/

int motorPin = 9; // select the pin for the Motor
void setup() {
Serial.begin(9600);
}
void loop() {
//Write between 75 and 125 to DC Motor
analogWrite(motorPin, 100);
//Turn the motor on for 100-250 ms
delay(150 + random(200));
analogWrite(motorPin, 0);
//Turn the motor off for 100-2600 ms
delay(100 + random(2500));
}