سلام می خواستم ببینم چجوری میشه یک موج سینوسی با AVR ساخت؟
اطلاعیه
Collapse
No announcement yet.
تولید موج سینوسی با AVR
Collapse
X
-
پاسخ : تولید موج سینوسی با AVR
کد:[left] /***************************************************** Project : Generating sine waveform Author : Reza Sepas Yar Email : info@avr.ir Chip type : ATmega16 Clock frequency : 4.000000 MHz *****************************************************/ #include <mega16.h> flash char sinewave[]={ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23, 0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c, 0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c, 0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8, 0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7, 0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc, 0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3, 0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83, 0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51, 0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27, 0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01 }; char i=0; interrupt [TIM1_COMPA] void timer1_compa_isr(void) { OCR1A=sinewave[i]; i++; // if(i==255) // i=0; } void main(void) { DDRD=0xFF; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 8000.000 kHz // Mode: Fast PWM top=00FFh // OC1A output: Non-Inv. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x81; TCCR1B=0x09; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x10; //enable global interrups #asm("sei"); while (1); } [/left]
There is nothing so practical as a good theory. — Kurt Lewin, 1951
- تشکرها 1
-
پاسخ : تولید موج سینوسی با AVR
من داخل کتاب 10 مدار با avr این مدارو +برنامه اش به زبان سی دیدم اگه حاستی بگو برات بزارمانجام پروژه های برنامه نویسی اندروید
[glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
http://cafebazaar.ir/app/?id=com.atxdroid
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
برنامه زیر دو موج PWM روی خروجی های OC1A و OC1B در mega8 تولید می کند که با فیلتر کردن آن می توان موج های سینوسی با اختلاف فاز 180 درجه را مشاهده کرد. فرکانس سینوسی در محدوده 488.2-1.9 هرتز تغییر می کند که برای تغییر آن باید یک ولتاژ متغیر در محدوده 0 تا AVcc را به ورودی ADC0 اعمال کرد. این کار می تواند از طریق یک پتاسیومتر انجام شود که دو سر کناری آن به زمین و AVcc و سر وسط آن به ADC0 متصل می شود و با تغییر وضعیت پتانسیومتر، فرکانس خروجی تغییر خواهد کرد. فرکانس کلاک mega8 باید در 8MHz تنظیم شود که این کار از طریق تنظیم مناسب فیوزبیت ها انجام می گیرد.همچنین فرکانس حامل PWM برابر 15.6 کیلوهرتز می باشد.
کد:#include <mega8.h> volatile unsigned char Delay; flash unsigned char sine[256]={ 0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8, 0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7, 0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc, 0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3, 0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83, 0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51, 0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27, 0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23, 0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c, 0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c}; interrupt [TIM2_COMP] void timer2_comp_isr(void) { static unsigned char index=0; if(!--Delay) { Delay=(ADCH?ADCH:1); OCR1A=sine[++index]; OCR1B=sine[index]; } } void main(void) { DDRB=0x06; ADMUX=0x60; ADCSRA=0xE6; while(!ADCSRA.4); Delay=(ADCH?ADCH:1); OCR1A=sine[0]; OCR1B=sine[0]; TCCR1A=0xB1; TCCR1B=0x01; TCCR2=0x09; OCR2=63; TIMSK=0x80; #asm("sei") while (1); }
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
- تشکرها 1
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
نوشته اصلی توسط زواربا سلام مهندس میشه درباره این برنامه یه توضیح بدید و بفرمایید برای سه فاز کردنش بایدچه کار کرد؟در اصل اگر بخواهیم این را به یک پل igbt برای ساختن اینورتر سه فاز استفاده کرد باید چه کار کرد؟ممنونم
اما برای کاربردهای کنترل موتور تنها تولید سه فاز به اینصورت جابگو نیست و مواردی مانند منحنی V/f و فرکانس Boost و Acceleration وِ Decelaration و مانند آن باید در نرم افزار پیش بینی شود.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
- تشکرها 2
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
ممنون از پاسختون چند تا سوال دارم 1- سه تا pwm برای اینورتر 3 فاز کم نیست؟آخه پل igbt 6 تا ورودیه گیت داره؟2-در پل igbt دوتا igbt که امیتر یکی به کلکتور دومی وصله پالس گیت اولی با دومی باید نات یکدیگر باشه؟3-برای ساختن یک کنترل دور برای تمام تنظیمات یک مگا 64 جواب میده یا باید از arm استفاده کرد؟4-اگر بخوام این کار را بکنم و این تاپیک را ادامه بدیم برای ساخت یک کنترل دور شما راهنمایی میکنید تا انجام بشه البته میدونم وقتتون کمه اما تجربیات شما در این کار میتونه خیلی مفید باشه و فکر کنم تاپیک خوبی بشه که همه میتونن استفاده کنند من منتظر پاسخ شما هستم ممنونم
- تشکرها 1
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
نوشته اصلی توسط زوارممنون از پاسختون چند تا سوال دارم 1- سه تا pwm برای اینورتر 3 فاز کم نیست؟آخه پل igbt 6 تا ورودیه گیت داره؟2-در پل igbt دوتا igbt که امیتر یکی به کلکتور دومی وصله پالس گیت اولی با دومی باید نات یکدیگر باشه؟3-برای ساختن یک کنترل دور برای تمام تنظیمات یک مگا 64 جواب میده یا باید از arm استفاده کرد؟4-اگر بخوام این کار را بکنم و این تاپیک را ادامه بدیم برای ساخت یک کنترل دور شما راهنمایی میکنید تا انجام بشه البته میدونم وقتتون کمه اما تجربیات شما در این کار میتونه خیلی مفید باشه و فکر کنم تاپیک خوبی بشه که همه میتونن استفاده کنند من منتظر پاسخ شما هستم ممنونم.
3- برای روش PWM سینوسی یک mega64 می تواند جوابگو باشد و نیازی به ARM نیست.
4- مگر تاکنون غیر از این بوده و در تاپیک MC3 مگر چندین صفحه به شما و سایر دوستان راهنمایی نشد. البته شرط آن درخواست راهنمایی فقط در حد رفع اشکال است و 99 درصد زحمت کارها را باید خودتان متقبل شوید.اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
- تشکرها 1
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
با سلام خدمت دوستان .ببخشید من یه سئوال داشتم شاید ارتباطی با موضوع اصلی نداشته یاشه ولی میپرسم .
لطفا بفرمائید که من با یک اتمگا 8 و کریستال 8 مگ حداکثر چه فرکانسی میتونم برای موج PWM تولید کنم . من خودم فکرمیکنم حداکثر 15 کیلو هرتز. من 100 کیلونیاز دارم :redface:وقتی همه نیروهای جسمی و ذهنی متمرکز شوند توانایی فرد برای حل مشکلات به طور حیرت انگیزی چند برابر می شود .
نرمن وینسنت پیل
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
سلام
حتما نباید PWM رو از تایمر بگیرید
شمل میتونید یک زمان کوچک رو رو تایمر تنظیم کنید و با متغیر های مختلف PWM بگیریدخدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...
دیدگاه
-
پاسخ : تولید موج سینوسی با AVR
نوشته اصلی توسط حمید نجفیسلام
حتما نباید PWM رو از تایمر بگیرید
شمل میتونید یک زمان کوچک رو رو تایمر تنظیم کنید و با متغیر های مختلف PWM بگیرید
اگه جواب منه لطفا کمی بیشتر توضیح بدید که چطوری به فرکانس مورد نظرم برسم؟100کیلووقتی همه نیروهای جسمی و ذهنی متمرکز شوند توانایی فرد برای حل مشکلات به طور حیرت انگیزی چند برابر می شود .
نرمن وینسنت پیل
دیدگاه
دیدگاه