Analyze drop-tower accelerometer "tuning" data (issue #71)#74
Conversation
|
@copilot send to edison analysis (upload the files per your custom instructions) for feedback. Fetch next session. |
Sent to Edison as a non-blocking
I'll fetch the result and commit the artifacts next session. |
|
@copilot fetch, commit all artifacts, implement feedback if applicable, and report back. |
Fetched the Edison review (ANALYSIS task Committed artifacts in The review found two substantive errors in the original analysis, both now fixed:
Also: CH1's ~8806 G ceiling is analog saturation (smooth ~180 µs compression), not a digital clip → recommend a higher full‑scale (~20,000 G) sensor; and the residual ~250 µs lag + CH1's large late oscillation confirm the sensors are at different mechanical locations, not merely mis‑scaled (so this dataset still can't cross‑calibrate them — a co‑located back‑to‑back run is needed). Updated |
|
These are the results of the first seven drop tower tests for calibrating accelerometers. 500G_Signal5.csv 1000G_Signal6.csv |
|
@ctrhjk thank you! Do you have videos for these? Were these all tests where you had both accelerometers attached directly to the bottom acrylic plate? (per #71 (comment)) @copilot assume yes for the above comment, i.e., that #71 (comment) was the test method for the data in #74 (comment) and analyze this data and report back to us @ctrhjk could you have a look at the analysis from copilot when it completes? |
|
@sgbaird The accelerometers were on the same level, about 1/4 inch away from each other. I don't have a video of the experiments. |
Analyzed @ctrhjk's new 06/08/2026 series (assuming, per your note, that both accelerometers were mounted directly on the bottom acrylic plate — the co-located setup we recommended). Script It really is co-located + time-aligned → finally cross-calibratable. CH1 (single-axis) and CH4 (tri-axis Z) rise and fall together, peaking within one sample (8 µs) at ~4.26 ms in all seven drops. Headline: the single-axis reads ~30× the tri-axis. Zero-intercept fit over the seven drops: CH1 = 30.8 (±0.3) × CH4 on the CFC-180 impact pulse, per-drop ratio 30.8 ± 0.8 (SD) — repeatable to ~3%. For two rigidly co-located sensors the low-frequency rigid-body accel must be identical, so a steady ~30× is not a real acceleration difference — it's a scale/coupling problem. Two things drive it, and both need fixing before the slope means anything:
Next steps: (a) verify both sensors' mV/G against their cal sheets and the TP4 entries first; (b) mount both on a stiff metal block (not acrylic), stud-mounted, to kill the single-axis ringing; (c) keep drops below CH1's full scale and sweep the amplitude (all seven here are ~the same level, so the slope rests on one operating point); (d) keep the CFC-filtered, impact-windowed, zero-intercept comparison. So the 30.8× is the measured number but not yet a trustworthy correction until the clipping/mount issues are removed. @ctrhjk — could you confirm the channel↔sensor mapping and that both were on the bottom plate, and have a look at the writeup? Videos would also help pin down what the single-axis mount is doing. |
trim.5D6C6BFA-39AE-4D2F-BA25-34C35A12C255.MOVtrim.16CC3A21-EA08-48D2-A3F3-FEBF63996511.MOVtrim.78F8CBE4-3ADC-445D-A166-A05E715B4DC4.MOVtrim.7B05FA8A-363B-4499-877A-FF73706F569C.MOVtrim.46CF1FF8-AA79-4FE6-8A1B-8BF34350ED77.MOV
trim.AEA50312-C02D-44E1-AAA7-DC4086CA297E.MOVtrim.7D72B342-1D16-4A70-8309-665985CE399E.MOVtrim.8A65870D-0BAE-4936-873D-7FA6D7E5FC88.MOVtrim.FB66335B-E260-4F3F-AE2A-A8C61544E176.MOVtrim.5832B80C-6AE3-4C84-BDA8-F00610BE2003.MOV
trim.857B7905-E8C5-492E-8307-00808899985A.MOVtrim.FC7DCDAF-1E5A-4600-B661-F663AC9B3A45.MOVtrim.DB8854ED-59F3-49EF-A5F9-3D09DECC56CF.MOVtrim.3518FDEE-F487-4D39-BB6B-BE041DC92431.MOVtrim.F1FF92C6-A6E0-4EED-A042-B416B15923B8.MOV |
|
@ctrhjk very thorough. Thank you! |
Analyzed @ctrhjk's 06/09/2026 "Accelerometer Callibartion 2" series (15 CSVs: 10/15/20 in × 5; 5 in didn't trigger). New script The ~30× is gone — it was the single-axis sensitivity entry. The only thing that changed is the certificate sensitivities (CH1 0.25 → 11.61 mV/G, a 46× correction), and the gross single-vs-tri factor collapses immediately. So the earlier 30.8× was a wrong mV/G entry, exactly the first thing to check — and the measured 30.8× was itself a clip-limited lower bound on the true ~46× (CH1 was also railing at +20.5 kG on 06/08). Good catch confirming it against the cal sheet. It's co-located and time-aligned — CH1 and CH4 peak at the same ~3.98 ms in all 15 drops, off-axis CH2/CH3 stay small. But CH1's full scale is now far too low (430.7 G), so it hard-clips on every drop. Re-entering the high 11.61 mV/G on a 5 V range gives CH1 only 5 V / 11.61 mV/G = 430.7 G full scale, so the impact rails it flat at a ~445 G digital plateau for ~300 µs and then rings to ~−500 G, while CH4 (6812 G range) is clean. The height sweep gives a clean lever arm — on CH4 only. CH4 CFC-180 impact peak scales repeatably (10 in 348.3±2.5 → 15 in 427.1±0.7 → 20 in 498.8±4.0 G) while CH1 stays pinned at the rail: A zero-intercept fit gives CH1 ≈ 0.52 × CH4, but that's not a trustworthy factor — CH1 is clipped on every point, so its "peak" is a saturated/ringing artifact, not the real impact. Recommendation: the sensitivity fix solved the original disagreement; the only remaining blocker is the CH1 input range. Bump CH1's voltage range (raise its full scale to ≥ ~1000 G for these 10–20 in drops) so it stops clipping, then redo the CFC-filtered, impact-windowed, zero-intercept CH1-vs-CH4 regression over the same sweep — with both unclipped and co-located on the metal load it should land near 1:1 and give the final slope ± SE. (Mapping CH1 = single-axis, CH2–CH4 = tri-axis X/Y/Z and the bare-metal mounting follow your description, @ctrhjk.) |
@copilot how to do this with that specific software, and what exactly to change? Noting that I think you also might have a manual PDF committed somewhere across the many issue and PR comments in this repository @ctrhjk do you know what copilot is talking about? |
The software is Lansmont TestPartner 4 (the exports' header path is What to change (and why): In TP4 every channel has the four fields you already listed — Volts Range, Sensitivity (mV/G), Full‑scale (G), Trigger level (G) — and they're linked by CH1 is clipping purely because of Volts Range, not sensitivity. Right now CH1 is
Important caveat — 10 V may not be enough, and here's the limit. 861 G covers the CFC‑180 rigid‑body impact at all three heights with headroom (CH4 is 348→427→499 G at 10/15/20 in), so the cross‑calibration regression becomes usable. But the raw (unfiltered) shock on the co‑located CH4 reaches ~1600 G at 10 in and ~2800 G at 20 in ( So there are really two levers:
@ctrhjk — does the TP4 channel‑setup dialog let you pick 10 V for CH1 (since CH2–CH4 ran at 10 V before)? And do you have a spare single‑axis head with a lower mV/G rating? Either would let us close this out. |
Record time is 200msec, Sample size 25000, Frequency 125 KHz, Signal Pre Trigger 2%-4msec In this experiment, the trigger resource is only Ch4 because our goal is ch4 - ch5 calibration. The single accelerometer Ch5 is calibrated. I replaced the voltage range for all channels with a 10V range.
Accelerometers couldn't measure the drop impact.
trim.B04577D5-AED1-4168-8F0C-2D70EFC41D86.MOVtrim.8C1DEE56-61F7-4A8F-974E-6AA7D44E67B2.MOVtrim.BF4164D8-A9C0-4B1D-858B-1BA38EF21D2E.MOVtrim.BD7E1C88-AFF6-4289-88A3-FA5397C72623.MOVtrim.1309DE99-D6AD-4346-9BBF-00A938808AE0.MOV
trim.7FDA4B4B-8789-4291-8FD0-86E266AC8132.MOVtrim.1F024FA6-9A46-43A3-81E8-EBBE10DB3F4D.MOVtrim.A9C03862-C697-4712-88FC-D46B764F370E.MOVtrim.0E87AD98-114E-4FE1-ADF7-AF053386B3AB.MOVtrim.AA1B459B-6A30-41CF-9A34-E75426349357.MOV
trim.C31C3CAA-076A-463F-B261-0A2D6DD0D9AA.MOVtrim.D8D19572-6BDD-49C4-B7C1-80615100B321.MOVtrim.D15F7D08-1C63-4B86-82D8-67E93A3E89AA.MOVtrim.B617DD04-5130-4565-B2FF-A1227232F2E1.MOVtrim.D044B36B-4752-4A3E-8A73-82A233075B36.MOV |
|
|
Analyzed @ctrhjk's 06/10/2026 "AC3" 5-channel series (15 CSVs: 10/15/20 in × 5; 5 in didn't trigger). New script The cross-calibration finally closes — and it's near 1:1. Adding the low-sensitivity CH5 single-axis (1.059 mV/G → 9442.9 G range) gives an unclipped single-axis to compare against CH4. Zero-intercept fit over all 15 drops:
So the single-axis reads ~95% of the tri-axis Z impact peak. Both are unclipped and co-located (CH4/CH5 peak within one 8 µs sample), so this is a trustworthy number — the residual ~5% is consistent with the ~1/4 in spacing, not a scale error. Why CH1 clips (your other question): it's the 861 G range, not the mount. CH1 and CH5 are both single-axis and co-located, so CH5 shows what CH1 would read with enough range. The raw transient is ~1500 G (10 in) → ~2800 G (20 in), captured cleanly on CH5 but far above CH1's 861 G full scale — so CH1 rails flat at ~+810 G through the impact then rings to ~−900 G, clipping on 14/15 drops (CH5: 0/15): Because CH1 is railed, its CH1-vs-CH4 fit (~0.74×, sign even flips between drops) is not usable. The amplitude sweep shows CH4 and CH5 scaling together with height while CH1 stays rail-corrupted:
Bottom line / recommendation: this run answers the original issue. With the properly-ranged CH5 the single-axis vs tri-axis Z factor is 0.953 (±0.001), within ~5% of 1:1 — the earlier ~30×/~46× disagreements were the CH1 sensitivity entry and the residual clipping was purely CH1's range. Going forward, use CH5 (the 1.059 mV/G single-axis) as the working single-axis; the 11.61 mV/G CH1 unit is intrinsically mis-ranged for these multi-thousand-G drops (its 861 G full scale can't be raised further — 10 V is already the top range), so reserve it for sub-~800 G work only. (Mapping CH1, CH5 = single-axis; CH2–CH4 = tri-axis X/Y/Z, bare-metal co-located mount, and CH1/CH2–CH4 unmoved since 06/09 all follow your description, @ctrhjk.) |
|
Bottom line seems to be that we swap accelerometers? |
Feedback in light of #67 The headline is that this PR (#74) closes the calibration loop that #67 depends on. #67 standardizes on the low‑sensitivity single‑axis on CH5 (1.059 mV/G → 9442.9 G FS) as the go‑forward sensor; #74's five‑channel series now shows that sensor reads almost exactly the tri‑axis Z reference:
So three concrete things for the SOP:
3‑axis accelerometer dimensions I couldn't find them. I searched issues #71 and #36 and PRs #67/#74 plus the committed docs: the only sensor specs on record are per‑channel sensitivity + full‑scale (the cal‑cert values you posted in #74 — tri‑axis 0.690 / 0.667 / 0.734 mV/G; single‑axis 11.61 and 1.059 mV/G). The #71 "figure out the models/part numbers" ask was answered with signal plots, not the certificate, and there's no sensor datasheet PDF committed in the repo. So the tri‑axis model/part number (and therefore its footprint/mass) hasn't actually been shared in text or in a readable image. @ctrhjk / @me-madsen — could you post the tri‑axis accelerometer's model/part number or its calibration‑certificate PDF? With the part number I can pull the exact footprint and mass from the datasheet rather than guess. |
|
@sgbaird Manufacturer: Dytran instruments, inc. The dimensions below were measured using a caliper |










The single-axis and tri-axis accelerometers on the bungee-assisted drop tower report different accelerations. This adds a reproducible analysis of the 06/02/2026 TP4 series (table export + 13 time-domain events, 4 channels @ 125 kHz) to explain why, and what to fix. The analysis was reviewed independently by Edison Scientific, and its feedback (impact-windowed peak detection; corrected CH4 interpretation) is folded in. It also adds a follow-up analysis of a second, co-located TP4 calibration series (06/08/2026), a third corrected-sensitivity, metal-mount, height-sweep series (06/09/2026), and a fourth five-channel series (06/10/2026) that adds a properly-ranged single-axis on CH5 and finally closes out the cross-calibration — all posted later in the thread.
Changes
scripts/analysis/accelerometer_tuning_analysis.py— parses TP4 time-domain exports, applies SAE J211 CFC-180/CFC-1000 phaseless filtering, and emits per-event time-series, PSD, a CH1 saturation plot, a CH1-vs-CH4 peak bar chart, a CH1-vs-CH4 impact alignment plot, andpeak_summary.csv. Filtered peaks are searched inside a ±1 ms window around the CH4 impact (located in the first ~10 ms), not over the whole 0.2 s record.data/drop-tests/accelerometer-tuning/— the 14 source CSVs underraw/, derivedpeak_summary.csv(now including impact time and impact-windowed peaks), and a README documenting format + inferred channel mapping (CH1 = single-axis; CH2–CH4 = tri-axis X/Y/Z).docs/accelerometer-tuning-analysis.md+docs/figures/accelerometer-tuning/— findings and troubleshooting.scripts/edison/submit_accelerometer_tuning.py+edison-trajectories/accelerometer-tuning/— bundles the dataset, analysis script, findings, and figures into one collection, uploads it, and submits an EdisonANALYSIStask for independent feedback. Task015f36e1-0a1c-4aed-a9a3-1d1924983c4a(status: success) has been fetched and committed: the reviewer's answer (.md), full response (.json), notebook (.ipynb), and corrected peak table + alignment figure underreviewer-artifacts/.scripts/analysis/accelerometer_calibration_analysis.py+data/drop-tests/accelerometer-calibration/+docs/accelerometer-calibration-analysis.md+docs/figures/accelerometer-calibration/— analysis of the co-located 06/08/2026 "Accelerometer callibaration" series (8 TP4 CSVs:500G_Signal5aborted + seven 1000 G drops), where both sensors are on the bottom acrylic plate and the known settings are CH1 = single-axis 20 kG/0.25 mV/G and CH2–CH4 = tri-axis 10 kG/1.0 mV/G. Reuses the CFC-180/CFC-1000 + impact-windowing machinery, runs a zero-intercept CH1-vs-CH4 cross-calibration, flags CH1 full-scale clipping, and emits a co-located overlay, a regression plot, a clipping zoom, a repeatability plot, andcalibration_summary.csv.scripts/analysis/accelerometer_calibration2_analysis.py+data/drop-tests/accelerometer-calibration-2/+docs/accelerometer-calibration2-analysis.md+docs/figures/accelerometer-calibration-2/— analysis of the third 06/09/2026 "Accelerometer Callibartion 2" series (15 TP4 CSVs: 10/15/20 in drop heights × 5 reps; 5 in didn't trigger). Here the per-channel sensitivities were re-entered from the calibration certificates (CH1 0.25 → 11.61 mV/G; CH2 1.0 → 0.690; CH3 → 0.667; CH4 → 0.734 mV/G) and both sensors were moved off the acrylic plates onto the bare metal load, ~1/4 in apart. Reuses the CFC-180/CFC-1000 + impact-windowing machinery, tracks the per-height amplitude sweep, runs a zero-intercept CH1-vs-CH4 fit, flags CH1 full-scale clipping, and emits an overlay, a clipping zoom, an amplitude-sweep plot, a regression plot, andcalibration_summary.csv.scripts/analysis/accelerometer_calibration3_analysis.py+data/drop-tests/accelerometer-calibration-3/+docs/accelerometer-calibration3-analysis.md+docs/figures/accelerometer-calibration-3/— analysis of the fourth 06/10/2026 "AC3" series (15 five-channel TP4 CSVs: 10/15/20 in × 5 reps; 5 in didn't trigger). A second, much lower-sensitivity single-axis accelerometer was added on CH5 (1.059 mV/G → 9442.9 G range), placed on the very left; CH1 and CH2–CH4 were unmoved and all channels were moved to the 10 V range, with CH4 the only trigger source. The script adds a 5-channel TP4 loader (reusing the CFC-180/CFC-1000 + impact-windowing machinery, CH4 still the impact axis), runs a primary zero-intercept CH5-vs-CH4 cross-calibration plus a clip-limited CH1-vs-CH4 fit, tracks the per-height amplitude sweep, records the CH4↔CH5 peak-time lag, flags per-channel clipping, and emits a CH4-vs-CH5 overlay, a CH1-vs-CH5 clipping comparison, an amplitude-sweep plot, a regression plot, andcalibration_summary.csv.Findings (06/02/2026 tuning series)
Findings (06/08/2026 co-located calibration series)
Findings (06/09/2026 corrected-sensitivity, metal-mount series)
Findings (06/10/2026 five-channel CH4-vs-CH5 series)
Recommendations
Step up the single-axis to a higher full-scale (~20,000 G) sensor to stop saturation and verify each sensor's mV/G in TP4; run a back-to-back co-location calibration with repeatable sub-saturation drops (regress CH1 vs CH4 with zero intercept, report slope ± SE); compare CFC-filtered, impact-windowed peaks only; address mount resonance; and label sensor/position/orientation per run. Note: the ~4.2 ms CH4 peak is the impact and should be kept, not gated out. For the co-located series specifically: check both sensors' mV/G against their calibration certificates first, mount both on a stiff metal block (not the compliant acrylic plate), keep drops below CH1's full scale, and sweep the impact amplitude so the regression has a real lever arm. For the corrected-sensitivity 06/09 series: the sensitivity fix solved the original disagreement, so the only remaining blocker is the CH1 input range — raise CH1's voltage range (full scale ≥ ~1000 G for these 10–20 in drops) so it stops clipping, then redo the CFC-filtered, impact-windowed, zero-intercept CH1-vs-CH4 regression over the existing height sweep; with both unclipped and co-located on the metal load it should land near 1:1. The 06/10 five-channel series confirms this: the properly-ranged CH5 single-axis lands at 0.953 (±0.001) × CH4, so going forward use CH5 (the 1.059 mV/G single-axis) as the working single-axis — its 9442.9 G range covers the raw drop-tower transient, whereas the 11.61 mV/G CH1 unit is intrinsically mis-ranged (861 G full scale can't be raised further, since 10 V is already the top range) and should be reserved for sub-~800 G work only.
> Note: the channel→sensor mapping is inferred from the data. The "both sensors on the bottom acrylic plate" assumption applies only to the 06/08 series; @ctrhjk later clarified that the 06/09 and 06/10 series had the acrylic plates removed with both sensors on the bare metal load (CH1/CH2–CH4 unmoved between 06/09 and 06/10, with CH5 added on the very left).