اطلاعیه

Collapse
No announcement yet.

راست و چپ گرد موتور با پتانسیومتر

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

    راست و چپ گرد موتور با پتانسیومتر

    با سلام خدمت دوستان.من یه برنامه نوشتم که یک پتانسیومتر به adc میکرو mega32 وصل میشه و با چرخاندن مقاومت موتور به صورت چپ گرد و راست گرد حرکت می کند. با استفاده از l298.مشکلی که پیش اومده اینه که وقتی پتانیسومتر ثابت هست خروجی های میکرو که به l298 وصل هستن خود بخود موتور رو به چپ و راست حرکت می دهند. من فکر می کنم که از نویزی هست که در مدار تولید میشه. برنامه رو می فرستم تا این مشکل حل بشه
    config ADC = Single , Prescaler = Auto , refrence = off
    Start ADC
    config portc.7 = output
    config portc.6 = output
    declare sub G1
    declare sub Gr
    declare sub S
    dim a as word
    dim b as word

    do
    a = Getadc(7)
    waitms 100
    b = Getadc(7)

    if a > b then
    call G1
    endif

    if b > a then
    call Gr
    endif

    if a = b then
    call s
    endif
    loop
    end

    sub G1
    portc.7 = 1
    portc.6 = 0
    end sub

    sub Gr
    portc.7=0
    portc.6=1
    end sub

    sub S
    portc.7 = 0
    portc.6 = 0
    end sub


    #2
    پاسخ : راست و چپ گرد موتور با پتانسیومتر

    نوشته اصلی توسط feshwari نمایش پست ها
    با سلام خدمت دوستان.من یه برنامه نوشتم که یک پتانسیومتر به adc میکرو mega32 وصل میشه و با چرخاندن مقاومت موتور به صورت چپ گرد و راست گرد حرکت می کند. با استفاده از l298.مشکلی که پیش اومده اینه که وقتی پتانیسومتر ثابت هست خروجی های میکرو که به l298 وصل هستن خود بخود موتور رو به چپ و راست حرکت می دهند. من فکر می کنم که از نویزی هست که در مدار تولید میشه. برنامه رو می فرستم تا این مشکل حل بشه
    سلام علیکم
    سوای قرار دادن فیلتر نویزگیر سخت افزاری مناسب برای ADC ،
    به نظرم بهتره اگه براتون مشکلی نداره بین دو مقدار نمونه برداری شده از ADC یک عدد معین برای مقابله با نویز در نظر بگیرید.
    این به صورت حالتی شبیه لقی پتانسیومتر هم عمل می کنه و حساسیتش پایین میاد. (البته اگه حساسیتش خیلی براتون مهم نباشه).
    مثلا اگر یه عددی مثل N=50 را در نظر بگیریم دو تا نمونه اینجوری مقایسه بشند: (البته فکر می کنم حلقه if آخری میشه کلا حذف بشه).
    if a > b+N then
    call G1
    endif

    if b > a+N then
    call Gr
    endif

    if abs(a - b)<N then
    call s
    endif
    در ضمن بهتره نمونه برداری مثلا M مرتبه انجام بشه و بعد میانگین اونها وارد متغیر های a و b بشند. اینجوری به جای عکس العمل نشان دادن برنامه در هر بار اجرا، برنامه در هر M مرتبه اجرا به میانگین نمونه برداری ها عکس العمل نشون میده و سرعت عکس العمل برنامه تقسیم بر M میشه که با سرعت های اجرای معمول برنامه معمولا مشکل محسوسی نیست مگر پروژه کاربرد خاصی داشته باشه که سرعت عکس العمل مهم باشه.
    جدیدترین ویرایش توسط som1234; ۲۲:۵۴ ۱۴۰۱/۰۸/۰۶.

    دیدگاه


      #3
      پاسخ : راست و چپ گرد موتور با پتانسیومتر

      با تشکر. امکانش هست یه نمونه برنامه طبق گفته های خودتون بنویسین؟

      دیدگاه


        #4
        پاسخ : راست و چپ گرد موتور با پتانسیومتر

        نوشته اصلی توسط feshwari نمایش پست ها
        با تشکر. امکانش هست یه نمونه برنامه طبق گفته های خودتون بنویسین؟
        خواهش میکنم
        بله .البته یه مشکلی داره الان برطرفش می کنم.

        دیدگاه


          #5
          پاسخ : راست و چپ گرد موتور با پتانسیومتر

          نوشته اصلی توسط feshwari نمایش پست ها
          با تشکر. امکانش هست یه نمونه برنامه طبق گفته های خودتون بنویسین؟
          تعداد نمونه ها برای محاسبه میانگین ADC با متغیر M با مقدار پیش فرض 50 در نظر گرفته شده که خودتون می تونید بهش عدد بدید و فاصله تعیین شده برای واکنش به تغییر مقدار ورودی ADC با متغیر gap تنظیم می شود. من فعلا gap=0 درنظر گرفتم. یه بار تست کنید اگه حساسیت بالا بود یا ناخواسته دستور چپ و راست صادر می شد خودتون بهش یه عدد بدید. (برای عدد دادن به متغیر ها به نوع پیش فرض شون دقت کنید). تنظیمات ADC هم طبق برنامه خودتون در نظر گرفته شده. باز اگه مشکلی داشت بفرمایید.
          جدیدترین ویرایش توسط som1234; ۰۱:۵۴ ۱۴۰۱/۰۸/۰۸.

          دیدگاه


            #6
            پاسخ : راست و چپ گرد موتور با پتانسیومتر

            سلام. زمانی که m = 50 هست پروگرام می کنم موتور در یک جهت شروع به چرخش می کند و با تغییر ولوم هیچ اتفاقی نمی افتد. gap هم عدد بهش میدم فرقی نمی کنه.

            دیدگاه


              #7
              پاسخ : راست و چپ گرد موتور با پتانسیومتر

              نوشته اصلی توسط feshwari نمایش پست ها
              سلام. زمانی که m = 50 هست پروگرام می کنم موتور در یک جهت شروع به چرخش می کند و با تغییر ولوم هیچ اتفاقی نمی افتد. gap هم عدد بهش میدم فرقی نمی کنه.
              Aref (پین32) را به چند ولت وصل کردید. اگه از ولتاژمرجع خارجی نمی خواید استفاده کنید میتونید از خود ولتاژ تغذیه ADC به این صورت استفاده کنید (البته باز اگه بسته به نیازتون مشکلی نداره):
              Config Adc = Single , Prescaler = Auto , Reference = AVCC
              در ضمن در هر صورت باید تغذیه ADC در پین 30 وصل شده باشه.
              جدیدترین ویرایش توسط som1234; ۱۶:۳۵ ۱۴۰۱/۰۸/۰۷.

              دیدگاه


                #8
                پاسخ : راست و چپ گرد موتور با پتانسیومتر

                هر دو تا پین به 5 ولت وصل هستن. ولی باز هم فقط موتور در یک جهت می چزخه

                دلیل: ادغام دو پست برای جلوگیری از اسپم

                با اون برنامه که خودم نوشتم در پروتوس قشنگ کار می کرد ولی در عمل با تغییر ولوم موتور چپ به راست می شد ولی فقط وقتی ولوم دست نمی خورد موتور خود بخود چپ و راست می چرخید اگر ولوم تا اخر می بردم دیگه مشکلی نبود.

                دیدگاه


                  #9
                  پاسخ : راست و چپ گرد موتور با پتانسیومتر

                  نوشته اصلی توسط feshwari نمایش پست ها
                  هر دو تا پین به 5 ولت وصل هستن. ولی باز هم فقط موتور در یک جهت می چزخه

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  با اون برنامه که خودم نوشتم در پروتوس قشنگ کار می کرد ولی در عمل با تغییر ولوم موتور چپ به راست می شد ولی فقط وقتی ولوم دست نمی خورد موتور خود بخود چپ و راست می چرخید اگر ولوم تا اخر می بردم دیگه مشکلی نبود.
                  این رو تست کنید نتیجش رو بفرمایید (بدون میانگین گیریه):


                  جدیدترین ویرایش توسط som1234; ۰۱:۵۲ ۱۴۰۱/۰۸/۰۸.

                  دیدگاه


                    #10
                    پاسخ : راست و چپ گرد موتور با پتانسیومتر

                    وقتی ولوم رو تا اخر می چرخونم موتور چپ می چرخه و وقتی ولوم رو اون طرف تا اخر می چرخونم موتور برعکس می چرخه ولی وقتی ولوم رو حرکت میدم موتور میلرزه و حرکت نمی کنه. در حقیقت وقتی ولوم ثابت هست باید موتور حرکت نکنه. زمانی که ولوم به چپ یا راست حرکت داده بشه باید موتور حرکت کنه.

                    دیدگاه


                      #11
                      پاسخ : راست و چپ گرد موتور با پتانسیومتر

                      نوشته اصلی توسط feshwari نمایش پست ها
                      وقتی ولوم رو تا اخر می چرخونم موتور چپ می چرخه و وقتی ولوم رو اون طرف تا اخر می چرخونم موتور برعکس می چرخه ولی وقتی ولوم رو حرکت میدم موتور میلرزه و حرکت نمی کنه. در حقیقت وقتی ولوم ثابت هست باید موتور حرکت نکنه. زمانی که ولوم به چپ یا راست حرکت داده بشه باید موتور حرکت کنه.
                      از جملتون وضعیت فعلی موتور در حالت عدم حرکت ولوم مشخص نیست.
                      جدیدترین ویرایش توسط som1234; ۰۲:۱۰ ۱۴۰۱/۰۸/۰۸.

                      دیدگاه


                        #12
                        پاسخ : راست و چپ گرد موتور با پتانسیومتر

                        الان وقتی به ولوم دست نمی زنم موتور برای خودش به چپ و راست میره.

                        دیدگاه


                          #13
                          پاسخ : راست و چپ گرد موتور با پتانسیومتر

                          نوشته اصلی توسط feshwari نمایش پست ها
                          الان وقتی به ولوم دست نمی زنم موتور برای خودش به چپ و راست میره.
                          کد با میانگین گیری (سه متغیر gap و T و M را می تونید مقدارشون رو تغییربدید):
                          جدیدترین ویرایش توسط som1234; ۰۱:۵۶ ۱۴۰۱/۰۸/۰۸.

                          دیدگاه


                            #14
                            پاسخ : راست و چپ گرد موتور با پتانسیومتر

                            دستتون درد نکنه مهندس. الان درست کار میکنه

                            دلیل: ادغام دو پست برای جلوگیری از اسپم

                            الان می خوام یه موتور دیگه به خروجی دیگه l298 وصل کنم. و با یه ولوم دیگه به صورت جداگانه موتور دوم رو راست و چپ گرد کنم باید چکار کنم. کاری که کردم الان وقتی یکی از ولوم ها رو حرکت میدم هر دو موتور هم زمان حرکت می کنن.

                            دیدگاه


                              #15
                              پاسخ : راست و چپ گرد موتور با پتانسیومتر

                              نوشته اصلی توسط feshwari نمایش پست ها
                              دستتون درد نکنه مهندس. الان درست کار میکنه
                              خواهش می کنم.
                              خدا رو شکر.
                              نوشته اصلی توسط feshwari نمایش پست ها
                              الان می خوام یه موتور دیگه به خروجی دیگه l298 وصل کنم. و با یه ولوم دیگه به صورت جداگانه موتور دوم رو راست و چپ گرد کنم باید چکار کنم. کاری که کردم الان وقتی یکی از ولوم ها رو حرکت میدم هر دو موتور هم زمان حرکت می کنن.
                              موتور دوم هم میشه از روشی مشابه کنترل بشه.
                              یه روشش اینه که:
                              برای کنترل موتور دوم سه تا سابروتین جدید مشابه موتور اول تعریف بشه،
                              یه دسته متغیر مشابه موتور اول تعریف بشه و مقادیر اولیه مشابه بهشون داده بشه،
                              دو تا پین خروجی جدید برای کنترل موتور دوم هم مثل موتور اول تعریف بشه و مقادیر اولیه مشابه بهشون داده بشه و داخل سه تا سابروتین جدید مشابه موتور اول این دو پین و متغیرهای مربوط به موتور دوم را مقدار داد،
                              پتانسیومتر موتور دوم به یه پایه ADC دیگه وصل بشه و دستورات میانگین گیری و حلقه های شرطی برنامه مشابه موتور اول برای موتور دوم هم داخل لوپ اصلی بر مبنای متغیرهای مربوط به موتور دوم نوشته بشه.
                              دقت کنید من مرجع ADC را روی AVCC گذاشتم باز هر طور خودتون صلاح می دونید بذاریدش.
                              موفق باشید.

                              جدیدترین ویرایش توسط som1234; ۰۳:۰۹ ۱۴۰۱/۰۸/۰۸.

                              دیدگاه

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