Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Robot Kontrol Gerakan

Komponen dan persediaan

Arduino UNO
× 1
Arduino Nano R3
× 1
Penerima Pemancar RF-433
× 1
HT12 Encoder dan Decoder
× 1
Adafruit Analog Accelerometer:ADXL335
× 1
Pelindung Motor untuk Uno
× 1
Motor DC (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Tentang proyek ini

Robot kontrol gerakan adalah salah satu jenis proyek paling umum yang dibuat oleh penghobi dan siswa untuk memahami dan menerapkan pengetahuan pengontrol mikro dalam proyek fisik dan praktis. Konsep di baliknya sederhana:orientasi telapak tangan mengontrol gerakan mobil robot. Bagaimana cara melakukannya, Anda bertanya? Mari kita hancurkan.

Untuk mendapatkan pemahaman yang baik, kita akan bergerak dengan memahami peran dan fungsi masing-masing komponen dan kemudian menggabungkannya untuk mencapai kinerja yang diinginkan.

1. ADXL335 (Akselerometer)

Fungsi akselerometer sederhana:untuk merasakan orientasi pergelangan tangan. Accelerometer mengukur percepatan termasuk percepatan gravitasi 'g' juga. Dengan demikian kita dapat menggunakan akselerometer untuk merasakan orientasi pergelangan tangan dengan mengukur komponen 'g' pada sumbu tertentu ADXL335 seperti yang ditunjukkan pada gambar di bawah ini:

Karena kemiringan tangan, sudut sumbu X dan/atau Y dengan perubahan vertikal dan karenanya komponen percepatan 'g' bekerja pada mereka juga yang dapat diukur dan dengan demikian menunjukkan orientasi tangan.

ADXL335 dapat mengukur akselerasi hingga 3g dan dihubungkan dengan Arduino dengan menghubungkan pin sumbunya ke pin Analog Arduino. Akselerometer mengeluarkan nilai tegangan yang sebanding dengan percepatan.

Dalam proyek ini, Accelerometer terhubung ke Arduino Nano dan dipasang di telapak tangan. Tegangan output ADXL335 dalam kisaran dari 0 hingga Vcc (tegangan yang diterapkan biasanya 3.3V) dan dibaca oleh pin Analog Arduino. Jadi untuk pengguna, kami mendapatkan nilai dalam rentang 0 hingga 1024 (ADC 10-bit). Orientasi yang berbeda menghasilkan nilai analog yang berbeda untuk setiap sumbu yang kemudian dipetakan ke gerakan robot yang berbeda.

Diagram sirkuit untuk Akselerometer adalah:

Kode uji untuk memahami cara kerja ADXL335 adalah sebagai berikut:

pengaturan batal(){ pinMode(A0,INPUT); //sumbu x terhubung ke A0 pinMode(A1,INPUT); //sumbu y terhubung ke A1 pinMode(A2,INPUT); //sumbu z terhubung ke A2Serial.begin(9600); //Untuk mencetak data ke Serial Monitor}void loop(){ Serial.print(" X="); Serial.println(analogRead(A0)); Serial.print("Y="); Serial.println(analogRead(A1)); Serial.print("Z="); Serial.println(analogRead(A2)); delay(1000);} 

Anda dapat menjalankan program ini untuk melihat nilai yang Anda peroleh untuk gerakan maju, mundur, miring ke kiri dan kanan pada telapak tangan dan pergelangan tangan Anda yang pada akhirnya akan digunakan untuk mengendalikan robot.

2. Pemancar dan Penerima RF-433

Fungsi modul RF sederhana:untuk mengirimkan data perintah dari pergelangan tangan Arduino Nano ke motor yang mengendalikan Arduino Uno. Modul RF menggunakan gelombang Radio pada frekuensi 433hz dan dengan demikian diberi nama RF-433. Mereka menggunakan Amplitude Modulation untuk mengirim data, tetapi tidak masuk ke banyak teknis dan menjaga hal-hal sederhana, mereka akan digunakan untuk mengirimkan perintah ke robot, yaitu:bergerak maju, mundur, kanan atau kiri. Dan jika tidak ada data, diamlah. Mereka bekerja dengan baik hingga jarak 10 meter.

Sekarang untuk memahami cara mengimplementasikan modul RF dalam proyek kita, mari kita kerjakan sirkuit pemancar dan penerima secara berurutan.

Sirkuit Pemancar

Rangkaian pemancar terdiri dari dua bagian:Pemancar RF dan Encoder HT12E. Transmitter terdiri dari satu pin data, satu antena, satu ground dan power. Ini adalah pekerjaan encoder HT12E untuk memberikan data ke pemancar. Encoder terdiri dari 4 pin data yang datanya dapat dikirim. Kami akan menggunakan 4 pin data ini untuk mewakili empat gerakan, TINGGI pada pin ini satu per satu akan mewakili salah satu dari empat gerakan dan RENDAH pada semua mewakili diam.

Diagram sirkuit seperti yang ditunjukkan:

Pin sebelah kiri (A0-A7) adalah pin alamat dan menentukan pasangan yang akan bertukar data (Pemancar dan Penerima yang memiliki alamat yang sama hanya akan berbagi data). Kami akan menetapkan A0-A7 sebagai RENDAH (Membumi).

Pin Data In terhubung ke pin digital Arduino (dalam proyek ini 6 hingga 9) dan mereka akan menampilkan data perintah sebagai:

Perintah Pin Digital (Saat TINGGI)

9 Maju

10 Terbalik

11 Kiri

12 Kanan

Kami akan menulis digital pin digital sebagai TINGGI berdasarkan masukan dari ADXL335 untuk melakukan gerakan yang diperlukan.

Sirkuit Penerima

Sirkuit penerima benar-benar mirip dengan sirkuit pemancar seperti yang ditunjukkan, tetapi pin data bukan sebagai output dari Arduino, dalam hal ini pin tersebut akan dibaca sebagai input untuk menerima perintah Arduino Uno dan menjalankan motor sesuai kebutuhan:

Untuk menyederhanakan, Anda dapat menghubungkan LED secara seri pada pin 17 dengan resistor 1K alih-alih rangkaian kompleks seperti yang ditunjukkan untuk menunjukkan koneksi yang benar dengan pemancar.

3. SHIELD MOTOR

Pelindung motor adalah bagian yang paling mudah ditangani karena ketersediaan perpustakaan Adafruit AFMotor, tautan:- https://github.com/adafruit/Adafruit-Motor-Shield-library

Download dan salin library di folder library Arduino untuk dapat dimasukkan ke dalam sketsa program.

Contoh perpustakaan AFMotor adalah seperti yang diberikan:

#include AF_DCMotor motor(4);//Pasang kabel motor ke titik Motor 4 pada shieldvoid setup() { Serial.begin(9600); // set up Serial library pada 9600 bps Serial.println("Motor test!"); // hidupkan motor motor.setSpeed(200); motor.run(RELEASE);}void loop() { uint8_t i; Serial.print("centang"); motor.run(MAJU); for (i=0; i<255; i++) { motor.setSpeed(i); delay(10);} for (i=255; i!=0; i--) { motor.setSpeed(i); delay(10);} Serial.print("tok"); motor.run(Mundur); for (i=0; i<255; i++) { motor.setSpeed(i); delay(10);} for (i=255; i!=0; i--) { motor.setSpeed(i); delay(10);} Serial.print("tech"); motor.run(LEPAS); delay(1000); 

4. Menggabungkan Semuanya

Bagian terakhir dan terakhir termasuk menggabungkan semua bagian di atas menjadi satu untuk membentuk robot lengkap yang mengikuti perintah tangan!

Karena pelindung motor menggunakan hampir semua pin digital, kami akan menggunakan pin analog Arduino Uno untuk membaca Data Penerima. Diagram Sirkuit terakhir adalah seperti yang diberikan:

Pelindung motor menangani koneksi ke motor. Hubungkan baterai 9V ke input daya ke pelindung.

CATATAN:Saya pribadi lebih suka menghubungkan 2 atau bahkan baterai 3,9V secara paralel ke input daya pelindung untuk menyediakan daya yang cukup untuk menjalankan keempat motor. Saya telah menghubungkan keempat motor dalam kelompok 2 (motor dengan sisi yang sama dihubungkan secara paralel bersama-sama dan karenanya hanya memerlukan motor titik 3 dan 4 untuk berjalan).

Kode Terakhir

Untuk Arduino Nano:

int x_axis =0;int y_axis =0;int maju =9;int mundur =10;int kanan =11;int kiri =12;void setup(){ pinMode(A0, INPUT); //X-Axis pinMode(A3, OUTPUT); //Y-Axis pinMode(maju, OUTPUT); //HIGH untuk bergerak maju pinMode(mundur, OUTPUT); //HIGH untuk pindah ke Backward pinMode(kanan, OUTPUT); //HIGH untuk memindahkan PinMode Kanan (kiri, OUTPUT); //HIGH untuk memindahkan Left Serial.begin(9600);}void loop(){ x_axis =analogRead(A0); sumbu y =analogBaca(A3); Serial.print("X ="); Serial.println(x_axis); Serial.print("Y ="); Serial.println(sumbu y_); if (sumbu y_>=390) { Serial.println("Maju"); digitalWrite(maju, TINGGI); } else { if (sumbu y <=310) { Serial.println("KEMBALI"); digitalWrite(mundur, TINGGI); } else { if (x_axis>=380) { Serial.println("KANAN"); digitalWrite(kanan, TINGGI); } else { if (sumbu x_<=320) { Serial.println("KIRI"); digitalWrite(kiri, TINGGI); } Serial.println(" "); } } } penundaan(200); if (sumbu x_> 320 &&sumbu x <380 &&sumbu y> 310 &&sumbu y <390) { digitalWrite(maju, RENDAH); digitalWrite(mundur, RENDAH); digitalWrite(kanan, RENDAH); digitalWrite(kiri, RENDAH); }} 

Untuk Arduino Uno:

#includeAF_DCMotor motor_right(3);AF_DCMotor motor_left(4);int forward=0;int backward=0;int right=0;int left=0;void setup() { pinMode(A2,INPUT); pinMode(A3,INPUT); pinMode(A4,INPUT); pinMode(A5,INPUT); Serial.begin(9600); motor_right.setSpeed(255); motor_left.setSpeed(255); motor_right.run(LEPAS); motor_left.run(RELEASE);}void loop() { forward=digitalRead(A0); mundur=digitalRead(A1); kanan=digitalBaca(A2); kiri=digitalBaca(A3); if(maju==TINGGI) { motor_right.run(FOWARD); motor_left.run(FOWARD); Serial.println("Teruskan"); } if(mundur==TINGGI) { motor_right.run(Mundur); motor_left.run(BACKWARD); Serial.println("Terbalik"); } if(kanan==TINGGI) { motor_right.run(FOWARD); motor_left.run(LEPAS); Serial.println("KANAN"); } if(kiri==TINGGI) { motor_right.run(LEPAS); motor_left.run(FOWARD); Serial.println("KIRI"); } if(kiri==RENDAH&&kanan==RENDAH&&maju==RENDAH&&mundur==RENDAH) { motor_right.run(LEPAS); motor_left.run(LEPAS); } delay(100);} 

Foto dan videonya ada di sini:


Proses manufaktur

  1. Kontrol Penerima Koin dengan Arduino
  2. Pusat Kontrol Arduino
  3. Arduino dengan Bluetooth untuk Mengontrol LED!
  4. Robot Pengikut Baris
  5. Kalkulator UNO sederhana
  6. Kontrol Humidifier Arduino
  7. Robot yang Dikendalikan Bicara
  8. Kegigihan Visi
  9. Kontrol Mobil dengan Arduino Uno dan Bluetooth
  10. 25 kHz 4 Pin Kontrol Kipas PWM dengan Arduino Uno