Arduino Motor Shield Tutorial

Perisai Motor Arduino membolehkan anda mengawal arah dan kelajuan motor dengan mudah menggunakan Arduino. Dengan membenarkan anda untuk hanya menangani pin Arduino, ia menjadikannya sangat mudah untuk memasukkan motor ke dalam projek anda. Ia juga membolehkan anda untuk kuasa motor dengan bekalan kuasa yang berasingan sehingga 12v. Yang terbaik, perisai sangat mudah dicari. Atas semua sebab ini, Perisai Motor Arduino jika sedikit sejuk untuk berada di arsenal anda untuk prototaip cepat, dan uji kaji umum.

Langkah 1: Pasang

Pig pelindung motor Arduino rasmi hanya akan diselaraskan dengan Arduino Uno Rev 3.

Untuk menjadikannya berfungsi dengan versi lama Arduino, anda perlu memotong beberapa pin dari perisai motor. Walau bagaimanapun, ini tidak, sama sekali, disyorkan.

Masukkan pin perisai motor ke soket Arduino Uno.

Langkah 2: Ciri Perisai

Perisai motor mempunyai 2 saluran, yang membolehkan kawalan dua motor DC, atau 1 motor stepper.

Ia juga mempunyai 6 tajuk untuk lampiran input, output, dan saluran komunikasi Tinkerkit. Penggunaan pin ini agak terhad, dan untuk itu tidak dilindungi dalam tutorial ini.

Dengan bekalan kuasa luaran, perisai motor dengan selamat boleh membekalkan sehingga 12V dan 2A setiap saluran motor (atau 4A ke satu saluran).

Terdapat pin pada Arduino yang sentiasa digunakan oleh perisai. Dengan menangani pin ini, anda boleh memilih saluran motor untuk memulakan, menentukan arah motor (polariti), menetapkan kelajuan motor (PWM), berhenti dan memulakan motor, dan memantau penyerapan semasa setiap saluran.

Pecahan pin adalah seperti berikut:

FungsiSaluran ASaluran B
ArahDigital 12Digital 13
Kelajuan (PWM)Digital 3Digital 11
BrekDigital 9Digital 8
Pengesanan SemasaAnalog 0Analog 1

Untuk mendapatkan maklumat lanjut mengenai spesifikasi teknikal, lihat halaman rasmi perisai motor di tapak Arduino.

Langkah 3: Program

Palamkan Arduino ke dalam port USB komputer anda dan buka persekitaran pembangunan Arduino.

Untuk mendapatkan papan untuk melakukan apa-apa, anda perlu memulakan saluran motor dengan menogol tiga parameter:

  1. Pertama anda perlu menetapkan arah motor (polariti bekalan kuasa) dengan menetapkannya TINGGI atau LOW.
  2. Kemudian anda perlu menanggalkan pin brek untuk saluran motor dengan menetapkannya kepada LOW.
  3. Akhir sekali, untuk mendapatkan motor untuk mula bergerak, anda perlu menetapkan kelajuan dengan menghantar arahan PWM (analogWrite) ke pin yang sesuai.

Jika anda tidak melakukan ketiga-tiga perkara ini, motor tidak akan menyala.

Dalam langkah-langkah berikut, terdapat beberapa contoh biasa mengenai persediaan motor biasa.

Langkah 4: Satu Motor

Untuk mengawal motor dengan menggunakan Perisai Motor Arduino, pasangkan kawat positif (merah) motor ke terminal Saluran A pada perisai motor dan kawat tanah (hitam) ke terminal A Channel pada perisai.

Bekalan kuasa luar tidak semestinya diperlukan, tetapi ia secara drastik meningkatkan prestasi motor. Adalah disyorkan bahawa anda sentiasa menggunakannya.

Untuk menyambungkan bekalan kuasa luaran anda, sambungkan dawai positif (merah) dari bekalan kuasa ke terminal "Vin", dan wayar (hitam) tanah ke terminal "GND".

Akhir sekali, muat naik kod untuk mengawal Perisai Motor ke Arduino.

Berikut ialah kod untuk mengawal satu motor:
 / ************************************************* ************ Motor Shield 1-Channel DC Motor Demo oleh Randy Sarafan Untuk maklumat lebih lanjut lihat: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ **** ************************************************** ******* / void setup () {// Setup Channel A pinMode (12, OUTPUT); // Memulakan Saluran Motor Pinpin pin (9, OUTPUT); // Memulakan Saluran Brek A pin} void loop () {// forward @ full speed digitalWrite (12, HIGH); // Menetapkan arah hadapan Saluran A digitalWrite (9, LOW); / / Menghentikan Brake untuk Saluran A analogWrite (3, 255); / / Putar motor di Channel A dengan kelewatan laju penuh (3000); digitalWrite (9, TINGGI); // Kurangkan Brek untuk Saluran A delay (1000); // mundur @ separuh kelajuan digitalWrite (12, LOW); // Menetapkan arah mundur Channel A digitalWrite (9, LOW); / / Menghentikan Brake untuk Saluran A analogWrite (3, 123); / / Putar motor di Saluran A dengan kelewatan setengah kelajuan (3000); digitalWrite (9, TINGGI); // Kurangkan Brek untuk Saluran A delay (1000); } 

Langkah 5: Dua Motors

Memasang dengan dua motor cukup sama dengan interfacing dengan satu motor. Cabut motor ke Channel B.

Satu-satunya perbezaan kod yang bijak ialah anda perlu melibatkan saluran kedua untuk mengawal motor kedua.

Berikut adalah kod untuk mengawal dua motor:
 / ************************************************* ************ Motor Shield 2-Channel DC Motor Demo oleh Randy Sarafan Untuk maklumat lebih lanjut lihat: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ **** ************************************************** ******* / void setup () {// Setup Channel A pinMode (12, OUTPUT); // Memulakan Saluran Motor Pinpin pin (9, OUTPUT); // Memulakan Saluran Brek Pin // Penyediaan Saluran B pinMode (13, OUTPUT); / // Memulakan Saluran Motor Pinpin pin (8, OUTPUT); // Memulakan Saluran Brek A pin} kekosongan gelung () {// Motor A forward @ speed digitalWrite (12, HIGH); // Menetapkan arah hadapan Saluran A digitalWrite (9, LOW); / / Menghentikan Brake untuk Saluran A analogWrite (3, 255); / // Putar motor di Saluran A dengan kelajuan penuh // Motor B mundur @ digitalwrite setengah kelajuan (13, LOW); // Menetapkan arah mundur saluran Digital B Channel (8, LOW); / / Menghentikan Brake bagi analogWrite Channel B (11, 123); / / Putar motor di Channel B dengan kelewatan setengah kelajuan (3000); digitalWrite (9, TINGGI); // Terlibat Brek untuk Saluran A digitalWrite (9, TINGGI); // Bawa Brek untuk kelewatan Channel B (1000); / Motor Motor A forward @ speed digitalWrite (12, LOW); // Menetapkan arah mundur Channel A digitalWrite (9, LOW); / / Menghentikan Brake untuk Saluran A analogWrite (3, 123); / / Putar motor di Saluran A pada separuh kelajuan // Motor B ke hadapan @ digitalWrite kelajuan penuh (13, TINGGI); // Menetapkan hala tuju Digital B ChannelWith (8, LOW); / // Menghentikan Brake bagi analogWrite Channel B (11, 255); / / Putar motor di Channel B dengan keterlambatan laju penuh (3000); digitalWrite (9, TINGGI); // Terlibat Brek untuk Saluran A digitalWrite (9, TINGGI); // Bawa Brek untuk kelewatan Channel B (1000); } 

Langkah 6: Stepper Motor

Terdapat beberapa jenis motor stepper, tetapi dalam tutorial ini, kami akan secara khusus menangani motor bipolar stepper. Motosikal stepper bipolar biasanya mempunyai 4 pin, yang sesuai dengan dua gegelung. Untuk menggunakan stepper, anda perlu menggerakkan kedua gegelung ini dalam fasa dengan polariti bergantian.

Untuk mengetahui dua pin yang membentuk gegelung tunggal, masukkan LED ke mana-mana dua pin pada soketnya dan putar batang motor. Jika lampu LED menyala, anda mendapati satu gegelung. Dua pin yang lain perlu membuat gegelung yang lain.

Untuk membuat putaran motor bipolar:

  1. Kuasa gegelung pertama.
  2. Kuasa seterusnya gegelung kedua dengan kekutuban terbalik.
  3. Kemudian kuasa gegelung pertama dengan kekutuban terbalik.
  4. Akhir sekali, kuasa gegelung kedua.

Untuk membalikkan arah motor dari stepper bipolar, hanya sebaliknya polaritas gegelung kedua.

Berikut ialah kod untuk membuat putaran stepper dalam satu arah:
 / ************************************************* ************ Motor Shield Stepper Demo oleh Randy Sarafan Untuk maklumat lebih lanjut lihat: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ ******** ************************************************** *** / int delaylegnth = 30; void setup () {// establish motor pin toggle pinMode (12, OUTPUT); // CH A - TINGGI = ke hadapan dan LOW = mundur ??? pinMode (13, OUTPUT); // CH B - TINGGI = ke depan dan LOW = ke belakang ??? // menubuhkan pin brek motor pinMode (9, OUTPUT); // brek (matikan) CH PinMode (8, OUTPUT); // brek (matikan) CH B} void loop () {digitalWrite (9, LOW); / / ENABLE CH A digitalWrite (8, HIGH); // DISABLE CH B digitalWrite (12, HIGH); // Menetapkan arah CH Sebuah analogWrite (3, 255); // Pindah CH Kelewatan (delaylegnth); digitalWrite (9, TINGGI); // DISABLE CH A digitalWrite (8, LOW); / / ENABLE CH B digitalWrite (13, LOW); / / Menetapkan hala tuju CH B analogWrite (11, 255); // Mengalihkan kelewatan CH B (delaylegnth); digitalWrite (9, LOW); / / ENABLE CH A digitalWrite (8, HIGH); / // DISABLE CH B digitalWrite (12, LOW); // Menetapkan arah CH Sebuah analogWrite (3, 255); // Pindah CH Kelewatan (delaylegnth); digitalWrite (9, TINGGI); // DISABLE CH A digitalWrite (8, LOW); / / ENABLE CH B digitalWrite (13, HIGH); / / Menetapkan hala tuju CH B analogWrite (11, 255); // Mengalihkan kelewatan CH B (delaylegnth); } 

Berikut ialah kod untuk membuat putaran stepper ke arah yang bertentangan:
 / ************************************************* ************ Motor Shield Stepper Demo oleh Randy Sarafan Untuk maklumat lebih lanjut lihat: //www.instructables.com/id/Arduino-Motor-Shield-Tutorial/ ******** ************************************************** *** / int delaylegnth = 30; void setup () {// establish motor pin toggle pinMode (12, OUTPUT); // CH A - TINGGI = ke hadapan dan LOW = mundur ??? pinMode (13, OUTPUT); // CH B - TINGGI = ke depan dan LOW = ke belakang ??? // menubuhkan pin brek motor pinMode (9, OUTPUT); // brek (matikan) CH PinMode (8, OUTPUT); // brek (matikan) CH B} void loop () {digitalWrite (9, LOW); / / ENABLE CH A digitalWrite (8, HIGH); // DISABLE CH B digitalWrite (12, HIGH); // Menetapkan arah CH Sebuah analogWrite (3, 255); // Pindah CH Kelewatan (delaylegnth); digitalWrite (9, TINGGI); // DISABLE CH A digitalWrite (8, LOW); / / ENABLE CH B digitalWrite (13, HIGH); / / Menetapkan hala tuju CH B analogWrite (11, 255); // Mengalihkan kelewatan CH B (delaylegnth); digitalWrite (9, LOW); / / ENABLE CH A digitalWrite (8, HIGH); / // DISABLE CH B digitalWrite (12, LOW); // Menetapkan arah CH Sebuah analogWrite (3, 255); // Pindah CH Kelewatan (delaylegnth); digitalWrite (9, TINGGI); // DISABLE CH A digitalWrite (8, LOW); / / ENABLE CH B digitalWrite (13, LOW); / / Menetapkan hala tuju CH B analogWrite (11, 255); // Mengalihkan kelewatan CH B (delaylegnth); } 

Artikel Berkaitan