- 必要な材料
- BLDCモーターを理解する
- ドローンやその他のマルチコプターがBLDCモーターを使用するのはなぜですか?
- なぜESCが必要なのですか?その機能は何ですか?
- BLDCおよびESCのいくつかの一般的な用語:
- ArduinoBLDCモーター制御回路図
- Arduinoを使用したBLDC速度制御のプログラム
- ArduinoBLDCモーター制御
ものを作り、それを私たちが望む方法で機能させることは、常にとても楽しいことでした。それは合意されていますが、飛ぶことができるものを作ることは、愛好家やハードウェアをいじくり回す人の間でもう少し不安をかき立てるでしょう。はい!私はグライダー、ヘリコプター、飛行機、そして主にマルチコプターについて話している。今日では、オンラインで利用できるコミュニティサポートにより、自分で作成するのが非常に簡単になっています。飛ぶものすべてに共通することの1つは、BLDCモーターを使用していることです。では、このBLDCモーターとは何でしょうか。なぜ私たちは物事を飛ばすためにそれが必要なのですか?何がそんなに特別なのですか?適切なモーターを購入してコントローラーとインターフェースする方法は?ESCとは何ですか?なぜそれを使用するのですか?このような質問がある場合は、このチュートリアルがワンストップソリューションです。
したがって、基本的にこのチュートリアルでは 、Arduinoでブラシレスモーターを制御します。ここでは、 A2212 / 13TセンサーレスBLDCアウトランナーモーターが20A電子速度コントローラー(ESC)とともに使用されています。このモーターは、一般的にドローンを構築するために使用されます。
必要な材料
- A2212 / 13TBLDCモーター
- ESC(20A)
- 電源(12V 20A)
- Arduino
- ポテンショメータ
BLDCモーターを理解する
BLDCモーターはブラシレスDCモーターの略で、スムーズな操作のため、シーリングファンや電気自動車で一般的に使用されています。電気自動車でのBLDCモーターの使用については、前に詳しく説明しました。他のモーターとは異なり、BLDCモーターには3本のワイヤーが出ており、各ワイヤーは独自の相を形成しているため、3相モーターが得られます。待って…なに!! ??
はい、BLDCモーターはDCモーターと見なされますが、パルス波の助けを借りて動作します。電子速度コントローラ(ESC)は、パルスにバッテリからの直流電圧を変換してモーターの3線に供給する。常にモーターの2相のみに電力が供給されるため、電流は1つの相から入り、他の相から出ます。このプロセスの間、モーター内部のコイルが通電されるため、ローターの磁石が通電されたコイルに整列します。次に、次の2本のワイヤーがESCによって通電され、このプロセスが続行されてモーターが回転します。モーターの速度はコイルへの通電速度に依存し、モーターの方向はコイルへの通電順序に依存します。 ESCについては、この記事の後半で詳しく説明します。
利用可能なBLDCモーターには多くの種類がありますが、最も一般的な分類を見てみましょう。
インランナーおよびアウトランナーBLDCモーター: インランナーBLDCモーターは、他のモーターと同じように機能します。つまり、ケーシングを固定したまま、モーター内部のシャフトが回転します。しながら、 アウトランナーBLDCモータは 正反対、ステー内部コイルを固定しながらシャフトと共にモータ回転の外装です。アウトランナーモーターは、アウターケーシング(回転するもの)自体がタイヤのリムになっているため、カップリングメカニズムが回避されるため、電動自転車では非常に有利です。また、アウトランナーモーターはランナータイプよりもトルクが大きくなる傾向があるため、EVやドローンでの理想的な選択肢になります。ここで使用しているのもアウトランナータイプです。
注: ポケットドローンにも使用されるコアレスBLDCモーターと呼ばれる別のタイプのモーターがあります 。 これらのモーターの動作原理は異なりますが、このチュートリアルのためにスキップします。
センサーおよびセンサーレスBLDCモーター: BLDCモーターをジャークなしで回転させるには、フィードバックが必要です。つまり、ESCは、それに応じて固定子に通電するために、回転子内の磁石の位置と極を知る必要があります。この情報は2つの方法で取得できます。1つは、ホールセンサーをモーター内に配置することです。ホールセンサーは磁石を検出し、ESCに情報を送信します。このタイプのモーターはセンサー付きBLDCモーターと呼ばれ、電気自動車で使用されます。2番目の方法は、磁石がコイルを横切るときにコイルによって生成される逆起電力を使用することです。これには、追加のハードウェアや配線は必要ありません。位相線自体が逆起電力をチェックするためのフィードバックとして使用されます。この方法は私たちのモーターで使用されており、ドローンやその他の飛行プロジェクトで一般的です。
ドローンやその他のマルチコプターがBLDCモーターを使用するのはなぜですか?
クワッドコプターからヘリコプターやグライダーまで、さまざまな種類のクールなドローンがあり、すべてに1つのハードウェアが共通しています。それがBLDCモーターですが、なぜですか?DCモーターに比べて少し高価なBLDCモーターを使用するのはなぜですか?
これにはかなりの数の正当な理由があります。主な理由の1つは、これらのモーターによって提供されるトルクが非常に高いことです。これは、ドローンを離陸または着陸させるために推力をすばやく増減するために非常に重要です。また、これらのモーターは、モーターの推力を再び増加させる アウトランナー として利用できます。BLDCモーターを選択するもう1つの理由は、スムーズな振動の少ない動作です。これは、空中で安定しているドローンにとって非常に理想的です。
BLDCモーターのパワーウェイトレシオは非常に高いです。ドローンで使用されるモーターは高出力(高速および高トルク)である必要がありますが、軽量である必要があるため、これは非常に重要です。BLDCモーターと同じトルクと速度を提供できるDCモーターは、BLDCモーターの2倍の重量になります。
なぜESCが必要なのですか?その機能は何ですか?
私たちが知っているように、すべてのBLDCモーターには、バッテリーからのDC電圧をパルスに変換してモーターの相線に電力を供給するための何らかのコントローラーが必要です。このコントローラーはESCと呼ばれ、Electronic SpeedControllerの略です。コントローラの主な役割は、BLDCモーターのフェーズワイヤに、モーターが回転するように順番に通電することです。これは、各ワイヤから逆起電力を検出し、磁石がコイルを横切るときにコイルに正確に通電することによって行われます。したがって、ESC内には多くのハードウェアの輝きがあり、このチュートリアルの範囲外です。しかし、いくつか言及すると、スピードコントローラーとバッテリーエリミネーター回路があります。
PWMベースの速度制御: ESCは、オレンジ色のワイヤーで提供されるPWM信号を読み取ることにより、BLDCモーターの速度を制御できます。サーボモーターと非常によく似た動作をします。提供されるPWM信号の周期は20msで、デューティサイクルを変更してBLDCモーターの速度を変更できます。同じロジックがサーボモーターにも適用されて位置を制御するため、Arduinoプログラムで同じサーボライブラリを使用できます。 ArduinoでServoを使用する方法についてはこちらをご覧ください。
バッテリーエリミネーター回路(BEC):ほとんどすべてのESCには、バッテリーエリミネーター回路が付属しています。名前が示すように、この回路はマイクロコントローラー用の別個のバッテリーの必要性を排除します。この場合、Arduinoに電力を供給するために別個の電源は必要ありません。ESC自体は、Arduinoに電力を供給するために使用できる安定化された+ 5Vを提供します。通常、この電圧を調整する回路には多くの種類があり、安価なESCでは線形調整になりますが、スイッチング回路を備えたものもあります。
ファームウェア:すべてのESCには、製造元によって書き込まれたファームウェアプログラムがあります。このファームウェアは、ESCの応答方法を大きく決定します。人気のあるファームウェアには、Traditional、Simon-K、BL-Heliなどがあります。このファームウェアもユーザーがプログラム可能ですが、このチュートリアルではその多くについては説明しません。
BLDCおよびESCのいくつかの一般的な用語:
BLDCモーターの使用を開始したばかりの場合は 、ブレーキ、ソフトスタート、モーターの方向、低電圧、応答時間 、 前進 などの用語に出くわした可能性があります 。 これらの用語の意味を見てみましょう。
ブレーキ:ブレーキとは、スロットルを外すとすぐにBLDCモーターの回転を停止する機能です。この能力は、空中で操縦するためにRPMをより頻繁に変更する必要があるため、マルチヘリコプターにとって非常に重要です。
ソフトスタート:ソフトスタートは、BLDCモーターがギアに関連付けられている場合に考慮すべき重要な機能です。ソフトスタートが有効になっている場合、モーターは突然回転を開始することはなく、スロットルがどれだけ速く与えられても、常に徐々に速度を上げます。これは、モーターに取り付けられているギア(ある場合)の摩耗を減らすのに役立ちます。
モーターの方向: BLDCモーターのモーターの方向は、通常、動作中に変更されません。ただし、組み立てる際に、モーターの回転方向を変える必要がある場合があります。モーターの方向を変更する最も簡単な方法は、モーターの任意の2本のワイヤーを交換することです。
低電圧停止:キャリブレーションが完了すると、BLDCモーターは、特定のスロットル値に対して同じ特定の速度で動作する必要があります。しかし、モーターはバッテリー電圧が低下するのと同じスロットル値で速度を落とす傾向があるため、これを達成するのは困難です。これを回避するために、通常、バッテリー電圧がしきい値を下回ったときに動作を停止するようにESCをプログラムします。この機能は低電圧停止と呼ばれ、ドローンで役立ちます。
応答時間:スロットルの変化に基づいてモーターの速度をすばやく変更する能力は、応答時間と呼ばれます。応答時間が短いほど、制御は向上します。
Advance: Advanceは、BLDCモーターの問題またはバグのようなものです。すべてのBLDCモーターには、少し進歩があります。つまり、固定子コイルに通電すると、固定子コイルに永久磁石が存在するため、回転子はそれに向かって引き付けられます。引き付けられた後、ローターは、コイルがオフになり、次のコイルがオンになる前に、同じ方向にもう少し前方に移動する傾向があります。この動きは「アドバンス」と呼ばれ、ジッター、加熱、ノイズの発生などの問題が発生します。したがって、これはESCが単独で回避する必要があるものです。
さて、十分な理論で、モーターをArduinoに接続してハードウェアを使い始めることができます。
ArduinoBLDCモーター制御回路図
以下は、Arduinoでブラシレスモーターを制御するための回路図です。
BLDCモーターをArduinoに接続するための接続は非常に簡単です。ESCには、最低約12Vおよび5Aの電源が必要です。このチュートリアルでは、RPSを電源として使用しましたが、Li-Poバッテリーを使用してESCに電力を供給することもできます。ESCの三相線はモーターの三相線に接続する必要があります。これらの線を接続する順序はありません。任意の順序で接続できます。
警告:一部のESCにはコネクタがありません。その場合は、接続がしっかりしていることを確認し、絶縁テープを使用して露出したワイヤを保護してください。相を流れる大電流があるため、短絡するとESCとモーターが永久的に損傷します。
ESC自体のBEC(バッテリーエリミネーター回路)は、Arduinoボードの電源投入に使用できる+ 5Vを調整します。最後に、BLDCモーターの速度を設定するために、ArduinoのA0ピンに接続されたポテンショメーターも使用します。
Arduinoを使用したBLDC速度制御のプログラム
50Hzの周波数で0%から100%までさまざまなデューティサイクルのPWM信号を作成する必要があります。デューティサイクルは、モーターの速度を制御できるように、ポテンショメータを使用して制御する必要があります。これを行うためのコードは、50Hzの周波数のPWM信号も必要とするため、サーボモーターの制御に似ています。したがって、Arduinoの同じサーボライブラリを使用します。完全なコードは、私は小さな断片にコードを説明し、さらに下に、このページの下部に見つけることができます。また、ArduinoまたはPWMを初めて使用する場合は、最初にArduinoでPWMを使用し、Arduinoを使用してサーボを制御します。
PWM信号は、ハードウェアによってPWMをサポートするピンでのみ生成できます。これらのピンは通常〜記号で示されます。Arduino UNOでは、ピン9がPWM信号を生成できるため、ESC信号ピン(オレンジ色のワイヤー)をピン9に接続し、次の行を使用して同じ旅館コードについても言及します。
ESC.attach(9);
0%から100%までさまざまなデューティサイクルのPWM信号を生成する必要があります。0%のデューティサイクルの場合、POTは0V(0)を出力し、100%のデューティサイクルの場合、POTは5V(1023)を出力します。ここでは、ポットがピンA0に接続されているため、以下に示すように、アナログ読み取り機能を使用してPOTからアナログ電圧を読み取る必要があります。
intスロットル= analogRead(A0);
次に、値0が0%PWMを生成し、値180が100%デューティサイクルを生成するため、値を0から1023から0から180に変換する必要があります。180を超える値は意味がありません。そこで、以下に示すように、map関数を使用して値を0-180にマップします。
スロットル= map(throttle、0、1023、0、180);
最後に、この値をサーボ関数に送信して、そのピンでPWM信号を生成できるようにする必要があります。サーボオブジェクトをESCとして指定したため、コードは次のようになります。ここで、可変スロットルには、PWM信号のデューティサイクルを制御するための0〜180の値が含まれています。
ESC.write(スロットル);
ArduinoBLDCモーター制御
回路図に従って接続し、コードをArduinoにアップロードして、ESCの電源を入れます。モーターは回転すると飛び回るので、BLDCモーターを何かに取り付けていることを確認してください。セットアップの電源がオンになると、ESCはウェルカムトーンを鳴らし、スロットル信号がしきい値制限内に入るまでビープ音を鳴らし続けます。POTを0Vから徐々に上げると、ビープ音が止まります。これは、PWMを提供していることを意味します。信号が下限しきい値を超え、さらに増加すると、モーターがゆっくりと回転し始めます。提供する電圧が高いほど、モーターが拾う速度が速くなり、最終的に電圧がしきい値の上限を超えると、モーターが停止します。その後、プロセスを繰り返すことができます。
このArduinoBLDCコントローラーの完全な動作は、以下のビデオリンクにもあります。これを機能させる上で問題が発生した場合は、コメントセクションを使用するか、フォーラムを使用して技術的なヘルプを参照してください。