Theater Technology - Mechanical Advantage in Pulleys

by jtlane in Teachers > Theatre

922 Views, 3 Favorites, 0 Comments

Theater Technology - Mechanical Advantage in Pulleys

IMG_5542.JPEG

The purpose of this project is to educate students in theater education on the benefits of mechanical advantage using various snatch blocks.

Supplies

Materials:

  • Tension load-cell
  • ATmega 328P
  • Pulleys (5x)
  • Plywood
  • String
  • LCD (Optional - could just use serial monitor instead)
  • Electrical Wire
  • Nails
  • Tape
  • Solder

Tools:

  • Hammer
  • Saw
  • Scissors
  • Soldering Iron
  • Wire Cutters

Serial LCD Test

serial_lcd_connections.jpg
serial_lcd_test.jpg

Hardware Connections:

Connect the RX pin on the LCD to the LV4 pin on the 3.3V->5.0V logic converter. Next, Connect the HV4 pin of the logic converter to the Arduino's TX Pin (Pin 1). Connect the GND on the Arduino to the ground pin of the LCD. Connect the 3.3V pin on the Arduino to the RAW pin on the LCD. Make sure that you are only inputting 3.3V into the LCD. 5.0V will short out the LCD. Next, connect the GND from the Arduino the Logic Converter. Connect the 5V from the Arduino to the HV of the Logic Converter and the 3.3V from the Arduino to the LV of the logic converter.

Coding:

*You will need to download the Serial LCD Library: http://librarymanager/All#SparkFun_SerLCD*

Download the code, then build and upload to your Arduino. Make sure to close out of the serial monitor while uploading your code, or the code will not upload properly. Run the code.

<pre style="font-size: 13.5px;">// LCD Print Test Code
// Written by: Jonathan Lane
// ECET 38001 - Senior Capstone Prep
// Code Description: 
//    -This code is designed to print the load cell's data and output it to the serial lcd.

/*  Hardware Connections:
 *    LCD -> Logic Converter
 *      -LCD RX -> Logic Converter LV4
 *    Logic Converter -> Arduino
 *      -HV4 -> Arduino TX (Pin 1).
 *    Arduino -> LCD
 *      -GND -> GND
 *      -3.3V -> RAW
 *    Arduino -> Logic Converter
 *      -GND -> GND
 *      -5V -> HV
 *      -3.3V -> LV
 */

#include <SerLCD.h> //Click here to get the library: <a href="http://librarymanager/All#SparkFun_SerLCD"> <a href="http://librarymanager/All#SparkFun_SerLCD"> <a href="http://librarymanager/All#SparkFun_SerLCD"> http://librarymanager/All#SparkFun_SerLCD
</a>
</a>
</a>
SerLCD lcd; // Initialize the library with default I2C address 0x72

void setup() 
{
  Serial.begin(9600);    // Sets up serial communication for 9600 baud.
  
  lcd.begin(Serial);    // Sets up the LCD for Serial communication at 9600bps.

  lcd.setBacklight(255, 255, 255);  // Sets backlight to bright white.
  lcd.setContrast(5);   // Set contrast. Lower to 0 for higher contrast.

  lcd.clear();    // Clears the display - this moves the cursor to home position as well.
  lcd.print("Hello World!");
}

void loop() 
{
  // Set the cursor to column 0, line 1.
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // Print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

Downloads

Load-Cell Test

Load_Cell_Arduino_Wiring.jpg
Load_Cell_Arduino_Wiring_Photo.jpg
Load_Cell_Direction.jpg
IMG_5504.JPEG

Connect the electrical hardware as instructed in the comment section of the code. Take any load off of the load-cell by placing the load-cell on a flat surface. Download the given code to your microcontroller. Open serial monitor and observe the printed data. Pull on both ends of the load-cell and observe that the number printed to the load-cell increases.

<pre>// Load Cell Test Code
// Written by: Jonathan Lane
// ECET 38001 - Senior Capstone Prep
// Code Description: 
//    -This code is designed to read the load cell's data and output it to the serial monitor.

/*  Hardware Connections:
 *    -Load Cell Amplifier DT -> Arduino Pin 3.
 *    -Load Cell Amplifier SCK -> Arduino Pin 2.
 */
 
#define DOUT  3
#define CLK  2 

void setup() {
  // Pin Definitions: 
  pinMode(A0, INPUT);   // sets the analog pin A0 as input
}

void loop() {
  Serial.begin(9600);

  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);

  delay(300);
}

Downloads

Load-Cell Calibration

Hang the load sensor vertically with the load cell (white part) facing upwards. Download the load cell calibration software to your microcontroller, and connect to power. Connect the hardware as instructed in the comment section of the code. Attach a known mass to the end of the load cell.

I chose to use a can of Coca-Cola due to it having a known mass of ~382.91 grams.

Density of Coca-Cola = 1.042 g/mL

Can of Coke's volume = 355 mL.

355 mL of Coke = 369.91 grams.

Average can mass = 13 grams.

Can of Coke's mass = 13 grams + 369.91 grams = 382.91 grams.

You will need to calibrate your load cell by using the "a" and "z" keys on your keyboard until the displayed serial message matches the actual mass of the object. Take a note of the calibration factor.

/*  Hardware Connections:
 *   Load Cell Amplifier:
 *    -VCC -> 5V
 *    -GND -> GND
 *    -SCK -> Arduino Pin 5
 *    -DT -> Arduino Pin 6
 */

#include "HX711.h"
const int LOADCELL_DOUT_PIN = 6;
const int LOADCELL_SCK_PIN = 5;
HX711 scale;
float calibration_factor = 40; // this calibration factor must be adjusted according to your load cell
float units;
void setup() 
{
  Serial.begin(9600);
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  Serial.println("HX711 calibration sketch");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press + or a to increase calibration factor");
  Serial.println("Press - or z to decrease calibration factor");
  scale.set_scale(calibration_factor); //Adjust to this calibration factor
  scale.tare(); //Reset the scale to 0
  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}

void loop() 
{
  scale.set_scale(calibration_factor);
  Serial.print("Reading");
  units = scale.get_units(), 5;
  if (units < 0)
  {
    units = 0.00;
  }
  Serial.print("Weight: ");
  Serial.print(units);
  Serial.print(" grams");
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();
  if (Serial.available())
  {
    char temp = Serial.read();
    if (temp == '+' || temp == 'a')
      calibration_factor += 1;
    else if (temp == '-' || temp == 'z')
      calibration_factor -= 1;
  }
  if (Serial.available())
  {
    char temp = Serial.read();
    if (temp == 't' || temp == 'T')
      scale.tare(); //Reset the scale to zero
  }

Load-Cell & LCD Combination

IMG_5503.JPEG

Connect the electrical hardware as instructed in the comment section of the code. Next, remove the load from the load-cell. Download the provided code to your microcontroller and connect power. Change the calibration factor to the factor that you got using the Load-Cell calibration program. The LCD should display 0 grams. Attach a mass to the load-cell, or simply pull on it - the data on the LCD should increase. Attach your known mass, and check for accuracy.

<pre>// Load Cell & LCD Test Code
// Written by: Jonathan Lane
// ECET 38001 - Senior Capstone Prep
// Code Description: 
//    -This code is designed to print the load cell's data and output it to the serial LCD.
//    -This code is designed to function with the ATmega 328p (Arduino Uno) - NOT the 2560 (Arduino Mega).

/* External Hardware Connections:
    LCD:
      -5V -> 5V
      -GND -> GND
      -Arduino Pin 1 (TX) -> Logic Converter HV4
    Load Cell Amplifier:
      -VCC -> 5V
      -GND -> GND
      -SCK -> Arduino Pin 5
      -DT -> Arduino Pin 6

*/
#include "HX711.h"    //You must have this library in your arduino library folder.
#include <SerLCD.h>   //Click here to get the library: http://librarymanager/All#SparkFun_SerLCD.

const int LOADCELL_DOUT_PIN = 6;
const int LOADCELL_SCK_PIN = 5;

#define DOUT  4
#define CLK  5

HX711 scale;
SerLCD lcd; // Initialize the library with default I2C address 0x72
float calibration_factor = 60;  // This calibration factor is adjusted according to my load cell.
float units;

void setup() 
{
  Serial.begin(9600);
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(calibration_factor); //Adjust to this calibration factor
  scale.tare(); //Reset the scale to 0

  lcd.begin(Serial);    // Sets up the LCD for Serial communication at 9600bps.
  lcd.setBacklight(255, 255, 255);  // Sets backlight to bright white.
  lcd.setContrast(5);   // Set contrast. Lower to 0 for higher contrast.
}

void loop() 
{
  scale.set_scale(calibration_factor);
  units = scale.get_units(), 5;
  if (units < 0)
  {
    units = 0.00;
  }
  lcd.clear();    // Clears the display - this moves the cursor to home position as well.
  lcd.print("Weight: ");
  lcd.print(units);
  lcd.print(" g");
  delay(500);
}

Constructing the Single Snatch Block - Cutting the Wood

IMG_5528.JPEG

Cut two pieces of plywood (1/4" thick) to be 3" x 1".

Constructing the Single Snatch Block - Inserting Nails

IMG_5529.JPEG

Hammer 1 nail into each side of one of the pieces of 3" x 1" plywood.

Constructing the Single Snatch Block - Pulley

IMG_5530.JPEG

Slide a pulley onto one of the nails.

Constructing the Single Snatch Block - Assembly

IMG_5531.JPEG

Place the second 3" x 1" piece of plywood on top of the nails that are going through the first piece of 3" x 1" of plywood. Hammer the wood so that the nails go all the way through the second piece of plywood.

Constructing the Double Snatch Block - Cutting the Wood

IMG_5522.JPEG

Cut 2 pieces of plywood (1/4") to be 6" x 1".

Constructing the Double Snatch Block - Inserting Nails

IMG_5523.JPEG

Hammer a nail through each end of one of the 6" x 1" plywood pieces.

Constructing the Double Snatch Block - Pulleys

IMG_5524.JPEG

Slide a pulley on each of the nails.

Constructing the Double Snatch Block - Assembly

IMG_5525.JPEG

Place the second 6" x 1" piece of plywood on top of the nails that are going through the first piece of 6" x 1" of plywood. Hammer the wood so that the nails go all the way through the second piece of plywood.

Constructing the Double Snatch Block - Slotting

IMG_5526.JPEG

Using a saw, cut a small slot into the top of the double snatch block. This slot is used to hold the string that supports the mass.

Laying Out the Board

IMG_5533.JPEG
IMG_5536.JPEG

Layout where your stationary pulleys are going to be mounted. While doing this, keep in mind the width of your largest snatch block, the double snatch block. Once in position, place nails through the center of the pulleys to secure them.

Secure Load-Cell & LCD Combination

IMG_5548.JPEG
IMG_5549.JPEG

Place this combination on either the left or right end of the board. Once arranged, place nails around the edges of the combination to secure the stationary position. You can also use tape to help secure the combination.

String Assembly

IMG_5547.JPEG
IMG_5546.JPEG

Tie one end of the string around one end of the metal hook that is connected to the Load-Cell/LCD Combination. Tie the opposite end of the string to the counterweight.

Run Test - Single Pulley

IMG_5540.JPEG

Connect the microcontroller to the computer. Run the string over the direction changing pulley, and attach the other end to the load. Record the measured load from the LCD screen.

Run Test - Single Snatch Block

IMG_5539.JPEG

Connect the load cell to the computer. Loop the string through the pulleys in a vertical zig-zag direction from one side of the board to the other, then attach the load to the snatch block. Record the measured load from the LCD screen.

Run Test - Double Snatch Block

IMG_5541.JPEG

Connect the load cell to the computer. Loop the string through the pulleys in a vertical zig-zag direction from one side of the board to the other, then attach the load to the snatch block. Record the measured load from the LCD screen.