درود بر دوستان
امیدوارم حال همتون عالی باشه
من امروز میخوام PWM نرم افزاری رو به شما معرفی کنم
چون خیلی از دوستان دیدم که گذرشون به این کارها میخوره
همون طور که میدونید اکثر میکروهای AVR هشت بیتی PWM سخت افزاری محدودی دارند و اگر بخواهیم که آنها را به کار بگیریم باید از همون پایه ای که مشخص شده PWM بگیریم ...
بنابراین اگر کسی بخواهد که از پایه های دیگه PWM بگیرد باید به صورت نرم افزاری تعریف کند تا پایه دلخواه را PWM کند ...
همانطور که می دانید برای هر PWM نیاز به یک تایمر دارد . البته در بعضی از تایمرها هستند که 3تا PWM تولید میکنند . اما در این برنامه ای که میخواهم برای شما معرفی کنم تنها یک تایمر بکار رفته است . تایمر صفر رو انتخاب کردم که امکاتاتش کمه و به کارمون میاد !! دلیل اینکه چرا از تایمر های دیگه استفاده نکردم اینه که گفتم شاید کسی از تایمر های دیگه که خیلی امکاناتش بالاتره بخواهد استفاده کند .
با استفاده از تایمر 0 میکروهای 128-64-ATmega16-32 این قابلیت را دارند که انجام مقایسه ای مقدار تایمر را انجام دهد(در بعضی از تایمر0 میکرو ها فقط این قابلیت رو دارند که Overflow کنند مثل ATmega8 ) . پس میتوانیم در این تایمر فرکانس را کم و زیاد کنیم . اگر فرکانس را بالا ببریم (مقدار OCR0 را کم کنیم) پردازش زیادتر میشود و دقت پایین می آید و اگر فرکانس رو کم کنیم دقت زیاد میشود . ما در این پروژه نیازی به این دو داریم ولی تا یک حدی !!! این تایمر در مد CTC تنظیم شده است .
اگر برایتان فرکانس زیاد مهم نیست مقدار OCR0 را زیادتر کنید تا پردازش کمتر شود . دلیل اینکه روی بحث پردازش تاکید میکنم این هست که روی دستورات تاخیری تاثیر میگذارد و این باعث میشود که تاخیرات نرم افزاری دیرتر صورت بگیرد .
خب بریم سر اصل مطلب
هدف از این پروژه این بود که یک LED بارانی یا به قول بچه ها شهاب سنگ LED بسازم ولی از اونجایی که صفحه 5 این تاپیک رو نخونده بودم فکر میکردم که کسی برنامش رو نگذاشته .
این هم بگم که قبلا دو تا تاپیک دیدم که درباره این موضوع بحث شده
http://www.eca.ir/forum2/index.php?topic=66771.15
http://www.eca.ir/forum2/index.php?topic=64272.60
ولی چون کاربرد PWM فقط در LED بارانی نیست من این تاپیک رو باز کردم تا همه استفاده کنند .
================================================== ==================
برنامه ها را در لینکهای تعیین شده "موضوعات بحث شده" بیابید.
================================================== ==================
یک توضیح مختصر در مورد برنامه :
برنامه طوری طراحی شده که با استفاده از آرایه میتوانیم مقدار تک تک PWM ها را تغییر بدهیم
آرایه ای که []pwm نام دارد را میتوانید اندیس آن را برای PWM دلخواهتان تنظیم کنید
بازه مقدار آرایه PWM از 0 تا 99 است که نشانگر دیوتی سایکل است :biggrin:
این آرایه یه جورایی میشه گفت که مثل رجیستر عمل میکنه . یعنی اینکه تا مقدار به آن بدهیم PWM تنظیم میشود .
================================================== ==================
برنامه ATmega64-128 :
در این دو میکرو به دلیل اینکه دستور PORTx.y فقط برای پورتهای A,B,C,D کاربرد دارد گفتم چه بهتر که همه رو با استفاده از دستورات کتابخانه ای خود کدویژن به کار بگیرم .
از لحاظ پردازش هم با این فرکانس و این تقسیم کننده فرکانس در تایمر ، در میکروی اتمگا 16 و 32 تقریبا 15.75% و در میکرو های اتمگا 64 و 128 تقریبا 24.67% پردازش میکرو را میگیرد . (البته این محاسبات در بدترین شرایط در نظر گرفته شده است .)
اگر بخواهید از تمام PWM های نرم افزاری استفاده نکنید میتوانید یکسری تنظیمات را تغییر دهید ...
البته که اگر PWM های کمتری را به کار بگیرید پردازش کمتری خواهد گرفت .
راستی بچه ها من این برنامه رو که براتون گذاشتم 16 تا LED بهش وصل کردم برای تست .
این هم کلیپ ( 1.5 مگابایت)
http://s5.picofile.com/file/8115298350/MOV03572.mp4.html
LED بیشتر هم داشتم ولی سه میلیمتری نبودند
برنامه ای که درون حلقه While نوشتم اینکار را انجام میدهد
البته افکتهای بیشتر رو هم میتونستم بگذارم ولی وقت نکردم
دوستان سوالی بود در خدمتم
موفق باشید
موضوعات بحث شده در این تاپیک
چگونه تمام پایه های میکروکنترلر را PWM کنیم؟؟؟ (با کدویژن)
چگونه تمام پایه های میکروکنترلر را PWM کنیم؟؟؟ (با بسکام)
چگونه تمام پایه های میکروکنترلر را PWM کنیم؟؟؟ (با اتمل استودیو)
کتابخانه IObits برای زبان C
چگونه با دو ولوم میتوان فرکانس و دیوتی سایکل PWM سخت افزاری را تغییر داد ؟؟
ساخت LED بارانی
کنترل سرعت چندین موتور DC به طور همزمان !!! (قابل ارتقاع تا ۵۳ موتور)
نمونه برنامه ای برای کنترل LED RGB
چگونه PWM را به ولتاژ DC تبدیل کنیم ؟؟
ساخت 7 RGB و 22 PWM با ATmega8 و ساخت 10 RGB و 32 PWM با ATmega16,32 (با بسکام)
ساخت 17 RGB و 53 PWM با میکروهای ATmega64,128
ساخت 28 RGB و 86 PWM با میکروهای ATmega640,1280,2560
ساخت 7 RGB و 22 PWM با Mega8 و ساخت 10 RGB و 32 PWM با Mega16,32 (با کدویژن)
ساخت 17 RGB و 53 PWM با Mega64,128
ساخت 28 RGB و 86 PWM با Mega640,1280,2560
ساخت 7 RGB و 22 PWM با Mega8 و ساخت 10 RGB و 32 PWM با Mega16,32 (با اتمل استودیو)
ساخت 17 RGB و 53 PWM با Mega64,128
ساخت 28 RGB و 86 PWM با Mega640,1280,2560
مقایسه سه نرم افزار کدویژن و اتمل استودیو و بسکام
ساخت 5 PWM با ATtiny13A (با دقت 50 پله و 250 هرتز)(کدویژن)
ساخت 5 PWM با ATtiny13A (با دقت 50 پله و 250 هرتز)(بسکام)
چگونه بعضی از پایه های میکروکنترلر AVR را به صورت دلخواه PWM کنیم ؟؟
توضیح خط به خط و بلوک به بلوک برنامه pwm مربوط به LED بارانی (به همت آقای سید محمد علوی )
فیلمهای گرفته شده توسط دوستان
کنترل دور موتور DC به وسیله PWM توسط آقای علی اکبری
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 1
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 2
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 3
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 4
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 5
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 6
امیدوارم حال همتون عالی باشه
من امروز میخوام PWM نرم افزاری رو به شما معرفی کنم
چون خیلی از دوستان دیدم که گذرشون به این کارها میخوره
همون طور که میدونید اکثر میکروهای AVR هشت بیتی PWM سخت افزاری محدودی دارند و اگر بخواهیم که آنها را به کار بگیریم باید از همون پایه ای که مشخص شده PWM بگیریم ...
بنابراین اگر کسی بخواهد که از پایه های دیگه PWM بگیرد باید به صورت نرم افزاری تعریف کند تا پایه دلخواه را PWM کند ...
همانطور که می دانید برای هر PWM نیاز به یک تایمر دارد . البته در بعضی از تایمرها هستند که 3تا PWM تولید میکنند . اما در این برنامه ای که میخواهم برای شما معرفی کنم تنها یک تایمر بکار رفته است . تایمر صفر رو انتخاب کردم که امکاتاتش کمه و به کارمون میاد !! دلیل اینکه چرا از تایمر های دیگه استفاده نکردم اینه که گفتم شاید کسی از تایمر های دیگه که خیلی امکاناتش بالاتره بخواهد استفاده کند .
با استفاده از تایمر 0 میکروهای 128-64-ATmega16-32 این قابلیت را دارند که انجام مقایسه ای مقدار تایمر را انجام دهد(در بعضی از تایمر0 میکرو ها فقط این قابلیت رو دارند که Overflow کنند مثل ATmega8 ) . پس میتوانیم در این تایمر فرکانس را کم و زیاد کنیم . اگر فرکانس را بالا ببریم (مقدار OCR0 را کم کنیم) پردازش زیادتر میشود و دقت پایین می آید و اگر فرکانس رو کم کنیم دقت زیاد میشود . ما در این پروژه نیازی به این دو داریم ولی تا یک حدی !!! این تایمر در مد CTC تنظیم شده است .
اگر برایتان فرکانس زیاد مهم نیست مقدار OCR0 را زیادتر کنید تا پردازش کمتر شود . دلیل اینکه روی بحث پردازش تاکید میکنم این هست که روی دستورات تاخیری تاثیر میگذارد و این باعث میشود که تاخیرات نرم افزاری دیرتر صورت بگیرد .
خب بریم سر اصل مطلب
هدف از این پروژه این بود که یک LED بارانی یا به قول بچه ها شهاب سنگ LED بسازم ولی از اونجایی که صفحه 5 این تاپیک رو نخونده بودم فکر میکردم که کسی برنامش رو نگذاشته .
این هم بگم که قبلا دو تا تاپیک دیدم که درباره این موضوع بحث شده
http://www.eca.ir/forum2/index.php?topic=66771.15
http://www.eca.ir/forum2/index.php?topic=64272.60
ولی چون کاربرد PWM فقط در LED بارانی نیست من این تاپیک رو باز کردم تا همه استفاده کنند .
================================================== ==================
برنامه ها را در لینکهای تعیین شده "موضوعات بحث شده" بیابید.
================================================== ==================
یک توضیح مختصر در مورد برنامه :
برنامه طوری طراحی شده که با استفاده از آرایه میتوانیم مقدار تک تک PWM ها را تغییر بدهیم
آرایه ای که []pwm نام دارد را میتوانید اندیس آن را برای PWM دلخواهتان تنظیم کنید
بازه مقدار آرایه PWM از 0 تا 99 است که نشانگر دیوتی سایکل است :biggrin:
این آرایه یه جورایی میشه گفت که مثل رجیستر عمل میکنه . یعنی اینکه تا مقدار به آن بدهیم PWM تنظیم میشود .
================================================== ==================
برنامه ATmega64-128 :
در این دو میکرو به دلیل اینکه دستور PORTx.y فقط برای پورتهای A,B,C,D کاربرد دارد گفتم چه بهتر که همه رو با استفاده از دستورات کتابخانه ای خود کدویژن به کار بگیرم .
از لحاظ پردازش هم با این فرکانس و این تقسیم کننده فرکانس در تایمر ، در میکروی اتمگا 16 و 32 تقریبا 15.75% و در میکرو های اتمگا 64 و 128 تقریبا 24.67% پردازش میکرو را میگیرد . (البته این محاسبات در بدترین شرایط در نظر گرفته شده است .)
اگر بخواهید از تمام PWM های نرم افزاری استفاده نکنید میتوانید یکسری تنظیمات را تغییر دهید ...
البته که اگر PWM های کمتری را به کار بگیرید پردازش کمتری خواهد گرفت .
راستی بچه ها من این برنامه رو که براتون گذاشتم 16 تا LED بهش وصل کردم برای تست .
این هم کلیپ ( 1.5 مگابایت)
http://s5.picofile.com/file/8115298350/MOV03572.mp4.html
LED بیشتر هم داشتم ولی سه میلیمتری نبودند
برنامه ای که درون حلقه While نوشتم اینکار را انجام میدهد
البته افکتهای بیشتر رو هم میتونستم بگذارم ولی وقت نکردم
دوستان سوالی بود در خدمتم
موفق باشید

موضوعات بحث شده در این تاپیک
چگونه تمام پایه های میکروکنترلر را PWM کنیم؟؟؟ (با کدویژن)
چگونه تمام پایه های میکروکنترلر را PWM کنیم؟؟؟ (با بسکام)
چگونه تمام پایه های میکروکنترلر را PWM کنیم؟؟؟ (با اتمل استودیو)
کتابخانه IObits برای زبان C
چگونه با دو ولوم میتوان فرکانس و دیوتی سایکل PWM سخت افزاری را تغییر داد ؟؟
ساخت LED بارانی
کنترل سرعت چندین موتور DC به طور همزمان !!! (قابل ارتقاع تا ۵۳ موتور)
نمونه برنامه ای برای کنترل LED RGB
چگونه PWM را به ولتاژ DC تبدیل کنیم ؟؟
ساخت 7 RGB و 22 PWM با ATmega8 و ساخت 10 RGB و 32 PWM با ATmega16,32 (با بسکام)
ساخت 17 RGB و 53 PWM با میکروهای ATmega64,128
ساخت 28 RGB و 86 PWM با میکروهای ATmega640,1280,2560
ساخت 7 RGB و 22 PWM با Mega8 و ساخت 10 RGB و 32 PWM با Mega16,32 (با کدویژن)
ساخت 17 RGB و 53 PWM با Mega64,128
ساخت 28 RGB و 86 PWM با Mega640,1280,2560
ساخت 7 RGB و 22 PWM با Mega8 و ساخت 10 RGB و 32 PWM با Mega16,32 (با اتمل استودیو)
ساخت 17 RGB و 53 PWM با Mega64,128
ساخت 28 RGB و 86 PWM با Mega640,1280,2560
مقایسه سه نرم افزار کدویژن و اتمل استودیو و بسکام
ساخت 5 PWM با ATtiny13A (با دقت 50 پله و 250 هرتز)(کدویژن)
ساخت 5 PWM با ATtiny13A (با دقت 50 پله و 250 هرتز)(بسکام)
چگونه بعضی از پایه های میکروکنترلر AVR را به صورت دلخواه PWM کنیم ؟؟
توضیح خط به خط و بلوک به بلوک برنامه pwm مربوط به LED بارانی (به همت آقای سید محمد علوی )
فیلمهای گرفته شده توسط دوستان
کنترل دور موتور DC به وسیله PWM توسط آقای علی اکبری
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 1
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 2
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 3
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 4
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 5
افکتهای طراحی شده توسط آقای کوروش شفیع زاده پارت 6
دیدگاه