نمایش نتایج: از 1 به 10 از 110
Like Tree17 لایک

موضوع: سنسور جایرو و شتاب سنج سه محوره mpu6050 GY-521

Hybrid View

  1. #1
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط farshad123456 نمایش پست ها
    با گراند روشن میشه!


    پس با همون کدی که زدیم باید روشن بشه که
    مشکلش چیه ؟
    یه بار دیگه تست کن

  2. #2
    Junior Member
    تاریخ عضویت
    Oct 2015
    نوشته ها
    20
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    پس با همون کدی که زدیم باید روشن بشه که
    مشکلش چیه ؟
    یه بار دیگه تست کن
    خیلی ممنوم...وقت شما هم گرفتم
    نمیدونم مشکل چیه؟؟چندمرتبه تست کردم
    حتی ولتاژ خروجی پایه 3دیجیتال هم چک کردم...درسته 5ولت
    شماره پایه هم تغییردادم...بازم رله روشن نشد
    حتی کد هم بصورت if(accel_y_scalled<90 عوض کردم.... تا زاویه های کمتر از 90درجه جواب بده.... ولی رله روشن نمیشه!
    با جایرو چجوری میتونم سروو را کنترل کنم؟؟ که مثلا وقتی زاویه کمتر از 90 میشه...حرکت کنه!

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط farshad123456 نمایش پست ها
    خیلی ممنوم...وقت شما هم گرفتم
    نمیدونم مشکل چیه؟؟چندمرتبه تست کردم
    حتی ولتاژ خروجی پایه 3دیجیتال هم چک کردم...درسته 5ولت
    شماره پایه هم تغییردادم...بازم رله روشن نشد
    حتی کد هم بصورت if(accel_y_scalled<90 عوض کردم.... تا زاویه های کمتر از 90درجه جواب بده.... ولی رله روشن نمیشه!
    با جایرو چجوری میتونم سروو را کنترل کنم؟؟ که مثلا وقتی زاویه کمتر از 90 میشه...حرکت کنه!

    یه کاری کن کدتو کامل برای من بفرست ببینم چه کردی!
    همون if ای که نوشتی فقط نکتش اینه به جای صدازدن رله باید به سروو فرمان بدی

  4. #4
    Junior Member
    تاریخ عضویت
    Oct 2015
    نوشته ها
    20
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    یه کاری کن کدتو کامل برای من بفرست ببینم چه کردی!
    همون if ای که نوشتی فقط نکتش اینه به جای صدازدن رله باید به سروو فرمان بدی
    مرسی
    من این قسمت را اضافه کردم
    int relaypin=3;
    if(accel_y_scalled<90) digitalWrite (relaypin,LOW);
    else digitalWrite (relaypin,HIGH);

    اینم کد:
    /* Author = helscream (Omer Ikram ul Haq)
    Last edit date = 2014-10-08
    Website: Arduino with MPU6050 and angle calculation – HobbyLogs
    Location: Pakistan
    Ver: 0.1 beta --- Start
    Ver: 0.2 beta --- Bug fixed for calculating "angle_y_accel" and "angle_x_accel" in "Gyro_header.ino" file
    */


    #include <Wire.h>
    #include "gyro_accel.h"
    // Defining constants
    #define dt 20 // time difference in milli seconds
    #define rad2degree 57.3 // Radian to degree conversion
    #define Filter_gain 0.95 // e.g. angle = angle_gyro*Filter_gain + angle_accel*(1-Filter_gain)
    // ************************************************** *******************
    // Global Variables
    // ************************************************** *******************
    unsigned long t=0; // Time Variables
    float angle_x_gyro=0,angle_y_gyro=0,angle_z_gyro=0,angle _x_accel=0,angle_y_accel=0,angle_z_accel=0,angle_x =0,angle_y=0,angle_z=0;
    // ************************************************** *******************
    // Main Code
    void setup(){
    Serial.begin(115200);
    Wire.begin();
    MPU6050_ResetWake();
    MPU6050_SetGains(0,1);// Setting the lows scale
    MPU6050_SetDLPF(0); // Setting the DLPF to inf Bandwidth for calibration
    MPU6050_OffsetCal();
    MPU6050_SetDLPF(6); // Setting the DLPF to lowest Bandwidth



    Serial.print("gyro_x_scalled");
    Serial.print("\tgyro_y_scalled");
    Serial.print("\tgyro_z_scalled");

    Serial.print("\taccel_x_scalled");
    Serial.print("\taccel_y_scalled");
    Serial.print("\taccel_z_scalled");

    Serial.print("\tangle_x_gyro");
    Serial.print("\tangle_y_gyro");
    Serial.print("\tangle_z_gyro");

    Serial.print("\tangle_x_accel");
    Serial.print("\tangle_y_accel");
    Serial.print("\tangle_z_accel");

    Serial.print("\tangle_x");
    Serial.print("\tangle_y");
    Serial.print("\tangle_z");

    Serial.println("\tLoad");



    t=millis();
    }
    void loop(){
    t=millis();

    MPU6050_ReadData();

    angle_x_gyro = (gyro_x_scalled*((float)dt/1000)+angle_x);



    angle_y_gyro = (gyro_y_scalled*((float)dt/1000)+angle_y);
    int relaypin=3;
    if(accel_y_scalled<90) digitalWrite (relaypin,LOW);
    else digitalWrite (relaypin,HIGH);

    angle_z_gyro = (gyro_z_scalled*((float)dt/1000)+angle_z);



    angle_z_accel = atan(accel_z_scalled/(sqrt(accel_y_scalled*accel_y_scalled+accel_x_scal led*accel_x_scalled)))*(float)rad2degree;
    angle_y_accel = -atan(accel_y_scalled/(sqrt(accel_y_scalled*accel_y_scalled+accel_z_scal led*accel_z_scalled)))*(float)rad2degree;
    angle_x_accel = atan(accel_x_scalled/(sqrt(accel_x_scalled*accel_x_scalled+accel_z_scal led*accel_z_scalled)))*(float)rad2degree;

    angle_x = Filter_gain*angle_x_gyro+(1-Filter_gain)*angle_x_accel;
    angle_y = Filter_gain*angle_y_gyro+(1-Filter_gain)*angle_y_accel;
    angle_z = Filter_gain*angle_z_gyro+(1-Filter_gain)*angle_z_accel;


    Serial.print(gyro_x_scalled);
    Serial.print("\t");
    Serial.print(gyro_y_scalled);
    Serial.print("\t");
    Serial.print(gyro_z_scalled);
    Serial.print("\t");


    Serial.print(accel_x_scalled);
    Serial.print("\t");
    Serial.print(accel_y_scalled);
    Serial.print("\t");
    Serial.print(accel_z_scalled);
    Serial.print("\t");

    Serial.print(angle_x_gyro);
    Serial.print("\t");
    Serial.print(angle_y_gyro);
    Serial.print("\t");
    Serial.print(angle_z_gyro);
    Serial.print("\t");

    Serial.print(angle_x_accel);
    Serial.print("\t");
    Serial.print(angle_y_accel);
    Serial.print("\t");
    Serial.print(angle_z_accel);
    Serial.print("\t");


    Serial.print(angle_x);
    Serial.print("\t");
    Serial.print(angle_y);
    Serial.print("\t");
    Serial.print(angle_z);
    Serial.print("\t");



    Serial.println(((float)(millis()-t)/(float)dt)*100);


    while((millis()-t) < dt){ // Making sure the cycle time is equal to dt
    // Do nothing
    }


    }




  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط farshad123456 نمایش پست ها
    مرسی
    من این قسمت را اضافه کردم
    int relaypin=3;
    if(accel_y_scalled<90) digitalWrite (relaypin,LOW);
    else digitalWrite (relaypin,HIGH);

    اینم کد:

    اینو تست کن :

    کد:
    /* Author = helscream (Omer Ikram ul Haq)
      Last edit date = 2014-10-08
      Website: Arduino with MPU6050 and angle calculation – HobbyLogs
      Location: Pakistan
      Ver: 0.1 beta --- Start
      Ver: 0.2 beta --- Bug fixed for calculating "angle_y_accel" and "angle_x_accel" in "Gyro_header.ino" file
    */
    
    
    
    
    #include <Wire.h>
    #include "gyro_accel.h"
    // Defining constants
    #define dt 20 // time difference in milli seconds
    #define rad2degree 57.3 // Radian to degree conversion
    #define Filter_gain 0.95 // e.g. angle = angle_gyro*Filter_gain + angle_accel*(1-Filter_gain)
    // ************************************************** *******************
    // Global Variables
    // ************************************************** *******************
    unsigned long t = 0; // Time Variables
    float angle_x_gyro = 0, angle_y_gyro = 0, angle_z_gyro = 0, angle _x_accel = 0, angle_y_accel = 0, angle_z_accel = 0, angle_x = 0, angle_y = 0, angle_z = 0;
    // ************************************************** *******************
    // Main Code
    void setup() {
      Serial.begin(115200);
      Wire.begin();
      MPU6050_ResetWake();
      MPU6050_SetGains(0, 1); // Setting the lows scale
      MPU6050_SetDLPF(0); // Setting the DLPF to inf Bandwidth for calibration
      MPU6050_OffsetCal();
      MPU6050_SetDLPF(6); // Setting the DLPF to lowest Bandwidth
    
    
      Serial.print("gyro_x_scalled");
      Serial.print("\tgyro_y_scalled");
      Serial.print("\tgyro_z_scalled");
      Serial.print("\taccel_x_scalled");
      Serial.print("\taccel_y_scalled");
      Serial.print("\taccel_z_scalled");
      Serial.print("\tangle_x_gyro");
      Serial.print("\tangle_y_gyro");
      Serial.print("\tangle_z_gyro");
      Serial.print("\tangle_x_accel");
      Serial.print("\tangle_y_accel");
      Serial.print("\tangle_z_accel");
      Serial.print("\tangle_x");
      Serial.print("\tangle_y");
      Serial.print("\tangle_z");
      Serial.println("\tLoad");
      t = millis();
    }
    
    
    void loop() {
      int relaypin = 3;
      t = millis();
      MPU6050_ReadData();
      angle_x_gyro = (gyro_x_scalled * ((float)dt / 1000) + angle_x);
      angle_y_gyro = (gyro_y_scalled * ((float)dt / 1000) + angle_y);
      
      if (angle_y_gyro < 90) digitalWrite (relaypin, LOW);
      else digitalWrite (relaypin, HIGH);
    
    
      angle_z_gyro = (gyro_z_scalled * ((float)dt / 1000) + angle_z);
    
    
      angle_z_accel = atan(accel_z_scalled / (sqrt(accel_y_scalled * accel_y_scalled + accel_x_scal led * accel_x_scalled))) * (float)rad2degree;
      angle_y_accel = -atan(accel_y_scalled / (sqrt(accel_y_scalled * accel_y_scalled + accel_z_scal led * accel_z_scalled))) * (float)rad2degree;
      angle_x_accel = atan(accel_x_scalled / (sqrt(accel_x_scalled * accel_x_scalled + accel_z_scal led * accel_z_scalled))) * (float)rad2degree;
    
    
      angle_x = Filter_gain * angle_x_gyro + (1 - Filter_gain) * angle_x_accel;
      angle_y = Filter_gain * angle_y_gyro + (1 - Filter_gain) * angle_y_accel;
      angle_z = Filter_gain * angle_z_gyro + (1 - Filter_gain) * angle_z_accel;
    
    
      Serial.print(gyro_x_scalled);
      Serial.print("\t");
      Serial.print(gyro_y_scalled);
      Serial.print("\t");
      Serial.print(gyro_z_scalled);
      Serial.print("\t");
    
    
    
    
      Serial.print(accel_x_scalled);
      Serial.print("\t");
      Serial.print(accel_y_scalled);
      Serial.print("\t");
      Serial.print(accel_z_scalled);
      Serial.print("\t");
    
    
      Serial.print(angle_x_gyro);
      Serial.print("\t");
      Serial.print(angle_y_gyro);
      Serial.print("\t");
      Serial.print(angle_z_gyro);
      Serial.print("\t");
    
    
      Serial.print(angle_x_accel);
      Serial.print("\t");
      Serial.print(angle_y_accel);
      Serial.print("\t");
      Serial.print(angle_z_accel);
      Serial.print("\t");
    
    
      Serial.print(angle_x);
      Serial.print("\t");
      Serial.print(angle_y);
      Serial.print("\t");
      Serial.print(angle_z);
      Serial.print("\t");
    
    
      Serial.println(((float)(millis() - t) / (float)dt) * 100);
    
    
    
    
      while ((millis() - t) < dt) { // Making sure the cycle time is equal to dt
        // Do nothing
      }
    }

  6. #6
    Junior Member
    تاریخ عضویت
    Oct 2015
    نوشته ها
    20
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    اینو تست کن :

    کد:
    /* Author = helscream (Omer Ikram ul Haq)
      Last edit date = 2014-10-08
      Website: Arduino with MPU6050 and angle calculation – HobbyLogs
      Location: Pakistan
      Ver: 0.1 beta --- Start
      Ver: 0.2 beta --- Bug fixed for calculating "angle_y_accel" and "angle_x_accel" in "Gyro_header.ino" file
    */
    
    
    
    
    #include <Wire.h>
    #include "gyro_accel.h"
    // Defining constants
    #define dt 20 // time difference in milli seconds
    #define rad2degree 57.3 // Radian to degree conversion
    #define Filter_gain 0.95 // e.g. angle = angle_gyro*Filter_gain + angle_accel*(1-Filter_gain)
    // ************************************************** *******************
    // Global Variables
    // ************************************************** *******************
    unsigned long t = 0; // Time Variables
    float angle_x_gyro = 0, angle_y_gyro = 0, angle_z_gyro = 0, angle _x_accel = 0, angle_y_accel = 0, angle_z_accel = 0, angle_x = 0, angle_y = 0, angle_z = 0;
    // ************************************************** *******************
    // Main Code
    void setup() {
      Serial.begin(115200);
      Wire.begin();
      MPU6050_ResetWake();
      MPU6050_SetGains(0, 1); // Setting the lows scale
      MPU6050_SetDLPF(0); // Setting the DLPF to inf Bandwidth for calibration
      MPU6050_OffsetCal();
      MPU6050_SetDLPF(6); // Setting the DLPF to lowest Bandwidth
    
    
      Serial.print("gyro_x_scalled");
      Serial.print("\tgyro_y_scalled");
      Serial.print("\tgyro_z_scalled");
      Serial.print("\taccel_x_scalled");
      Serial.print("\taccel_y_scalled");
      Serial.print("\taccel_z_scalled");
      Serial.print("\tangle_x_gyro");
      Serial.print("\tangle_y_gyro");
      Serial.print("\tangle_z_gyro");
      Serial.print("\tangle_x_accel");
      Serial.print("\tangle_y_accel");
      Serial.print("\tangle_z_accel");
      Serial.print("\tangle_x");
      Serial.print("\tangle_y");
      Serial.print("\tangle_z");
      Serial.println("\tLoad");
      t = millis();
    }
    
    
    void loop() {
      int relaypin = 3;
      t = millis();
      MPU6050_ReadData();
      angle_x_gyro = (gyro_x_scalled * ((float)dt / 1000) + angle_x);
      angle_y_gyro = (gyro_y_scalled * ((float)dt / 1000) + angle_y);
      
      if (angle_y_gyro < 90) digitalWrite (relaypin, LOW);
      else digitalWrite (relaypin, HIGH);
    
    
      angle_z_gyro = (gyro_z_scalled * ((float)dt / 1000) + angle_z);
    
    
      angle_z_accel = atan(accel_z_scalled / (sqrt(accel_y_scalled * accel_y_scalled + accel_x_scal led * accel_x_scalled))) * (float)rad2degree;
      angle_y_accel = -atan(accel_y_scalled / (sqrt(accel_y_scalled * accel_y_scalled + accel_z_scal led * accel_z_scalled))) * (float)rad2degree;
      angle_x_accel = atan(accel_x_scalled / (sqrt(accel_x_scalled * accel_x_scalled + accel_z_scal led * accel_z_scalled))) * (float)rad2degree;
    
    
      angle_x = Filter_gain * angle_x_gyro + (1 - Filter_gain) * angle_x_accel;
      angle_y = Filter_gain * angle_y_gyro + (1 - Filter_gain) * angle_y_accel;
      angle_z = Filter_gain * angle_z_gyro + (1 - Filter_gain) * angle_z_accel;
    
    
      Serial.print(gyro_x_scalled);
      Serial.print("\t");
      Serial.print(gyro_y_scalled);
      Serial.print("\t");
      Serial.print(gyro_z_scalled);
      Serial.print("\t");
    
    
    
    
      Serial.print(accel_x_scalled);
      Serial.print("\t");
      Serial.print(accel_y_scalled);
      Serial.print("\t");
      Serial.print(accel_z_scalled);
      Serial.print("\t");
    
    
      Serial.print(angle_x_gyro);
      Serial.print("\t");
      Serial.print(angle_y_gyro);
      Serial.print("\t");
      Serial.print(angle_z_gyro);
      Serial.print("\t");
    
    
      Serial.print(angle_x_accel);
      Serial.print("\t");
      Serial.print(angle_y_accel);
      Serial.print("\t");
      Serial.print(angle_z_accel);
      Serial.print("\t");
    
    
      Serial.print(angle_x);
      Serial.print("\t");
      Serial.print(angle_y);
      Serial.print("\t");
      Serial.print(angle_z);
      Serial.print("\t");
    
    
      Serial.println(((float)(millis() - t) / (float)dt) * 100);
    
    
    
    
      while ((millis() - t) < dt) { // Making sure the cycle time is equal to dt
        // Do nothing
      }
    }
    تست کردم....
    این خطا را داد
    Arduino: 1.6.6 Hourly Build 2015/10/22 05:42 (Windows 7), Board: "Arduino/Genuino Uno"

    F:\My circuits\gyro\omega-gyroXXX\omega-gyroXXX.ino:13:24: fatal error: gyro_accel.h: No such file or directory

    #include "gyro_accel.h"

    ^

    compilation terminated.

    exit status 1
    Error compiling.

    This report would have more information with
    "Show verbose output during compilation"
    enabled in File > Preferences.

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط farshad123456 نمایش پست ها
    تست کردم....
    این خطا را داد
    Arduino: 1.6.6 Hourly Build 2015/10/22 05:42 (Windows 7), Board: "Arduino/Genuino Uno"

    F:\My circuits\gyro\omega-gyroXXX\omega-gyroXXX.ino:13:24: fatal error: gyro_accel.h: No such file or directory

    #include "gyro_accel.h"

    ^

    compilation terminated.

    exit status 1
    Error compiling.

    This report would have more information with
    "Show verbose output during compilation"
    enabled in File > Preferences.

    ممممممممم
    داره از کتابخونه ایراد میگیره
    کتابخونه رو اضافه کن مشکلت حل میشه

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO