Arduinoを使用した大電流モーター制御回路

問題を排除するために楽器を試してください





このプロジェクトでは、 モーター速度の制御 Arduino PWM回路を使用し、いくつかの押しボタンスイッチを介してArduinoを使用してDCモーターに逆順方向または方向制御を実装する方法。このセットアップを使用して、最大30アンペアの大電流モーターを制御できます。

沿ってアンキットネギ



モーターは、多くの分野でアクチュエーターとして使用されているため、電気および電子機器において非常に重要なコンポーネントです。

ロボット工学などの小さなアプリケーションや、重いモーターが使用される領域(産業など)にはモーターが必要です。



現在、小さなアプリケーションに使用されるモーターは、多くの電流(2アンペア未満)を消費しないため、簡単に制御できます。

そして、これらのモーターは、arduinoのようなマイクロコントローラーを使用して簡単に制御できます。 L298やL293DのようなモータードライバーIC 。

ただし、重い目的(10アンペアを超える)で使用されるモーターは制御できません これらのICを使用する 彼らは限られた電流(最大2アンペア)を供給することができるので。では、これらのモーターはどのように制御されているのでしょうか?

答えは簡単です: リレーの使用 、スイッチとして機能します。つまり、小電流を使用して大電流を切り替えます。このようにして、2つのことが達成できます。

1.大電流モーター自体を実行します。

2.回路を隔離して、衝撃を防ぎます。

これで、任意のマイクロコントローラーを使用してこれらのリレーを切り替えることができます。ここではarduinoUNOを使用します。

このプロジェクトに必要なコンポーネント:

1. ARDUINO UNO:リレーのプライマリ側に入力ロジックを提供します。

2. SPDT RELAY -2:両方向の回転には2つのリレーが必要です。接点は、大電流モーターの仕様を処理できる定格である必要があります

リレー画像青色 N / O N / Cと極の詳細を示すリレー3.パワーMOSFET:IRF1010MOSFETを使用できます 押しボタンmicroscwitch

4.バッテリー(12v):モーターに電力を供給します。

5. 2つのPUSHBUTTON:arduinoに入力を与える(つまり、押されたときと押されていないとき)

10k1 / 4ワット抵抗器

6. 2つの10K抵抗器:デバウンス用(以下で説明)

Arduinoを使用した大電流モーター制御回路

7.接続ワイヤー:接続を行うため。

回路図:

PWMArduinoモーター制御回路

図のように接続してください。

1.両方のリレーのノーマルオープン端子をバッテリーのプラス端子に接続し、ノーマルクローズ端子をバッテリーのマイナス端子に接続します。

2.各リレーの残りの端子(3つのうち)の間にモーターを接続します。

3.リレーの一次側の一方の端子をコードで指定されているようにarduinoの出力ピンに接続し、もう一方の端子をアースに接続します。

4.コードで指定されているように、両方のプッシュボタンの一方の端子をarduinoの5vピンに接続し、もう一方の端子を入力ピンに接続します。

4. **以下で説明するように、抵抗はこの回路の適切な機能にとって非常に重要であるため、抵抗を接続することを忘れないでください。

抵抗が接続されているのはなぜですか?

Arduinoの入力ピンに何も接続されていないことに気付くかもしれませんが、それは、示されたスイッチが開いているときにこれらのピン配置が論理ゼロになる可能性があるという意味ではありません

むしろ、スイッチが開いているとき、arduinoはロジック0とロジック1の間の任意のランダムな値を取ることができることを意味しますが、これはまったく良くありません(これはバウンスと呼ばれます)。

したがって、ここで必要なのは、入力ピンに何も接続されていない場合、つまりプッシュボタンが開いている場合、arduinoはピンから0入力を受け取ることです。

そしてこれを達成するために、ピンは抵抗を介して押しボタンの前で直接グランドに接続されます。抵抗なしで直接グランドに接続すると、ピンがグランドに短絡して大量の電流が流れるため、焼損する可能性が高くなります。これを防ぐために、間に抵抗を接続します。

この抵抗は、ピンのロジックを0にプルするため、プルダウン抵抗と呼ばれます。このプロセスはデバウンスと呼ばれます。

コード:

このコードをarduinoに書き込みます。

int x// initialise variables
int y
int z
int w
void setup() {
pinMode(6,OUTPUT)//initialise pin 6 as output to RL1
pinMode(9,OUTPUT)//initialise pin 9 as output to RL2
pinMode(3,INPUT)//initialise pin 3 as input
pinMode(4,INPUT)//initialise pin 4 as input
pinMode(10,OUTPUT)//initialise PWM pin 8 as output to gate of mosfet
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
Serial.begin(9600)
}
void loop() {
z=analogRead(A0)// read values from potentiometer in terms of voltage
w= map(z,0,1023,0,255)// map those values from 0 to 255
analogWrite(10,w)// write the mapped value to 10thpin as output
delay(1)//on time period of mosfet
analogWrite(10,w)
delay(1)//off time period of ,mosfet
Serial.println(z)//print value from pot to serial monitor
Serial.println(w)//print mapped value to serial monitor
x= digitalRead(3)
y= digitalRead(4)
if(x==0 && y==0){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)}
if(x==1 && y==0){digitalWrite(6,HIGH)// clockwise rotation of motor
digitalWrite(9,LOW)}
if(x==0 && y==1){digitalWrite(6,LOW)// anticlockwise rotation of motor
digitalWrite(9,HIGH)}
if(x==1 && y==1){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)
}
}

動作中(コードを理解):

•方向制御:

A.両方のプッシュボタンが押されていない場合:

この状態では、arduinoは両方のピンから0入力を受け取ります。この状態のコードで指定されているように、両方の出力ピンは0ロジック(LOW)を提供します。

if(x == 0 && y == 0){digitalWrite(6、LOW)

digitalWrite(9、LOW)}

両方のリレーの1次側への入力電圧がゼロであるため、両方の2次側端子は通常閉位置のままです。したがって、モーターの両方の端子にゼロボルトがあり、回転は発生しません。

B.プッシュボタンXが押されているが、Yが押されていない場合:

この状態では、arduinoはピン4から0入力を受け取りますが、ピン3からinput1を受け取ります。この条件のコードで指定されているように、ピン6はロジック1(HIGH)にある必要がありますが、ピン9はロジック0(LOW)にあります。

if(x == 1 && y == 0){digitalWrite(6、HIGH)

digitalWrite(9、LOW)}

リレー#1への入力電圧が高いため、このリレーのスイッチは通常開状態になりますが、リレー2への入力電圧は低いため、このリレーのスイッチは通常閉状態のままで、モーター端子間にそれぞれ12vと0vが発生します。モーターが一方向に回転します。

C.プッシュボタンYが押されているが、Xが押されていない場合:

この状態では、arduinoはピン4から1つの入力を受け取りますが、ピン3からinput0を受け取ります。この条件のコードで指定されているように、ピン6はロジック0(LOW)にある必要がありますが、ピン9はロジック1(HIGH)にあります。

if(x == 1 && y == 0){digitalWrite(6、LOW)

digitalWrite(9、HIGH)}

今回はリレー#2への入力電圧が高いため、このリレーのスイッチは通常開状態になりますが、リレー#1への入力電圧は低いため、このリレーのスイッチは通常閉状態のままで、モーターの両端にそれぞれ12vと0vが発生します。端子、モーターを別の方向に回転させます。

D.両方のプッシュボタンが押されたとき:

この状態では、arduinoは両方のピンから1つの入力を受け取ります。この状態のコードで指定されているように、両方の出力ピンは0ロジック(LOW)を提供します。

if(x == 0 && y == 0){digitalWrite(6、LOW)

digitalWrite(9、LOW)}

両方のリレーの1次側への入力電圧がゼロであるため、両方の2次側端子は通常閉位置のままです。したがって、モーターの両方の端子にゼロボルトがあり、回転は発生しません。

•速度制御:

ポテンショメータがarduinoのA0ピンへの入力として0ボルトを与えるとき、そのような位置にあるとしましょう。このため、arduinoはこの値を0としてマッピングし、ピン#10の出力PWMとして0を提供します。

AnalogWrite(10,0)//マップされた値を出力として10番目のピンに書き込みます

したがって、MOSFETのゲートは0電流を取得します。これにより、MOSFETはオフのままになり、モーターはスイッチオフの位置になります。

ただし、ポットが回転してポットの値が変化すると、ピンA0の電圧も変化し、この値はピン#10にマッピングされ、それに比例してPWM幅が増加するため、モーターとMOSFETに流れる電流が増加します。ドレイン。これにより、モーターは比例してより高速になり、同じことが逆に起こります。

したがって、上記の説明から、指定されたポットを調整し、いくつかの押しボタンを使用するだけで、Arduinoを使用して大電流DCモーターの速度と方向(逆順方向)を制御する方法を確認できます。

更新 :大電流モーターの場合、次の修正図に示すように、これらの高電力リレーを操作するために12V / 30アンペアリレーとBJTドライバーステージを使用してください。




前:アラーム付き車のリバースパーキングセンサー回路 次へ:ArduinoPWM信号発生器回路