一つ 最も人気のあるステッピングモーターは28BYJ-48です。 このブログに掲載された記事の後、あなたはすでに知っているはずです このタイプのエンジンについて必要なものすべて ゆっくりと進むか、希望の位置で静止したままになるようにターンを制御できる精度。 これにより、産業用からロボット工学まで、考えられる他の多くのアプリケーションを介して、多数のアプリケーションを使用できます。
28BYJ-48は小さいです ユニポーラ式ステッピングモーター、Arduinoとの統合が簡単です。これは、通常、ドライバー/コントローラーモジュールモデルULN2003Aが付属しているためです。 すべて非常に安い価格とかなりコンパクトなサイズです。 これらの機能により、これらのデバイスの練習を開始することも理想的です。
28BYJ-48の機能
モーター 28byj-498 これは、次の特性を持つステッピングモーターです。
- ティポ:ステッピングモーターまたはユニポーラステッパー
- フェーズ:内部に4つのコイルがあるため、4(フルステップ)。
- 抵抗:50Ω。
- エンジントルク: 34 N / m、つまり、0.34メートルあたりのニュートンがKgに渡される場合、その軸にXNUMXcmあたり約XNUMXKgを置くのと同等の力になります。 滑車でXNUMX分のXNUMXキロ強持ち上げるのに十分です。
- 消費:55 mA
- ラップあたりのステップ:ハーフステップタイプ8個(各45º)
- 統合されたギアボックス:はい、1/64なので、精度を高めるために各ステップを64の小さなステップに分割します。したがって、それぞれ512ºの0.7ステップに達します。 または、ラップあたり256フルステップ(フルステップ)と見なすこともできます。
フルステップまたはハーフステップ、またはフルステップとハーフステップは、作業できるモードです。 覚えているかと思いますが、ステッピングモーターに関する記事で、ArduinoIDEのコード例はフルトルクで動作すると述べました。
詳細については、次のことができます。 データシートをダウンロードするとして たとえばこれ。 ピン配列については、購入したモデルのデータシートにも情報が記載されていますが、それほど心配する必要はありません。 しかし、このコンクリートには、分極や各ケーブルの行き先を気にすることなく、すべてのケーブルを一度に接続できる接続があり、コントローラーに挿入するだけで出来上がり...
この28BYJ-48モーターに含まれるモーターコントローラーまたはドライバーは、 ULN2003A、最も人気のあるものの500つであり、Arduinoで非常に簡単に使用できます。 これには、最大4mAをサポートするダーリントントランジスタのアレイがあり、前述のステッピングモーターの記事で見たように、1つのコイルをIN4からIN5までの番号が付けられたArduinoボードのピンにリンクする接続ピンがあります。 Arduinoから、ピン5vとGNDから、-+(12-XNUMXv)とマークされたドライバーモジュールボードのXNUMXつのピンに配線して、ボードとステッピングモーターに電力を供給することができます。
ちなみに、 ダーリントントランジスタ 一緒に配置され、単一のトランジスタとして機能する一対のバイポーラトランジスタを使用することが許可されています。 これにより、結果として得られる単一の「トランジスタ」の信号のゲインが大幅に増加し、より高い電流と電圧を流すこともできます。
El ダーリントンペア、1952つのバイポーラトランジスタの組み合わせによって形成される単一の「トランジスタ」が知られているように。 それはXNUMX年にシドニーダーリントンによってベル研究所で始まったので、その名前が付けられました。 これらのトランジスタは、XNUMXつのNPNのコレクタがXNUMX番目のNPNトランジスタのコレクタに接続されるように接続されています。 最初の発行者がXNUMX番目のベースに行く間。 つまり、結果として得られるトランジスタまたはペアには、単一のトランジスタとしてXNUMXつの接続があります。 最初のトランジスタのベースとXNUMX番目のトランジスタのコレクタ/エミッタ..。
モーターを購入する場所
たくさん あなたは多くの店で見つけることができます エレクトロニクスに特化し、Amazonのようにオンラインでも。 たとえば、次の場所で購入できます。
- 約€6であなたは持つことができます ドライバーモジュール付き28BYJ-48エンジン.
- 製品が見つかりません。 ロボットやプロジェクトに複数のモーターが必要な場合に備えて、接続用のケーブル...
Arduinoで28BYJ-48をプログラミングする
まず第一に、あなたはすべきです ステッピングモーターの概念を明確にする、だから私はあなたをお勧めします これらのアイテムに関するHwlibreの記事を読む。 これらのモーターは、継続的に給電されるようには設計されていませんが、必要な程度だけ前進するように、さまざまなフェーズで分極するように設計されています。 位相を励起してシャフトの回転を制御するには、各接続に適切に給電する必要があります。
製造元は、一度に2つのコイルを駆動することを推奨しています。
- それを機能させるには 最大トルクで、最速の速度と最大消費量で、次の表を使用できます。
手順 | コイルA | コイルB | コイルC | コイルD |
---|---|---|---|---|
1 | 高い | 高い | LOW | LOW |
2 | LOW | 高い | 高い | LOW |
3 | LOW | LOW | 高い | 高い |
4 | 高い | LOW | LOW | 高い |
- 一度にXNUMXつのコイルのみを駆動し、それを機能させる ウェーブドライブモード (半分でも、消費量は少ない)、次の表を使用できます。
手順 | コイルA | コイルB | コイルC | コイルD |
---|---|---|---|---|
1 | 高い | LOW | LOW | LOW |
2 | LOW | 高い | LOW | LOW |
3 | LOW | LOW | 高い | LOW |
4 | LOW | LOW | LOW | 高い |
- または進歩のために 半音、これを使用して、より短いステップでより高い旋削精度を達成できます。
手順 | コイルA | コイルB | コイルC | コイルD |
---|---|---|---|---|
1 | 高い | LOW | LOW | LOW |
2 | 高い | 高い | LOW | LOW |
3 | LOW | 高い | LOW | LOW |
4 | LOW | 高い | 高い | LOW |
5 | LOW | LOW | 高い | LOW |
6 | LOW | LOW | 高い | 高い |
7 | LOW | LOW | LOW | 高い |
8 | LOW | LOW | LOW | 高い |
そして、あなたは考えるかもしれません...これはArduinoプログラミングと何の関係がありますか? まあ真実はそれがたくさんあるので ArduinoIDEの値で行列または配列を作成できます モーターが思い通りに動くように、そしてループで、または必要なときにそのアレイを使用します... LOW = 0およびHIGH = 1、つまり電圧または高電圧がないことを考慮して、次のように作成できます。モーターを駆動するためにコントローラーに送信する必要のあるArduinoの信号。 たとえば、中程度の手順を実行するには、マトリックスのコードを使用できます。
int Paso [ 8 ][ 4 ] = { {1, 0, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 1}, {1, 0, 0, 1} };
つまり、 スケッチの完全なコード Arduino IDEから、この基本的な例を使用して、28BYJ-48ステッピングモーターがどのように機能するかをテストできます。 これにより、ダイアグラム全体が正しく接続されたら、モーターシャフトを回転させることができます。 値を変更するか、ケースで必要なアプリケーションのコードを変更してみてください:
// Definir pines conectados a las bobinas del driver #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 // Secuencia de pasos a par máximo del motor. Realmente es una matriz que representa la tabla del unipolar que he mostrado antes int paso [4][4] = { {1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 1}, {1, 0, 0, 1} }; void setup() { // Todos los pines se configuran como salida, ya que el motor no enviará señal a Arduino pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } // Bucle para hacerlo girar void loop() { for (int i = 0; i < 4; i++) { digitalWrite(IN1, paso[i][0]); digitalWrite(IN2, paso[i][1]); digitalWrite(IN3, paso[i][2]); digitalWrite(IN4, paso[i][3]); delay(10); } }
ご覧のとおり、この場合、コイルをXNUMXつずつアクティブにする最大トルクで動作します...