Arduino kullanarak Yüksek Akım Motor Kontrol Devresi

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu projede nasıl yapılacağını tartışıyoruz kontrol motor hızı Arduino PWM devresini kullanarak ve bir çift basma düğmesiyle Arduino kullanarak bir DC motorda geri ileri veya yön kontrolünün nasıl uygulanacağı. Bu kurulum kullanılarak 30 ampere kadar herhangi bir yüksek akım motoru kontrol edilebilir

TarafındanAnkit Negi



Motor, birçok alanda aktüatör olarak kullanıldığından, elektrik ve elektronikte çok önemli bir bileşendir.

Robotik gibi küçük uygulamalar için olduğu kadar ağır motorların kullanıldığı alanlarda (endüstri vb.) Motorlara ihtiyacımız var.



Artık küçük uygulamalar için kullanılan motorlar, fazla akım almadıkları için (2 amperden az) kolaylıkla kontrol edilebilmektedir.

Ve bu motorlar, arduino gibi mikrodenetleyici kullanılarak kolaylıkla kontrol edilebilir. motor sürücüsü ic’si L298 veya L293D gibi .

Ancak ağır amaçlar için kullanılan (10 amperden büyük) motorlar kontrol edilemez bu ic'leri kullanarak sınırlı akım sağlayabildikleri için (maks. 2amp). Peki bu motorlar nasıl kontrol ediliyor?

Cevap basit: Röleleri kullanma anahtar görevi gören, yani küçük akım kullanarak büyük akımı değiştirir. Bu şekilde iki şey başarılabilir:

1. Yüksek akımlı motorumuzun kendisini çalıştırması.

2. Devreyi izole etmek, böylece herhangi bir şoku önlemek.

Artık bu röleyi değiştirmek için herhangi bir mikro denetleyici kullanılabilir. Burada arduino UNO kullanacağız.

BU PROJE İÇİN GEREKLİ BİLEŞENLER:

1. ARDUINO UNO: rölenin birincil tarafına giriş mantığı vermek için.

2. SPDT RÖLE -2: her iki yönde dönüş için iki röle gereklidir. Kontaklar, yüksek akım motor spesifikasyonlarını karşılayacak şekilde derecelendirilmelidir

Röle görüntüsü mavi renk N / O N / C ve kutup ayrıntılarını gösteren röle3. Güç Mosfet: IRF1010 mosfet'i kullanabilirsiniz düğme mikro anahtar

4. AKÜ (12v): motora güç sağlamak için.

5. İKİ BUTON: arduino'ya giriş vermek için (yani basıldığında ve basılmadığında)

10k 1/4 watt direnç

6. İKİ 10K DİRENÇ: çürütmek için (aşağıda açıklanmıştır)

Arduino kullanarak Yüksek Akım Motor Kontrol Devresi

7. KABLO BAĞLANTISI: bağlantı yapmak için.

ŞEMATİK:

PWM Arduino Motor Kontrol Devresi

Şekilde gösterildiği gibi bağlantıları yapın.

1. Her iki rölenin normalde açık terminalini pilin pozitif terminaline ve normalde kapalı terminalini pilin negatif terminaline bağlayın.

2. Motoru her rölenin kalan terminali (üçten) arasına bağlayın.

3. Kodda belirtildiği gibi rölelerin birincil tarafının bir terminalini arduino'nun çıkış pinlerine ve diğer terminali toprağa bağlayın.

4. Her iki butonun bir terminalini arduino'nun 5v pinine ve diğer terminali kodda belirtildiği gibi giriş pinlerine bağlayın.

4. ** Aşağıda açıklandığı gibi, bu devrenin düzgün çalışması için çok önemli olduklarından dirençleri bağlamayı unutmayın:

DİRENÇLER NEDEN BAĞLI?

Arduino'nun giriş pinlerine bağlı hiçbir şeyin olmadığını görebilirsiniz, ancak bu, belirtilen anahtar açıkken bu pinout'ların mantıksal bir sıfır olabileceği anlamına gelmez.

Bunun yerine, anahtar açıkken arduino'nun mantık 0 ile mantık 1 arasında herhangi bir rastgele değeri alabileceğini ima eder ki bu hiç iyi değildir (buna zıplama denir).

Yani burada istediğimiz, giriş pinine hiçbir şey bağlı olmadığında, yani buton açıkken arduino'nun pinten 0 girişi almasıdır.

Bunu başarmak için pim, direnç aracılığıyla butondan önce doğrudan toprağa bağlanır. Dirençsiz doğrudan toprağa bağlanırsa, pim toprağa kısa devre yapacağı ve büyük miktarda akım akacağı için yanma olasılığı yüksektir. Bunu önlemek için arasına bir direnç bağlanır.

Bu dirence, pim üzerindeki mantığı 0'a çekmesi nedeniyle pulldown direnci olarak adlandırılır. Ve bu işleme debouncing denir.

KOD:

Bu kodu arduino'nuza yazın.

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)
}
}

Çalışma (kodu anlama):

• YÖN KONTROLÜ:

A. Her iki düğmeye de basılmadığında:

Bu durumda arduino her iki pinden 0 giriş alır. Bu durumda kodda belirtildiği gibi, her iki çıkış pini de 0 mantık (LOW) verir:

eğer (x == 0 && y == 0) {digitalWrite (6, DÜŞÜK)

digitalWrite (9, DÜŞÜK)}

Her iki rölenin birincil giriş voltajı sıfır olduğundan, her ikisinin de ikincil terminali normalde kapalı konumda kalır. Böylece motorun her iki terminalinde de sıfır volt vardır ve bu da dönmeye neden olmaz.

B. X düğmesine basıldığında ancak Y'ye basılmadığında:

Bu durumda arduino, pin 4'ten 0 giriş, pin3'ten giriş1 alır. Bu durumda kodda belirtildiği gibi pin 6 mantık 1'de (YÜKSEK), pin 9 ise mantık 0'da (DÜŞÜK) olmalıdır:

eğer (x == 1 && y == 0) {digitalWrite (6, HIGH)

digitalWrite (9, DÜŞÜK)}

Röle # 1'e giriş voltajı yüksek olduğundan, bu rölenin anahtarı normalde açık duruma atılırken 2. röleye giriş voltajı düşüktür, bu rölenin anahtarı normalde kapalı durumda kalır ve motor terminallerinde sırasıyla 12v ve 0v'ye neden olur. motorun tek yönde dönüşü.

C. Y düğmesine basıldığında ancak X'e basılmadığında:

Bu durumda arduino, pin 4'ten 1 giriş, pin3'ten input0 alır. Bu koşuldaki kodda belirtildiği gibi, pin 6 mantık 0'da (DÜŞÜK), mantık 1'de (YÜKSEK) pin 9'da olmalıdır:

eğer (x == 1 && y == 0) {digitalWrite (6, DÜŞÜK)

digitalWrite (9, YÜKSEK)}

Bu sefer # 2 rölesine giriş voltajı yüksek olduğundan, bu rölenin anahtarı normalde açık duruma atılırken # 1 rölesine giriş voltajı düşüktür, bu rölenin anahtarı normalde kapalı durumda kalır ve motorda sırasıyla 12v ve 0v'ye neden olur terminaller, motorun başka bir yönde dönmesine neden olur.

D. Her iki düğmeye de basıldığında:

Bu durumda arduino her iki pinden 1 giriş alır. Bu durumda kodda belirtildiği gibi, her iki çıkış pini de 0 mantık (LOW) verir:

eğer (x == 0 && y == 0) {digitalWrite (6, DÜŞÜK)

digitalWrite (9, DÜŞÜK)}

Her iki rölenin birincil giriş voltajı sıfır olduğundan, her ikisinin de ikincil terminali normalde kapalı konumda kalır. Böylece motorun her iki terminalinde de sıfır volt bulunmakta ve dönüş olmamasına neden olmaktadır.

• HIZ KONTROLÜ:

Diyelim ki potansiyometre, arduino'nun A0 pinine giriş olarak 0 volt verdiğinde böyle bir konumda. Bundan dolayı, arduino bu değeri 0 olarak eşler ve böylece # 10 numaralı pin üzerinde çıkış PWM olarak 0 verir, yani,

analogWrite (10,0) // eşlenen değeri çıktı olarak 10. pin'e yaz

Dolayısıyla mosfet'in kapısı kapalı kaldığı için 0 akım alır ve motor KAPALI konumdadır.

Bununla birlikte, pot döndürüldükçe ve potun değeri değiştikçe, A0 pimindeki voltaj da değişir ve bu değer, orantılı olarak artan PWM genişliğiyle # 10 numaralı pim üzerinde haritalanır, bu da motordan ve mosfet'ten daha fazla akım geçmesine neden olur. tahliye, bu da motorun orantılı olarak daha fazla hız kazanmasına izin verir ve aynı şey tam tersi olur.

Bu nedenle, yukarıdaki tartışmadan, bir Arduino'nun yüksek akım DC motorunun hızını ve yönünü (ileri geri) kontrol etmek için yalnızca belirtilen potu ayarlayarak ve birkaç düğmeyle nasıl kullanılabileceğini görebiliriz.

Güncelleme : Yüksek akım motoru için, bu yüksek güç rölelerini aşağıdaki değiştirilmiş şemada gösterildiği gibi çalıştırmak için lütfen 12V / 30 amp röleleri ve BJT sürücü aşamalarını kullanın:




Önceki: Alarmlı Araç Ters Park Sensörü Devresi Sonraki: Arduino PWM Sinyal Üreteci Devresi