امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تولید موج pwm
نویسنده پیام
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #34
RE: تولید موج pwm
سلام هدف من این نیست که خروجی dc ولتاژم رو اندازه بگیرم هدف من اینه که چهار تا موج خروجی ددقیقا مثل خروجی باشه کپیِ کپی یعنی vp برابر 3.2 و عرض پالس برابر ورودی حالا باید چه کار کنم همین درسته یا باید تغییراتی ایجاد کنم؟ یا همون دادن ولتاژ ورودی 3.2 به mega64L کافیه؟

با تشکر.

--------------------
علی شیرمحمدی
--------------------
۰۴-اسفند-۱۳۹۰, ۲۱:۵۲:۵۸
ارسال‌ها
پاسخ
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #35
RE: تولید موج pwm
سلام من کد هایی رو نوشته بودید رو تو پروتیوس تست کردم ولی نتیجه نداد این کد ها :

برای مگا 32:
کد:
#include <mega32.h> //يا 16
#include <delay.h>
#define ADC_VREF_TYPE 0x20

unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}


void main(void)
{
unsigned int PWM;

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x08;

PORTD=0x00;
DDRD=0xB0;

TCCR0=0x69;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x69;
TCNT2=0x00;
OCR2=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x81;

while (1)
      {
      
      OCR1A=128;
      

      }
}

اینم برای مگا 64:
کد:
#include <mega64.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x20

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

// Declare your global variables here

void main(void)
{
unsigned int PWM;
PORTB=0x00;
DDRB=0xF0;


ASSR=0x00;
TCCR0=0x6A;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0xA1;
TCCR1B=0x0A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;


TCCR2=0x6A;
TCNT2=0x00;
OCR2=0x00;


ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;

while (1)
      {
      PWM=read_adc(0);
       OCR1A=PWM;
       OCR1B=PWM;
       OCR2=0.9*PWM;
       OCR0=0.9*PWM;

      }
}

اینم عکس های پروژه و جوابی که گرفتم اولی موج سورس هست و سه تای بعدی تولید شده توسط مگا 64

[تصویر:  50397169651243909395.jpg]

[تصویر:  15061883611813292784.jpg]

تو عکس نیفتاده : AVCC , AREF هر دو آی سی به +5 وصل شده

با تشکر.

--------------------
علی شیرمحمدی
--------------------
(آخرین ویرایش در این ارسال: ۰۴-اسفند-۱۳۹۰, ۲۲:۵۹:۰۴، توسط فروم باز.)
۰۴-اسفند-۱۳۹۰, ۲۲:۵۷:۱۳
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  انتخاب روش تولید موج سینوسی cortex-m3 0 1,885 ۱۱-فروردین-۱۳۹۳, ۱۰:۴۴:۴۱
آخرین ارسال: cortex-m3
  تولید pwm با فرکانس 72 کیلو هرتز فروم باز 0 2,688 ۲۵-فروردین-۱۳۹۱, ۰۸:۵۰:۴۲
آخرین ارسال: فروم باز
  تولید 1000 ولت ac walerian 10 8,601 ۲۳-خرداد-۱۳۸۸, ۰۹:۲۹:۴۵
آخرین ارسال: walerian

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS