U BOARD ir.

ورود به حساب کاربری
مرا بخاطر بسپار
گذرواژه را فراموش کرده اید؟
هنوز ثبت نام نکرده اید؟ تنها سه گزینه برای ثبت نام ثبت نام

U BOARD ir.

ثبت نام
ثبت نام
لطفا تمامی موارد خواسته شده را تکمیل نمایید لطفا ایمیل معتبر وارد نمایید لطفا گذرواژه را بیشتر از 6 کاراکتر وارد نمایید لطفا گذرواژه را مجددا بیشتر از 6 کاراکتر وارد نمایید
PWM فرکانس متغیر با AVR، سخت افزاری و نرم افزاری | یوبرد

تولید موج PWM سخت افزاری و نرم افزاری با AVR، تولید PWM فرکانس متغیر با AVR، نمونه کد PWM در AVR، فرمول Duty Cycle و فرکانس PWM، شبیه سازی PWM فرکانس متغیر در پروتئوس، نحوۀ تغییر فرکانس و Duty Cycle موج PWM، نکات PWM با فرکانس و Duty Cycle متغیر

data:image/jpeg;base64,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
رضا اسدی ۹۸/۰۹/۲۱ زمان موردنیاز برای مطالعه ۲۵ دقیقه

PWM فرکانس متغیر با AVR هم به صورت سخت افزاری با مدهای PWM تایمر و هم به صورت نرم افزاری با مدهای نرمال، PWM و CTC آن قابل دست یابی است. در نوشتۀ «ساخت PWM با AVR، سخت افزاری و نرم افزاری»، به تولید PWM سخت افزاری و نرم افزاری پرداختیم. در آن نوشته دیدیم که چگونه می توان با تغییر OCRn در یک محدوده، Duty Cycle را تغییر داد. همچنین نکاتی را برای تولید PWM نرم افزاری و سخت افزاری ذکر کردیم. در این نوشته با ایجاد موج PWM با فرکانس متغیر با AVR، بحث تولید PWM در AVR را تکمیل می کنیم. در ادامه ابتدا به محاسبه فرکانس PWM و نحوۀ دست یابی به فرکانس و Duty Cycle دلخواه می پردازیم. خواهیم دید که چگونه با به کار بردن دو فرمول برای مقادیر OCRn و TCNTn به ترتیب Duty Cycle و فرکانس موج PWM را تغییر می دهیم. سپس نمونه کد PWM در AVR را که در نرم افزار اتمل استودیو نوشته شده، بررسی می کنیم. نمونه کدی که در این نوشته بررسی می شود، تکمیل شدۀ نمونه کد همان نوشته ای است که ذکر شد. بنابراین در اینجا تنها به نحوۀ تغییر فرکانس PWM و Duty Cycle آن می پردازیم. همچنین فرکانس و Duty Cycle موج های PWM ساخته شده را در LCD کاراکتری نمایش می دهیم. پروژۀ این نوشته که شامل فایل های اتمل استودیو و کدویژن و شبیه سازی پروتئوس است، در پیوست قرار دارد.

pwm-فرکانس-متغیر-avr

تصویر 1 – موج PWM فرکانس متغیر با AVR

 

فرمول Duty Cycle و فرکانس موج PWM

برای ایجاد یک موج PWM فرکانس متغیر با AVR یا میکروکنترلرهای دیگر ممکن است روش های متعددی وجود داشته باشد. در نمونه کد این نوشته، سه موج PWM سخت افزاری و یک موج PWM نرم افزاری ایجاد شده است. موج های PWM سخت افزاری با مد شمارۀ 7 تایمر 1 ساخته شده اند. موج PWM نرم افزاری نیز با مد نرمال تایمر صفر ایجاد شده است. برای این که بتوانیم فرکانس این موج های PWM را تغییر دهیم، باید تعداد پله های شمارش را تغییر دهیم. در مدهای  مذکور برای تغییر تعداد پله های شمارش باید به رجیستر TCNTn مقدار بدهیم. در این صورت تایمر همواره از آن مقدار تا TOP که مقداری ثابت است، شمارش می کند. با توجه به تصویر زیر، برای موج PWM ناوارون، فرکانس برابر است با:

فرمول-فرکانس-pwm-تایمر-avr

 

عبارت tcnt start value مقدار اولیه ای است که باید به TCNTn داده شود. بنابراین رابطۀ مقدار tcnt start value بر حسب فرکانس به صورت زیر است. اگر تایمر همواره از این مقدار تا مقدار TOP شمارش کند، فرکانس PWM خروجی برابر fPWM می شود.

فرمول-مقدار-اولیه-شمارش-تایمر

 

برای تغییر Duty Cycle نیز باید مقدار رجیستر OCRn را تغییر داد. فرمول Duty Cycle بر حسب درصد به صورت زیر است.

فرمول-duty-cycle-pwm-avr

 

بنابراین مقدار OCRn به صورت زیر می شود.

فرمول-مقدار-ocr

 

همان طور که مشاهده می شود، tcnt start value مستقل از Duty Cycle و OCRn است. ولی Duty Cycle و در نتیجه OCRn به tcnt start value وابسته هستند. پس از تغییر فرکانس، مقدار tcnt start value تعیین می شود. این مقدار مستقیماً به TCNTn داده می شود و فرکانس PWM تغییر می کند. این مقدار در فرمول OCRn نیز تأثیرگذار است. بنابراین پس از هر بار تغییر فرکانس باید علاوه بر TCNTn، به OCRn نیز مقدار داد. در این صورت تغییر فرکانس باعث تغییر Duty Cycle نمی شود.

نمودار-تایمر-خروجی-pwm

تصویر 2 – موج PWM وارون از خروجی تایمر در AVR

 

تولید موج PWM فرکانس متغیر با AVR

در این بخش به شرح نمونه کد PWM با فرکانس متغیر با AVR می پردازیم. در برنامه ای که نوشته ایم، مشخصات موج های PWM توسط کلید تغییر می کنند و در LCD نمایش داده می شوند. با توجه به این که از برد توسعه ATmega64Pin استفاده کرده ایم، کلیدها را به صورت زیر دیفاین می کنیم.

#define next_pwm_change_key			(PINE & (1<<7))
#define duty_cycle_decrease_key		(PINE & (1<<4))
#define duty_cycle_increase_key		(PINE & (1<<5))
#define frequency_decrease_key		(PINE & (1<<6))
#define frequency_increase_key		(PINB & (1<<0))

 

حداکثر مقدار شمارش تایمرها و همچنین فرکانس کلاک آنها را دیفاین می کنیم.

#define timer1_mode_7_top_value		1023
#define timer0_mode_0_top_value		255
#define timer1_clock_frequency		1000000
#define timer0_clock_frequency		1000000

 

برای موج های PWMی که آنها را ساخته ایم، چند دیفاین به صورت زیر داریم. در ادامه کاربرد آنها را توضیح می دهیم.

#define oc1a_pwm_channel	0
#define oc1b_pwm_channel	1
#define oc1c_pwm_channel	2
#define pa0_pwm_channel	3

 

متغیرهای freqn و tcntn start value را به صورت عمومی تعریف می کنیم. این متغیرها به ترتیب برای فرکانس موج PWM مقدار اولیۀ شمارش هستند. در مقداردهی به آنها، از فرمول های بدست آمده استفاده شده است.

unsigned char freq1=5, freq0=5; // frequencies in kHz
unsigned int tcnt1_start_value=  (unsigned int)  (timer1_mode_7_top_value - (timer1_clock_frequency/(freq1*1000)));
unsigned char tcnt0_start_value= (unsigned char) (timer0_mode_0_top_value - (timer0_clock_frequency/(freq0*1000)));

 

وقفه ها به صورت زیر تعریف می شوند.

ISR(TIMER1_OVF_vect)
{
	TCNT1=tcnt1_start_value;
}

ISR(TIMER0_OVF_vect)
{
	TCNT0=tcnt0_start_value;
	PORTA |= (1<<0);  // set PA.0 at overflow
}

ISR(TIMER0_COMP_vect)
{
	PORTA &=~ (1<<0);  // clear PA.0 at Compare Match
}

 

در ابتدای تابع main متغیرهایی را به صورت زیر تعریف می کنیم. متغیرهای ocn/pa0 duty cycle برای اختصاص دادن Duty cycle به موج های PWM و متغیرهای ocrn value، مقادیری است که برای رسیدن به آن Duty cycle به رجیسترهای OCRn داده می شود. متغیر pwm channel نیز برای انتخاب کانال PWMی است که با فشردن کلیدها، فرکانس و Duty Cycle آن تغییر می کند. رشتۀ lcd str نیز برای نمایش در LCD کاراکتری 20*4 است.

char oc1a_duty_cycle=10, oc1b_duty_cycle=10, oc1c_duty_cycle=10;
char pa0_duty_cycle=10;
unsigned int ocr1a_value=
(unsigned int) (tcnt1_start_value + ((oc1a_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
unsigned int ocr1b_value=
(unsigned int) (tcnt1_start_value + ((oc1b_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
unsigned int ocr1c_value=
(unsigned int) (tcnt1_start_value + ((oc1c_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
unsigned char ocr0_value=
(unsigned char)(tcnt0_start_value + ((pa0_duty_cycle  * 0.01) * (timer0_mode_0_top_value - tcnt0_start_value)));
	
unsigned char pwm_channel=oc1a_pwm_channel;
char lcd_str[21];

 

پایه های PB.5 تا PB.7 و همچنین پایۀ PA.0، خروجی های PWM هستند. پایه های PE.4 تا PE.7 و همچنین PB.0 را برای اتصال کلید، به صورت ورودی پول آپ تنظیم می کنیم.

DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5);
DDRA |= (1<<DDA0);
PORTE |= (1<<7)|(1<<6)|(1<<5)|(1<<4);
PORTB |= (1<<0);

 

پیکربندی تایمرها را به صورت زیر انجام می دهیم. رجیسترهای TCNTn و OCRn را نیز با مقادیر tcntn start value و ocrn value برابر قرار داده ایم.

TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<COM1C1) | (0<<COM1C0) | (1<<WGM11) | (1<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
TCNT1=tcnt1_start_value;
OCR1AH= ocr1a_value >> 8;
OCR1AL= ocr1a_value & 0xFF;
OCR1BH= ocr1b_value >> 8;
OCR1BL= ocr1b_value & 0xFF;
OCR1CH= ocr1c_value >> 8;
OCR1CL= ocr1c_value & 0xFF;
	
TIMSK |= (1<<TOIE1);
	
ASSR=0<<AS0;
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (1<<CS01) | (0<<CS00);
TCNT0=tcnt0_start_value;
OCR0=ocr0_value;

TIMSK |= (1<<OCIE0) | (1<<TOIE0);

 

در نهایت وقفه ها و LCD را فعال و عبارت UBOARD.ir را به مدت 1.5 ثانیه نمایش می دهیم.

sei();
	
lcd_init();
lcd_clear();
lcd_puts("UBOARD.ir");
_delay_ms(1500);

 

pwm-فرکانس-متغیر-avr-پروتئوس

تصویر 3 – موج PWM فرکانس متغیر با AVR در پروتئوس، مقادیر اولیه برای فرکانس و Duty Cycle

 

تغییر فرکانس و Duty Cycle موج PWM

برای تغییر فرکانس PWM در AVR باید مقدار رجیستر TCNTn را تغییر دهیم. در این صورت تعداد پله های شمارش و در نهایت فرکانس تغییر می کند. برای این کار دو متغیر tcnt1 start value و tcnt0 start value را تعریف کردیم. در برد توسعۀ ATmega6Pin با فشردن کلید بالا (کلید روی PB.0)، شرط زیر اجرا می شود. در این شرط، شرط دیگری چک می شود. اگر مقدار pwm channel برابر یکی از کانال های OC1A تا OC1C باشد، تغییر فرکانس برای تایمر 1 و این سه موج PWM خواهد بود. در غیر این صورت تغییر فرکانس برای کانال PA0 است. در هر کدام از این شرط ها مقدار متغیر freqn تغییر می کند. در سطر بعد، محدوده ای برای فرکانس در نظر گرفته شده است. پس از آن، مقادیر tcntn start value و ocrn value با فرمول ها مقدار می گیرند. رجیستر TCNTn درون وقفۀ سرریز برابر tcntn start value می شود و در اینجا تنها رجیسترهای OCRn مقداردهی می شوند. بدین ترتیب فرکانس موج PWM بدون تاثیر بر Duty Cycle، تغییر می کند. کلید پایین (روی PE.6) نیز برای کاهش فرکانس است و برنامۀ آن به همین شکل نوشته شده است.

else if (!frequency_increase_key)
{
_delay_ms(50);
while (!frequency_increase_key);
if((pwm_channel==oc1a_pwm_channel)||(pwm_channel==oc1b_pwm_channel)||
(pwm_channel==oc1c_pwm_channel))
{
	freq1++;
	if(freq1>10) freq1=10;
tcnt1_start_value=  (unsigned int)  (timer1_mode_7_top_value - (timer1_clock_frequency/(freq1*1000)));
ocr1a_value= (unsigned int) (tcnt1_start_value + ((oc1a_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
ocr1b_value= (unsigned int) (tcnt1_start_value + ((oc1b_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
ocr1c_value= (unsigned int) (tcnt1_start_value + ((oc1c_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
OCR1AH= ocr1a_value >> 8;
OCR1AL= ocr1a_value & 0xFF;
OCR1BH= ocr1b_value >> 8;
OCR1BL= ocr1b_value & 0xFF;
OCR1CH= ocr1c_value >> 8;
OCR1CL= ocr1c_value & 0xFF;
}
else if(pwm_channel==pa0_pwm_channel)
{
freq0++;
	if(freq0>10) freq0=10;
tcnt0_start_value= (unsigned char) (timer0_mode_0_top_value - (timer0_clock_frequency/(freq0*1000)));
ocr0_value= (unsigned char)(tcnt0_start_value + ((pa0_duty_cycle  * 0.01) * (timer0_mode_0_top_value - tcnt0_start_value)));
	OCR0=ocr0_value;
}
}

 

کلید سمت راست (روی PE.5) برای افزایش Duty Cycle است. در شرط مربوط ابتدا مقدار pwm channel چک می شود. سپس بسته به این که کدام کانال PWM انتخاب شده است، ocn/pa0 duty cycle مربوط به آن، تغییر می کند. در سطر بعد محدوده ای برای Duty Cycle در نظر گرفته شده است. بعد از آن مقدار ocrn value از فرمول بدست می آید. در نهایت رجیستر OCRn مقداردهی می شود. به این ترتیب Duty Cycle موج PWM مورد نظر تغییر می کند. کلید سمت چپ (روی PE.4) برای کاهش Duty Cycle است و برنامۀ آن به همین شکل نوشته شده است.

else if (!duty_cycle_increase_key)
{
_delay_ms(50);
while (!duty_cycle_increase_key);
if(pwm_channel==oc1a_pwm_channel)
{
	oc1a_duty_cycle+=10;
	if(oc1a_duty_cycle>90) oc1a_duty_cycle=90;
ocr1a_value= (unsigned int) (tcnt1_start_value + ((oc1a_duty_cycle * 0.01) *  (timer1_mode_7_top_value - tcnt1_start_value)));
	OCR1AH= ocr1a_value >> 8;
	OCR1AL= ocr1a_value & 0xFF;
}
else if (pwm_channel==oc1b_pwm_channel)
{
	oc1b_duty_cycle+=10;
	if(oc1b_duty_cycle>90) oc1b_duty_cycle=90;
ocr1b_value= (unsigned int) (tcnt1_start_value + ((oc1b_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
	OCR1BH= ocr1b_value >> 8;
	OCR1BL= ocr1b_value & 0xFF;
}
else if (pwm_channel==oc1c_pwm_channel)
{
	oc1c_duty_cycle+=10;
	if(oc1c_duty_cycle>90) oc1c_duty_cycle=90;
ocr1c_value= (unsigned int) (tcnt1_start_value + ((oc1c_duty_cycle * 0.01) * (timer1_mode_7_top_value - tcnt1_start_value)));
	OCR1CH= ocr1c_value >> 8;
	OCR1CL= ocr1c_value & 0xFF;
}
else if (pwm_channel==pa0_pwm_channel)
{
	pa0_duty_cycle+=10;
	if(pa0_duty_cycle>90) pa0_duty_cycle=90;
ocr0_value= (unsigned char)(tcnt0_start_value + ((pa0_duty_cycle  * 0.01) * (timer0_mode_0_top_value - tcnt0_start_value)));
	OCR0=ocr0_value;
}
}

 

pwm-فرکانس-متغیر-avr-proteus

تصویر 4 – شکل موج PWM فرکانس متغیر با AVR در نرم افزار پروتئوس

 

انتخاب کانال PWM و نمایش در LCD

برای این که به ازای هر موج PWM، چهار کلید برای تغییر فرکانس و Duty Cycle تعریف نکنیم، متغیر pwm channel را تعریف کرده ایم. برای تعیین کانال نیز مقدار این متغیر را برابر یکی از دیفاین های ocn pwm channel قرار می دهیم. به این صورت که با هر بار فشردن کلید میانی (روی PE.7)، مقدار pwm channel چک و هر بار برابر یکی از مقادیر دیفاین شده، می شود. در شرط های تغییر فرکانس و Duty Cycle، مقدار این متغیر چک می شود. و تغییرات متغیرهای freqn و tcntn start value و همچنین متغیرهای ocn duty cycle و ocrn value مربوط به کانال PWM انتخاب شده تغییر می کنند. بدین صورت توانستیم تنها با اختصاص 5 کلید، Duty Cycle و فرکانس موج های PWM را تغییر دهیم.

if (!next_pwm_change_key)
{
	_delay_ms(50);
	while   (!next_pwm_change_key);
	if      (pwm_channel==oc1a_pwm_channel) pwm_channel=oc1b_pwm_channel;
	else if (pwm_channel==oc1b_pwm_channel) pwm_channel=oc1c_pwm_channel;
	else if (pwm_channel==oc1c_pwm_channel) pwm_channel=pa0_pwm_channel;
	else if (pwm_channel==pa0_pwm_channel)  pwm_channel=oc1a_pwm_channel;
}

 

پس از این شرط ها در حلقۀ while، LCD کاراکتری در سطر صفرم، کانال انتخاب شده، در سطر یکم، کانال ها و در سطر دوم و سوم، فرکانس و  Duty Cycle آنها را نمایش می دهد.

lcd_clear();
lcd_gotoxy(0,0);
if(pwm_channel==oc1a_pwm_channel) lcd_puts("Change OC1A Values!");
if(pwm_channel==oc1b_pwm_channel) lcd_puts("Change OC1B Values!");
if(pwm_channel==oc1c_pwm_channel) lcd_puts("Change OC1C Values!");
if(pwm_channel==pa0_pwm_channel)  lcd_puts("Change PA0 Values!");
lcd_gotoxy(0,1);
lcd_puts("OC..1A.1B.1C  PA0");		
lcd_gotoxy(0,2);
sprintf(lcd_str,"f=  %.2d %.2d %.2d  %.2d kHz",freq1,freq1,freq1,freq0);
lcd_puts(lcd_str);
lcd_gotoxy(0,3);
sprintf(lcd_str,"DC= %.2d %.2d %.2d  %.2d %%" ,oc1a_duty_cycle,oc1b_duty_cycle,oc1c_duty_cycle,pa0_duty_cycle);
lcd_puts(lcd_str);
_delay_ms(50);

 

نتیجۀ تولید موج PWM فرکانس متغیر با AVR روی برد توسعۀ AVR یوبرد در تصویر زیر آمده است. LEDهای سبز رنگ روی کانال های OC1x و LED قرمز روی کانال PA.0 است. LCD نیز مقادیر Duty Cycle و فرکانس را برای هر کانال نمایش می دهد. به مقادیر Duty Cycle و شدت نور LEDها توجه کنید.

تغییر-فرکانس-pwm-avr

تصویر 5 – نتیجۀ شکل موج PWM فرکانس متغیر با AVR با مشخصات تصویر قبل

 

نکات ساخت PWM فرکانس متغیر با AVR

  • 1- موج های PWM کانال های OC1A و OC1B و OC1C خروجی یک تایمر هستند. بنابراین فرکانس آنها با هم برابر است. (تایمر صفر در AVRتایمر 2 در AVR - تایمر 1 و 3 در AVR)
  • 2- تعداد پله ها در دقت انتخاب فرکانس و Duty Cycle مؤثر است. بنابراین مقدار فرکانس و در نتیجه مقادیر tcntn start value را محدود کرده ایم. که بتوانیم انتخاب Duty Cycle و فرکانس را با دقت به ترتیب 1 درصد و 1 کیلوهرتز انجام دهیم. در برنامۀ نوشته شده، می توانیم Duty Cycle را به جای تغییر 10 درصدی، 1 درصد هم تغییر بدهیم.
  • 3- در فرمول ها از Type castingبرای تبدیل انواع متغیر استفاده کرده ایم. بنابراین ممکن است فرکانس یا Duty Cycle خاصی، دقیقاً برابر آنچه انتظار داریم، نشود. (انواع متغیر در زبان C)
  • 4- وجود متغیر tcntn start value در فرمول ocrn value باعث می شود تغییر فرکانس بر Duty Cycle تأثیر نگذارد. باید توجه داشت که پس از هر بار تغییرِ tcntn start value، مقدار ocrn value آپدیت شود.
  • 5- در مقداردهی به رجیسترهای 16 بیتی میکروکنترلرهای AVR، باید ابتدا به بایت بالا و سپس بایت پایین مقدار داد.
  • 6- موج PWM روی 0 مقداری عقب تر از موج های روی OC1x است. این موضوع به دلیل این است که تایمر صفر لحظاتی پس از تایمر 1 راه اندازی می شود. همچنین تغییر نرم افزاری وضعیت پایه های IO توسط رجیسترهای آن، زمان بیشتری طول می کشد.

شکل موج های PWM ساخته شده و شدت نور LEDها متناسب با هر یک از آنها در تصویر زیر آمده است.

نتیجه-pwm-فرکانس-متغیر-avr

تصویر 6 – موج PWM با فرکانس متغیر با AVR و نتیجۀ عملی آن

 

نتایج PWM فرکانس متغیر با AVR، سخت افزاری و نرم افزاری

  • 1- با به کارگیری مدهای PWM و نرمال و CTC، راه اندازی PWM در AVR به صورت سخت افزاری و نرم افزاری امکان پذیر است. بنابراین می توان گفت برای تولید پالس PWM با AVR محدود به استفاده از پایه های خروجی تایمر نیستیم.
  • 2- در ساخت PWMدر AVR با مد نرمال تایمر و در کل تولید PWM نرم افزاری با AVRبا تایمرها، باید وقفه های سرریز و مقایسه فعال شوند. در این وقفه ها، پایۀ IOتغییر وضعیت می دهد و یک موج PWM ایجاد می شود.
  • 3- ساخت PWM در AVR با مد PWMتایمر، هم می تواند نرم افزاری باشد و هم سخت افزاری. در تولید PWM سخت افزاری با AVR در مدهای PWM تایمر، نیازی به فعال کردن وقفه ها نیست.
  • 4- ساخت PWM در AVR با مد CTC تایمر با محدودیت هایی همراه است. زیرا مقدار TOP برابر رجیستر مقایسه است. در تایمرهای 8 بیتی AVR نمی توان PWM نرم افزاری در این مد ساخت. اما در تایمرهای 16 بیتی AVR، این کار امکان پذیر است.
  • 5- تولید PWM در کدویژن بر خلاف تولید PWM در Atmel Studio، با استفاده از کدویزارد به راحتی با چند کلیک انجام می شود. برای انجام تنظیمات PWM در کدویژن (در بخش کدویزارد)، کافی است مد تایمر را انتخاب و در صورت نیاز، تیک های مربوط به خروجی ها و وقفه ها را بزنیم. همچنین می توانیم مقادیر اولیه را برای رجیسترهای TCNTn و OCRn تعیین و دورۀ تناوب تایمر را با توجه به تعیین مقدار TCNTnمشاهده نماییم.
  • 6- برای ایجاد PWM با فرکانس متغیر در مد نرمال تایمر، باید به رجیستر TCNTnمقدار بدهیم. طوری که تایمر همواره از آن مقدار تا مقدار TOP شمارش کند. با تغییر این مقدار، تعداد پله های شمارش و در نهایت فرکانس تغییر می کند.
  • 7- برای ساخت PWM با دیوتی سایکل متغیر باید مقدار رجیستر مقایسه را تغییر دهیم.
  • 8- در به دست آوردن فرمول محاسبه دیوتی سایکل برای تولید PWM با تایمر، باید به وارون یا ناوارون بودن PWM، مقدار آغاز شمارش و مقدار TOP توجه داشت.
  • 9- پس از تغییر فرکانس PWM با تغییر TCNTn، باید مقدار OCRn نیز تغییر کند تا دیوتی سایکل ثابت بماند.

 

نوشته های دیگر مرتبط با موضوع این نوشته در وبلاگ یوبرد:

کنترل دور موتور DC با AVR، موج PWM و Capture

تایمر در میکروکنترلرهای STM32 و کنترل دور موتور

ساخت PWM با LPC1768

 

data:image/jpeg;base64,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
رضا اسدی
مدیر یوبرد، طراح و تولید کنندۀ محصولات مبتنی بر میکروکنترلرها، مجری پروژه و مدرس آموزش برنامه نویسی میکروکنترلرها و برد مدار چاپی PCB، فعال در طراحی خودروهای الکتریکی
اگر دیدگاهی دارید میتوانید از طریق فرم زیر دیدگاه خود را در سایت درج کنید.
نویسنده: فرزاد مطلبی تاریخ: ۵ تیر ۱۳۹۹ ساعت: ۰۵:۱۲:۲۲ ب.ظ
سلام. من این پروژه رو انجام دادم و نتیجه رو تو اسیلوسکوپ دیدم. توی فرکانس بالا مقدار duty cycle و فرکانس خیلی دقیق نیست. این مشکل از کجاست؟ راهی برای رفعش وجود داره؟ ممنون
نویسنده: رضا بداغی تاریخ: ۷ تیر ۱۳۹۹ ساعت: ۰۶:۵۰:۲۹ ب.ظ

سلام. توی فرکانس بالا تعداد پله هایی که تایمر میشمره کم میشه و در نتیجه دیوتی سایکل نمیتونه به صورت دقیق کم و زیاد بشه. مثلاً وقتی که تایمر 100 تا پله میشمره دیوتی سایکل 10 درصد با تعداد 10 پله میتونه با دقت به وجود بیاد. وقتی تعداد پله های شمارش 10 تا میشه، همین دیوتی سایکل با یک پله به وجود میاد. ولی با تعداد 9 پله، دیگه این دیوتی سایکل نمیتونه با دقت خوبی به وجود بیاد. چون وقتی تعداد پله ها 9 تا باشه و توی یه پله مقدار خروجی 1 باشه و توی 8 پلۀ دیگه، خروجی صفر باشه، مقدار دیوتی سایکل میشه یک نهم که میشه حدود 11.11 درصد. فرکانس هم به همین شکل. وقتی تعداد پله های شمارش کم میشه، دقت تغییر فرکانس پایین میاد. مثلاً وقتی تعداد پله های شمارش دو تاست، فرکانس رو که یه مرحله افزایش میدیم، دوبرابر افزایش پیدا میکنه و تعداد پله های شمارش یک واحد کم میشه.

فرم پاسخ به دیدگاه