NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5044 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: کنترل دور موتور dcبا at91sam7x256

  1. #1
    عضو جدید
    تاریخ عضویت
    Aug 2009
    نوشته ها
    8
    تشکر
    7
    تشکر شده 1 بار در 1 پست

    New کنترل دور موتور dcبا at91sam7x256

    سلام بر همه دوستان
    من میخوام یک کار کنترلی با arm انجام بدم اونم اینجوری هست که میخوام سرعت یک موتور dc رو با میکرو arm کنترل کنم و توی برنامه نویسی ضعیفم اگه کسی میتونه لطفا کمک کنه.ممنون

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    بهتر بود یه مقدار بیشتر توضیح بدی
    ساده ترین روش برای این کار ایجاد کردن یک پالس روی یکی از پایه ها و به نوعی کنترل کردن نسبت زمان روشن به زمان خاموش بودن موتوز هست :
    [PHP]#include <AT91SAM7X256.H> /* AT91SAMT7X256 definitions */
    #include "lib_AT91SAM7X256.h" //include lib_AT91SAM7X256.h in to project
    #include "delay.h"
    int a;
    int main (void) {
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA); //enable pio clack
    AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA30); // enable porta.30 as output
    AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA29); // enable porta.29 as output
    AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,AT91C_PIO_PA30 ); //enable pull up resistor in porta.30
    AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,AT91C_PIO_PA29 ); //enable pull up resistor in porta.29
    AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB19 ); // enable portb.19 as output
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOB,AT91C_PIO_PB 19); // reset portb.19

    while(1) {
    if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & AT91C_PIO_PA30) == 0) { //chake porta.30
    ++a;
    }
    if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & AT91C_PIO_PA29) == 0) { //chake porta.30
    --a;
    }
    delay_ms(a);
    AT91F_PIO_SetOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19); //if porta.30 is 0 set portb.19
    delay_ms(a);
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOB,AT91C_PIO_PB 19); // reset portb.19
    }
    }[/PHP]
    توی برنامه ی بالا دو تا کلید به پایه های a.29 و a.30 متصل شده که سرعت موتور با تحریک اونا کم و زیاد میشه
    خروجی موتور پایه ی b.19 هست که یک سر موتور به اون و سر دیگه به گراند متصل میشه .
    حتما باید بین موتوز و میکرو کنترلر یه دونه ترانزیستور بزاری .
    توی برنامه بالا ما یه دونه پالس pwm رو به صورت دستی ایجاد کردیم .
    با انجام دادن یه مقدار تغییرات میشه قابلیت چپ/راست گرد رو هم به برنامه ی بالا اضافه کرد .
    فایل پروژه ی بالا رو میتونی از زیر دانلود کنی :
    motor.rar

  4. #3
    عضو جدید
    تاریخ عضویت
    Aug 2009
    نوشته ها
    8
    تشکر
    7
    تشکر شده 1 بار در 1 پست

    New کنترل دور موتور dc

    سلام ممنون واسه راهنمایی کاری که من میخوام انجام بدم کنترل جهت و سرعته. ابزارایی که میخوام استفاده کنم 1)یک میکرو2) درایور l298 یا درایوری دیگه که به درد بخوره3)یک اینکودر4)موتور dc
    5)lcd و صفحه کلید
    من می خوام اول کاربر یک سرعتی رو توی صفحه کلید وارد کنه عدد توی lcdنمایش داده بشه بعد کاربر جهت چرخش رو مشخص کنه و موتور با جهت و سرعت داده شده شروع به حرکت کنه و اگه کسی شافت موتور رو نگه داشت و سرعت موتور کم شد بعد از رها کردن دوباره به سرعت وارد شده برگرده و سرعت موتور رو همیشه روی lcdنمایش بده (زمانی هم که سرعت کم میشه کاهش سرعت هم روی lcd نمایش داده بشه)


    خیلی خیلی ممنون

  5. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    تمام این بخش ها قبلا راه اندازی شده . شما به کتابخونه های lcd.h ، kbd.h ، lib_AT91SAM7X256.h ، delay.h نیاز دارید .
    کافیه شما مقدار ورودی کی پد رو بخونید و اون رو روی lcd نمایش بدید . ( دو تا دستور ساده که توی pmm4 اورده شده ) .
    یکی از پایه ها رو به عنوان ورودی تعریف کنید و بعد از اتصال انکودر ، تعداد صفر ویک شدنش رو بشمارید .
    برای تغییر دادن جهت موتور هم کافیه طبق دیتا شیت l298 ولتاژ پایه های ورودی رو معکوس کنید ( یعنی 0 و 1 بشه 1 و 0 )

موضوعات مشابه

  1. مشکل با pll میکرو at91sam7x256
    توسط payameashena در انجمن AT91 series (ATMEL)
    پاسخ: 3
    آخرين نوشته: 13-03-2015, 02:58
  2. هدربرد at91sam7x256
    توسط ali5 در انجمن AT91 series (ATMEL)
    پاسخ: 6
    آخرين نوشته: 12-07-2013, 13:41
  3. مموری کارت برد at91sam7x256 V.3
    توسط mo_as در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 1
    آخرين نوشته: 28-04-2012, 21:07
  4. هدر at91sam7x256.h
    توسط Caspian1361 در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 11-04-2010, 17:20

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

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