Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Arduino
120 min
Share

كيف تتحكم فى محرك سيرفو باستخدام حساس التسارع؟

حساسات التسارع أو Accelerometers هي أجهزة متقدمة تُستخدم لقياس التسارع الخطي والزاوى في اتجاهات متعددة. يتم توظيف هذه الحساسات في العديد من التطبيقات التي تتطلب استشعارًا دقيقًا للحركة، يُعد هذا النوع من التحكم ضروريًا في الروبوتات وأنظمة الطائرات بدون طيار والأجهزة الذكية التي تحتاج إلى استجابة فورية ودقيقة للتغيرات في الحركة.

Project Video

Overview

في هذا المشروع، سنستخدم حساس التسارع MPU6050 للتحكم في حركة محرك سيرفو، حيث يقوم حساس التسارع بقياس زاوية ميله ويرسلها إلى لوحة الأردوينو، ثم تقوم لوحة الأردوينو بضبط زاوية دوران محرك السيرفو لتطابق زاوية ميل حساس التسارع MPU6050.

Getting the Items

Arduino Uno R3 (Voltaat Version)
Get Item
3 Axis Gyroscope & Accelerometer Module (MPU-6050)
Get Item
SG90 Servo -Positional Rotation
Get Item
Half-size Breadboard
Get Item
Jumper Wires - Male to Male (40 Pack)
Get Item
Jumper Wires – Male to Female (40 Pack)
Get Item

Steps

Wiring it Up

قم بتوصيل الأسلاك بين لوحة الأردوينو، وحساس التسارع، ومحرك السيرفو، كما هو موضح في الصورة التالية :

التوصيلات من الاردوينو الى لوحة التجارب  :

•منفذ ال 5 فولت ← المنافذ الموجبة بلوحة التجارب

•منفذ الجراوند ← المنافذ السالبة بلوحة التجارب

التوصيلات من محرك السيرفو :

•الطرف الموجب من محرك السيرفو ← المنافذ الموجبة بلوحة التجارب

•الطرف السالب من محرك السيرفو ← المنافذ السالبة بلوحة التجارب

•طرف الاشارة من محرك السيرفو ← منفذ رقم 3 فى لوحة الاردوينو

التوصيلات من حساس التسارع MPU6050 :

•منفذ VCC للحساس ← المنافذ الموجبة بلوحة التجارب

•منقذ GND للحساس ← المنافذ السالبة بلوحة التجارب

•منفذ SCL للحساس ← منفذ رقم A5 للاردوينو

•منفذ SDA للحساس ← منفذ رقم A4 للاردوينو

Coding

/*

Voltaat learn (http://learn.voltaat.com/)

Tutorial: How to control a servo motor using the acceleration sensor?

The purpose of this sketch is to use the MPU6050 acceleration sensor to

control the movement of the servo motor. The acceleration sensor measures

its inclination angle and sends it to the Arduino board. The Arduino board

then adjusts the rotation angle of the servo motor to match the inclination

angle of the MPU6050 accelerometer.

Connections from the Arduino to the breadboard:

• Arduino GND pin → Breadboard ground line

• Arduino 5V pin → Breadboard 5V line

Connections from the servo motor:

• Servo GND pin → Breadboard ground line

• Servo VCC pin → Breadboard 5V line

• Servo signal pin → Arduino pin 3

‍Connections from the MPU6050:

• MPU6050 VCC pin (+ pin) → Arduino 5V pin  

• MPU6050 GND pin (- pin) → Arduino GND pin

• MPU6050 SCL pin → Arduino pin A5  

• MPU6050 SDA pin → Arduino pin A4  

*/

#include <Adafruit_MPU6050.h>

#include <Adafruit_Sensor.h>

#include <Wire.h>

#include <Servo.h>

Servo servo;

Adafruit_MPU6050 srituhobby;

void setup(void) {

  servo.attach(3);

  Wire.begin();

  srituhobby.begin();

  servo.write(0);

  srituhobby.setAccelerometerRange(MPU6050_RANGE_8_G);//2_G,4_G,8_G,16_G

  srituhobby.setGyroRange(MPU6050_RANGE_500_DEG);//250,500,1000,2000

  srituhobby.setFilterBandwidth(MPU6050_BAND_21_HZ);

  delay(100);

}

void loop() {

  /* Get new sensor events with the readings */

  sensors_event_t a, g, temp;

  srituhobby.getEvent(&a, &g, &temp);

  int value = a.acceleration.y;

  value = map(value,  -10, 10, 180, 0);

  servo.write(value);  

  //delay(10);

  delay(10);

}

Testing it Out

بعد رفع الكود البرمجي، قم بتحريك حساس التسارع حول محوره، وستجد أن لوحة الأردوينو تقوم بضبط زاوية دوران محرك السيرفو لتطابق زاوية دوران حساس التسارع MPU6050.

Resources

No items found.