Arduino Motor Shield Eğitimi

Arduino Motor Shield, bir Arduino kullanarak motor yönünü ve hızını kolayca kontrol etmenizi sağlar. Arduino pinlerini basitçe ele almanıza izin vererek, projenize bir motor eklemeyi çok basit hale getirir. Ayrıca, 12v'a kadar ayrı bir güç kaynağına sahip bir motora güç verebilmenizi sağlar. En iyisi, kalkanın bulunması çok kolaydır. Tüm bu nedenlerden dolayı, hızlı prototipleme ve genel deneme için cephanenizde serin bir şey varsa Arduino Motor Shield.

Adım 1: Yükleme

Resmi Arduino motor kalkanının pimleri sadece Arduino Uno Rev.3 ile hizalanacaktır.

Arduino'nun eski sürümleriyle çalışmasını sağlamak için motor kalkanından birkaç pimi kesmeniz gerekecektir. Ancak, bu kesinlikle tavsiye edilmez.

Motor kalkan pimlerini Arduino Uno'nun soketine takın.

Adım 2: Kalkan Özellikleri

Motor kalkanı, iki DC motorun veya 1 step motorun kontrolünü sağlayan 2 kanala sahiptir.

Ayrıca Tinkerkit girişleri, çıkışları ve iletişim hatlarının eklenmesi için 6 başlık vardır. Bu pimlerin kullanımı biraz sınırlıdır ve bu nedenle bu öğreticide yer almamaktadır.

Harici bir güç kaynağı ile motor kalkanı, motor kanalı başına 12V veya 2A'ya (veya tek bir kanala 4A) güvenli bir şekilde besleyebilir.

Arduino'da her zaman kalkan tarafından kullanılan pimler vardır. Bu pimlere hitap ederek başlatılacak bir motor kanalı seçebilir, motor yönünü (polarite) belirleyebilir, motor hızını (PWM) ayarlayabilir, motoru durdurabilir ve çalıştırabilir ve her kanalın akım emilimini izleyebilirsiniz.

Pim dökümü aşağıdaki gibidir:

fonksiyonKanal AKanal B
yönDijital 12Dijital 13
Hız (PWM)Dijital 3Dijital 11
FrenDijital 9Dijital 8
Akım AlgılamaAnalog 0Analog 1

Teknik özellikler hakkında daha fazla bilgi için Arduino sitesindeki motor kalkanının resmi sayfasına göz atın.

3. Adım: Program

Arduino'yu bilgisayarınızın USB bağlantı noktasına takın ve Arduino geliştirme ortamını açın.

Kartın herhangi bir şey yapmasını sağlamak için, üç parametreyi değiştirerek motor kanalını başlatmanız gerekir:

  1. İlk önce motor yönünü (güç kaynağının polaritesi) YÜKSEK veya DÜŞÜK olarak ayarlamanız gerekir.
  2. Ardından motor kanalı için fren pimini DÜŞÜK olarak ayarlayarak ayırmanız gerekir.
  3. Son olarak, motorun hareket etmeye başlaması için, ilgili pime bir PWM komutu (analogWrite) göndererek hızı ayarlamanız gerekir.

Bunların üçünü de yapmazsanız, motor açılmaz.

Aşağıdaki adımlarda, yaygın motor kurulumlarının bazı yaygın örnekleri verilmiştir.

Adım 4: Bir Motor

Arduino Motor Shield'i kullanarak bir motoru kontrol etmek için, önce motorun pozitif (kırmızı) kablosunu motor kalkanındaki Kanal A + terminaline ve motorun toprak (siyah) kablosunu kalkan üzerindeki Kanal A - terminaline takın.

Harici bir güç kaynağı her zaman gerekli değildir, ancak motorun performansını önemli ölçüde artırır. Her zaman bir tane kullanmanız önerilir.

Harici güç kaynağınızı bağlamak için, güç kaynağından gelen pozitif (kırmızı) kabloyu "Vin" terminaline ve toprak (siyah) kabloyu "GND" terminaline bağlayın.

Son olarak, Motor Kalkanı'nı Arduino'ya kontrol etmek için kodu yükleyin.

İşte bir motoru kontrol etmek için kod:
 / ************************************************* ************ Motor Shield 1-Kanal DC Motor Demo by Randy Sarafan Daha fazla bilgi için bkz: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ **** ************************************************** ******* / void setup () {// Kanal Kur Bir pinMode (12, OUTPUT); // Motor Kanalını Başlatır Bir pin pin Modu (9, ÇIKIŞ); // Fren Kanalını Başlatır Bir pim} void loop () {// ileri @ tam hızlı digitalWrite (12, HIGH); // Kanal A digitalWrite (9, LOW) yönünü belirler; // Kanal A için Freni devreden çıkarın analogWrite (3, 255); // Motoru tam hızda (3000) Kanal A'ya döndürür; digitalWrite (9, YÜKSEK); // Kanal A gecikmesi (1000) için Freni devreden çıkarın; // yarım hızda geriye doğru digitalWrite (12, LOW); // Kanal A digitalWrite (9, LOW) 'nin geriye doğru yönünü belirler; // Kanal A için Freni devreden çıkarın analogWrite (3, 123); // Motoru yarım hız gecikmesinde (3000) Kanal A'ya döndürür; digitalWrite (9, YÜKSEK); // Kanal A gecikmesi (1000) için Freni devreden çıkarın; } 

Adım 5: İki Motor

İki motorla arayüz oluşturmak, bir motorla arayüz oluşturmakla aynıdır. Motoru sadece Kanal B'ye takın.

Kod açısından tek fark, ikinci motoru kontrol etmek için ikinci bir kanala geçmeniz gerektiğidir.

İşte iki motoru kontrol etmek için kod:
 / ************************************************* ************ Motor Shield 2-Kanal DC Motor Demo by Randy Sarafan Daha fazla bilgi için bkz: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ **** ************************************************** ******* / void setup () {// Kanal Kur Bir pinMode (12, OUTPUT); // Motor Kanalını Başlatır Bir pin pin Modu (9, ÇIKIŞ); // Fren Kanalı A pinini başlatır // Kanal B pinini Ayarla pinMode (13, OUTPUT); // Motor Kanalı'nı başlatır Bir pin pin Modu (8, ÇIKIŞ); // Fren Kanalı A pinini başlatır void loop () {// Motor A ileri @ tam hızda digitalWrite (12, HIGH); // Kanal A digitalWrite (9, LOW) yönünü belirler; // Kanal A için Freni devreden çıkarın analogWrite (3, 255); // Motoru Kanal A'ya tam hızda döndürür // Motor B yarım hızda geriye doğru digitalWrite (13, LOW); // Kanal B digitalWrite (8, LOW) 'nin geriye doğru yönünü belirler; // Kanal B için Freni devreden çıkarın analogWrite (11, 123); // Motoru yarım hız gecikmesinde (3000) Kanal B'ye döndürür; digitalWrite (9, YÜKSEK); // Kanal A için Freni devreye sokun digitalWrite (9, HIGH); // Kanal B gecikmesi (1000) için Freni devreye alın; // Motor A ileri @ tam hızlı digitalWrite (12, LOW); // Kanal A digitalWrite (9, LOW) 'nin geriye doğru yönünü belirler; // Kanal A için Freni devreden çıkarın analogWrite (3, 123); // Motoru Kanal A'ya yarım hızda döndürür // Motor B ileri @ tam hızda digitalWrite (13, HIGH); // Kanal B digitalWrite (8, LOW) yönünü belirler; // Kanal B için Freni devreden çıkarın analogWrite (11, 255); // Motoru Kanal B'ye tam hızda (3000) çevirir; digitalWrite (9, YÜKSEK); // Kanal A için Freni devreye sokun digitalWrite (9, HIGH); // Kanal B gecikmesi (1000) için Freni devreye alın; } 

Adım 6: Step Motor

Birkaç farklı step motor tipi vardır, ancak bu öğreticide özellikle iki kutuplu step motorları ele alacağız. Bipolar step motorlar tipik olarak iki bobine karşılık gelen 4 pime sahiptir. Bir step kullanmak için, bu iki bobini faz halinde alternatif polarite ile çalıştırmanız gerekir.

Hangi iki pimin tek bir bobini oluşturduğunu anlamak için soketindeki herhangi iki pime bir LED takın ve motor milini döndürün. LED yanıyorsa, bir bobin buldunuz. Diğer iki pim diğer bobini oluşturmalıdır.

İki kutuplu bir motor dönüşü yapmak için:

  1. İlk bobine güç verin.
  2. Sonra ikinci bobine ters polarite ile güç verin.
  3. Sonra ilk bobini ters polarite ile çalıştırın.
  4. Son olarak, ikinci bobine güç verin.

İki kutuplu bir kademenin motor yönünü tersine çevirmek için, ikinci bobinin polaritesini tersine çevirmek yeterlidir.

Step'in bir yönde dönmesini sağlayan kod:
 / ************************************************* ************ Randy Sarafan'dan Motor Kalkanı Step Demosu Daha fazla bilgi için bkz: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ ******** ************************************************** *** / int gecikme uzunluğu = 30; void setup () {// motor yönünü değiştirme pimleri oluşturun pinMode (12, OUTPUT); // CH A - YÜKSEK = ileri ve DÜŞÜK = geriye doğru ??? pinMode (13, ÇIKIŞ); // CH B - YÜKSEK = ileri ve DÜŞÜK = geriye doğru ??? // motor fren pimlerini tespit edin pinMode (9, OUTPUT); // fren (devre dışı) CH A pinModu (8, ÇIKIŞ); // fren (devre dışı) CH B} void loop () {digitalWrite (9, LOW); // ENABLE CH Bir digitalWrite (8, YÜKSEK); // CH B digitalWrite'ı devre dışı bırak (12, YÜKSEK); // CH A yönünün ayarını analogWrite (3, 255); // CH CH gecikmesini taşır (delaylegnth); digitalWrite (9, YÜKSEK); // DISABLE CH Bir digitalWrite (8, DÜŞÜK); // ENABLE CH B digitalWrite (13, DÜŞÜK); // CHB analog Yazısının yönünü ayarlar (11, 255); // CHB gecikmesini taşır (gecikme hizası); digitalWrite (9, DÜŞÜK); // ENABLE CH Bir digitalWrite (8, YÜKSEK); // CH B digitalWrite'ı devre dışı bırak (12, DÜŞÜK); // CH A yönünün ayarını analogWrite (3, 255); // CH CH gecikmesini taşır (delaylegnth); digitalWrite (9, YÜKSEK); // DISABLE CH Bir digitalWrite (8, DÜŞÜK); // ENABLE CH B digitalWrite (13, YÜKSEK); // CHB analog Yazısının yönünü ayarlar (11, 255); // CHB gecikmesini taşır (gecikme hizası); } 

Adımın ters yönde dönmesini sağlayan kod:
 / ************************************************* ************ Randy Sarafan'dan Motor Kalkanı Step Demosu Daha fazla bilgi için bkz: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ ******** ************************************************** *** / int gecikme uzunluğu = 30; void setup () {// motor yönünü değiştirme pimleri oluşturun pinMode (12, OUTPUT); // CH A - YÜKSEK = ileri ve DÜŞÜK = geriye doğru ??? pinMode (13, ÇIKIŞ); // CH B - YÜKSEK = ileri ve DÜŞÜK = geriye doğru ??? // motor fren pimlerini tespit edin pinMode (9, OUTPUT); // fren (devre dışı) CH A pinModu (8, ÇIKIŞ); // fren (devre dışı) CH B} void loop () {digitalWrite (9, LOW); // ENABLE CH Bir digitalWrite (8, YÜKSEK); // CH B digitalWrite'ı devre dışı bırak (12, YÜKSEK); // CH A yönünün ayarını analogWrite (3, 255); // CH CH gecikmesini taşır (delaylegnth); digitalWrite (9, YÜKSEK); // DISABLE CH Bir digitalWrite (8, DÜŞÜK); // ENABLE CH B digitalWrite (13, YÜKSEK); // CHB analog Yazısının yönünü ayarlar (11, 255); // CHB gecikmesini taşır (gecikme hizası); digitalWrite (9, DÜŞÜK); // ENABLE CH Bir digitalWrite (8, YÜKSEK); // CH B digitalWrite'ı devre dışı bırak (12, DÜŞÜK); // CH A yönünün ayarını analogWrite (3, 255); // CH CH gecikmesini taşır (delaylegnth); digitalWrite (9, YÜKSEK); // DISABLE CH Bir digitalWrite (8, DÜŞÜK); // ENABLE CH B digitalWrite (13, DÜŞÜK); // CHB analog Yazısının yönünü ayarlar (11, 255); // CHB gecikmesini taşır (gecikme hizası); } 

İlgi̇li̇ Makaleler