- ステッピングモーター
- ARM7-LPC2148でステッピングモーターを回転させる
- 必要なコンポーネント
- ステッピングモーター(28BYJ-48)
- ULN2003ステッピングモータードライバー
- 回路図
- ステッピングモーター用のARM7-LPC2148のプログラミング
今日のオートメーションの世界では、ステッピングモーターとサーボモーターが組み込みシステムで最も一般的に使用されている2つのモーターです。どちらも、ロボットアーム、CNCマシン、カメラなどのさまざまな自動化マシンで使用されます。このチュートリアルでは、ステッピングモーターをARM7-LPC2148と接続する方法と、その速度を制御する方法を説明します。ARM7を初めて使用する場合は、ARM7-LPC2148とそのプログラミングツールについて学ぶことから始めてください。
ステッピングモーター
ステッピングモーターはブラシレスDCモーターで、小さな角度で回転させることができます。これらの角度はステップと呼ばれます。ピンにデジタルパルスを与えることで、ステッピングモーターを段階的に回転させることができます。ステッピングモーターは安価で頑丈なデザインです。モーターの速度は、デジタルパルスの周波数を変更することで制御できます。
固定子巻線のタイプに基づいて利用可能なステッピングモーターには、UNIPOLAR と BIPOLARの2つのタイプがあります 。ここでは、最も一般的に使用されているステッピングモーターであるUNIPOLARステッピングモーターを使用しています。ステッピングモーターを回転させるには、ステッピングモーターのコイルに順番に通電する必要があります。回転操作に基づいて、2つのモードに分類されます。
- フルステップモード:(4ステップシーケンス)
- ステッピングのワンフェーズ(WAVE STEPPING)
- ステッピングの2フェーズ
- ハーフステップモード(8ステップシーケンス)
ステッピングモーターとその動作の詳細については、リンクをたどってください。
ARM7-LPC2148でステッピングモーターを回転させる
ここでは、フルステップ:ワンフェーズオンまたはウェーブステッピングモードを使用して、ARM7-LPC2148でステッピングモーターを回転させます。
この方法では、一度に1つのコイル(LPC2148の1つのピン)のみに通電します。つまり、最初のコイルAが短時間通電されると、シャフトはその位置を変更し、次にコイルBが同時に通電され、シャフトは再びその位置を変更します。これと同じように、コイルC、次にコイルDに通電して、シャフトをさらに動かします。これにより、ステッピングモーターのシャフトは、一度に1つのコイルに通電することにより、段階的に回転します。
この方法では、コイルに順番に通電することにより、シャフトを段階的に回転させます。これは、4つのステップを実行するため、4つのステップシーケンスと呼ばれます。
ステッピングモーターは、以下の値でHALF STEP方式(8シーケンス方式)で回転させることができます。
ステップ |
コイルA |
コイルB |
コイルC |
コイルD |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
必要なコンポーネント
ハードウェア:
- ARM7-LPC2148
- ULN2003モータードライバーIC
- LED – 4
- ステッピングモーター(28BYJ-48)
- ブレッドボード
- ワイヤーの接続
ソフトウェア:
- Keil uVision5
- フレジックマジックツール
ステッピングモーター(28BYJ-48)
28BYJ-48ステッピングモーターはすでに上の写真に示されています。それは ユニポーラステッピング 5V電源を必要とするモーター。モーターは4コイルのユニポーラ構成で、各コイルの定格は+ 5Vであるため、Arduino、Raspberry Pi、STM32、ARMなどのマイクロコントローラーで比較的簡単に制御できます。
しかし、ステッピングモーターは大電流を消費し、マイクロコントローラーに損傷を与える可能性があるため、ULN2003のようなモータードライブICが必要です。
28BYJ-48の仕様は、以下のデータシートに記載されています。
また、ステッピングモーターと他のマイクロコントローラーとのインターフェースも確認してください。
- ステッピングモーターとArduinoUnoのインターフェース
- RaspberryPiによるステッピングモーター制御
- 8051マイクロコントローラーとインターフェースするステッピングモーター
- ステッピングモーターとPICマイクロコントローラーのインターフェース
- ステッピングモーターとMSP430G2のインターフェース
ステッピングモーターは、マイクロコントローラーなしで制御することもできます。このステッピングモータードライバー回路を参照してください。
ULN2003ステッピングモータードライバー
ほとんどの ステッピングモーター は、ドライバーモジュールの助けを借りてのみ動作します。これは、コントローラーモジュール(この場合はLPC2148)が、モーターが動作するのに十分な電流をI / Oピンから供給できないためです。そのため、ULN2003 モジュールなどの外部モジュールをステッピングモータードライバーとして 使用します 。
このプロジェクトでは、ULN2003モータードライバーICを使用します 。ICのピン配列を以下に示します。
ピン(IN1〜IN7)はマイクロコントローラ出力を接続するための入力ピンであり、OUT1〜OUT7はステッピングモーター入力を接続するための対応する出力ピンです。COMには、出力デバイスと外部電源入力ソースに必要な正のソース電圧が与えられます。
回路図
ステッピングモーターとARM-7LPC2148のインターフェースの回路図を以下に示します。
ULN2003モータードライバーICを搭載したARM7-LPC2148
LPC2148のGPIOピン(P0.7〜P0.10)は、ULN2003 ICの入力ピン(IN1-IN4)に接続されている出力ピンと見なされます。
LPC2148ピン |
ULN2003ICのピン |
P0.7 |
1で |
P0.8 |
IN2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 ICとステッピングモーター(28BYJ-48)の接続
ULN2003 ICの出力ピン(OUT1-OUT4)は、ステッピングモーターのピン(青、ピンク、黄、オレンジ)に接続されています。
ULN2003ICピン |
ステッピングモーターのピン |
OUT1 |
青い |
OUT2 |
ピンク |
OUT3 |
黄 |
OUT4 |
オレンジ |
COM |
赤(+ 5V) |
ULN2003のIN1からIN4のLED
4つのLED(LED1、LED2、LED4、LED 4)のアノードピンはそれぞれULN2003のピンIN1、IN2、IN3、およびIN4に接続され、LEDのカソードはLPC2148からのパルスを示すGNDに接続されます。提供されたパルスのパターンに注意することができます。パターンは、最後に添付されているデモビデオに示されています。
ステッピングモーター用のARM7-LPC2148のプログラミング
ARM7-LPC2148をプログラムするには、keil uVision&FlashMagicツールが必要です。USBケーブルを使用してマイクロUSBポート経由でARM7スティックをプログラムしています。Keilを使用してコードを記述し、16進ファイルを作成してから、FlashMagicを使用してHEXファイルをARM7スティックにフラッシュします。keiluVisionとFlashMagicのインストールとその使用方法の詳細については、「ARM7 LPC2148マイクロコントローラー入門」リンクをたどり、KeiluVisionを使用してプログラムしてください。
ARM 7でステッピングモーターを制御するための完全なコードは 、このチュートリアルの最後にあります。ここでは、そのいくつかの部分について説明します。
1.使用するためのFULL STEP-ONE PHASE ONの私たちがコマンドの下に含める必要がある方法を。したがって、プログラムでは次の行を使用します
unsignedchar時計回り= {0x1,0x2,0x4,0x8}; //時計回りに回転するコマンド unsignedchar反時計回り= {0x8,0x4,0x2,0x1}; //反時計回りの回転のコマンド
2.次の行は、出力としてPORT0ピンを初期化し、それらをLOWに設定するために使用されます。
PINSEL0 = 0x00000000; // PORT0ピンの設定IO0DIR- = 0x00000780; //ピンP0.7、P0.8、P0.9、P0.10をOUTPUT IO0CLR = 0x00000780として設定します。// P0.7、P0.8、P0.9、P0.10ピンの出力をLOWに設定
3.遅延のある for ループを使用して 、 時計回りのコマンドに従ってPORTピン(P0.7〜P0.10)をHIGHに設定します。
for(int j = 0; j
反時計回りも同じ
for(int z = 0; z
4.遅延時間を変更して、ステッピングモーターの回転速度を変更します
delay(0x10000); //この値を変更して回転速度を変更します (0x10000)-フルスピード (0x50000)-遅くなります (0x90000)-以前より遅くなります したがって、遅延を増やすことにより、回転速度を遅くします。
5. 1回転のステップ数は、以下のコードで変更できます。
int no_of_steps = 550; //この値を必要なステップ数の回転に変更します(550は1回転します)
ステッピングモーターの場合、完全回転で550ステップ、半回転で225ステップになりました。したがって、要件に応じて変更してください。
6.この関数は、遅延時間を作成するために使用されます。
void delay(unsigned int value)//遅延を生成する関数 { unsigned int z; for(z = 0; z
デモビデオ付きの完全なコードを 以下に示します。