こんにちは!
で前の部分、私は私のロケットが離陸に成功上陸し、もう1つはさえ高度計が設置していたという事実で停止しました。この記事では、STM32 NucleoL031K6とすべてのデータをフラッシュメモリに保存するBMP280圧力センサーに基づいて簡単な高度計を作成する方法を説明します。
鉄の選択
高度計の基本要件:
- ロケットがその頂点に長時間留まっていないため、高度の読み取り速度が高く、最大高度を知りたいと思いました。
- 大きなバッテリーを入れないように、低消費電力。
- 構造全体の小さな寸法。
それらに基づいて、私はSTM32 Nucleo L031K6をマイクロコンピューター(高速、低消費電流、小型)として採用しました。私はBMP280バロメーターを使用して高度を測定することにしました(MKと同じ理由)。また、押すと高さの記録を開始するボタンを追加しました。さて、すべての電子機器は、アダプターを介して接続されたCR2032バッテリーから電力を供給されていました。その結果、次のスキームが得られました。
使用したモジュール
STM32 Nucleo L031K6
BMP280
CR2032
STM32 Nucleo L031K6
BMP280
CR2032
コード開発
あなたは私のgithubでコードを見つけることができます。STM32ピンは、CubeMX forIARで構成されています。BMP280を使用するために、このライブラリを使用し、気圧式を使用して海抜高さを計算し、周波数の読み取りやフィルタリングなどに必要なパラメータを使用してセンサーを初期化する機能を追加しました。地面に対する飛行高度を測定したかったので、最初に自分の地域の海抜高度を計算し、それを「ゼロ」と見なして、それに対する飛行高度を測定する必要がありました。測定周波数は10Hzでした。
フラッシュメモリへの書き込みは次のように行われました。
STM32L031K6のメモリ構成
- すべての測定で、0x08006000から0x08007FFFアドレスに8KBを割り当てました。
- 1つの次元に2バイトを割り当てます
- Flashに4バイト、つまり一度に2つの測定値を書き留めました
- 測定の最大数-4096、これは約7分の飛行を記録するのに十分でした
- 精度を高めるために記録された高さ(センチメートル)
そして、録音は次のように行われました:
- 書き込みイテレーターが偶数の場合、単語の下半分の現在の高さを、Flashに書き込むためのデータとともに変数に格納します。
- 書き込みイテレーターが奇数の場合は、単語の上半分の現在の高さを、フラッシュに書き込むためのデータを含む変数に追加し、この変数をフラッシュセルに保存します。
その結果、プログラムのアルゴリズムは次のようになります。
- 電源を入れた後、5秒間ボタンを押して高度測定を開始します。
- ボタンが押されなかった場合は、内蔵LEDを点灯し、フラッシュメモリに記録された高度データをUART経由で送信します。
- , .
- «» Flash- .
- UART , ;
- .
STMがピン3.3Vを介してCR2032から電力を供給されたとき、コードが機能しないことがわかりました。問題は、このレッグを介して電力が供給されたときに、SB9 (MKの背面のRXピンとTXピンの隣にあります)のはんだを外す必要があることでした 。そうしないと、ボードが常に再起動します。
ここで、高度計の精度をチェックする必要がありました。テープで測定し、高度計をさまざまな高さに上げて、測定値を確認し始めました。テスト結果は、githubの対応するフォルダーにあります。テキストファイルにはSTMからの生データが含まれ、Excelテーブルにはすべてのテストの美しいグラフが含まれています。精度は記載されている-±10cmに対応しました。高さをセンチメートルで測定したことを覚えておく必要がありますそのため、表の数値は非常に大きくなっています。
高度計の組み立て
ロケットは着陸時に地面に強くぶつかる可能性があるため、すべての電子機器をしっかりと固定して、配線、さらに悪いことにモジュール自体が揺れたときに脱落しないようにする必要がありました。高度計は、3Dプリントマウントのヘッドフェアリングに配置されました(十分なスペースがあり、重心がヘッドフェアリングに移動することで安定性が向上しました)。 STM'kaは垂直に立ち、BMP280は接点を上にして、マウントの下にCR2032用のアダプターを接着しました。ロケット本体に収まらないため、マイナス接点を少し削る必要がありました。 3Dプリントマウントの側壁の接点の横に、CR2032からマイナスを伸ばすために垂直の溝を作り、プラスの下に穴を開けてワイヤーを通しました。セルフタッピングスクリューを使用して高度計をヘッドフェアリングに取り付けることを考えたので、ケースに穴があります。しかしその後、彼はこの考えを放棄しました。
3Dプリントマウントモデル
組み立てられた高度計ブロック
BMP280の横にあるボタンを接着し、残りのモジュールを所定の位置に取り付け、すべてのワイヤーをはんだ付けし、
高度計はロケットフェアリングにしっかりと挿入されました。衝撃後どこにも飛ばないように、マウントの穴からラバーバンドを引っ張ってロケット本体とフェアリングをつなぎました。
組み立てられた高度計。正面
図背面図。高度計とロケットをつなぐゴムバンドが見えます。
高度計の準備が整いました!今、私はそれをテストしなければなりませんでした、それは私が再び訓練場に行ったことを意味します!
Altimeterの起動と測定結果
残念ながら、最初のスタートは、前回の記事で書いたエンジンの故障でした。
その結果、グラフは次のようになりました。
水平-測定数。 10回の測定ごと-1秒。垂直-センチメートル
単位の高さロケットは15m離陸し、地面に突入しました。アポジを通過した後、1秒後、ある種の異常が始まりました。12mの値の後、何らかの理由で、測定値は-8mに低下しました。これは、エンジンの2回目の始動時に発生しました(発生してはならない)。、だから私は故障したエンジンが何らかの形で高度計に影響を与えたことを排除しません。他のすべてのテストでは正常に機能したため、これは明らかに電子機器の問題ではありませんでした。飛行の後半に異常が発生したため、一般に、高度計のこれらのテストは半分しか成功しませんでした。グラフ自体はgithubにあり、rocket_flight_fall_testと呼ばれます。
ロケットを修理した後、再びテストサイトに行き、今回はテストに成功しました。飛行は素晴らしく、高度計の測定値は安定しており、飛行と一致していました。フライトスケジュールは次のようになりました:
水平-測定番号。 10回の測定ごと-1秒。垂直-センチメートル単位の高さ
ロケットは150m上昇し、着陸に成功しました。したがって、このテストは完全に成功しました。高度計が機能していることを確認し、新しい車載機器の開発を開始しました。
結論
結局、小さなロケットモデルに収まるコンパクトな高度計を完全に組み立てました。テストは成功し、電子機器は離陸と着陸を乗り切り、飛行高度を測定しました。ここで高度計の開発プロジェクトを終了しました。飛行高度を知ることは非常に役立つ場合があるため(たとえば、最大または特定の高度に到達するためにロケットを発射する場合)、将来的にはロケットの1つで使用する予定です。今、私が言ったように、私はそのような深刻な電子機器でロケットを失うつもりはないので、無線送信機を備えたオンボードカメラを開発しています。
清聴ありがとうございました!