صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 15
Like Tree7 لایک

موضوع: کنترل سرو موتور به وسیله Arduino

  1. #1
    Junior Member
    تاریخ عضویت
    Dec 2013
    نوشته ها
    4

    کنترل سرو موتور به وسیله Arduino

    کنترل سرو موتور به وسیله Arduino

    هدف از این پروزه کنترل زاویه یک سرو موتور آزمایشگاهی با توچه به اختلاف پتانسیل حاصل از دوران یک کقاومت متغیر (پتانسیومتر) به صورت خطی و با دقت 1/0 درجه می باشد.
    این مدار باید قابلیت نمایش زاویه نتظیم نقطه صفر و ریست شدن سخت افزاری نیز داشته باشد.
    راه حل
    استفاده از برد Arduino DUE که یک برد میکروکنترل بر پایه Atmel SAM3X8E ARM Cortex-m3 CPU با زبان برنامه نویسی جاوا ( از مشتقات زبان C++ ) و نمایش گر کارکتری 16×2 زمینه آبی و استفاده از مقاومت متغیر 5kΩ کربنی و یک عدد سرو موتور سری آزمایشگاهی .

    قطعات مورد نیاز
    برد برد ، برد Arduino DUE، سیم برد بردی ، سرو موتور آزمایشگاهی ، پتانسیومتر ، LCD 2×16
    موتور سرو دارای سه سر سیم است که در موتورهای مختلف رنگ های سیم ها متفاوت است اما معمولاً
    سیم قرمز به 5 ولت و سیم سیاه یا قهوه ای به زمین و سیم دیگر به میکرو کنترلر باری گرفتن سیگنال های کنترل متصل میشود ، که در این پروزه سر سیم کنترل به پین شماره 9 خروجی PWM برد کنترل متصل می شود ( مطابق با تعریفی که در برنامه شده است ).
    به وسیله نرم افزار Arduino برنامه زیر که به زبان جاوا نوشته شده است را بر روی برد بار گذاری می کنیم

    include <LiquidCrystal.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    Servo myservo;
    int potpin = 7;
    int val ;
    void setup()
    {
    lcd.begin(16, 2);
    lcd.print("Ehsan Yousefi");
    myservo.attach(9);
    }

    void loop()
    {
    val = analogRead(potpin);
    val = map(val, 0, 1023, 0, 155);
    myservo.write(val);
    delay(15);

    lcd.setCursor(0, 1);
    lcd.print("Loc.: DGR");
    lcd.setCursor(11, 1);
    lcd.print(val / 1.28);
    }
    توضیح خط به خط برنامه
    #include<servo.h>
    تابه کتابخانه ای سرو برای استفاده از دستورات سرو در برنامه
    #include<liquid Crystal.h>
    تابع کتابخانه ای LCD برای استفاده از دستورات LCD در برنامه
    liquidCristal lcd(12,11,5,4,3,2)
    در برنامه تعریف می کنیم که ترتیب پایه های Rs, Enable , D4 , D5, D6 , D7 ال سی دی به پایه های 12 , 11 , 5 ,4 ,3 , 2 خروجی Digital برد Arduino متصل شوند.
    Servo myservo
    یک متغیر جدید از نوع servo با نام myservo تعریف میکنیم ، با این کار ما میتوانیم servo را در برنامه نشان دهیم ما میتانیم به صورت هم زمان هشت سرو را تعریف کنیم مانند myservo1 ,my servo2, ، ... .
    Int potpin=7
    Pin 7 را به عنوان potpin (هم زمان به عنوان integer ) تعریف و سر وسط پتانسومتر را به ورودی 7 آنالوگ متصل می کنیم.
    Int val;
    Val را به عنوان یک متغیر تعریف می کنیم .
    Void setup()
    {
    Lcd.begin(16.2);
    با این دستور ستون و ردیف LCD که می خواهیم در آن نمایش دهیم مشخص می شود.
    Lcd.print(“ Ehsan Yousefi”);
    با این دستور کارکتر داخل پرانتز را برروی LCD نمایش داده می شود .
    Myservo.attach(9)
    با این دستور مشخص می کنیم که سرو از طریق پین 9 سیگنال کنترلی را دریافت کند. باید توجه داشته باشیم که کتاب خانه servo.h تنها از دو پین 9 و 10 پشتیبانی می کند.
    Void loop()
    {
    Val=analogRead(potpin)
    خواندن مقدار از پین آنالوگ potpin که همان ورودی آنالوگ 7 است. یعنی مقدار پتانسیو متر را می خواند که بین 0 تا 1023 میباشد.
    Val=map (val,0,1023,0,155 );
    ساختار دستور map به این صورت است ،
    map(value,fromLow.fromHigh,toLow,toHigh)
    به طوری که مقدار value که بین مقدار های fromLow و fromHigh تعریف شده اند را به نگاشتی در فاصله toLow و toHigh ر می آورد. به عنوان مثال
    Y=map(x,1,50,50,1)
    در واقع با این دستور مقیاس 0 تا 1023 را بین 0تا180 تغیر میدهیم.
    Myservo.write(val);
    با استفاده از این دستور مقعیت سرو را باتوجه به مقدار val تغیر میکند
    delay(15)
    15میلی ثانیه تاخیر تعریف میکنیم ، این مدت زمان لازم است تا سرو به مکان تعین شده برسد

    Lcd.setCursor(0.1)
    کتاب خانه liquidCrystal به ما اجازه میدهد تا صفحه نمایش هایی که با درایو هیتاچی HD44780
    سازگار هستند را کنترل کنیم. این دستور با این ساختار lcd.setCursor(col, row¬¬) جایی را که می خواهیم کرکتر در آن جا تمایش داده شود مشخص می کنیم.
    به عنوان مثال برای یک صفحه نمایش 2×16
    Lcd.setCursor(0.0);//top left
    Lcd.setCursor(15.0);//top right
    Lcd.setCursor(0.1);//down left
    Lcd.setCursor(15.1);//down right

    Lcd.print(“LOC. : DGR”);
    عبارت داخل پرانتز در مکانی که در خط قبل تعریف کردیم نمایش داده می شود.
    Lcd.setcursor(11,1);
    این دستور مکان نما را به ستون 11 ردیف پاین انتقال می دهد.
    ) Lcd.print(val/1.28
    مقدار داخل پرانتز را در مکان مشخص شده در سطر قبل نمایش میدهد.

    چگونگی کنترل سرو با استفاده از PWM
    در این پروزه مقعیت شفت سرو با استفاده از عرض پالس کنترل مشود ، سرو تقریباً در هر 20 میلی ثانیه پالسی را دریافت می کند. حال در صورتی که عرضپالس دریافتی 1میلی ثانیه باشدزاویه سرو صفر خواهد شد و اگر 5/1 میلی ثانیه باشد زاویه شفت سرو 90 درجه خواهد شد و اگر عرض پالس 2میلی ثانیه شود زاویه شفت سرو 180درجه( منظور حد اکثر زاویه چرخش شفت سرو است که در موتور های مختلف بسته به طراحی متفاوت است ، بسیاری از موتورها حدود 170 درجه می توانند تغییر مقعیت دهند ولی سرو های continuous می توانند تا 360 درجه بچرخد اما این زاویه برای موتور استفاده شده در این پوژه 120درجه است زاویه های کمتر هم با همین نسبت تغیر می کنند ، مثلاً زاویه موتور در عرض پالس 5/1 میلی ثانیه ،60 درجه است .) خواهد شد ، و ما میتوانیم با استفاده از پتانسیومتر عرض پالس را تغیر دهیم به طوری که زاویه شفت از 0تا 180 درجه به وسیله تغیرات مقاومت پتانسومتر قابل تغیر باشد.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط ehsan yousefi : 01-06-2014 در ساعت 12:36 PM

  2. #2
    Junior Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    3
    سلام اگه سرو ما جریان بیشتر از 40 میلی آمپر رو بخاد باید چیکار کنیم؟

  3. #3
    Senior Member
    تاریخ عضویت
    Aug 2014
    نوشته ها
    231
    نقل قول نوشته اصلی توسط masoudmilany نمایش پست ها
    سلام اگه سرو ما جریان بیشتر از 40 میلی آمپر رو بخاد باید چیکار کنیم؟
    شما به مثبت و منفی سروو ، از باطری یا اداپتور یا هر منبع تغذیه خارجی ، برق میدین (یعنی مثبت و منفی سروو به مثبت و منفی باطری) و سپس منفی سروو رو به منفی اردوینو وصل کرده و با سیم زرد/سفید کنترل می کنید . منبع تغذیه شما همیشه بهتره حداقل 30 درصد بیشتر از حد نیاز باشه مثلا اگه 3 امپر میخواید بهتره اداپتوره 4 امپر بگیرید .

  4. #4
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    سلام ببخشید بنده یه سروو به برد DUE وصل کردم طوری که با تغییر دما زاویه اش تغییر کنه به طور مستقیم . و حتی اون رو به منبع تغذیه زدم و ولتاژ 5.2 بهش دادم ولی وقتی سنسور دما ، نشون می ده دما بالا رفته زاویه سرو زیاد میشه اما تغییرات آن کاملا ناگهانی بوده و مجددا سریع برمی گرده به حالت اول و تغییر زاویه آن تدریجی و پیوسته نیست کسی می داند علتش چیست؟
    اینم کدی که براش نوشتم :
    if (Temp_sensor[0]<=35)
    {
    Angservo = 0;
    }
    else if ((Temp_sensor[0]<100) && (Temp_sensor[0]>35))
    {
    Angservo=map(Temp_sensor[0], 36, 100, 0, 100); // scale it to use it with the servo (value between 0 and 100)
    }
    else
    {
    Angservo=map(Temp_sensor[0], 100, 250, 100, 170); // scale it to use it with the servo (value between 0 and 180)
    }

    myservo.write(Angservo);

  5. #5
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    ولی وقتی مستقیم اون رو به برد زدم و مثال مربوط به خود آردوینو که SWeep بود اجرا می کردم خیلی خوب بود و مشکلی نداشت از این لحاظ و تغییراتش کاملا پیوسته و تدریجی بود

  6. #6
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    کد مربوط به مثال KNOB هم حتی خوب کار می کنه در آدرس :
    https://www.arduino.cc/en/Tutorial/Knob
    که سرو با یه پتانسیومتر وصل شده ولی نمی دونم چرا در مثال خودم با کد بالا مشکل پیدا می کنه

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,937
    نقل قول نوشته اصلی توسط mr.ansaripour نمایش پست ها
    کد مربوط به مثال KNOB هم حتی خوب کار می کنه در آدرس :
    https://www.arduino.cc/en/Tutorial/Knob
    که سرو با یه پتانسیومتر وصل شده ولی نمی دونم چرا در مثال خودم با کد بالا مشکل پیدا می کنه

    خب کدتون رو بزاری لطفا

  8. #8
    Junior Member
    تاریخ عضویت
    Jun 2016
    نوشته ها
    2
    سلام خدمت شما
    میخواستم یه سوال کلی بپرسماونم اینکه این برد قابلیت این رو داره که بشه موتور های سروو 220 دلتا با درایوراشون رو کنترل کرد
    ببنید من یکسری فرامین رو میخوام از سیستم ارسال کنم به برد و سپس برد 2 موتور سروو رو برام تغییر وضعیت بده....
    سوالی که من دارم اینه که اصلا این برد این قابلیت رو داره ؟ یا فقط حداکثر تا موتور های 12 ولت رو قبول میکنه؟
    چه لوازمی مورد نیاز این کار هست؟
    به غیر از خود موتور ها و درایوراشون......
    درایوراشون رو چجوری به آدریونو متصل کنم؟
    ممنون میشم راهنمایی کنید

  9. #9
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,937
    نقل قول نوشته اصلی توسط gamerbeter نمایش پست ها
    سلام خدمت شما
    میخواستم یه سوال کلی بپرسماونم اینکه این برد قابلیت این رو داره که بشه موتور های سروو 220 دلتا با درایوراشون رو کنترل کرد
    ببنید من یکسری فرامین رو میخوام از سیستم ارسال کنم به برد و سپس برد 2 موتور سروو رو برام تغییر وضعیت بده....
    سوالی که من دارم اینه که اصلا این برد این قابلیت رو داره ؟ یا فقط حداکثر تا موتور های 12 ولت رو قبول میکنه؟
    چه لوازمی مورد نیاز این کار هست؟
    به غیر از خود موتور ها و درایوراشون......
    درایوراشون رو چجوری به آدریونو متصل کنم؟
    ممنون میشم راهنمایی کنید
    سلام
    سوالی یقینا می تونه با دریافت کامند دستور بده اما بحث اینهکه آیا درایوری که شما دارید منطق ولتاژی دریافت فرمانش 5 ولت هست؟
    یعنی مثلا درایور شما با سریال یا i2c فرمان میگیره؟

  10. #10
    Junior Member
    تاریخ عضویت
    Jun 2016
    نوشته ها
    2
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    سلام
    سوالی یقینا می تونه با دریافت کامند دستور بده اما بحث اینهکه آیا درایوری که شما دارید منطق ولتاژی دریافت فرمانش 5 ولت هست؟
    یعنی مثلا درایور شما با سریال یا i2c فرمان میگیره؟
    فکر کنم سریال هست

    لینک موتور (امیدوارم با قوانین انجمن تداخل نداشته باشه)
    سروو موتور خطی | شرکت مهندسی فراسیس - اتوماسیون صنعتی

    لینک درایور (امیدوارم با قوانین انجمن تداخل نداشته باشه)
    سروو کنترلر خطی | شرکت مهندسی فراسیس - اتوماسیون صنعتی

    البته نمونه زیر رو هم میخوام ببینم جواب میده یا نه؟
    &#x202b;3KW/2000 RPM/200V ترمزدار فقط 0 تومان | فروشگاه اینترنتی توان شاپ

    به نظر شما برد آدریونو قابلیت رو داره با درایوراشون ارتباط برقرار کنه؟

صفحه 1 از 2 12 آخرینآخرین

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

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

SEO by vBSEO