- サーボモーターとは?
- サーボモーターとマイクロコントローラーのインターフェース:
- PICF877A PICマイクロコントローラーを使用したサーボモーターのプログラミング:
- 回路図:
- シミュレーションとハードウェアのセットアップ:
これは、MPLABとXC8を使用してPICマイクロコントローラを学習する11番目のチュートリアルです。このチュートリアルでは、PICマイクロコントローラーを使用してサーボモーターを制御する方法を学習します。すでにサーボモーターを使用している場合は、このチュートリアルの前半をスキップできますが、サーボモーター自体を初めて使用する場合は、読み続けてください。
これまで、PICによるLEDの点滅、PICのタイマー、LCDのインターフェース、7セグメントのインターフェース、PICを使用したADCなど、多くの基本的なチュートリアルについて説明してきました。初心者の方は、こちらのPICチュートリアルの完全なリストをご覧ください。学習を開始します。
前のチュートリアルでは、PICマイクロコントローラーを使用してPWM信号を生成する方法を学びました。信号は、ポテンショメーターから読み取った値に基づいて生成されました。すべてのプログラムを理解している場合は、サーボモーターについてもコーディング済みです。おめでとうございます。はい、サーボモーターはPWM信号(ここではタイマーを使用して作成します)に応答します。このチュートリアルでは、その理由と方法を学習します。このプロジェクトのハードウェアセットアップをシミュレートして構築します。詳細なビデオは、このチュートリアルの最後にあります。
サーボモーターとは?
サーボモーターは、角度制御を可能にするタイプのアクチュエーター(ほとんどが円形)です。使用できるサーボモーターには多くの種類がありますが、このチュートリアルでは、以下に示す趣味のサーボモーターに焦点を当てましょう。
ホビーサーボは、モーションコントロールの安価な方法であるため人気があります。これらは、R / Cおよびロボット愛好家のほとんどのニーズに対応する既成のソリューションを提供します。また、アプリケーションごとに制御システムをカスタム設計する必要もありません。
ほとんどのホビーサーボモーターの回転角度は0〜180°ですが、興味があれば360°サーボモーターを入手することもできます。このチュートリアルでは、0〜180°のサーボモーターを使用します。ギアをベースにしたサーボモーターには、プラスチックギアサーボモーターとメタルギアサーボモーターの2種類があります。メタルギアは、モーターの摩耗が激しい場所で使用されますが、価格が高いだけです。
サーボモーターの定格はkg / cm(キログラム/センチメートル)です。ほとんどのホビーサーボモーターの定格は3kg / cmまたは6kg / cmまたは12kg / cmです。このkg / cmは、サーボモーターが特定の距離で持ち上げることができる重量を示します。例:6kg / cmのサーボモーターは、負荷がモーターシャフトから1cm離れて吊り下げられている場合、6kgを持ち上げることができるはずです。距離が長くなるほど、重量負荷容量は小さくなります。ここでサーボモーターの基本を学びます。
サーボモーターとマイクロコントローラーのインターフェース:
趣味のサーボモーターとMCUのインターフェースは非常に簡単です。サーボには3本のワイヤーが出ています。そのうち2つは電源(正と負)に使用され、1つはMCUから送信される信号に使用されます。このチュートリアルでは、RCカーのヒューマノイドボットなどに最も一般的に使用されているMG995メタルギアサーボモーターを使用します。MG995の写真を以下に示します。
サーボモーターの色分けは異なる場合がありますので、それぞれのデータシートを確認してください。
すべてのサーボモーターは+ 5V電源レールで直接動作しますが、モーターが消費する電流の量に注意する必要があります。3つ以上のサーボモーターを使用する場合は、適切なサーボシールドを設計する必要があります。このチュートリアルでは、1つのサーボモーターを使用して、PICMCUをプログラムしてモーターを制御する方法を示します。サーボモーターと他のマイクロコントローラーとのインターフェースについては、以下のリンクを確認してください。
- 8051マイクロコントローラーとインターフェースするサーボモーター
- Arduinoを使用したサーボモーター制御
- ラズベリーパイサーボモーターチュートリアル
- AVRマイクロコントローラーを備えたサーボモーター
PICF877A PICマイクロコントローラーを使用したサーボモーターのプログラミング:
サーボモーターのプログラミングを開始する前に、サーボモーターを制御するために送信する信号の種類を知っておく必要があります。サーボモーターの信号線にPWM信号を送信するようにMCUをプログラムする必要があります。下の図に示すように、PWM信号のデューティサイクルを読み取り、サーボモーターシャフトをそれぞれの場所に配置する制御回路がサーボモーター内にあります。
各サーボモーターは異なるPWM周波数(このチュートリアルで使用される最も一般的な周波数は50HZ)で動作するため、モーターのデータシートを入手して、サーボモーターが動作するPWM周期を確認してください。
Tower proMG995のPWM信号の詳細を以下に示します。
このことから、モーターは20ms(50Hz)のPWM周期で動作すると結論付けることができます。したがって、PWM信号の周波数は50Hzに設定する必要があります。前のチュートリアルで設定したPWMの周波数は5KHzでしたが、同じものを使用してもここでは役に立ちません。
しかし、ここで問題があります。PIC16F877Aは、低周波数のPWM信号を生成することができないCCPモジュールを使用します。データシートによると、PWM周波数に設定できる最小値は1.2KHzです。したがって、CCPモジュールを使用するという考えを捨てて、独自のPWM信号を作成する方法を見つける必要があります。
したがって、このチュートリアルでは、タイマーモジュールを使用して50Hzの 周波数でPWM信号を生成し、それらのデューティサイクルを変更してサーボモーターの角度を制御します。タイマーまたはPICを使用したADCを初めて使用する場合は、このチュートリアルに戻ってください。すでに説明しているので、ほとんどの内容をスキップします。
タイマーモジュールを32のプリスケーラーで初期化し、1usごとにオーバーフローさせます。データシートによると、PWMの周期は20msのみである必要があります。したがって、オンタイムとオフタイムを合わせて、正確に20ミリ秒に等しくする必要があります。
OPTION_REG = 0b00000100; //外部周波数と32をプリスケーラとして使用するTimer0TMR0 = 251; // 1usの時間値をロードしますdelayValueは0〜256の範囲で、TMR0IE = 1のみです。// PIE1レジスタのタイマー割り込みビットを有効にするGIE = 1; //グローバル割り込みを有効にするPEIE = 1; //ペリフェラル割り込みを有効にする
したがって、割り込みルーチン関数内で、ピンRB0を指定された時間オンにし、リーマ時間(20ms – on_time)の間オフにします。オン時間の値は、ポテンショメータとADCモジュールを使用して指定できます。割り込みを以下に示します。
oid割り込みtimer_isr(){if(TMR0IF == 1)//タイマーがオーバーフローしました{TMR0 = 252; / *タイマー値をロードします(注:TImer0はTMR0のインクリメントを開始するために2つの命令サイクルを必要とするため、Timervalueは100の101になります* / TMR0IF = 0; //タイマー割り込みフラグカウントをクリアします++;} if(count> = on_time){ RB0 = 1; // LEDを点滅させるための値を補完する} if(count> =(on_time +(200-on_time))){RB0 = 0; count = 0;}}
while ループ内では、ADCモジュールを使用してポテンショメータの値を読み取り、読み取った値を使用してPWMのオン時間を更新します。
while(1){pot_value =(ADC_Read(4))* 0.039; on_time =(170-pot_value); }
このようにして、周期が20msで、ポテンショメータを使用して設定できる可変デューティサイクルを持つPWM信号を作成しました。完全なコードは、以下のコードセクションに記載されています。
それでは、プロテウスシミュレーションを使用して出力を確認し、ハードウェアに進みましょう。
回路図:
PWMチュートリアルに既に遭遇している場合、このチュートリアルの回路図は、LEDライトの代わりにサーボモーターを追加することを除いて同じです。
シミュレーションとハードウェアのセットアップ:
Proteusシミュレーションの助けを借りて、オシロスコープを使用してPWM信号を検証し、サーボモーターの回転エンジェルをチェックすることもできます。シミュレーションのいくつかのスナップショットを以下に示します。ここでは、サーボモーターの回転エンジェルとPWMデューティサイクルがポテンショメータに基づいて変化していることがわかります。最後に、異なるPWMでの回転のフルビデオをさらに確認します。
ご覧のとおり、サーボ回転エンジェルはポテンショメータの値に基づいて変化します。それでは、ハードウェアのセットアップに進みましょう。
ハードウェアのセットアップでは、上の回路図に示すように、LEDボードを取り外し、サーボモーターを追加しました。
ハードウェアを次の図に示します。
以下のビデオは、サーボモーターが電位差計のさまざまな位置にどのように反応するかを示しています。
それだ!!私たちはしているPICマイクロコントローラとサーボモータをインターフェースし、今あなたがあなた自身の創造性を使用し、このためのアプリケーションを見つけることができます。サーボモーターを使用するプロジェクトはたくさんあります。