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

موضوع: اندازه گیری 3تاpwmبا یک میکرو و تولید 3تاpwmبا همان میکرو

  1. #1
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض اندازه گیری 3تاpwmبا یک میکرو و تولید 3تاpwmبا همان میکرو

    سلام خدمت تمامی دوستان و همکاران
    یک مشورت و یک راهنمایی از دوستان می خواهم .
    می خواهم با استفاده از یک میکرو avr سه تا موج pwm رو گرفته و آنها رو اندازه گیری کنم(دیوتی سایکل هر موجpwmرو) و بعد با همان میکرو 3تا موج pwm رو که اندازه هر کدام متناسب با همان موج های pwm ورودی می باشند ازش بگیرم.(من یک عکس هم پیوست کردم که بهتر منظورم برای دوستان قابل فهم باشه.)

    خواهشا کسانی که ایده جدیدی دارند یا انجام دادن جواب بدن و جواب های که مرتبط با موضوع نیست مطرح نکنند.
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 13.JPG
مشاهده: 46
حجم: 11.1 کیلو بایت  
    ویرایش توسط sarbaz13 : 31-03-2013 در ساعت 00:59

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mihman نمایش پست ها
    سلام دوست عزیز
    ببخشید اگه ناراحت نمیشین میخام برای اینکه بتونم بهتر راهنمایی کنم چند تا سوال بپرسم
    1- آیا اون موج های pwm که میخان به میکرو اعمال بشن ،بطور همزماان اعمال میشه ؟
    2-آیا اون pwm هایی که میکرو باید تولید کنه، باید همزمان با اعمال Pwm به میکرو ،تولید بشن؟
    3-آیا کاری که میخاین انجام بدین ربطی به رادیو کنترلر هواپیما مدل داره؟؟؟

    اولین چیزی که به ذهن میرسه استفاده از مد کپچر تایمر های میکرو هست.

    در کل از اینکه مزاحمتون شدم و خواستم راهنماییتون کنم شرمنده ام و واقعا معذرت میخام
    سلام
    جواب سوالاتون
    جواب سوال یک:
    بله بطور همزمان اعمال میشه
    جواب سوال دوم:
    بله باید همزمان با میکرو تولید بشن --که می تونیم در صورت مشکل غیر همزمان هم تولید کنیم.
    جواب سوال سوم:
    نه ربطی به رادیو کنترلر هواپیما نداره چون اونها مدارهاشون فرستنده گیرنده هستند و فرستنده اطلاعات رو کد بندی میکنه و گیرنده دیکد می کنه و هیچ ارتباطی به موضوع ما نداره.چون ما داریم روی موج PWMو اندازه گیری دیوتی سایکل هر موج کار می کنیم نه صفر و یک کردن پایه ها
    در میکرو های AVR میکروهای atmega8وatmega16و atmega32 همگی فقط علاوه بر 3تا تایمر یک تایمر کپچر بیشتر ندارند.پس کپچر تایمرها نداریم.فقط تایمر کپچر داریمچ.ن یکی بیشتر نیست.
    بعدم من دوست دارم بحث ما بیخودی نباشه و در آخر کسای که پست میزارن لذت ببرند از بحث و چیزی هم اونا یاد بگیرن هم بنده
    شرکت Time Owner

  5. #3
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    WARNING
    لطفا احترام همدیگه رو نگه دارید . من دیگه حوصله مدام تذکر دادن ندارم . مورد بعدی از هر کدومتون ببینم آیپی تون رو می بندم. اینجا مباحث علمی باید باشه نه ا ینکه با هم جرو بحث کنید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  6. کاربران : 3 تشکر کرده اند از شما kavir برای ارسال این پست سودمند:


  7. #4
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    Exclamation

    نقل قول نوشته اصلی توسط sarbaz13 نمایش پست ها
    سلام خدمت تمامی دوستان و همکاران
    یک مشورت و یک راهنمایی از دوستان می خواهم .
    می خواهم با استفاده از یک میکرو avr سه تا موج pwm رو گرفته و آنها رو اندازه گیری کنم(دیوتی سایکل هر موجpwmرو) و بعد با همان میکرو 3تا موج pwm رو که اندازه هر کدام متناسب با همان موج های pwm ورودی می باشند ازش بگیرم.(من یک عکس هم پیوست کردم که بهتر منظورم برای دوستان قابل فهم باشه.)

    خواهشا کسانی که ایده جدیدی دارند یا انجام دادن جواب بدن و جواب های که مرتبط با موضوع نیست مطرح نکنند.
    این سوال خیلی ساده هست. کافیه شما سه پالس رو به یک پورت بدید مثلا پورت A و اونو ورودی تعریف کنید

    DDRA=0x00;

    بعد مثلا پورت B را خروجی تعریف کنید.

    DDRB=0xFF;

    وPORTB=PORTA;
    !!!

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


    در مورد اندازه گیری فرکانس سه تا موج اگر رشتتون الکترونیک باشه باید اینو بدونید که AVR در هر لحطه فقط قادر به استفاده از یک تایمر هست.

    پس شما فقط قادر هستید از یک تایمر استفاده کنید!! و دستی هم نمی تونید بنویسید چون میکرو کنترلر AVR به اصطلاح غیر علمی یه میکرو خطی هست. یعنی در هر پالس کلاک فقط میتونه یه محاسبه انجام بده و بینش باید delay باشه تا میکرو هنگ نکنه و به درستی کار کنه.


    شما یاید از میکروکنترل هایی استفاده کنید که دستورات را باز هم به زبان غیر علمی موازی اجرا کنه (برای متوجه کردن شما) و زبانش وری لوگ و اینا باشه مثلاو میکرو کنترلرش dsp (دیجیتال سیگنال پروسسینگ) یا fpga باشه مثلا که شما بتونی نو یک کلاک سه پالس رو اندازه بگیری (دستی) یا سه تا تایمر استفاده کنی مثلا

    نتیجه این که AVR قادر به انجام این کار نیست و سوال اشتباهه!


    پیشنهاد این که قبل از انجام هر کاری و مطرح کردن هر سوالی خوب در مورد همه چی تحقیق کنید. در این سوال با خوندن دیتاشیت میکرو و رجیستر ها و فیوز بیت ها متوجه میشید که فقط یک تایمر در یک پالس قابل استفاده هست. و حتی ساده تر از اون (اگه میخوایید دستی کد بنویسید) مقدمات و مفاهیم زبان برنامه نویسی C و میکروکنترل ها را(قبل از یادگیری زبان C و میکرو AVR) مطالعه بفرمایید.
    ویرایش توسط electronicool : 06-05-2016 در ساعت 11:03

  8. #5
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    نتیجه این که AVR قادر به انجام این کار نیست و سوال اشتباهه!
    سلام ، بنظرم این جمله اشتباهه، شما میتونین از کامپایلر اردوینو استفاده کنین، با 6 ورودی a0-a1-a2-a3-a4-a5 میتونی عرض 6 پالس pwm ورودی رو اندازه گیری کنین، از این قابلیت در فلایت کنترلها برای اندازه گیری عرض پالس موج pwm رادیوکنترل استفاده کردم، و برای اینجاد موج pwm میتونین از پینهای 3 - 5 - 6 - 9 - 10 - 11 برای ایجاد 6 پالس pwm استفاده کنین.
    این نکته هم بگم فرکانس pwm پینهای 5 - 6 در حالت پیش فرض 976 هرتز هست و پینهای 3 - 9 - 10 - 11 پیش فرض 490 هرتز که میتونین تغییرش هم بدین.
    در مورد اندازه گیری پهنای پالس هم این نکته رو بگم اگر این سه پالس به صورت پله کانی پشت سر هم باشن خیلی بهتره چون اگر در اردوینو سه دستور خوندن عرض پالس رو پشت سر هم قرار دادین میکرو تا اولین پالس ابتدا و انتهاشو اندازه گیری نکنه دستور بعدی رو اجرا نمیکنه. حتی اگر هم پالسها به صورت پلکانی نباشن حداکثر در پالس بعدی اندازه گیری میشن.


    شما یاید از میکروکنترل هایی استفاده کنید که دستورات را باز هم به زبان غیر علمی موازی اجرا کنه (برای متوجه کردن شما) و زبانش وری لوگ و اینا باشه مثلاو میکرو کنترلرش dsp (دیجیتال سیگنال پروسسینگ) یا fpga باشه مثلا که شما بتونی نو یک کلاک سه پالس رو اندازه بگیری (دستی) یا سه تا تایمر استفاده کنی
    در اینکه FPGA و DSP ها میتونن این کار رو انجام بدن شکی نیست اما ممکنه این برای یک پروژه تولید انبوه باش که OverDesign کردن یه ضرر بزرگ به حساب میاد، درسته fpga کارهای زیادی میتونی انجام بده اما در بسیاری از موارد استفاده از امکاناتی که میکروکنترلر داره رو نمیتونه به راحتی ارائه بده.

    دقت راهکار استفاده از اردوینو برای اندازه گیری عرض پالس در حد 1 میکرو ثانیه تست شده هست، برای دقت بیشتر میتونین از میکروکنترلر stm32f407zgt6 استفاده کنین ، هر کدوم 136 پین I/O رو میتونین به عنوان ایجاد کننده وقفه خارجی معرفی کنین و هر کدام از اینها رو میتونین به دلخواه در یکی از وضعیت های زیر قرار بدین:


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

    من در مورد قابلیتهای STM32F4 خارج از سوال نویسنده بحث کردم فقط بخاطر صحبتی که دوستمون در مورد ضعف قابلیت های میکروکنترلر مطرح کردن امیدوارم نویسنده ناراحت نشه.

  9. کاربران : 2 تشکر کرده اند از شما mohammadne برای ارسال این پست سودمند:


  10. #6
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    Thumbs up

    نقل قول نوشته اصلی توسط mohammadne نمایش پست ها
    سلام ، بنظرم این جمله اشتباهه، شما میتونین از کامپایلر اردوینو استفاده کنین، با 6 ورودی a0-a1-a2-a3-a4-a5 میتونی عرض 6 پالس pwm ورودی رو اندازه گیری کنین، .
    می خواهم با استفاده از یک میکرو avr سه تا موج pwm رو گرفته و آنها رو اندازه گیری کنم
    اولا پیشنهادم به شما مثل دوستمون sarbaz13 هست پیشنهاد این که قبل از انجام هر کاری و مطرح کردن هر سوالی خوب در مورد همه چی تحقیق کنید
    چون شما هم بر حسب اتفاق دقیقا همان اشتباهات استارتر را در مفاهیم اولیه دارید. دوست گرامی PWM پالس و یا موج نیست یک مدولاسیون هست!!! اینو هر کس که در رشته الکترونیک و مخابراته مهمه که بدونه.


    دوما ! بله البته من حرف رو همینطور قبول نمی کنم. (میشه اثبات کنید!) میشه یه کد که این کار رو میکنه به زبان C بنویسید و یه شماتیک تو پروتئوس به من بدید و بگید با چه کامپایلری AVR رو پروگرم کنم تا برنامه کار کنه و دیوتی سایکل سه تا پالس رو هم زمان اندازه بگیره؟

    با تشکر.
    ویرایش توسط electronicool : 07-05-2016 در ساعت 02:14

  11. #7
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    Icon16

    دوست عزیز mohammadne من کتابخانه آردوینو رو به پروتئوسم اضافه کردم. ممنون میشم اگه شماتیک مدار و کد اردینو یا کدویژن و یا ... رو که استفاده می کنید بدید تا من هم مدار اندازه گیری دیوتی سایکل سه پالس همزمان رو بسازم. (چون شما عرض کردید که استفاده کردید و برای من هم سوال برانگیز شد)

    منتظر پاسختون هستم.با تشکر

  12. #8
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    سلام این هم از برنامه، شما هر پالس pwm که خواستین به ورودی های ADC0-ADC3 بدین و در رابط سریال عرض پالس رو به میکروثانیه مشاهده کنین، در برنامه زیر من از خروجی های PWM خود میکرو برای اینجاد این پالس استفاده کردم . حداکثر پهنای پالس رو روی 20 میلی ثانیه قرار دادم تا اگر پالسی دریافت نشد برنامه قفل نکنه. پهنای پالسی که در سریال مشاهده میکنید رو برای صحت عملکرد میتونین با اسکوپ اندازه گیری کنید.



    ادرس فایل پروتئوس و کد HEX :
    PROTEUS arduino

  13. تشکرها از این نوشته :


  14. #9
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mohammadne نمایش پست ها
    سلام این هم از برنامه، شما هر پالس pwm که خواستین به ورودی های ADC0-ADC3 بدین و در رابط سریال عرض پالس رو به میکروثانیه مشاهده کنین، در برنامه زیر من از خروجی های PWM خود میکرو برای اینجاد این پالس استفاده کردم . حداکثر پهنای پالس رو روی 20 میلی ثانیه قرار دادم تا اگر پالسی دریافت نشد برنامه قفل نکنه. پهنای پالسی که در سریال مشاهده میکنید رو برای صحت عملکرد میتونین با اسکوپ اندازه گیری کنید.



    ادرس فایل پروتئوس و کد HEX :
    PROTEUS arduino


    اول اینکه شما باید پورت های گیرنده فرکانس رو پول اپ کنید . البته در پروتئوس مشکلی پیش نمیاد ولی در مدار واقعی حطا ایجاد میشه در اندازه گیری.

    دوم اینکه خوب مهندس جان در پروتئوس که از ماژول های اماده اردینو استفاده نشده درسته؟ این یه atmega328 هست. پس برنامه رو خودتون نوشتید درسته؟ البته از روی فایل هگز که چیزی رو نمیشه متوجه شد (میشه منتها با فلاکت بی حد) . زیان C یا چیز دبگیه ایش رو دارید؟ سورس اصلی.

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




    پاسخ مدار اشتباه هست و همیشه یک عدد را خروجی می دهد لذا برناتون رو حتما اینجا وارد کنید. (منتظر هستم)

    با تشکر.

  15. #10
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    نیازی به مقاومت پول اپ نیست چون خروجی های PWM به صورت پول پوش هستند، احتمالا سطح سیگنال شما بین 0 تا 5 نبوده، با اسیلوسکوپ چک کنین. در ضمن قبل از اعمال سیگنال دیگه باید پینهای تولید کننده PWM که در اینجا D5-D6-B1-B2 هستند رو از پینهای C0-C1-C2-C3 قطع کنین و PWM دلخواهتون رو به هر کدوم از این 4 پین اعمال کنید.
    اون بالا نوشتم که ماکزیمم عرض پالس رو 20 میلی ثانیه قرار دادم پس فرکانس 1 هرتز و دیوتی 40 درصد مقدار صفر نمایش میده.
    خب طبق عکس زیر من فرکانس 2000 هرتز با دیوتی 50 درصد به پین C0 اعمال کردم که عرض پالسش 250 میکرو ثانیه هست .
    نیازی به سورس نیست شبیه ساز بدون مشکل کار میکنه.


  16. تشکرها از این نوشته :


  17. #11
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    Exclamation

    نقل قول نوشته اصلی توسط mohammadne نمایش پست ها
    نیازی به مقاومت پول اپ نیست چون خروجی های pwm به صورت پول پوش هستند، احتمالا سطح سیگنال شما بین 0 تا 5 نبوده، با اسیلوسکوپ چک کنین. در ضمن قبل از اعمال سیگنال دیگه باید پینهای تولید کننده pwm که در اینجا d5-d6-b1-b2 هستند رو از پینهای c0-c1-c2-c3 قطع کنین و pwm دلخواهتون رو به هر کدوم از این 4 پین اعمال کنید.
    اون بالا نوشتم که ماکزیمم عرض پالس رو 20 میلی ثانیه قرار دادم پس فرکانس 1 هرتز و دیوتی 40 درصد مقدار صفر نمایش میده.
    خب طبق عکس زیر من فرکانس 2000 هرتز با دیوتی 50 درصد به پین c0 اعمال کردم که عرض پالسش 250 میکرو ثانیه هست .
    نیازی به سورس نیست شبیه ساز بدون مشکل کار میکنه.

    اها متوجه شدم مهندس جان (اشتباه از من بود) چون من کد رو ندارم نگرفتم چی شد. درسته. پس مدار محدودیت داره در اندازه گیری فرکانس و نمیشه هر فرکانسی رو باهاش اندازه گرفت. این احیانتا ربطی به کلاک و سخت افزار avr و یا محدودیت در استفاده از تایمر نداره به نظر خودت؟؟؟ (دلیل این 20 میلی ثانیه چیه به نظر خودت؟؟)


    کد مهندس جان کد!!
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 1.png
مشاهده: 14
حجم: 32.7 کیلو بایت   برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 2.png
مشاهده: 16
حجم: 18.4 کیلو بایت   برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 3.png
مشاهده: 15
حجم: 19.1 کیلو بایت  
    ویرایش توسط electronicool : 07-05-2016 در ساعت 17:01

  18. #12
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

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

    کد:
    unsigned long val0,val1,val2,val3;           // variable to store the value read
    
    void setup()
    {
       Serial.begin(115200); 
       pinMode(5, OUTPUT);
       pinMode(6, OUTPUT);
       pinMode(9, OUTPUT);
       pinMode(10, OUTPUT);
    
       pinMode(A0, INPUT);
       pinMode(A1, INPUT);
       pinMode(A2, INPUT);
       pinMode(A3, INPUT);
    
       analogWrite(5, 10);
       analogWrite(6, 100);
       analogWrite(9, 200);
       analogWrite(10, 240);
    }
    
    void loop()
    {
      val0 = pulseIn(A0, HIGH);
      val1 = pulseIn(A1, HIGH);
      val2 = pulseIn(A2, HIGH);
      val3 = pulseIn(A3, HIGH);
    
      Serial.print(val0);
      Serial.print("  ");
      Serial.print(val1);
      Serial.print("  ");
      Serial.print(val2);
      Serial.print("  ");
      Serial.println(val3);
    delay(500);
    }

  19. کاربران : 2 تشکر کرده اند از شما mohammadne برای ارسال این پست سودمند:


  20. #13
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    Thumbs up

    نقل قول نوشته اصلی توسط mohammadne نمایش پست ها
    این 20 میلی ثانیه رو خودم محدود کردم، برای اینکه بیش از 20 میلی ثانیه برای خوندن یه پالس برنامه رو معطل نکنه.
    برای افزایش دقت میتونین از میکروهای STM32F4 استفاده کنین.
    اینم کد:

    کد:
    unsigned long val0,val1,val2,val3;           // variable to store the value read
    
    void setup()
    {
       Serial.begin(115200); 
       pinMode(5, OUTPUT);
       pinMode(6, OUTPUT);
       pinMode(9, OUTPUT);
       pinMode(10, OUTPUT);
    
       pinMode(A0, INPUT);
       pinMode(A1, INPUT);
       pinMode(A2, INPUT);
       pinMode(A3, INPUT);
    
       analogWrite(5, 10);
       analogWrite(6, 100);
       analogWrite(9, 200);
       analogWrite(10, 240);
    }
    
    void loop()
    {
      val0 = pulseIn(A0, HIGH);
      val1 = pulseIn(A1, HIGH);
      val2 = pulseIn(A2, HIGH);
      val3 = pulseIn(A3, HIGH);
    
      Serial.print(val0);
      Serial.print("  ");
      Serial.print(val1);
      Serial.print("  ");
      Serial.print(val2);
      Serial.print("  ");
      Serial.println(val3);
    delay(500);
    }
    بله درسته من درباره ی آردینو اطلاعاتی نداشتم. و باید حرفم رو پس بگیرم. البته من زیاد با AVR کلنجار نمیرم خیلی رو مخه! (طبق فرمایش استاد دانشگاه هم دنبال پروگرمری غیر از مال خود اتمل نرفتم.

    ممنون از صبوریتون فقط دو تا سوال دیگه دارم ازتون:
    اول اینکه برای کد کردن این برنامه نیااز به کامپایلر یا پروگرمر اردینو هست؟ (هیچ اطلاعاتی در این باره ندارم) در بازار پیدا میشه؟ با دیگر میکرو کنترلر های AVR هم میشه اینکار رو کرد؟
    دوم اینکه فرمودید هزینه ساخت با میکرو های دیگه بالا میره! چرا؟ منظور قیمت تمام شده میکرو کنترلر هست؟ در تولید انبوه میفرستن چین از ویفرش IC میزنن دیگه یه ملیون تا میکرو رو که پروگرم نمی کنن! اینم درست میگم یا باز اشتباه میکنم؟

    تشکرات فراوان
    ویرایش توسط electronicool : 07-05-2016 در ساعت 23:11

  21. #14
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    اردوینو همون avr اما با این تفاوت که یه تیم کتابخانه هایی برای این میکرو نوشتن که میشه بدون تغییر کد راحت از میکرویی به میکرو دیگه نقل مکان کرد و بجای چند ده خط کد بشه با چند کد همون برنامه رو نوشت، این برنامه رو با کامپایلر اردوینو کامپایل کن ، احتمالا استادتون به خاطر قابلیت دیباگ پروگرامر خود اتمل این حرف رو زده اما الان دیگه میکرو arm با اون همه امکانات رو با یه پروگرامر 13 تومنی میتونی پروگرام و دیباگ کنی.
    برای پروگرام کردن هم کامپایلر از اغلب پروگرامر ها پشتیبانی میکنه و نیاز به خرید پروگرامر نیست ، میکرو هم مگا 8 و 328 و ...
    در تولید انبوه میفرستن چین از ویفرش ic میزنن دیگه یه ملیون تا میکرو رو که پروگرم نمی کنن!
    این کار عملی هست اما به هیچ وجه توجیه اقتصادی نداره .

  22. کاربران : 2 تشکر کرده اند از شما mohammadne برای ارسال این پست سودمند:


  23. #15
    عضو جدید
    تاریخ عضویت
    May 2016
    نام
    حامد
    نوشته ها
    18
    تشکر
    17
    تشکر شده 5 بار در 5 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mohammadne نمایش پست ها
    اردوینو همون avr اما با این تفاوت که یه تیم کتابخانه هایی برای این میکرو نوشتن که میشه بدون تغییر کد راحت از میکرویی به میکرو دیگه نقل مکان کرد و بجای چند ده خط کد بشه با چند کد همون برنامه رو نوشت، این برنامه رو با کامپایلر اردوینو کامپایل کن ، احتمالا استادتون به خاطر قابلیت دیباگ پروگرامر خود اتمل این حرف رو زده اما الان دیگه میکرو arm با اون همه امکانات رو با یه پروگرامر 13 تومنی میتونی پروگرام و دیباگ کنی.
    برای پروگرام کردن هم کامپایلر از اغلب پروگرامر ها پشتیبانی میکنه و نیاز به خرید پروگرامر نیست ، میکرو هم مگا 8 و 328 و ...

    این کار عملی هست اما به هیچ وجه توجیه اقتصادی نداره .
    دوست عزیز من مدتی وقت گذاشتم اردینو رو یاد گرفتم و برنامه نویسیش رو. و باید ذکر کنم که اگرچه اردینو این دستور رو مدولاسیون PWM معرفی کرده اما در حقیقت اینطور نیست و این دستور
    analogWrite که ذکر کردید از تابع delay برای این کار کمک گرفته می شود و این خروجی دقیق به ما نمی دهد (بیش از یک خروجی ) با یک تایمر . رجوع شود به :

    Arduino - AnalogWrite
    قسمت:
    Notes and Known Issues

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

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


    در مورد صزفه اقتصادی هم وقتی شما تولیدی بزرگی دارید و از چین قطعات الکترونیکی می خرید و PCB ،شرکت با قیمت ناچیزی به شما پیشنهاد مونتاژ میده که تقریبا پول همون خریدتون هست و زیاد بهش اضافه نمیشه و برای تولیدات بسیار بزرگ و انبوه این روش مقرون به صرفه تره


    با نرم افزار ansys (مطمئن نیستم) اینا رو ویفرش رو طراحی می کنند و میدن چین (خارج) من تو ایران جایی رو نمی شناسم این کار رو بکنه

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

    البته من رشتم برق قدرته و شما الکترونیک هستید. اگر اشتباه گفتم شما حتما تصحیح بفرمایید.

    با تشکر.
    ویرایش توسط electronicool : 22-05-2016 در ساعت 13:11 دلیل: اضافه کردن لینک

  24. #16
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    سلام برای خوندن PWM ها از یکی از تایمرها برای اینکار استفاده میکنه و چون در زمان اندازه گیری عرض پالس میکرو کار دیگه ای انجام نمیده دقتش تقریبا چند میکرو ثانیه هست، بالا هم گفتم دقتش در حد کارهای ساده، اما دستور Arduino - AnalogWrite از PWM سخت افزاری برای تولید سیگنال PWM استفاده میکنه که دیگه دقتش به تایمر بستگی داره.
    پروگرام میکرو زمان زیادی نمیبره میشه با راهکارهایی مثلا 1000 تا برد رو همزمان پروگرام کرد، اتفاقا قابل برنامه ریزی بودن میکرو مزیتهایی هم داره، گاهی وقتها لازمه که برنامه به روز رسانی بشه

  25. #17
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    سلام
    دوست عزیز
    سخت چیزی به شما یاد دادن
    شما همون جور که میدونی کار کن و لذت ببر
    شرکت Time Owner

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

  1. کمک در ساخت pwmبا تایمر صفر
    توسط foaad در انجمن AVR
    پاسخ: 7
    آخرين نوشته: 29-03-2014, 16:44
  2. راه اندازی PWMدر dsPIC30f6014A
    توسط Raha323 در انجمن PIC
    پاسخ: 0
    آخرين نوشته: 11-03-2014, 16:47
  3. [سوال] ساخت pwmدقیق
    توسط Raha323 در انجمن PIC
    پاسخ: 1
    آخرين نوشته: 16-01-2014, 14:28
  4. شارژر اتوماتیک باتری اتومبیل
    توسط Ma3ood در انجمن الکترونیک
    پاسخ: 0
    آخرين نوشته: 23-09-2013, 12:46
  5. کمک فاصله سنج 3تایی
    توسط pahpad.elect در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 02-09-2013, 22:32

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

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