It's almost time to blow some stuff up.
With the control system and software up and running, the 3D-printed nozzles in hand, and the pneumatic system procured, I was ready to set up a static test firing stand and investigate performance of the nozzles. If all went well, I'd validate the nozzle design (was the math correct?) and find out whether I had spec'd out the solenoid valves correctly.
The task during these first test firings was to collect real-time data regarding jet force, gas pressure, and mass flow (the amount of gas being delivered). Although there are more "industrial" tools for collecting data, such as LabJack, I'd already obtained a nice collection of Arduino boards from development of the control system, so I thought it would be economical to use one of those. Arduinos have analog input pins that can be used to read sensor data. These pins can accept input voltages from 0 to 5V, so the transducers should be selected accordingly.
Pressure was the easy one. There are many potential vendors for electronic pressure transducers and most of them allow specification of input voltage, output signal voltage, and the range of pressures over which the transducer is sensitive. I settled on a TDH40-C-0250-03-Q00 from Transducers Direct. This little guy takes an input of 12-36V and 4-20mA, is sensitive to pressures between 0 and 250 PSI, and outputs a signal from 0-5V. It also has a 1/4"NPT threaded connection that will go right into the pressure manifold shown in the last post. Perfect.
Force turned out to be a bit trickier. After brainstorming a few ideas I decided to try and measure force directly using a force sensing resistor pad. These are small, polymer-based pads with some printed circuitry that delivers progressively less resistance as a mechanical load is applied. By using an appropriate voltage divider circuit, the Arduino will see 0-5V on its input pin depending on how much force the pad experiences. I bought a couple of these for the static test fire stand. They are sensitive to 0-20 newtons, which is well within our target range of 11 newtons of jet force.
The idea was to place a pad directly under the nozzle and fire the nozzle upward. The thrust should press the nozzle down onto the pad and we get a voltage reading at the Arduino. Sounds simple, but in practice accuracy is a problem. The main issue is that the pad resistance "drifts" over time with a constant load applied. A longer jet firing will give different readings than a short one, even if the force is identical. Another issue is that the pad must be calibrated with test weights every time something is moved around on the test stand. This is because the nozzles are attached to tubes that flex like springs and affect the force readings (recall Hooke's Law). If the tubes are moved around even slightly the effective spring force will change. After many iterations, I think I'm getting accuracy within +/- 15%, which is not good enough for setting parameters in the controls software, but probably good enough to make a rough assessment of the nozzle design.
Mass flow was the hardest one. I was not able to find an affordable mass flow sensor that could handle the pressure range and high flows anticipated. Pressure will be approximately 100 PSI. The nozzle math (for version 6) says we should expect flow in the range of 1061 liters/min (37.5 ft^3/min) at standard conditions. I did find some relatively inexpensive sensors - around $150 - that operate based off of heat transfer from a heater element directly exposed to the flow stream. One example is this one from Honeywell. However, like the other sensors I found, the Honeywell sensor does not come close to satisfying the pressure or flow rate requirements. There are more "industrial" solutions available but I didn't want to spend a thousand dollars or more on a sensor, especially when we likely can validate the nozzle designs with pressure and force data alone. For now I've left space on the test stand for a mass sensor but have not included one.
With sensors in hand, I wrote a program for an Arduino Mega 2560 to perform fire control, data collection, and logging to a micro SD card. I had an older generation Arduino WiFi shield - not the current WiFi 101 shield - that I picked up to start learning about wireless communication with the board. The older version has a built-in micro SD card slot that I set up for data logging. The program waits for the operator to push a button and then starts the fire test. The test sequence opens an incrementally-indexed file on the SD card for logging, performs a 5-second countdown with audio (buzzer) and visual (LED) cues, starts logging data for 1 second, fires the jet for 2 seconds, and logs data for 1 additional second after firing.
The next task was to set up the power supplies. The Arduino runs off of 5-12V DC, while the pressure transducer and Festo valves require 24V. The force pad takes a 5V input. To satisfy these differing requirements I set up three power buses on the test stand using standard prototyping breadboard sections. Quick, dirty, and effective.
The 9V bus is fed by a wall-plug power supply to ensure relatively steady voltage to the Arduino over hours of test runs - important, as the Arduino supplies 5V for the force pad directly from a pinout, and this voltage must remain constant to ensure consistent calibration. The 5V bus is fed by the Arduino pinout, and the force pad (along with the buzzer and LED) connects to the 5V bus.
The 24V bus is fed by two lithium-polymer (LiPo) battery packs in series, each with nominal 11.1V but reaching over 12V when fully charged - fully within the tolerance range of the valves and pressure transducer. Although I haven't yet computed the total power consumption budget for the HAPP, and can't until the final hardware has been selected, I bought these LiPo packs as potential flight hardware based on a rough guess.
The final preparatory task was to assemble a convenient mounting board for all of this gear. I used the top of an old children's table from Ikea similar to this one and painted it matte grey. With all the items appropriately mounted the completed static test fire rig looked like this:
Next post: Test fire results