تولید PWM چند کانالی توسط AVR

در این قسمت از سری آموزش های “در کوچه پس کوچه های الکترونیک” با روش تولید PWM چند کانالی توسط AVR یا به عبارتی Multi channel PWM آشنا می شویم و بعد از فهمیدن روش کار ، با انواع کامپایلرها و زبان های Basic و C و ++C روش پیاده سازی چند کانالی PWM رو بررسی می کنیم. همونطور که می دونید میکروکنترلرهای موجود همگی حداقل دارای یک واحد PWM هستند. اما زمانی که در یک پروژه نیاز به تعداد زیادی کانال PWM باشد ، قطعا PWM سخت افزاری جوابگو نیست! پس راه حل چیست؟!
هسته ی واحد PWM در واقع یک تایمر بعلاوه چند رجیستر مقایسه کننده می باشد که اساس عملکرد آن و راه اندازیشان توسط میکروکنترلرهای مختلف در سری آموزش های ” الکترونیک با یک فنجان قهوه “ به تفصیل بیان خواهد شد و بحث آن در این جلسه نمی گنجد. اما در این سری از آموزش ها به قرار معمول به بررسی نکات و ترفندها می پردازیم و واحد PWM را نرم افزاری و چند کانالی پیاده سازی می کنیم.
ممکنه برای شما سوال پیش اومده باشه که حداکثر چند کانال به این روش می تونیم داشته باشیم؟
برای رسیدن به جواب سوال بالا و بحث های پیرامون این موضوع ویدئو زیر رو ببینید!
برای دیدن ویدئو با کیفیت بهتر از لینک های ذیل استفاده کنید:
درباره مرتضی زندی
خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.
نوشته های بیشتر از مرتضی زندیمطالب زیر را حتما مطالعه کنید
آموزش Free RTOS نحوه استفاده از سمافور Semaphore
سیستم عامل بلادرنگ RTOS چیست؟
انواع روش های برنامه نویسی میکروکنترلرها
آموزش نحوه استفاده از Migrate و Legacy جهت keil 5 گام به گام
آموزش نحوه نصب پک های keil 5 گام به گام
آموزش نحوه نصب و کرک Keil 5 گام به گام
6 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
This site uses Akismet to reduce spam. Learn how your comment data is processed.
سلام وقت بخیر ممنون از زحمات شما لطفا فایل pdf از برنامه نوشته شده در سایت قرار بدید
با سلام
ممنون از نظر شما، انچام خواهد شد.
سلام. ببخشید فرکانس 50 کیلوهرتز را چطوری میشه روی این حالت پیاده کرد؟؟ از روش شما حساب میکنم به نتیجه نمیرسم. میشه راهنمایی بفرمایید. مممنون میشم.
سلام و درود.
در ویدئو راجع به ماکسیمم فرکانس قدری صحبت شده و یک رابطه ارائه شده، با کریستال 8 مگاهرتزی، از اونجایی که PWM ها به صورت نرم افزاری ساخته می شوند، به نظر می رسه که 50 کیلو هرتز فرکانس خیلی زیادی باشه!
دقت کنید که در PWM ، بین میزان فرکانس و تفکیک پذیری DutyCyle همیشه یک trade-off وجود داره!
با آرزوی موفقیت
با سلام من این برنامه را در کدویژن نوشتم ولی عمل نمی کنه می تونید این برنامه را ویرایش و به ایمیل من ارسال کنید
باتشکر.
#define CPU 8000000
#include
#include
#include
#include
int count=0;
int Npwm[8];
void main(void)
{
int i=0;
DDRD=1<<0|1<<1;
TIMSK=1<<0;
TCNT0=236;
TCCR0=1<<1;
#asm("sei")
while (1)
{
for(i=0;icount){
PORTD |=1;
}
else{
PORTD &=~(1);
}
if(Npwm[1]>count){
PORTD |=1<<1;
}
else{
PORTD &=~(1<count){
PORTD |=1<<2;
}
else{
PORTD &=~(1<count){
PORTD |=1<<3;
}
else{
PORTD &=~(1<count){
PORTD |=1<<4;
}
else{
PORTD &=~(1<count){
PORTD |=1<<5;
}
else{
PORTD &=~(1<count){
PORTD |=1<<6;
}
else{
PORTD &=~(1<count){
PORTD |=1<<7;
}
else{
PORTD &=~(1<99){
count=0;
}
TCNT0=236;
TCCR0=1<<1;
}
سلام.
ضبط و تولید و ویرایش هر کدام از این آموزش ها چندین ساعت بلکه روز ، زمان برده، این موضوع با 3 زبان برنامه نویسی خط به خط توضیح داده شده، در دو IDE روال کار نمایش داده شده ، پروژه شبیه سازی شده و عملکردش نشان داده شده، توضیحات برای کدویژن هم داده شده …
اگر ویدئو آموزشی رو کامل و با دقت ببینید مطمئنن می تونید جواب بگیرید. لطفا حداقل برای کار خودتون وقت بذارید …
موفق باشید.