[水中推進制御】STM32でESCをPWM制御するには?
投稿者 :Fengyukun on
多くの研究者は、多くの情報を見つけるために、インターネット内のプロペラの動作を制御するためにマイコンを使用したいが、それらの多くは非常に明確に書かれていないことがわかった、APISQUEENはおおまかに解決する方法を記録した。
私はあなたがコメント欄であなたの経験を共有することができ、より多くの人々を助けることができることを願っています。
購入したESCは違うかもしれませんが、全体的な制御の考え方は同じなので、この記事を読んで目的を達成できると信じています。
パルス幅変調信号
(1)PWM波制御(一般的なESCは50Hz、つまり20msのPWM波制御を採用しています;)
(2) 中間停止(ここでは一般的にデューティサイクルの高いレベルを指す)1.5ms、実際には1.475msから1.525msの間が中間停止から外れている;
(3) 制御範囲1msから2ms;
(4) 正転1.5ms~2ms、逆転1.5ms~1ms。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/IMG_6938_1024x1024.jpg?v=1680446118)
これはArduinoベースのものです:
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/1_d837e8fc-af7c-4f78-b045-b78eaac26984_1024x1024.png?v=1700404633)
注意:ESCを使用する前にロックを解除する必要があります! ESCは電源投入時に3回ビープ音が鳴り、ロック解除に成功すると2回、合計5回ビープ音が鳴ります。 ESCのロック解除に成功しなければ、ESCを制御に使用することはできません。したがって、上記のコードを参照すると、ESCのロック解除方法は、ESCを初期化してニュートラル信号に設定し、速度制御を開始する前に受信する信号(ビープ音2回)を待つことであると結論づけることができます。
制御とデバッグ方法
開発ボードはSTM32F7を使用し、プログラミングとデバッグにはHALライブラリを使用していますが、実際にはタイマー出力のPWM波を使用しています。 しかし、注意しなければならないことがたくさんあり、多くの詳細が明確でないため、本当に時間と労力が遅れ、デバッグの経験のこの側面は、いくつかの単語を言うために。
まず第一に、タイマーでPWM波を構成するとき、あなたのロック解除信号として初期化しないように注意してください、彼にランダムな値を与えるか、またはESCはタイマーとPWMの後にのみロック解除され、初期化されるので、どちらかを構成しない、例えば、私のこの、1.5ミリ秒の中央停止信号は、そのロック解除信号であり、その後、最初からPWMに設定することはできません 1.5ミリ秒である、またはそれ以外の場合 ESCは、3回ビープ音が鳴った後、電源を入れただけで、パドルは回転しません。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/2_999889c3-f8bf-49e2-b259-8b6f28c5f4d4_1024x1024.png?v=1700405813)
第二に、遅延の使用に注意を払う、最初は私は遅延を使用しなかった、その結果、ESCはビープ音だけで、応答がないことであり、その後、オシロスコープを使用してPWM波形を観察することは、PWMの私の初期化であることがわかった直接点滅し、あなたはESCが信号をアンロックする時間を受信するために与える必要がありますが、この時間はまた、時間に注意を払うことです、最初は私はdelay_us()を使用して構成されていた、問題 が解決できず、delay_ms(1000)に変更、つまり時間を1sに設定したが、まだ問題があり、再度時間を調整した後、ようやくビープ音が2回聞こえ、モーターが回転し始めた。 となると、このアンロック信号の受信時間をどう使いこなすかが非常に重要になる。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/3_be4764a4-bb57-414f-9f93-924ddd6912ce_1024x1024.png?v=1700405945)
また、プロセスの使用でもオシロスコープを使用することを学ぶことに注意を払う必要があり、信号の独自の設定は問題ではありませんがチェックし、以下は1.5ミリ秒のデューティサイクル、20ミリ秒の周期、振幅3.3VのPWM波の私の初期化の始まりです。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/4_b4a49b67-d667-400c-bc59-7a2b80bb3482_1024x1024.png?v=1700406022)
まとめると、プロセス全体に注意が必要です:
(1)ESCは一般的に50Hzで周波数を制御しており、制御範囲はもちろん状況にもよるが、おおよそ1msから2msの間である。
(2) 電源を入れた後、ESCは3回鳴ります。ロック解除に成功すると、ESCは2回鳴りますが、ESCが1回しか鳴らない場合は、ESCが設定した信号を受信しているにもかかわらず、ロック解除に成功していない可能性がありますので、ロック解除コードに誤りがないか再確認してください。 ESCから音が出ない場合は、ESCが信号を全く受信していないことを意味しますので、配線とコードをよく確認してください。
(3) ESC がアンロック信号を受信するまでに一定の時間を与えるディレイ機能に注意してください。
(4) 接地に注意し、ESCの信号線を制御ボードの信号出力ポートに接続し、信号線の接地を制御ボードのGNDに接続する。
(5) オシロスコープの使い方を覚えて、設定した信号をチェックする。
(6) 間違った配線を接続しないこと!
私はあなたがコメント欄であなたの経験を共有することができ、より多くの人々を助けることができることを願っています。
購入したESCは違うかもしれませんが、全体的な制御の考え方は同じなので、この記事を読んで目的を達成できると信じています。
パルス幅変調信号
(1)PWM波制御(一般的なESCは50Hz、つまり20msのPWM波制御を採用しています;)
(2) 中間停止(ここでは一般的にデューティサイクルの高いレベルを指す)1.5ms、実際には1.475msから1.525msの間が中間停止から外れている;
(3) 制御範囲1msから2ms;
(4) 正転1.5ms~2ms、逆転1.5ms~1ms。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/IMG_6938_1024x1024.jpg?v=1680446118)
これはArduinoベースのものです:
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/1_d837e8fc-af7c-4f78-b045-b78eaac26984_1024x1024.png?v=1700404633)
注意:ESCを使用する前にロックを解除する必要があります! ESCは電源投入時に3回ビープ音が鳴り、ロック解除に成功すると2回、合計5回ビープ音が鳴ります。 ESCのロック解除に成功しなければ、ESCを制御に使用することはできません。したがって、上記のコードを参照すると、ESCのロック解除方法は、ESCを初期化してニュートラル信号に設定し、速度制御を開始する前に受信する信号(ビープ音2回)を待つことであると結論づけることができます。
制御とデバッグ方法
開発ボードはSTM32F7を使用し、プログラミングとデバッグにはHALライブラリを使用していますが、実際にはタイマー出力のPWM波を使用しています。 しかし、注意しなければならないことがたくさんあり、多くの詳細が明確でないため、本当に時間と労力が遅れ、デバッグの経験のこの側面は、いくつかの単語を言うために。
まず第一に、タイマーでPWM波を構成するとき、あなたのロック解除信号として初期化しないように注意してください、彼にランダムな値を与えるか、またはESCはタイマーとPWMの後にのみロック解除され、初期化されるので、どちらかを構成しない、例えば、私のこの、1.5ミリ秒の中央停止信号は、そのロック解除信号であり、その後、最初からPWMに設定することはできません 1.5ミリ秒である、またはそれ以外の場合 ESCは、3回ビープ音が鳴った後、電源を入れただけで、パドルは回転しません。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/2_999889c3-f8bf-49e2-b259-8b6f28c5f4d4_1024x1024.png?v=1700405813)
第二に、遅延の使用に注意を払う、最初は私は遅延を使用しなかった、その結果、ESCはビープ音だけで、応答がないことであり、その後、オシロスコープを使用してPWM波形を観察することは、PWMの私の初期化であることがわかった直接点滅し、あなたはESCが信号をアンロックする時間を受信するために与える必要がありますが、この時間はまた、時間に注意を払うことです、最初は私はdelay_us()を使用して構成されていた、問題 が解決できず、delay_ms(1000)に変更、つまり時間を1sに設定したが、まだ問題があり、再度時間を調整した後、ようやくビープ音が2回聞こえ、モーターが回転し始めた。 となると、このアンロック信号の受信時間をどう使いこなすかが非常に重要になる。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/3_be4764a4-bb57-414f-9f93-924ddd6912ce_1024x1024.png?v=1700405945)
また、プロセスの使用でもオシロスコープを使用することを学ぶことに注意を払う必要があり、信号の独自の設定は問題ではありませんがチェックし、以下は1.5ミリ秒のデューティサイクル、20ミリ秒の周期、振幅3.3VのPWM波の私の初期化の始まりです。
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/4_b4a49b67-d667-400c-bc59-7a2b80bb3482_1024x1024.png?v=1700406022)
まとめると、プロセス全体に注意が必要です:
(1)ESCは一般的に50Hzで周波数を制御しており、制御範囲はもちろん状況にもよるが、おおよそ1msから2msの間である。
(2) 電源を入れた後、ESCは3回鳴ります。ロック解除に成功すると、ESCは2回鳴りますが、ESCが1回しか鳴らない場合は、ESCが設定した信号を受信しているにもかかわらず、ロック解除に成功していない可能性がありますので、ロック解除コードに誤りがないか再確認してください。 ESCから音が出ない場合は、ESCが信号を全く受信していないことを意味しますので、配線とコードをよく確認してください。
(3) ESC がアンロック信号を受信するまでに一定の時間を与えるディレイ機能に注意してください。
(4) 接地に注意し、ESCの信号線を制御ボードの信号出力ポートに接続し、信号線の接地を制御ボードのGNDに接続する。
(5) オシロスコープの使い方を覚えて、設定した信号をチェックする。
(6) 間違った配線を接続しないこと!