Raspberry Pi は、電子エンジニアや愛好家向けに設計されたARMアーキテクチャプロセッサベースのボードです。PIは、現在最も信頼されているプロジェクト開発プラットフォームの1つです。より高速なプロセッサ速度と1GBのRAMを備えたPIは、画像処理やモノのインターネットなどの多くの注目を集めるプロジェクトに使用できます。
注目を集めるプロジェクトを行うには、PIの基本的な機能を理解する必要があります。 これらのチュートリアルでは、RaspberryPiのすべての 基本機能について説明します。各チュートリアルでは、PIの機能の1つについて説明します。このRaspberryPiチュートリアルシリーズの終わりまでに、あなたは自分で注目を集めるプロジェクトを行うことができるようになります。以下のチュートリアルを実行してください。
- RaspberryPi入門
- RaspberryPiの構成
- LED点滅
- ラズベリーパイボタンインターフェース
- Raspberry PiPWM生成
- RaspberryPiを使用したDCモーターの制御
このチュートリアルでは、RaspberryPiを使用してステッピングモーターの速度を制御します。ステッピングモーターでは、その名の通り、シャフトの回転はステップ形式です。ステッピングモーターにはさまざまな種類があります。ここでは、最も人気のある ユニポーラステッピングモーターを使用します。DCモーターとは異なり、ステッピングモーターは適切な指示を与えることで特定の角度に回転させることができます。
この4段ステッピングモーターを回転させるために、ステッピングモータードライバー回路を使用してパワーパルスを供給します。ドライバ回路は、PIからロジックトリガーを受け取ります。ロジックトリガーを制御する場合は、パワーパルスを制御するため、ステッピングモーターの速度を制御します。
Raspberry Pi2には40個のGPIO出力ピンがあり ます。ただし、40個のうち26個のGPIOピン(GPIO2〜GPIO27)のみをプログラムできます。これらのピンのいくつかは、いくつかの特別な機能を実行します。特別なGPIOは別として、残りのGPIOは17個だけです。これらの17個のGPIOピンはそれぞれ、最大15mAの電流を供給できます 。また、すべてのGPIOピンからの電流の合計は50mAを超えることはできません 。 GPIOピンの詳細については、以下を参照してください:RaspberryPiによるLEDの点滅
ある + 5V(ピン2および4)と+ 3.3V(ピン1&17)の電力出力端子 ボード上の他のモジュールとセンサを接続します。これらのパワーレールは、ステッピングモーターを回転させるためにより多くの電力が必要なため、ステッピングモーターの駆動には使用できません。そのため、別の電源からステッピングモーターに電力を供給する必要があります。私のステッピングモーターの定格電圧は9Vなので、2番目の電源として9Vバッテリーを使用しています。ステッピングモーターのモデル番号を検索して、定格電圧を確認してください。評価に応じて、二次情報源を適切に選択します。
先に述べたように、ステッピングモーターを駆動するためのドライバー回路が必要です。ここでは、単純なトランジスタドライバ回路も設計します。
必要なコンポーネント:
ここでは 、Raspbian JessieOSでRaspberryPi2モデルB を使用しています。ハードウェアとソフトウェアの基本的な要件はすべて前に説明しましたが、必要なものを除いて、RaspberryPiの概要で調べることができます。
- 接続ピン
- 220Ωまたは1KΩ抵抗(3)
- ステッピングモーター
- ボタン(2)
- 2N2222トランジスタ(4)
- 1N4007ダイオード(4)
- コンデンサ-1000uF
- ブレッドボード
回路の説明:
ステッピングモーターは200ステップを使用して360度の回転を完了します。つまり、ステップごとに1.8度回転します。4ステージステッピングモーターを駆動しているため、単一のロジックサイクルを完了するには4つのパルスを与える必要があります。このモーターの各ステップは1.8度の回転を完了するため、サイクルを完了するには200パルスが必要です。したがって、1回転を完了するには200/4 = 50ロジックサイクルが必要です。ステッピングモーターとその運転モードの詳細については、これを確認してください。
これらの4つのコイルのそれぞれをNPNトランジスタ(2N2222)で駆動します。このNPNトランジスタは、PIから論理パルスを受け取り、対応するコイルを駆動します。4つのトランジスタがPIから4つのロジックを取得して、4段のステッピングモーターを駆動します。
トランジスタドライバ回路はトリッキーなセットアップです。ここで、トランジスタを誤って接続すると、ボードに大きな負荷がかかり、ボードが損傷する可能性があることに注意する必要があります。これをチェックして、ステッピングモータードライバー回路を正しく理解してください。
モーターは誘導であるため、モーターを切り替えるときに誘導スパイクが発生します。このスパイクはトランジスタを大幅に加熱するため、 ダイオード(1N4007) を使用して、誘導性スパイクに対するトランジスタの保護を提供します 。
電圧変動を低減するため に、回路図に示すように、電源の両端に1000uFのコンデンサを接続し ます。
作業説明:
回路図に従ってすべてが接続されたら、PIをオンにしてプログラムをPYHTONで作成できます。
PYHTONプログラムで使用するいくつかのコマンドについて説明します。
ライブラリからGPIOファイルをインポートします。以下の関数を使用すると、PIのGPIOピンをプログラムできます。また、「GPIO」の名前を「IO」に変更しているため、プログラムでGPIOピンを参照する場合は常に、「IO」という単語を使用します。
RPi.GPIOをIOとしてインポートします
時々、私たちが使おうとしているGPIOピンが他の機能をしているかもしれません。その場合、プログラムの実行中に警告が表示されます。以下のコマンドは、PIに警告を無視して、プログラムを続行するように指示します。
IO.setwarnings(False)
PIのGPIOピンは、ボード上のピン番号または機能番号のいずれかで参照できます。ボード上の「PIN35」のように「GPIO19」です。したがって、ここでは、ピンを「35」または「19」で表すことにします。
IO.setmode(IO.BCM)
ステッピングモーターの4つのコイルを駆動するための出力として4つのGPIOピンを設定しています。
IO.setup(5、IO.OUT)IO.setup(17、IO.OUT)IO.setup(27、IO.OUT)IO.setup(22、IO.OUT)
GPIO26とGPIO19を入力ピンとして設定しています。これらのピンでボタンの押下を検出します。
IO.setup(19、IO.IN)IO.setup(26、IO.IN)
中括弧内の条件がtrueの場合、ループ内のステートメントは1回実行されます。したがって、GPIOピン26がローになると、IFループ内のステートメントが1回実行されます。GPIOピン26がローにならない場合、IFループ内のステートメントは実行されません。
if(IO.input(26)== False):
このコマンドはループを100回実行し、xは0から99にインクリメントされます。
範囲(100)のxの場合:
一方1: 無限ループに使用されます。このコマンドを使用すると、このループ内のステートメントが継続的に実行されます。
これでステッピングモーターの速度制御を実現するために必要なすべてのコマンドがあります。
プログラムを作成して実行した後は、コントロールを操作するだけです。PIに接続された2つのボタンがあります。1つは4つのパルス間の遅延をインクリメントし、もう1つは4つのパルス間の遅延をデクリメントします。遅延自体は速度を表しています。場合遅延が高いモータは、各ステップの間となるようブレーキがかかり、回転が遅いです。場合遅延がゼロに近い、最大速度でモータが回転します。
ここで、パルス間にいくらかの遅延があるはずであることを覚えておく必要があります。パルスを与えた後、ステッピングモーターは最終段階に達するまでに数ミリ秒かかります。パルス間に遅延がない場合、ステッピングモーターはまったく動きません。通常、パルス間の遅延は50msで十分です。より正確な情報については、データシートを調べてください。
したがって、2つのボタンを使用して遅延を制御でき、それによってステッピングモーターの速度が制御されます。