速度を制御するための PWM モーター ドライバー用のファジー PID コントローラーを作成するようにコーディングしています。フィードバックは、モーター シャフトに固定されたホール効果エンコーダからの方形波です。
私のコードは、エンコーダからの方形波の 2 つの立ち上がりエッジ間のクロック立ち上がりエッジをカウントして、1 回転の時間を計算できます。コード内の関数は、特定の RPM を 1 回転に必要な時間に変換できます。これがコントローラーの設定値です。
エラーは明らかに設定値と現在の値の差です (1 回転の時間と現在の値)。
これはバック差分 PID 制御アルゴリズムに入り、出力として数値を取得します (基本的には P*エラー + I*(前のエラーの合計) + D (前の現在の速度))。
これは、PWM ドライバー プロセスが PWM 電力出力を増加または減少させるために、特定の PWM デューティ サイクル パーセンテージにマップする必要があります。
このマッピングには概念的な問題があります。出力数値をパーセンテージに変換するにはどうすればよいですか? 私は、最大可能誤差とゼロ誤差のこの値を計算し、これらをそれぞれ 100 と 1% のデューティ サイクルにマッピングする行で考えていました。
コードではなくコンセプトを探しています。ありがとう。