صفحه 6 از 11 نخستنخست ... 45678 ... آخرینآخرین
نمایش نتایج: از 51 به 60 از 110
Like Tree17 لایک

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

  1. #51
    Junior Member
    تاریخ عضویت
    Oct 2015
    نوشته ها
    20
    مررسی...خیلی لطف کردین!!
    چک کردم
    اسم اون متغیر accel_y_scalled بود! زاویه را به صفر تغییر دادم! کد را زیر همون متغیر نوشتم... فقط خطا داد
    if(accel_y_scalled==0) digitalWrite (relaypin,LOW);
    else digitalWrite (relaypin,HIGH);
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: error.jpg
مشاهده: 167
حجم: 90.3 کیلو بایت
    لطفا روش پاک کردن حافظه آردوینو هم بفرمایید!! حافظه آردوینوی من پر شده...نمیدونم چجوری خالیش کنم
    ویرایش توسط farshad123456 : 02-04-2016 در ساعت 06:03 PM

  2. #52
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط farshad123456 نمایش پست ها
    مررسی...خیلی لطف کردین!!
    چک کردم
    اسم اون متغیر accel_y_scalled بود! زاویه را به صفر تغییر دادم! کد را زیر همون متغیر نوشتم... فقط خطا داد
    if(accel_y_scalled==0) digitalWrite (relaypin,LOW);
    else digitalWrite (relaypin,HIGH);
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: error.jpg
مشاهده: 167
حجم: 90.3 کیلو بایت
    لطفا روش پاک کردن حافظه آردوینو هم بفرمایید!! حافظه آردوینوی من پر شده...نمیدونم چجوری خالیش کنم

    آیا relaypin رو جایی تعریف کردی؟
    مثلا بگی
    کد:
    int relaypin=3;
    در این حالت رله رو به پایه دیجیتال شماره 3 باید وصل کنی.

    منظورت از پاک کردن حافظه چیه ؟
    اگه منورت حافظه فلشه که هر بار که کد آپلود میکنی خودش رفرشش می کنه

    اگه کدت سنگین شده اونجاهایی رو که نیاز نداری پاک کن

  3. #53
    Junior Member
    تاریخ عضویت
    Oct 2015
    نوشته ها
    20
    ممنون!! درسته...یادم نبود پایه را تعریف کنم
    کد درسته...آپلود هم میشه! فقط وقتی زاویه را به صفر میرسونم رله روشن نمیشه!.......
    این لینک رله منه ماژول رله 5 ولت دوکاناله

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

    من با این رله کار نکردم ولی به نظرن باید active low باشه
    ببین یه تستی کن

    الان این باید 4 تا پین داشته باشه دیکه مگه نه ؟ (چون دو کانالس )

    یکیش که vcc
    یکیش که گراند
    دوتاش مربوط به رله هاست

    پایه های vcc و گراند رو نصب کن
    حالا یه سیم بزن به یکی از پای های فعال سازی رله هات
    اون یکی سر سیمت که آزاده رو یه بار بزن به گراند یه بار به VCC
    ببین با کدومش رله رو روشن میکنه
    خبر بده

  5. #55
    Junior Member
    تاریخ عضویت
    Oct 2015
    نوشته ها
    20
    با گراند روشن میشه!

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


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

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

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

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

  9. #59
    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
    }


    }




  10. #60
    مدیر گروه
    تاریخ عضویت
    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 از 11 نخستنخست ... 45678 ... آخرینآخرین

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

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

SEO by vBSEO