اطلاعیه

Collapse
No announcement yet.

چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

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

    چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

    سلام
    این مدار درایور موتور DC منه؛ میکرو مرکزی SAM7S256 قرار داره.


    خوب حالا سئوالم اینه که چطور میتونم با PWM سیستمهای راستگرد و چپگرد رو براش بسازم؟!
    من فکر میکردم که PWM داخل میکرو تولید میشه، و میشه اونرو از هر پایه ای که خواستیم، به درایور L293 برسونیم، اما الان گیج شدم! تو این میکرو (SAM7S256) پایه های PWM عبارتند از 44، 47، 48 هستند (به ترتیب PA0 PA1 PA2)، خوب الان باید این پایه ها رو به ورودیهای L293 وصل کنم؟ یا اینکه نه احتیاجی نیست؟ اگه قراره این پایه های رو وصل کنم... خوب... باید از ICهای TTL استفاده کنم؟ (چون 4 تا پین دارم که باید فعال بشن ولی نهایتا 3 تا خروجی PWM رو میکرو دارم)

    دارم.... نه بابا دیگه قاط زدم :angry:، میکروم هنگ کرده، نمیدونم چرا واچ داگم سیستم رو ریست نمیکنه :cry:
    آلبرت انیشتین میگه:
    " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
    حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

    #2
    پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

    سلام
    با توجه به بلوک دیاگرام IC نیازی به قرار دادن دیودها در خارج از IC نمی باشد به دلیل آنکه داخل IC این دیودها موجود است.

    برای آنکه بتوان موتور DCآ‌ را به صورت راستگرد و چپگرد کنترل کرد از مدار زیر استفاده کنید.

    در مدار بالا اگر IN1 در وضعیت HIGH و IN2 در وضعیت LOW و EN1 در وضعیت HIGH باشد مثلا موتور با حداکثر سرعت به راست چرخش می کند.
    اگر IN1 در وضعیت LOW و IN2 در وضعیت HIGH و EN1 در وضعیت HIGH باشد مثلا موتور با حداکثر سرعت به چپ چرخش می کند.
    اگر هر دو پایه IN1,IN2 در وضعیت HIGH یا LOW باشد یا EN1 در وضعیت LOW باشد موتور چرخش نمی کند و متوقف است.
    باتوجه به مدار بالا برای راه اندازی این مدار با میکرو نیاز به 3 یا حتی 2 پین IO از میکرو نیاز است و نیازی به PWM نیست به دلیل آنکه در این مدار نیاز به کنترل سرعت نیست.
    برای کنترل سرعت چرخش موتور توسط میکرو نیاز به استفاده از PWM داریم. مدار زیر برای راه اندازی با PWM می باشد.

    با توجه به مدار بالا و توضیحات قبل اگر ضریب وظیفه PWM برابر 50 درصد باشد موتور توقف می کند و چرخش نمی کند. اگر ضریب وظیفه بیشتر از 50 درصد باشد مثلا موتور به راست می چرخد و هرچه ضریب وظیفه به 100 نزدیکتر باشد سرعت موتور بیشتر است. اگر ضریب وظیفه کمتر از 50 درصد باشد مثلا موتور به چپ می چرخد و هرچه ضریب وظیفه به 0 نزدیکتر باشد سرعت موتور بیشتر است. اما با یک NOT ساده نباید این مدار را بست و با استفاده از خازن و مقاومت و NOT باید در عمل این کار را انجام داد. دلیل آن هم این می باشد که بهتر است PWM ها همپوشانی نداشته باشد.
    در میکروهای سری AT91 این قابلیت وجود دارد که دو تا PWM را طوری تولید کند که همپوشانی نداشته باشد. در اینصورت می توانید از مدار زیر استفاده کنید.

    در مدار بالا نحوه کنترل سرعت توسط PWMها به همان صورت قبل که گفتم می باشد. برای آنکه هم پوشانی PWM ها رو بهتر ببینید شکل صفحه 233 کتاب AT91 را ببینید و مثال 9-3 صفحه 246 کتاب هم نمونه برنامه برای راه اندازی PWMها به این صورت که هم پوشانی نداشته باشد را نشان می دهد.
    خوب ولتاژ خروجی پین های میکرو 3.3 ولت می باشد شما بهتر است در مدار VSS که ولتاژ دیجیتال می باشد را هم به 3.3 ولت وصل کنید.

    دیدگاه


      #3
      پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

      دوست عزیز از راهنماییتون ممنونم، نکات جالبی داشت که قطعا استفاده میکنم؛
      ولی من هنوز نمیدونم چطور باید از این PWM استفاده کنم تا 2تا موتور رو همزمان درایو کنم؟
      به نظرم باید از IC های TTL استفاده کنم. گیت بافر سه حالته؛ به نظرم راه دیگه ای نمونده باقی پینهای میکرو رو پر کردم؛
      یه نکته جالب همین الان دیدم که پایه های PA23 PA24 PA25 هم برای PWM به کار میرند! و دست بر قضا من به موتور وصلشون کردم! :eek:
      حالا ... خوب ... یه سئوال دیگه هم اضافه شد :redface:
      این پینها مثلا PA0 رو به صورت IO پیکربندی کرد و پین بعدی رو مثلا PA1 رو به صورت PWM؟
      تا الان پیاده سازی کردید؟

      نابرده رنج، گنج میسر نمیشود، این ضرب المثل گریه منو در میاره :cry:
      آلبرت انیشتین میگه:
      " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
      حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

      دیدگاه


        #4
        پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

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

        شما مدار بالا را ببند و نتیجه رو ببین 90 درصد اگه همه چیز را صحیح بسته باشی و برنامه را درست نوشتی جواب می دهد.
        باید هر دو پایه PA23,PA24 را در حالت B که PWM0,PWM1 پیکربندی کنید. راه اندازی این مدار کار خاصی ندارد من با IC های مختلف آنرا راه اندازی کردم و مشکل خاصی نداشت.

        دیدگاه


          #5
          پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

          من متن شما رو تا الان چند بار خوندم، به هر حال ممکنه یه نکته از قلم بیفته و فـــــــــــــــــاجــــــــــــــــعـــــــــــــ ـــــــــه
          دوباره با چند تا سئوال دیگه برگشتم، اما قبلش دست آوردامو بگم بعد سئوالاتمو؛
          خوب بالاخره متوجه شدم که چطور باید راشون بندازم؛ آهان یه نکته، تنظیم دور موتور خیلی مهمه! خیلی!
          دیودها هم که حذف میکنم؛
          خوب حالا سئوالا
          شما اینو گفتید:
          اما با یک NOT ساده نباید این مدار را بست و با استفاده از خازن و مقاومت و NOT باید در عمل این کار را انجام داد.
          1. خوب میشه یه مدار عملی بهم بدید؟ چون من تا الان باهاش کار نکردم!

          2. VSS همون VCC که باید بهش 3.3 ولت بدم؛ درسته؟

          3. این همپوشانی PWM رو یکم بیشتر توضیح میدهید؟

          دیگه تمومه، ازتون متشکرم.
          آلبرت انیشتین میگه:
          " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
          حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

          دیدگاه


            #6
            پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پی&#1

            زیاد فاجعه خاصی رخ نمی دهد نهایتا یا موتور نمی چرخد یا IC ها می سوزد. :biggrin:
            اول سوال دوم را بگم تو دیتاشیت یک VS هست و یک VSS که باید VSS را که ولتاژ دیجیتال می باشد را به 3.3 ولت وصل کنید و VS که ولتاژ موتور می باشد را با توجه به ولتاژ موتورتون به آن ولتاژ وصل کنید مثلا اگر موتور 12 ولت هست VS را هم به 12 ولت وصل می کنید. بین VSS و زمین هم خازن بگذارید و بین VS و زمین هم خازن بگذارید مقدارشم مثلا 100uf فکر کنم خوب باشد. دقت کنید با توجه به دیتاشیت حداکثر ولتاژ که به VS می دهید هم 36 ولت می تواند باشد.
            خوب دوتا سوال بعدی رو باهم جواب می دهم.
            در این IC همانطور که در دیتاشیت می بینید موتور شما حداکثر می تواند 36 ولت و 1.2 آمپر باشد. پس موتورها کوچک را می شود با آن راه اندازی کرد و برای موتور هایی با توان بالاتر باید مثلا از یک مداری مشابه زیر استفاده کرد.

            در این مدار با توجه به ولتاژ موتور و جریان موتور ترانزیستور مورد نظر را باید انتخاب کرد که بتواند جریان و ولتاژ زیاد را تحمل کند. خوب نحوه کار این مدار به این صورت است البته به صورت ساده میگم چون باید این ترانزیستور ها رو با درایورهای مخصوص خود مثل IR2101 راه اندازی کرد. نحوه کار به این صورت است که A به D وصل است و B به C وصل است.
            اگر شما A,D را یک کنید یعنی ترانزیستورهای 1و4 را روشن کنید و B,C را صفر کنید یعنی ترانزیستور 2و3 را خاموش کنید موتور به راست می چرخد.
            اگر شما A,D را صفر کنید یعنی ترانزیستورهای 1و4 را خاموش کنید و B,C را یک کنید یعنی ترانزیستور 2و3 را روشن کنید موتور به چپ می چرخد.
            و اگر همه ترانزیستورها را هم خاموش کنید موتور نمی چرخد. حالا طبق مطالب بالا برای کنترل دور باید از PWM استفاده کنید و نحوه کار PWM هم به همان صورت بالا می باشد. (50 درصد ترمز، بالا 50 درصد راستگرد و پایین 50 درصد چپگرد)
            خوب حالا شما با میکرو یک سیگنال PWM درست می کنید و آنرا مستقیم به A,D می دهید و NOT آنرا هم به B,C می دهید و طبق گفته های بالا موتور کار می کند اما مشکل وقتی پیش می آید که سرعت روشن و خاموش شدن ترانزیستورها برابر نباشد مثلا سرعت روشن شدن از خاموش شدن بیشتر باشد آنگاه باید دقت داشته باشید که 2 تا PWM که به A,D و B,C اعمال می کنید هم پوشانی نداشته باشد و در ضمن بتوانید سرعت روشن و خاموش شدن ترانزیستور ها رو هم کنترل کنید یعنی وقتی که مثلا PWM که به A,D وصل است یک می باشد و قرار است صفر شود و چون PWM متصل به B,C هم NOT دیگری هست به محض تغییر وضعیت اولی دومی هم تغییر وضعیت می دهد اما چون سرعت روشن و خاموش شدن ها برابر نیست پس در یک لحظه خیلی کوچک همه ترازیستور ها با هم روشن می شود باعث می شود منبع تغذیه اتصال کوتاه شود و جریان زیادی (با توجه به منبع تغذیه) از ترانزیستورها عبور کند و بسوزند. برای این مشکل باید طبق شکل زیر PWM ها رو تولید کرد و به این دوتا (A,D و B,C) اعمال شود که این کار را مثلا با یک مداری بوسیله مقاومت و خازن و NOT به صورت سخت افزاری ایجاد می کنند منظور از اینکه همپوشانی نداشته باشند یعنی اینکه هر دوی PWM ها در یک لحظه یک نشود. که در میکرو AT91 این قابلیت وجود دارد که این نداشتن همپوشانی PWM ها خود واحد میکرو تولید کند و نیازی به سخت افزار اضافه تر نباشد.

            البته با توجه به بلوک دیاگرام IC شما و توضیحات بالا نیازی نیست که این همپوشانی را ایجاد کنید و با یک NOT ساده کار شما حل است.

            دیدگاه


              #7
              پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

              آقا حامد از پیگیری و زحمتاتون متشکرم، خیلی کمکم کردید، ایشاالله پا بده جبران کنیم :agree:
              خوب این مدار نهایی منه:

              مدار بالا یه بخشی از میکروموسمه، که دارم آمادش میکنم؛ میکرویی که براش در نظر گرفتم SAM7S256 قابلیتهاش کافیه و نیاز منو برآورده میکنه؛ موتورها از نوع DC هستند با ولتاژ 6 ولت و 150mA، از همین مینی موتورهای معمولی تو بازار؛ برام کنترل سرعتشون خیلی مهمه، پس با اجازتون 4 تا پایه PWM رو به ورودی ها دادم.
              یه نکته کوچیکم بگم، من دانشجوی برنامه نویسی هستم، با C/C++ مشکلی ندارم، همینقدر که سخت افزار کارکرد صحیح رو داشته باشه، با برنامه نویسی بارم رو ازش میکشم!
              من بتونم، با حداکثر دقتی که میتونم، این موتورها رو راه بندازم (کنترل جهت چرخشها و ترمز به موقع)، کافیه، چون اگه عملی بشه، سوئیچ میزنم رو موتورهای انکدر دار و دیگه خیالم از همه جهت راحت میشه. با راهنماییهاتون مدار رو اصلاح کردم و حالا میخوام نظرتون رو بدونم، که این مدار چطوره، مشکلی نیست که از 4 تا PWM دارم استفاده میکنم؟ یا اینکه همون گیت Not رو پیشنهاد میکنید؟
              با استفاده از 4 تا پین PWM دیگه نیازی به ترانزیستور و گیت NOT و ... نیست، ولی در عوض فشار برنامه نویسی بیشتر میشه. درسته؟

              خوب فکر کنم که، به نتیجه رسیدم. :wow:
              آلبرت انیشتین میگه:
              " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
              حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

              دیدگاه


                #8
                پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

                در مورد مدارت چندتا نکته هست.
                IN1 را به PA25 که PWM2 هست وصل کردید. IN2 را به PA26 که TIOA2 یا DCD1 وصل کردید که از این پایه نمی توان توسط واحد PWM سیگنال گرفت و اشکال دارد.
                IN3 را به PA1 که PWM1 هست وصل کردید. IN4 را به PA0 که PWM0 هست وصل کردید.
                اگر قرار است از 4 تا PWM خود میکرو استفاده کنید باید پایه IN2 را به PA7 یا PA14 که PWM3 هست وصل کنید.
                اگر شما قرار است از 4تا PWM میکرو برای موتورها استفاده کنید دیگر نباید از آنها برای قطعات دیگری استفاده کنید. شما در شماتیک PA2 را PWM2 برچسب زدید که انگار از آن برای جای دیگری دارید استفاده می کنید که این مسئله مشکل ساز می شود. چون این یک سیگنال است و در آن واحد فقط می توان از آن یک PWM با ضریب وظیفه مشخص گرفت که انگاه یا این PWM برای موتور هست یا برای قطعه دیگر که بسته به آن یکی از این دو را ممکن است دچار مشکل کند.
                به نظرم اگر شما یک برد آماده دارید از سری 7S بیایید مدار موتور را با همان NOT و 2 تا PWM راه اندازی کنید و یک برنامه مثلا 10 ثانیه PWM با ضریب وظیفه 90 درصد و سپس 10 ثانیه PWM با ضریب وظیفه 50 درصد و سپس 10 ثانیه PWM با ضریب وظیفه 10 درصد را بر روی هر دوی PWM ها تولید کنید و بررسی کنید که موتورها درست کار می کنند یا نه؟!؟! اگر درست کار کردند آنگاه شما بجای استفاده از 4 تا PWM از 2 تا PWM استفاده کنید و مدارتون را با همان NOT بسازید. اما اگر درست کار نکرد بدون NOT و با 4 تا PWM تست کنید ببینید نتیجه چی می شود و سپس مدارتون را بسازید.

                دیدگاه


                  #9
                  پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

                  :redface:

                  را به PA25 که PWM2 هست وصل کردید. IN2 را به PA26 که TIOA2 یا DCD1 وصل کردید که از این پایه نمی توان توسط واحد PWM سیگنال گرفت و اشکال دارد.
                  خوب این یه اشتباه تو طراحی بود! ببخشید درستش میکنم (ساعت 2:45 صبح بهتر از این نمیشه :mrgreen.

                  اگر قرار است از 4 تا PWM خود میکرو استفاده کنید باید پایه IN2 را به PA7 یا PA14 که PWM3 هست وصل کنید.
                  بله، الان که دارم دیتاشیت رو میبینم متوجه شدم، درسته؛

                  شما در شماتیک PA2 را PWM2 برچسب زدید که انگار از آن برای جای دیگری دارید استفاده می کنید که این مسئله مشکل ساز می شود
                  این هم یه اشتباه تو طراحی بوده.
                  ولی یه سئوال دارم، تو صفحه 36 دیتاشیت، با عنوان "Table 10-3 Multiplexing on PIO controller A"، من اینا رو میبینم:
                  Peripheral A
                  PA0 <--> PMW0
                  PA1 <--> PMW0
                  PA2 <--> PMW0

                  Peripheral B
                  PA7 <--> PMW3
                  PA23 <--> PMW0
                  PA24 <--> PMW1
                  PA25 <--> PMW2
                  خوب، حالا با پیکره بندی PWM، چه اتفاقی میفته؟ دست منه که کدوم یکی از اینا رو فعال کنم درسته؟ راستش دارم گیج میشم!
                  متوجه شدید من چه کار میخواستم بکنم؟ به این ترتیب اتصال داده بودم و میخواستم رو این پینها PWM رو تولید کنم، به این شکل:
                  PA24 <--> IN1
                  PA25 <--> IN2
                  PA1 <--> IN3
                  PA0 <--> IN4

                  به نظرم اگر شما یک برد آماده دارید
                  متاسفانه دسترسی ندارم؛

                  حله، گیج شدم :angry:
                  با اجازتون یکم فکر کنم.
                  آلبرت انیشتین میگه:
                  " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
                  حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

                  دیدگاه


                    #10
                    پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

                    آقا حامد، میگم از بافرهای سه حالته استفاده کنم چی؟ تو این حالت Not، خوب یه جوریه، به نظرم کنترلش وحشتناکه! این ضریب وظیفه 50% کارمو سخت میکنه. ولی خوب با یه بافر سه حالته میتونم راحتتر کار کنم؛ بدونه شک هم جواب میده مثل 74HC244؛ از اونجایی میگم که من دسترسی به امکان تست سخت افزاری ندارم. فرصت اشتباه هم ندارم! :cry2:
                    اینجوری 2 تا پایه استفاده میشه، و با 4 پایه IO میشه تنظیم کرد که کدوم پایه کی فعال بشه؛ و میتونم PWM رو تحت هر سطحی از ضریب وظیفه پیاده سازی کنم. ولی شک دارم، چون این بافر تو حالت غیر فعال وارد آمپدمانس بالا میشه (اگه درست گفته باشم)، یعنی میتونه هر دو حالت رو (چپگرد و راستگرد) درایو کنه؟

                    (میگم بالاخره این کتابهامون به کارمون اومد، مدار منطقی، معماری و ... :NO
                    نمیدونم، برم یه مدار با AVR تو پروتئوس ببندم ببینم چی میشه! (حالا بیا پروتئوس رو راه بنداز! وای خدای من :angry
                    آلبرت انیشتین میگه:
                    " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
                    حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

                    دیدگاه


                      #11
                      پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پی&#1

                      اون جدول رو انگار خوب نگاه نکردی چون چندتا پین از اینکه شما گفتید بیشتر هم دارد.
                      حالت A
                      PA0=PWM0
                      PA1=PWM1
                      PA2=PWM2
                      حالت B
                      PA7=PWM3
                      PA11=PWM0
                      PA12=PWM1
                      PA13=PWM2
                      PA14=PWM3
                      PA23=PWM0
                      PA24=PWM1
                      PA25=PWM2
                      نوشته اصلی توسط GLinBoy
                      :redface:
                      خوب، حالا با پیکره بندی PWM، چه اتفاقی میفته؟ دست منه که کدوم یکی از اینا رو فعال کنم درسته؟ راستش دارم گیج میشم!
                      متوجه شدید من چه کار میخواستم بکنم؟ به این ترتیب اتصال داده بودم و میخواستم رو این پینها PWM رو تولید کنم، به این شکل:
                      PA24 <--> IN1
                      PA25 <--> IN2
                      PA1 <--> IN3
                      PA0 <--> IN4
                      متاسفانه دسترسی ندارم؛

                      حله، گیج شدم :angry:
                      با اجازتون یکم فکر کنم.
                      ببین در این میکرو و همچنین سری 7X کلا 4 تا PWM داریم. خوب شما می توانید هر کدام از این چهار PWM را که می خواهید فعال کنید و تنظیم های مربوطه را انجام دهید. مثلا PWM0 از پین های PA0,PA11,PA23 قابل دسترس است. یعنی شما می توانید با توجه به سخت افزارتون از هر کدام از این 3 پین برای دسترسی به PWM0 استفاده کنید. شما اگر مثلا PA0,PA11 را برای PWM0 فعال کنید بر روی هر دوی این پین ها یک شکل موج PWM میگیرید و هیچ فرقی با هم ندارد.
                      در مورد اینکه پین مورد نظر در چه حالتی باشد. هر پین می تواند در وضعیت I/O یا حالت A یا حالت B باشد. یک سری رجیستر قسمت I/O دارد که تعیین می کنید که پین مورد نظر در چه حالتی باشد.
                      و بعد از اینکه توسط قسمت I/O تعیین کردید که از کدام PWM ها می خواهید استفاده کنید سپس توسط رجیسترهای واحد PWM فرکانس و ضریب وظیفه هر کدام از PWMها رو می توانید به صورت مجزا تعیین کنید.
                      با توجه به این که شما نوشتید برای اتصال پین ها باید هر PWM را به یک پین بدهید. اما شما PA24, PA1 را به پین های IN1,IN3 وصل کردید که این اشتباه می باشد. شما PWM1 را به دو تا کنترلر متفاوت وصل کردید که در این صورت موتور های شما به صورت سخت افزاری بهم وابسته هستند و نمی شود آنها را به صورت نرم افزاری از یکدیگر کنترل کرد.
                      شما حتما حتما حتما اول مداری که با NOT هست رو با یک PWM تست کن ببین احتمالا جواب کارتو خواهد داد. چون اگر با یک PWM موتور را کنترل کنید در برنامه نویسی زیاد درگیر این نمی شود که هر دو PWM متقارن هم هستند یا نه!!!!!
                      حالا اگر برد ARM ندارید مشکلی نیست همون برنامه را می توانید با AVR یا حتی 8051 بنویسید و موتور و درایورش را تست کنید ببینید با یک PWM جواب می دهد یا نه. یا اگر هم باز AVR,8051 یا میکروی دیگری در دسترس ندارید می توانید همان مدار را با یک فانکشن که می تواند D.C را تغییر دهد تست کنید ببینید درست کار می کند یا نه.
                      حتما مدار را عملی تست کن و با پروتئوس چک نکن. من با پروتئوس چک کردم و با یک PWM و NOT درست جواب داد.

                      دیدگاه


                        #12
                        پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پی&#1

                        اصلا از بافر سه حالته استفاده نکن. چون باید دائم PWM بر سر مدار و موتور باشد. ایرادش هم این می باشد که با اون فکری که شما در سر دارید در عمل کاملا فرق می کند که PWM را توسط بافر قطع کنید و موتور توقف کند و برای ترمز موتور حتما باید از PWM با 50 درصد استفاده کنید.
                        اگر به این روشی که شما میگید استفاده کنید فرض کنید موتور با یک سرعتی دارد به راست می چرخد و حالا قرار است در یک لحظه موتور را متوقف کنید به صورت ترمز و شما میاید PWM که از میکرو میاید را توسط بافر قطع می کنید و دیگر به IC و موتور PWM نمی رسد. به دلیل قوانین فیزیکی و اینرسی شما وقتی PWM را قطع کردید و موتور را تحت کنترل ندارید چون موتور قبلش با یک سرعتی چرخش می کرده در لحظه ای که شما PWM را قطع می کنید طبق گفته های بالا موتور شما به حرکت خود ادامه می دهد و یک زمانی طول می کشد که متوقف شود و این مدت زمان به سرعت موتور و باری که روی موتور هست وابسته است.
                        با توجه به توضیحات بالا حتما باید با PWM 50% موتور را ترمز کنید که در همان لحظه که شما فرمان می دهید موتور متوقف شود.
                        در ضمن داخل خود IC یک بافر سه حالته وجود دارد و پایه EN خود IC با توجه به دیتاشیت به صورت پایه کنترلی بافر عمل می کند. نیازی به گذاشتن بافر در خارج از IC نمی باشد.

                        دیدگاه


                          #13
                          پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

                          سلام آقا حامد
                          آقا بابت وقفه ای که افتاد متاسفم، امتحانات دانشگاهم شروع شده سرم حسابی شلوغه :angry:

                          آقا حامد من یه سئوالی برام پیش اومده (البته یه ایده ست)، چطوره به جای اعمال PWM به ورودیهای INx، ما با PWM جریان ورودی که به VC اعمال میکنیم رو کنترل کنیم؛ اینجوری ولتاژ اعمالی به موتورها ثابت میشه (سرعت موتورهارو کنترل میکنیم)، و از اونطرفم، میتونیم راحت نحوه چرخش موتور ها رو کنترل کنیم.

                          آقا حامد من PWM رو از کامل یاد گرفتم و با یه میکرو مگا16 میخواستم مدار رو چک کنم، تو اولین مرحله، مدار این مشکل رو داره، موتور بدون حضور PWM شروع به کار میکنه! البته میشه با غیرفعال کردن ENx از اعمال ولتاژ به موتور جلوگیری کرد ولی... یه مشکله دیگه هم که این تئوری داره، البته به نظر من، اگه ما PWM با ضریب وظیفه 75% به ورودی 1 اعمال کنیم، در عین حال داریم یه ضریب وظیفه 25% هم به ورودی 2 اعمال میکنیم (!). تکلیفه موتور چیه؟
                          من تونستم یه مدار کنترلی جالب پبدا کنم، که تو اون با کمک آی سی MAX4427 موتور رو کنترل میکرد (البته نفهمیدم چطور ترمز میکنه!). ولی خوب من میخوام با همین L293 تمومش کنم، چونکه این آی سی ماسفت رو تو بازار پیدا نکردم :cry:
                          آلبرت انیشتین میگه:
                          " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
                          حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

                          دیدگاه


                            #14
                            پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

                            شرمنده همینطوری میام تو حرفهاتون. یه سوال داشتم و چون به PWM ربط داشت گفتم اینجا بنویسمش:
                            حد اکثر فرکانس Pwm که با armها میتونیم تولید کنیم چقدر هست؟ ( با بالاترین کریستال)
                            راستش من قبلا با AVR ها کار میکردم و الان میخوام arm رو شروع کنم اما این نکته برام خیلی مهم هست.
                            ممنون میشم توضیح بدین... :smile:
                            mer30

                            دیدگاه


                              #15
                              پاسخ : چطور با PWM، راستگرد، چپگرد، و ترمز رو پیاده سازی کنم.

                              نوشته اصلی توسط mohsenmax70
                              شرمنده همینطوری میام تو حرفهاتون. یه سوال داشتم و چون به PWM ربط داشت گفتم اینجا بنویسمش:
                              حد اکثر فرکانس Pwm که با armها میتونیم تولید کنیم چقدر هست؟ ( با بالاترین کریستال)
                              راستش من قبلا با AVR ها کار میکردم و الان میخوام arm رو شروع کنم اما این نکته برام خیلی مهم هست.
                              ممنون میشم توضیح بدین... :smile:
                              فکر کنم این جدول کمکتون کنه:

                              این لینکم درباره PWM تو این میکرو توضیح داده:
                              http://www.atmel.com/dyn/resources/p...ts/doc2682.pdf
                              امیدوارم کمکتون کنه :agree:
                              آلبرت انیشتین میگه:
                              " هیچ وقت چیزی رو خوب نمیفهمی مگر اینکه بتونی به مادربزرگت توضیحش بدی !"
                              حالا مرد میخواد ادعا کنه من انتگرال رو فهمیدم!!!

                              دیدگاه

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