اطلاعیه

Collapse
No announcement yet.

ادامه کار دقیقا از همون جایی که برق رفت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ادامه کار دقیقا از همون جایی که برق رفت

    سلام دوستان
    من یه برنامه ای برای استپر موتور نوشتم که برای مثال اول نصف دور ساعت گرد بزنه بعد یک چهارم دور پاد ساعتگرد بزنه و بعد یه دور کامل ساعتگرد بزنه و این کار رو به صورت حلقه انجام بده ولی مشکلی که دارم اینه که وقتی آردینو رو خاموش می کنم و دوباره روشن می کنم زاویه تنظیم شده اولیه بهم میریزه خواستم ببینم راهی وجود داره که آردینو دقیقا کارش رو از همون جایی شروع کنه که خاموش شده بود؟
    این برنامه ای هست که نوشتم
    #include <Stepper.h>
    int c1 = 8;
    int c2 = 9;
    int c3 = 10;
    int c4 = 11;

    int Pulse;
    int Speed= 13;

    Stepper motor(2048,8,10,9,11);

    void setup() {
    pinMode(c1,OUTPUT);
    pinMode(c2,OUTPUT);
    pinMode(c3,OUTPUT);
    pinMode(c4,OUTPUT);
    }

    void loop() {

    motor.setSpeed(Speed);
    motor.step(1024);
    delay (1);
    motor.setSpeed(Speed);
    motor.step(-512);
    delay (1);
    motor.setSpeed(Speed);
    motor.step(1536);
    delay (1);

    }
    جدیدترین ویرایش توسط Saeed Faal; ۱۵:۰۷ ۱۳۹۷/۱۲/۱۱.

    #2
    پاسخ : ادامه کار دقیقا از همون جایی که برق رفت

    نوشته اصلی توسط Saeed Faal نمایش پست ها
    سلام دوستان
    من یه برنامه ای برای استپر موتور نوشتم که برای مثال اول نصف دور ساعت گرد بزنه بعد یک چهارم دور پاد ساعتگرد بزنه و بعد یه دور کامل ساعتگرد بزنه و این کار رو به صورت حلقه انجام بده ولی مشکلی که دارم اینه که وقتی آردینو رو خاموش می کنم و دوباره روشن می کنم زاویه تنظیم شده اولیه بهم میریزه خواستم ببینم راهی وجود داره که آردینو دقیقا کارش رو از همون جایی شروع کنه که خاموش شده بود؟
    این برنامه ای هست که نوشتم
    #include <Stepper.h>
    int c1 = 8;
    int c2 = 9;
    int c3 = 10;
    int c4 = 11;

    int Pulse;
    int Speed= 13;

    Stepper motor(2048,8,10,9,11);

    void setup() {
    pinMode(c1,OUTPUT);
    pinMode(c2,OUTPUT);
    pinMode(c3,OUTPUT);
    pinMode(c4,OUTPUT);
    }

    void loop() {

    motor.setSpeed(Speed);
    motor.step(1024);
    delay (1);
    motor.setSpeed(Speed);
    motor.step(-512);
    delay (1);
    motor.setSpeed(Speed);
    motor.step(1536);
    delay (1);

    }
    سلام
    احتمالا ساده ترین کار استفاده از حافظه eeprom میکروکنترلر باشه.

    دیدگاه


      #3
      پاسخ : ادامه کار دقیقا از همون جایی که برق رفت

      نوشته اصلی توسط hossein.m98 نمایش پست ها
      سلام
      احتمالا ساده ترین کار استفاده از حافظه eeprom میکروکنترلر باشه.
      آره تو سایت ها هم گفتن EEPROM ولی من نمی دونم چطوری این زاویه ها رو بهش معرفی کنم.

      دیدگاه


        #4
        پاسخ : ادامه کار دقیقا از همون جایی که برق رفت

        نوشته اصلی توسط Saeed Faal نمایش پست ها
        آره تو سایت ها هم گفتن EEPROM ولی من نمی دونم چطوری این زاویه ها رو بهش معرفی کنم.
        من آردوینو کار نکردم و نمیتونم کمکی در این باره بکنم.
        فقط توجه داشته باش که eeprom محدودیت نوشتن داره. یعنی اگر سیکل نوشتن و پاک کردن اش تموم بشه، تضمینی برای کارکرد درستش وجود نداره. باید کاری کرد که از تمام سلول های حافظه به صورت متناوب استفاده بشه.

        دیدگاه


          #5
          پاسخ : ادامه کار دقیقا از همون جایی که برق رفت

          نوشته اصلی توسط Saeed Faal نمایش پست ها
          آره تو سایت ها هم گفتن EEPROM ولی من نمی دونم چطوری این زاویه ها رو بهش معرفی کنم.
          درود بر شما
          چیزی که به ذهنم میرسه اینه که برای تعیین موقعیت دو تا کار میتونید انجام بدید:
          1- از یک انکودر استفاده کنید و موقعیت و سیکل فعلی (منظورم یکی از سه مرحله چرخش موتور هست) را ذخیره کنید.
          یا
          2- از یک کد ساده استفاده کنید تا خودتون مستقیم به موتور فرمان بدید.اینجوری می تونید تعداد استپ ها ی انجام شده( در نتیجه موقعیت/زاویه فعلی) و سیکل فعلی را ذخیره کنید.
          بعد میشه هنگام راه اندازی اول متغیر های ذخیره شده را بخونید و معلوم بشه در کدوم سیکل و چه موقعیتی هستید و سپس ادامه کار رو بدید.
          *** برای ذخیره هم میشه اطلاعات رو توی SD کارت بریزید و بخونید.البته از نظر سرعت باید تست کنید ببینید چجوری میشه...

          دیدگاه


            #6
            پاسخ : ادامه کار دقیقا از همون جایی که برق رفت

            نوشته اصلی توسط behnam18 نمایش پست ها
            درود بر شما
            چیزی که به ذهنم میرسه اینه که برای تعیین موقعیت دو تا کار میتونید انجام بدید:
            1- از یک انکودر استفاده کنید و موقعیت و سیکل فعلی (منظورم یکی از سه مرحله چرخش موتور هست) را ذخیره کنید.
            یا
            2- از یک کد ساده استفاده کنید تا خودتون مستقیم به موتور فرمان بدید.اینجوری می تونید تعداد استپ ها ی انجام شده( در نتیجه موقعیت/زاویه فعلی) و سیکل فعلی را ذخیره کنید.
            بعد میشه هنگام راه اندازی اول متغیر های ذخیره شده را بخونید و معلوم بشه در کدوم سیکل و چه موقعیتی هستید و سپس ادامه کار رو بدید.
            *** برای ذخیره هم میشه اطلاعات رو توی SD کارت بریزید و بخونید.البته از نظر سرعت باید تست کنید ببینید چجوری میشه...
            خیلی از شما ممنونم
            راستش الان ماژول SD کارت ندارم و هنوز کد نویسی با اون رو بلد نیستم ولی به نظر این روش منطقی ترین روش باشه چون حافظه ٍٍٍٍEEPROM محدودیت داره و به درد من نمی خوره .
            امیدوارم جواب بده

            دیدگاه

            لطفا صبر کنید...
            X