DCモーターは、ロボット工学および電子工学プロジェクトで最も使用されているモーターです。DCモーターの速度を制御するために、温度に基づいて速度を自動的に制御できるなど、さまざまな方法がありますが、このプロジェクトでは、PWM法を使用してDCモーターの速度を制御します。この Arduinoモーター速度制御プロジェクトでは、ポテンショメーターのノブを回転させることで速度を制御できます。
パルス幅変調:
PWMとは何ですか? PWMは、電圧または電力を制御できることを使用する手法です。もっと簡単に理解すると、モーターの駆動に5ボルトを印加すると、モーターはある程度の速度で移動します。印加電圧を2減らすと、モーターに3ボルトを印加すると、モーターの速度も低下します。この概念は、PWMを使用して電圧を制御するプロジェクトで使用されます。この記事では、PWMについて詳しく説明しました。また、PWMを使用してLEDの明るさを制御するこの回路を確認してください:1ワットLED調光器。
%のデューティサイクル=(TON /(TON + TOFF))* 100ここで、T ON = HIGH方形波の時間T OFF方形波の= LOW時間
ここで、図のスイッチが一定期間にわたって継続的に閉じられると、モーターはその間継続的にオンになります。スイッチが8msの間閉じられ、10msのサイクルで2msの間開かれた場合、モーターは8msの時間内にのみオンになります。これで、10msの期間にわたる平均端末=ターンオン時間/(ターンオン時間+ターンオフ時間)、これはデューティサイクル と呼ばれ 、80%(8 /(8 + 2))であるため、平均出力電圧はバッテリー電圧の80%になります。これで、人間の目はモーターが8ミリ秒間オンで、2ミリ秒間オフになっていることを認識できないため、DCモーターが80%の速度で回転しているように見えます。
2番目のケースでは、スイッチは5msの間閉じられ、10msの期間にわたって5msの間開かれるため、出力の平均端子電圧はバッテリー電圧の50%になります。バッテリー電圧が5Vで、デューティサイクルが50%である場合、平均端子電圧は2.5Vになります。
3番目のケースでは、デューティサイクルは20%で、平均端子電圧はバッテリ電圧の20%です。
多くのプロジェクトでArduinoでPWMを使用しています。
- PWMを使用したArduinoベースのLED調光器
- Arduinoを使用した温度制御ファン
- Arduinoを使用したDCモーター制御
- ArduinoとTRIACを使用したACファン速度制御
PWMに基づくさまざまなプロジェクトを実行することで、PWMについて詳しく知ることができます。
必要な材料
- Arduino UNO
- DCモーター
- トランジスタ2N2222
- ポテンショメータ100kオーム
- コンデンサ0.1uF
- ブレッドボード
- ジャンピングワイヤー
回路図
PWMを使用した ArduinoDCモーター速度制御の回路図を 以下に示します。
コードと説明
ポテンショメータを使用したArduinoDCモーター制御の完全なコードは最後に記載されています。
以下のコードでは、変数c1とc2を初期化し、ポテンショメータ出力にアナログピンA0を割り当て、「pwm」に12番目のピンを割り当てています。
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
ここで、以下のコードでは、ピンA0を入力として、12(PWMピン)を出力として設定します。
void setup(){ pinMode(pwmPin、OUTPUT); //ピン12を出力として宣言します pinMode(pot、INPUT); //ピンA0を入力として宣言します }
ここで、 void loop()で、 analogRead(pot) を使用して ( A0から)アナログ値を読み取り、それを変数c2に保存しています。次に、1024からc2値を減算し、結果をc1に保存します。次に、Arduinoの12番目のPWMピンをHIGHにし、値c1の遅延の後、そのピンをLOWにします。この場合も、値c2の遅延後、ループが続行されます。
1024からアナログ値を減算する理由は、Arduino Uno ADC が10ビットの分解能であるためです(したがって、0〜2 ^ 10の整数値= 1024値)。これは、0〜5ボルトの入力電圧を 0〜1024の 整数値にマップすることを意味します。したがって、入力 anlogValue を(5/1024)に乗算すると 、入力電圧のデジタル値が得られます。ArduinoでADC入力を使用する方法をここで学びます。
void loop() { c2 = AnalogRead(pot); c1 = 1024-c2; digitalWrite(pwmPin、HIGH); //ピン12をHIGHに設定 delayMicroseconds(c1); // c1 uS( ハイタイム)を待機しますdigitalWrite(pwmPin、LOW); //ピン12をLOWに設定しますdelayMicroseconds(c2); // c2 uSを待機します(低速) }
Arduinoを使用したDCモーターの速度制御
この回路では、DCモーターの速度を制御するために、100Kオームのポテンショメーターを使用してPWM信号のデューティサイクルを変更します。 100KオームのポテンショメータがArduinoUNOのアナログ入力ピンA0に接続され、DCモーターがArduinoの12番目のピン(PWMピン)に接続されています。 Arduinoプログラムの動作は、アナログピンA0から電圧を読み取るため、非常に簡単です。アナログピンの電圧は、ポテンショメータを使用して変化させます。必要な計算を行った後、それに応じてデューティサイクルが調整されます。
たとえば、アナログ入力に256値を供給する場合、HIGH時間は768ms(1024-256)になり、LOW時間は256msになります。したがって、それは単にデューティサイクルが75%であることを意味します。私たちの目にはそのような高周波振動は見えず、モーターは75%の速度で継続的にオンになっているように見えます。これが、Arduinoを使用してモーター速度制御を実行する方法 です。