このチュートリアルでは、DCモーターをArduino UNOに接続し、PWM(パルス幅変調)の概念を使用してその速度を制御します。この機能はUNOで有効になっており、定電圧に対して可変電圧を取得します。ここではPWMの方法について説明します。図に示すような単純な回路を考えてみましょう。
図の場合にボタンを押すと、モーターが回転を開始し、ボタンを押すまでモーターが動きます。このプレスは連続的であり、図の最初の波で表されます。ある場合、ボタンが8msの間押され、10msのサイクルで2msの間開かれると考えてください。この場合、ボタンが8msだけ押されるため、モーターは完全な9Vバッテリー電圧を経験しません。したがって、RMS端子電圧はモーターは約7Vになります。このRMS電圧の低下により、モーターは回転しますが、速度は低下します。これで、10msの期間にわたる平均ターンオン=ターンオン時間/(ターンオン時間+ターンオフ時間)、これはデューティサイクルと呼ばれ、80%(8 /(8 + 2))です。
2番目と3番目のケースでは、最初のケースに比べてボタンが押される時間がさらに短くなります。このため、モーター端子のRMS端子電圧はさらに低下します。この電圧の低下により、モーター速度はさらに低下します。デューティサイクルに伴うこの速度の低下は、モーターの端子電圧がモーターを回転させるのに十分でないポイントまで発生し続けます。
したがって、これにより、PWMを使用してモーター速度を変更できると結論付けることができます。
先に進む前に、H-BRIDGEについて説明する必要があります。現在、この回路には主に2つの機能があります。1つは低電力制御信号からDCモーターを駆動する機能で 、もう1つはDCモーターの回転方向を 変更する機能です。
図1
図2
DCモーターの場合、回転方向を変えるには、モーターの供給電圧の極性を変える必要があることは誰もが知っています。したがって、極性を変更するには、Hブリッジを使用します。上記の図1には、4つのスイッチがあります。図2に示すように、モーターが回転するためにA1とA2は閉じています。このため、図3の2番目の 部分に示すように、電流はモーターを右から左に流れます。今のところ、モーターが時計回りに回転するとします。ここで、スイッチA1とA2が開くと、B1とB2が閉じます。モーターを流れる電流は、1番目に示すように左から右に流れます。 図3の一部。この電流の流れの方向は最初の方向と反対であるため、モーター端子には最初の方向と反対の電位が見られ、モーターは反時計回りに回転します。これがH-BRIDGEの仕組みです。ただし、低電力モーターはH-BRIDGE ICL293Dで駆動できます。
L293Dは、低電力DCモーターを駆動するために設計されたH-BRIDGE ICであり、図に示されています。このICは2つのhブリッジで構成されているため、2つのDCモーターを駆動できます。したがって、このICは、マイクロコントローラーの信号からロボットのモーターを駆動するために使用できます。
前に説明したように、このICにはDCモーターの回転方向を変更する機能があります。これは、INPUT1とINPUT2の電圧レベルを制御することによって実現されます。
ピンを有効にする |
入力ピン1 |
入力ピン2 |
モーターの方向 |
高い |
低 |
高い |
右に曲がる |
高い |
高い |
低 |
左折してください |
高い |
低 |
低 |
やめる |
高い |
高い |
高い |
やめる |
したがって、上の図に示すように、時計回りに回転させるには、2Aを高くし、1Aを低くする必要があります。同様に、反時計回りの場合、1Aは高く、2Aは低くする必要があります。
図に示すように、Arduino UNOには6PWMチャネルがあるため、これらの6つのピンのいずれかでPWM(可変電圧)を取得できます。このチュートリアルでは、PIN3をPWM出力として使用します。
ハードウェア: ARDUINO UNO、電源(5v)、100uFコンデンサ、LED、ボタン(2個)、10KΩ抵抗(2個)。
ソフトウェア: arduino IDE(Arduino毎晩)。
回路図
回路は、上記の回路図に従ってブレッドボードに接続されています。ただし、LED端子の接続には注意が必要です。この場合、ボタンはバウンス効果を示しますが、大きなエラーは発生しないため、今回は心配する必要はありません。
UNOからのPWMは簡単で、通常、PWM信号用のATMEGAコントローラーのセットアップは簡単ではありません。正確な信号のために多くのレジスターと設定を定義する必要がありますが、ARDUINOではこれらすべてに対処する必要はありません。
デフォルトでは、すべてのヘッダーファイルとレジスタはARDUINO IDEによって事前定義されています。これらを呼び出すだけで、適切なピンにPWM出力が得られます。
ここで、適切なピンでPWM出力を取得するには、次の3つの作業を行う必要があります。
|
まず、6つのピンからPWM出力ピンを選択する必要があります。その後、そのピンを出力として設定する必要があります。
次に、関数「analogWrite(pin、value)」を呼び出して、UNOのPWM機能を有効にする必要があります。ここで、「pin」はPWM出力が必要なピン番号を表し、「3」と表記します。したがって、PIN3ではPWM出力を取得しています。
値は、0(常にオフ)から255(常にオン)の間のターンオンデューティサイクルです。ボタンを押すことで、この数値をインクリメントおよびデクリメントします。
UNOの最大解像度は「8」であるため、これ以上進むことはできません。したがって、値は0〜255です。ただし、コマンド「analogWriteResolution()」を使用してPWMの分解能を下げることができます。括弧内に4〜8の値を入力すると、その値を4ビットPWMから8ビットPWMに変更できます。
スイッチはDCモーターの回転方向を変えるためのものです。