Arduino Model Rocket Motor Test Stand. Nick Cinquino and Len Johnson, 10/2015

Similar documents
DEPARTMENT OF ELECTRONICS ENGINEERING

H-Bridge Motor Control

DS1307 Real Time Clock Breakout Board Kit

Introduction to Arduino

Arduino project. Arduino board. Serial transmission

Your Multimeter. The Arduino Uno 10/1/2012. Using Your Arduino, Breadboard and Multimeter. EAS 199A Fall Work in teams of two!

Computer Architectures

Adafruit MCP9808 Precision I2C Temperature Sensor Guide

Home Security System for Automatic Doors

Basic Pulse Width Modulation

Data Acquisition Module with I2C interface «I2C-FLEXEL» User s Guide

How To Control A Car With A Thermostat

Bluetooth + USB 16 Servo Controller [RKI-1005 & RKI-1205]

Lab 6 Introduction to Serial and Wireless Communication

Using Arduino Microcontrollers to Sense DC Motor Speed and Position

1602 LCD adopts standard 14 pins(no backlight) or 16pins(with backlight) interface, Instruction of each pin interface is as follows:

Arduino Lesson 1. Blink

THRUST CURVE LOGGER V-4.200

Arduino Lesson 14. Servo Motors

MCP4725 Digital to Analog Converter Hookup Guide

Animated Lighting Software Overview

User Guide Reflow Toaster Oven Controller

cs281: Introduction to Computer Systems Lab08 Interrupt Handling and Stepper Motor Controller

Data Sheet. Adaptive Design ltd. Arduino Dual L6470 Stepper Motor Shield V th November L6470 Stepper Motor Shield

1 Coffee cooling : Part B : automated data acquisition

Accurate Measurement of the Mains Electricity Frequency

Controlling a Dot Matrix LED Display with a Microcontroller

Arduino Microcontroller Guide W. Durfee, University of Minnesota ver. oct-2011 Available on-line at

How to Move Canon EF Lenses. Yosuke Bando

WEA-Base. User manual for load cell transmitters. UK WEA-Base User manual for load cell transmitters Version 3.2 UK

Surveillance System Using Wireless Sensor Networks

Lab Experiment 1: The LPC 2148 Education Board

Arduino Lesson 0. Getting Started

Electronic Brick of Current Sensor

Model 5511 Filler Controller User s Manual Version 1.1 October 2011

MANUAL FOR RX700 LR and NR

CAN-Bus Shield Hookup Guide

Arduino Lesson 16. Stepper Motors

Pololu DRV8835 Dual Motor Driver Shield for Arduino

Eric Mitchell April 2, 2012 Application Note: Control of a 180 Servo Motor with Arduino UNO Development Board

Experiment 5. Strain Gage Measurements

C4DI Arduino tutorial 4 Things beginning with the letter i

MAINTENANCE & TROUBLESHOOTING

Parts List. Navigation

Precision Miniature Load Cell. Models 8431, 8432 with Overload Protection

TSL2561 Luminosity Sensor

RC Camera Control. User Guide v /20/2012

QUICK START GUIDE FOR DEMONSTRATION CIRCUIT BIT DIFFERENTIAL ADC WITH I2C LTC2485 DESCRIPTION

An Introduction to MPLAB Integrated Development Environment

Real Time Clock USB Evaluation Board V3.0

RN-52 Bluetooth Hookup Guide

Tiny Arduino Music Visualizer

Objectives: Part 1: Build a simple power supply. CS99S Laboratory 1

Wireless Communication With Arduino

Servo Motors (SensorDAQ only) Evaluation copy. Vernier Digital Control Unit (DCU) LabQuest or LabPro power supply

Adafruit SHT31-D Temperature & Humidity Sensor Breakout

SYSTEM 4C. C R H Electronics Design

Transmitter Interface Program

Robot Board Sub-System Testing. Abstract. Introduction and Theory. Equipment. Procedures. EE 101 Spring 2006 Date: Lab Section # Lab #6

IR Communication a learn.sparkfun.com tutorial

SYSTEM 45. C R H Electronics Design

Flight Controller. Mini Fun Fly

RS232/DB9 An RS232 to TTL Level Converter

Character LCDs. Created by Ladyada. Last updated on :45:29 PM EDT

ezsystem elab16m Project 1F: Alarm System (Full Project description)

UniPi technical documentation REV 1.1

2.2" TFT Display. Created by Ladyada. Last updated on :15:09 PM EDT

Microcontroller Programming Beginning with Arduino. Charlie Mooney

8 by 8 dot matrix LED displays with Cascadable Serial driver B32CDM8 B48CDM8 B64CDM8 General Description

A REST API for Arduino & the CC3000 WiFi Chip

C8051F020 Utilization in an Embedded Digital Design Project Course. Daren R. Wilcox Southern Polytechnic State University Marietta, Georgia

9. Force Measurement with a Strain gage Bridge

Connecting Arduino to Processing a

AirCasting Particle Monitor Bill of Materials

ARDUINO SEVERINO SERIAL SINGLE SIDED VERSION 3 S3v3 (REVISION 2) USER MANUAL

ABB Drives. User s Manual HTL Encoder Interface FEN-31

Arduino Shield Manual

How To Use An Ams 5812 Pressure Sensor With A Usb Starter Kit

OCSM Series. High Resolution Digital Crane Scale. User Guide

CanSat Program. Stensat Group LLC

The Sonometer The Resonant String and Timbre Change after plucking

OEM Manual MODEL 2350 ELECTRONIC DUAL CYLINDER SCALE

Calibration and Use of a Strain-Gage-Instrumented Beam: Density Determination and Weight-Flow-Rate Measurement

MAINTENANCE & TROUBLESHOOTING

Arduino Due Back. Warning: Unlike other Arduino boards, the Arduino Due board runs at 3.3V. The maximum. Overview

DCX300 - DCX400 - DCX600

INDEX. Trademarks All name and product s trademarks mentioned below are the property of their respective companies.

DATASHEET. ADAM Arduino Display Adaptor Module. Arduino Compatible Shield P/N: 4Display-Shield-FT843 For the 4D Systems 4DLCD-FT843 Display

If an occupancy of room is zero, i.e. room is empty then light source will be switched off automatically

Arduino Lesson 13. DC Motors. Created by Simon Monk

MoTeC USA GPS. Part # M GPS BL Available in 10 Hz or 20 Hz. USER MANUAL Version 1.4

PUSH BUTTON START INSTALLATION MANUAL

AMS-1000 Multi-Channel Air Management System for Boost Control

DSO138 oscilloscope program upgrade method

Tire pressure monitoring

Advanced LED Controller (LED Chaser)

Theory and Practice of Tangible User Interfaces. Thursday Week 2: Digital Input and Output. week. Digital Input and Output. RGB LEDs fade with PWM

SainSmart UNO R3 Starter Kit

Miniature High-Resolution Registration Mark Sensor White LED AUTOSET Remote Setup Option

EDK 350 (868 MHz) EDK 350U (902 MHz) EnOcean Developer Kit

Transcription:

Arduino Model Rocket Motor Test Stand Nick Cinquino and Len Johnson, 10/2015 Combining an Arduino Uno microcontroller, an LCD keypad shield, an HX711 breakout board, a 10Kg loadcell, and a custom made engine mount yields a sensitive and accurate test stand or dynamometer for testing the thrust in Newtons of model rocket motors. The circuit is also usable as a stand-alone gram scale. Functionally, a model rocket motor is affixed to a loadcell, which generates a very small analog voltage difference, proportional to the force applied. The small voltage is applied to an HX711 breakout board, which amplifies the voltage and converts to serial digital data. The serial data is received by the Arduino microcontroller, which applies a calibration factor so that output is shown as grams of force. When a motor is affixed to the loadcell, and the igniter is placed and wired, AND the momentary pushbutton is activated, a 10-second warning time begins, with flashing of a bright yellow LED. When the 10 seconds is up, the yellow LED turns off, a red LED turns on, and a relay is closed allowing the full 12V from a gel-cell battery to be applied to the igniter. Immediately afterwards, the Arduino logs the time, and begins acquiring force data at 80 samples per second. After 800 readings are acquired, the relay shuts down, acquisition stops and the stop time is logged. In the meantime, the Arduino is also displaying gram-force on the LCD display, and showing the status of the acquisition run. Beginning with the loadcell, they are a beam with strain gages attached, in a Wheatstone Bridge arrangement. Loadcells can be purchased new from several sources including Sparkfun, or Aliexpress.com, or may be liberated from old, nonfunctional industrial scales. Fig.1 shows a collection of loadcells from old scales the electronics break down long before the loadcell does! The large one at center is rated to 2400Lb! Fig.1

Next is the HX711 breakout board. The one in use is the YL-112 module from Aliexpress.com. The cable between the HX711 board and Arduino should be at least 4. One easy hack is necessary: to change the sample rate from 10 samples per second to 80 samples per second, pin 15 needs to be desoldered from ground, and attached to +5 instead. This is done by using a fine tipped iron, and using a needle to pull up the pin the instant the solder melts. After the pin is bent up, run a short jumper from the pin to any +5V spot on the board. An even easier option is to use the Sparkfun HX711 board which is configurable for either 10 or 80 sa/sec. Fig.2 shows the HX711 hack: Fig.2: Desolder pin 15 from ground, jumper to +5V. Arduino Uno/LCD Keypad shield: solder headers to the top row of the LCD shield and to the bottom 2 rows. Pin identifications on the top row of the shield, from left to right are D13, D12, D11, D3, D2, D1, D0 to the Arduino. Plug the LCD shield into the Arduino and add the remainder of the circuit except for the 12V/igniter section, fig.3:

Fig.3 Circuit schematic Fig.4 Arduino with LCD keypad shield and switch/led s/relay/12v gel-cell.

Programming/Sketch: The HX711 library is needed; download from Github (see references) and add to your library folder. Then copy/paste the following sketch into your Arduino IDE window: /* Model Rocket Engine Dynamometer - Nick Cinquino 9/1/15 - V.5 Original 10Kg loadcell Modified from Nathan Seidle, SparkFun Electronics, November 19th, 2014 Output data in grams (g). There are 101.97 gram-force per Newton, for conversion. Your calibration factor may be very positive or very negative. It all depends on the setup of your individual loadcell, and the direction the sensors deflect from zero state. Need to experiment! Hack the HX711 board to set pin 15 high, for 80 samples per second. This example code uses bogde's excellent library: https://github.com/bogde/hx711 bogde's library is released under a GNU GENERAL PUBLIC LICENSE Arduino pin 2 - HX711 Clock pin 3 - Serial Data In 5V - VCC GND - GND Yellow LED on pin 13, igniter transistor/relay on pin 11, momentary pushbutton on pin 12. Most any pin on the Arduino Uno will be compatible with DOUT/CLK. The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power is fine. */ #include "HX711.h" #include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7); const int buttonpin = 12; // start sequence button const int ledpin = 13; //LED indicator and/or buzzer const int igniterpin = 11; //igniter transistor circuit int buttonstate = 0; #define DOUT 3 #define CLK 2 HX711 scale(dout, CLK); float calibration_factor = -560; //-560 works for my 10kg loadcell. void setup() { pinmode(buttonpin, INPUT); pinmode(igniterpin, OUTPUT); pinmode(ledpin, OUTPUT); Serial.begin(9600); Serial.println("HX711 Rocket Motor Dynamometer, V.5"); Serial.println("Affix motor nozzle up. Place igniter in nozzle. Move away from test stand."); Serial.println("Press start button to initialize ignition sequence."); lcd.begin(16, 2); lcd.clear();

lcd.setcursor(0,0); lcd.print(" MODEL ROCKET"); lcd.setcursor(0,1); lcd.print(" DYNAMOMETER"); delay(2000); scale.set_scale(); 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); Serial.println(" "); } void loop() { lcd.clear(); lcd.setcursor(0,0); lcd.print(" Rocket Dyno"); lcd.setcursor(0,1); lcd.print(" STDBY " ); scale.set_scale(calibration_factor); lcd.print(scale.get_units(),1); lcd.print(" g"); delay(500); buttonstate = digitalread(buttonpin); if (buttonstate == HIGH) { lcd.clear(); lcd.setcursor(0,0); lcd.print(" Rocket Dyno"); lcd.setcursor(0,1); lcd.print(" STAND CLEAR!"); Serial.println("IGNITION SEQUENCE ACTIVATED!"); for (int i=0; i <= 50; i++){ digitalwrite(ledpin, HIGH); delay (100); digitalwrite (ledpin,low); delay (100); } lcd.clear(); lcd.setcursor(0,0); lcd.print(" Rocket Dyno"); lcd.setcursor(1,1); lcd.print(" AQUIRING DATA"); digitalwrite(igniterpin, HIGH); Serial.print("Start time, ms: "); Serial.print (millis()); Serial.println(" "); Serial.println();

for (int i=0; i <= 800; i++){ //800 samples at 80sa/sec = 10 seconds theoretical scale.set_scale(calibration_factor); //Adjust to the calibration factor Serial.print(scale.get_units(), 1); Serial.println(); } Serial.println(); Serial.print("Stop Time, ms: "); Serial.print(millis()); digitalwrite (ledpin,low); digitalwrite (igniterpin,low); Serial.println(); } } Note the line highlighted in yellow: this is the calibration factor that the Arduino uses to convert the signal from the loadcell/hx711 into grams. This value varies widely, even for 2 apparently identical loadcells! You just have to place a known weight in grams on the loadcell and try some values until you zero in on the best value that reads your calibration weight in grams on the LCD. Loadcell/motor mount: This can be designed and built to suit; the general guidelines are, keep it light (no use in burning up dynamic range), and, importantly, nonflammable! Ours uses a thin sheet steel circular base (such as the cutout from a coffee can) bolted down to the loadcell, with a cemented motor tube with retaining clip attached to the center of the steel base. The motor tube is a half inch longer than the motor, with vent holes at the bottom so that on ejection, the motor moves forward against the retaining clip while ejection gases escape via the bottom vents. Fig.5 shows the loadcell with base:

Fig.5 Motor mount on loadcell When all systems are ready and connected and the Arduino is running the program, open the Arduino serial window on your laptop. Observe the LCD information. Push the momentary pushbutton. The yellow LED should start blinking, for 10 seconds. Then the red LED turns on and you should hear the relay click. Data should start streaming rapidly on the screen, and stop after 10 seconds. Relay clicks off. Take note of the start time and stop time on-screen. Subtract stop from start time to get delta T. Divide by 800 to get milliseconds per sample (should be around 11), useful for the chart X axis. Convert to samples per second (1/X) which should be between 80-90sa/sec. Copy only the weight data column, and paste into Excel. Make a line chart of this test run. If everything above went well, you re ready for a burn test! Make sure the area all around is free of anything flammable. Set up your laptop, with a 6 USB cable to the Arduino section, then the 4 cable to the HX711/loadcell section. Leave the 12V battery unconnected until the last step. Open the Arduino serial window. Check status. Insert motor into your loadcell/motor mount, and add igniter. Connect igniter to igniter leads (battery is still unconnected). Move back to the Arduino section, check status on LCD and LED s. If everything is go, then connect the 12V battery, and push the momentary button, move away from the area. When the run completes, as in the test, note the start and stop times and copy/paste the gram data into Excel. If desired, add a new column converted into Newtons (grams / 101.97 = Newtons). Generate an exact time scale from the stop start calculation. Following are results from 2 runs of (old) C6-5 motors:

Fig.6 Actual test data Fig.7 Closeup of burn section

Fig.8 2 nd run. Note lower peak thrust but higher sustained. Note oscillation. Fig.9 Closeup of burn time, test 2. Kind of a spooky looking peak thrust!

Fig.10 Anticipated thrust curve of a C6 motor; higher than what we found from old motors. Note that the test motors burned slightly longer. References: Github source of HX711 library: https://github.com/bogde/hx711 HX711 board: https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide http://www.aliexpress.com/item/for-arduino-dual-channel-hx711-weighing-pressure-sensor-24-bit- Precision-A-D-Module/32296409056.html Loadcell sources: www.aliexpress.com/ (search loadcell on the site) https://www.sparkfun.com/products/13329