の内容に続きます。
まず、車は、ここではその簡単にはいくつかに言及し、個々のモジュール構成および初期化機能に必要とされます。
GPIOモータエンコーダはGPIO_Mode_IN_FLOATING(フローティング入力)モードに構成され、周波数と、タイマはエンコーダのそれぞれに変更された電気エンコーダの出力周波数を算出するように構成され、
エンコーダモードに設定されている:
TIM_EncoderInterfaceConfig(TIM3、TIM_EncoderMode_TI12 、TIM_ICPolarity_Rising、TIM_ICPolarity_Rising)。
ファイル名を指定して実行をバランス車体は、主に自動車のタイミングを明確にするために、ここでの割り込みで行われ、壊れMPU6050またはタイマーで設定することができ、5msごとの打ち上げ割り込み、2回のモータエンコーダの中断を読みますロール用解く車に対して(gyroy、(y軸は車に対する角度)、速度値を算出し、データ取得MPU6050直接(フィルタリングまたは相補的フィルタリングを用いて、又はカルマン)DMPを使用してパッケージMPU6050定時原子ファイルを移植することができますY軸加速度)、gyroz(z軸に対して車加速度)。
これらのデータは、それを取得する能力を持っている車の自身の状態で計算した後、直立リングに再導入することができます速度ループとステアリングリングに来ます。
PWM_OUT = Vertical_Out(スタンディングリング)-Velocity_Out(速度ループ)。
モータ1 = PWM_OUT-Turn_Out; //左輪モータ出力値
モータ2 = PWM_OUT + Turn_Out; //右輪モータ出力値
その後、割り込み出力は、最高の優先順位でなければならない計算されたクルマのバランスを維持するために、優先度の割り込み車を設定し、それはクルマのバランスに影響を与えたことを確認するために他の割り込みによって中断されることはありません。
モーターカーの限界の出力であることがあり、最大数はセットPWM、限り自動車出力の最大値の制限です。
プラスの詳細のいくつかがダウンして発生しました。
1、書かれたプログラムは、パワード車が応答しませんでしたか?
考えられる理由はそれである、動力車は、MPU6050は車が応答しないように実行されませんMPU6050初期化プログラムにつながった、準備ができていないことがあります。
解決策:
車の初期化の前に、ほとんどの100msの第1の遅延は、にMPU6050の準備ができて待つことができ、それを再初期化します。
過度の速度ループ制御のために2、車は問題が直立起こすことができませんか?
実際には、理由は直立リング用スピードリングの抑制効果であるが、実際には、常に私たちの目的は、我々は速度制御ループの影響を低減する前提の下で車の安定を維持できるようにする必要があります車を、直立することにあります。
ソリューション:
車の安定を作るために、車の速度ループKpのを減らすために、適切なのKiサイズ、常にではない可能性が。したがって、方法があり、10倍立っリングに設けられていてもよい、おそらくについて、速度ループ制御期間を調節することです。各制御立っリング10時間、速度制御ループの出力をもう一度。
クルマのバランスは最も困難な移植MPU6050ファイルとPIDパラメータで調整します。
MPU6050移植は、を参照することができます:
チューニングPIDパラメータは、その後も何のスキルは、注意トーン極性の最初のテストの前に、正と負の、そして残りを決定した後は、忍耐、それに依存していません!
ああ、あなたは最初に多くの人が、さらに考えているように、と考えています。偉大な神は、展示をしてください!
そして、図に一度:
次の章では、車の内部にどのようにモータ出力値に数値制御のBluetoothを導入する方が簡単です、Bluetooth制御です。
その後、私は公共のマイクロチャンネル番号を共有するために私のプログラムでは、プロジェクト全体を置く、あなたがダウンロードすることができたときにする必要があります。気になる方は、私には私の公共のマイクロチャンネル番号上のマイクロチャネル接触私を追加することができた場合は、私が直接共有することができます。
読者はそれが私の公共のを見ることができるように、参考にしたい、私は上記の中で作られたノートを勉強します、私たちは一緒に学ぶことができるようになります!