A stage to measure horizontral thrust generated by rocket engine.
This is a project created by students in The Aviation Club of the Second High School Attached to Beijing Normal University.
推力台说明手册(中文版) | Chinese version
We use Arduino Mega 2560 and HX711 to record and store the magnitude of the thrust into the program, and graph the associated function (force @ time).
- 0-20kg measuring range (maximum value not to exceed 30kg)
- 30-50mm engine diameter fit
- 10Hz sample rate (#1 We really need your help to increase it)
- Real-time display
- Serial port writing
SD card data writing
Presure -> Sensors -> HX711 -> Arduino.
Pressure sensors generate a voltage by sensing pressure. Sensitive voltage value is 1mv, which means if I apply a force of 1kg
, it produces a voltage of 1mV
(for 0-10kg sensor).
HX711 will firstly amplify the voltage generated by the pressure sensor, since the voltage is too small. Then it will convert the analog signals (amplified voltage values) to digital signals (ad values).
After that, Arduino will get the digital signals (ad values). We then scale the digital signal to fit the pressure.
Based on Avia Semiconductor’s patented technology, HX711 is a precision 24-bit analog-to-digital converter (ADC) designed for weigh scales and industrial control applications to interface directly with a bridge sensor.
The input multiplexer selects either Channel A or B differential input to the low-noise programmable gain amplifier (PGA). Channel A can be programmed with a gain of 128 or 64, corresponding to a full-scale differential input voltage of ±20mV or ±40mV respectively, when a 5V supply is connected to AVDD analog power supply pin. Channel B has a fixed gain of 32. On-chip power supply regulator eliminates the need for an external supply regulator to provide analog power for the ADC and the sensor. Clock input is flexible. It can be from an external clock source, a crystal, or the on-chip oscillator that does not require any external component. On-chip power-on-reset circuitry simplifies digital interface initialization.
There is no programming needed for the internal registers. All controls to the HX711 are through the pins.
We are using the channel A (input voltage of ±20mV).
The HX711 communicates with the microcontroller in serial communication mode consisting of pins SCK and DOUT. When DOUT goes from high to low, SCK inputs 25 pulses at a time to read the 24-bit A/D conversion data into the microcontroller and selects the input channel and gain for the next conversion on the 25th clock pulse.
Based on the Solidworks 3D model, the framework can be built with the following items.
SolidWorks 2022, AutoCAD 2024 (DWG 2018)
Wire the Arduino board and components using DuPont wires according to the following table.
Item | Image | Reference link |
---|---|---|
HX711 chip + Pressure sensor | Link | |
TM1650 4-digit digital tube display module |
Arduino - HX711
Arduino Pin | HX711 Pin |
---|---|
5V | VCC |
GND | GND |
2 | SCK |
3 | DOUT |
HX711 - Pressure sensors
HX711 Pin | Sensors Wire |
---|---|
E+ | Red |
E- | Black |
A- | White |
A+ | Green |
Arduino - Micro SD Card Adapter
We just removed this component as its low writing speed.
Arduino Pin | HX711 Pin |
---|---|
5V | VCC |
GND | GND |
50 | MISO |
51 | MOSI |
52 | SCK |
53 | CS |
The communication between the microcontroller and the SD card uses SPI, which takes place on digital pins 11, 12, and 13 (on most Arduino boards) or 50, 51, and 52 (Arduino Mega). Additionally, another pin must be used to select the SD card. This can be the hardware SS pin - pin 10 (on most Arduino boards) or pin 53 (on the Mega) - or another pin specified in the call to SD.begin(). Note that even if you don't use the hardware SS pin, it must be left as an output or the SD library won't work.
--Arduino SD libarary
Download main.ino
and open it in Arduino IDE (Link).
Plug in your Arduino. Then, click the "upload" button.
Click Tools - Serial Monitor
to check the results.
Copy the results getting from the serial monitor, which are array of integers (e.g. 101, 123.4, 111, 114.5, 121, 514.5, ...
) to the third line of graph.py
.
originalData = [ Paste Data To Here ] # Notice: delete the last comma ',' !!!
Run the code, you will get a graph that is the associated function (force @ time).