Theater Technology - Mechanical Advantage in Pulleys
by jtlane in Teachers > Theatre
922 Views, 3 Favorites, 0 Comments
Theater Technology - Mechanical Advantage in Pulleys
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
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
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
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
Cut two pieces of plywood (1/4" thick) to be 3" x 1".
Constructing the Single Snatch Block - Inserting Nails
Hammer 1 nail into each side of one of the pieces of 3" x 1" plywood.
Constructing the Single Snatch Block - Pulley
Slide a pulley onto one of the nails.
Constructing the Single Snatch Block - Assembly
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
Cut 2 pieces of plywood (1/4") to be 6" x 1".
Constructing the Double Snatch Block - Inserting Nails
Hammer a nail through each end of one of the 6" x 1" plywood pieces.
Constructing the Double Snatch Block - Pulleys
Slide a pulley on each of the nails.
Constructing the Double Snatch Block - Assembly
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
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
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
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
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
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
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
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.