کنترل دور موتور DC با LQG
دانلود پروژه طراحی کنترل کننده LQGبرای کنترل دور موتور DC
موتور الکتریکی، نوعی ماشین الکتریکی است که الکتریسیته را به حرکت مکانیکی تبدیل میکند. عمل عکس آن که تبدیل حرکت مکانیکی به الکتریسیته است، توسط ژنراتور انجام میشود. این دو وسیله به جز در عملکرد، مشابه یکدیگر هستند. اکثر موتورهای الکتریکی توسط الکترومغناطیس کار میکنند، اما موتورهایی که براساس پدیدههای دیگری نظیر نیروی الکترواستاتیک و اثر پیزوالکتریک کار میکنند، هم وجود دارند. ایده کلی این است که وقتی که یک ماده حامل جریان الکتریسیته تحت اثر یک میدان مغناطیسی قرار میگیرد، نیرویی بر روی آن ماده از سوی میدان اعمال میشود. در یک موتور استوانهای، روتوربه علت گشتاوری که ناشی از نیرویی است که به فاصلهای معین از محور روتور به روتور اعمال میشود، میگردد.
اغلب موتورهای الکتریکی دوار هستنند، اما موتور خطی هم وجود دارند. در یک موتور دوار بخش متحرک (که معمولاً درون موتور است) روتور و بخش ثابت استاتور خوانده می شود. یکی از اولین موتورهای دوار توسط مایکل فارادی در سال ۱۸۲۱میلادی ساخته شده بود و شامل یک سیم آویخته شده آزاد که در یک ظرف جیوه غوطهور بود، میشد. یک آهنربای دائم در وسط ظرف قرار داده شده بود. وقتی که جریانی از سیم عبور میکرد، سیم حول آهنربا به گردش در میآمد و نشان میداد که جریان منجر به افزایش یک میدان مغناطیسی دایرهای اطراف سیم میشود.
در ادامه مشاهده فهرست مطالب دانلود پروژه طراحی کنترل کننده LQGبرای کنترل دور موتور DC…
فصل ۱- موتورهای الکتریکی و انواع آنها
۱-۱- موتورهای الکتریکی
۱-۲- موتورهای جریان مستقیم یا DC
۱-۲-۱- مزایای موتور DC
۱-۲-۲- معایب موتورهای Dc
۱-۲-۳- موتورهای میدان سیم پیچی شده
۱-۲-۴- عملکرد موتورهای dc
۱-۲-۵- موتورهای یونیورسال
۱-۳- کنترل الکترونیکی موتورهای الکتریکی
۱-۳-۱- اصول موتورهای الکتریکی
۱-۳-۲- انواع موتورهای الکتریکی
۱-۳-۳- موتور های الکتریکی DC
۱-۳-۴- موتور بدون جاروبک
۱-۳-۵- موتور یونیورسال
۱-۳-۶- موتور القائی
۱-۳-۷- موتور سنکرون
۱-۳-۸- موتور هیسترزیس
۱-۳-۹- موتور هیسترزیس آهنربای دائم
فصل ۲- طبقه بندی موتورها براساس روش کنترل
۲-۱- مقدمه
۲-۱-۱- موتور پله ای(Stepping Motor)
۲-۱-۲- موتورهای پله ای VR (Variable Reluctance)
۲-۱-۳- موتورهای پله ای PM (Permanent Magnet)
۲-۱-۴- موتورهای پله ای هیبرید (Hybrid Stepping Motor)
۲-۲- ساختار موتور پله ای
۲-۳- نحوه کنترل موتور پله ای
۲-۳-۱- نحوه کنترل ۱ بیتی موتور پله ای
۲-۳-۲- نحوه کنترل ۲ بیتی موتور پله ای
۲-۴- مدار معادل کلی موتورهای DC
۲-۵- انواع موتورهایDC
۲-۵-۱- موتور DC تحریک مستقل
۲-۵-۲- موتور DC شنت (موازی)
۲-۵-۳- موتور DC سری
۲-۵-۴- موتور DC کمپوند
۲-۶- روش های راه اندازی موتورهای DC
۲-۶-۱- افزایش تدریجیVt
۲-۶-۲- راه اندازی به کمک مقاومت راه انداز
۲-۷- کنترل سرعت موتورهای DC
فصل ۳- طراحی و شبیه سازی موتور DC
۳-۱- مدلسازی موتور DC
۳-۱-۱- معادلات زیر برای موتور DC برقرارند
۳-۱-۲- معادلات حالت موتور DC
۳-۲- طراحی کنترلر LQG
۳-۳- شبیه سازی و نمودارهای پاسخ سیستم
۳-۳-۱- پاسخ سیستم مدار باز بدون کنترلر
۳-۴- پاسخ های سیستم کنترل شده با کنترلر LQG
۳-۴-۱- نمودار خروجی (سرعت سیستم)
...
دانلود: دانلود پروژه طراحی کنترل کننده LQGبرای کنترل دور موتور DC
رمز عبور فایل : www.wikipower.ir
حجم : ۱٫۰۹ MB
منبع: ويكي پاور
پروژه کنترل دور موتور DC با PWM با AVR
پروژه کنترل دور موتور DC با PWM با AVR
توضیح در مورد پروژه : یه پروژه ساده(ولی در ظاهر پیچیده) که 4 تا دکمه داره که با فشردن هر کدوم اعمالی انجام میشه ، دکمه1) حرکت به جلوی موتور ها دکمه2) حرکت به عقب موتور ها دکمه3و 4) حرکت موتور ها به چپ و راست دکمه5) نمایش سرعت موتور ها>>>>>که سرعت موتور ها رو هم از طریق 4 تا پتانسومتر قرار داده شده در پروژه میشه تنظیم کرد.(یعنی میشه یه پا پروژه کنترل جهت چرخش موتور و کنترل سرعت موتور dc ) >>> و اگه رو هر کدوم از دکمه ها کلیک کنید >>>اطلاعات مورد نظر در lcd نمایش داده میشن>>>واگه رو دکمه go کلیک کنید موتور ها به مدت 100ms حرکت میکنن(خودتون بسته به نیازتون تغییرش بدید.>>> من تو شبیه سازی با پروتئوس برای این که سریع نحوه عملکرد مدارم رو ببینم و سریع تغییرات بهش بدم این کار رو کردم.)
توضیح بیشتر در مورد پروژه :
سوال1) چطور سرعت موتور ها رو تنظیم میکنی و تغیرشون میدی؟؟؟
جواب 1) باید بگم که همون طور که در عکس بالا(ذخیرش کنید تا در اندازه بزرگتری مشاهدش کنید.) مشاهده میکنید ما میایم از یه پتانسیومتر(مقاومت متغییر-یه چیزی! داره که با چرخوندنش مقاومتش تغییر میکنه) استفاده میکنیمو برای با توجه به این که میکرو فقط تغییرات ولتاژ رو درک میکنه و نه مقاومت رو لذا ما میایم و یه تقسیم ولتاژ میزنیم تا تغیرات مقاومت ما به صورت تغییر ولتاژ ظاهر بشه ….
سوال2) حالا تغییرات مقاومت به صورت ولتاژ ظاهر شد>>> بعدش ما باید چیکار کنیم؟؟؟
جواب2) تو میکرو کنترلر بحثی ستش به نام ADC که کارش فهمیدن ولتاژ اعمال شده بر روی پایه های میکرو هستش(البته فقط پایه های مربوط به PORTA) که شما میتونید مطلب زیر رو بخونید.
مبدل آنالوگ به دیجیتال در میکروکنترلرهای AVR
حالا ما میایم و این ولتاژ محاسبه شده در در اعدادی ضرب میکنیم و به عنوان سرعت موتور ازشون استفاده میکنیم.>>> که برای این کار باید با بحث تایمر ها/کانتر آشنایی داشته باشید
سوال 3) ما چطور به میکرو دستور میدیم که موتور ها به چه جهتی حرکت کنن؟
جواب 3) یه سری دکمه قرار میدیم که با فشردنشون میکرو میفهمه…..مثلا من کلید ها رو به یه منبع 5 ولت وصل کردم که اگه کلید فشرده شده رو پایه میکرو 5 ولت(1 منطقی) اعمال بشه.و اون مقاومت هایی هم که میبینید برای اینه که اگه کلید فشرده نشده بود روی میکرو 0 ولت(0 منطقی) اعمل کنه>>>مثلا ما یه بار کلید رو فشار دادیم و رو پایه میکرو 5 ولت اعمال شد>>حالا اگه این مقاومت ها رو نزاریم تا آخر دنیا همچنان 5 ولت رو پایه میکرو اعمال میشه در حالی که اگه ما دستمون رو از کلید هم برداریم بازم 5 ولت رو پایه میکرو اعمال میشه>>>به خاظر همین ما مقاومت ها رو میزاریم تا زمانی که دکمه ها فشرده نیستند رو پایه میکرو 0 ولت(0 منطقی) اعم بشه.
سوال 4) اون LCD هه از چه نوعی هستش؟؟؟
جواب 4) همون طور که در عکس بالا میبینید یه LCD 4*40 هستش(اندازه همین حدوداس) که از نوع کاراکتری هستش که با این LCD های کاراکتری رایج 16*2 یکی هستش فقط فرقش اینه که اندازش یکم بزگتر هستشآموزش جامع کار با LCD کاراکتری
>>>البته شما میتونید از LCD گرافیکی استفاه کنید که میتونید مطلب زیر رو بخونید :
پروژه lcd گرافیکی به همراه آموزش کامل
سوال 5) تو شکل زیر کار اون قطعه هه که زیرش نوشته شده L298 چیه؟؟؟
جواب5)
الف) باید بگم که پایه های موتور به OUT1 تا OUT4 وصل میشن
ب) پایه های SENSA و SENSB برا تنظیم جریان موتور هستش که ما باهاشون کاری نداریم(به خاطر همین به زمین وصلش کردم)
پ) پایه های VCC و VSS هم برا تغزیه L298 و موتور ها هستن….GND هم که به زمین وصل میشه!!!
ت) پایه های ENB و ENA برا تنظیم سرعت موتور ها هستن که اینا به پایه های OCR1A و OCR1B میکرووصل هستن(که ما با مقدار دهی OCR1A و OCR1B در واقع داریم سرعت موتور ها رو دست کاری میکنیم.)
ث) پایه های IN1 تا IN4 هم برا تعیین جهت چرخش موتور ها هستش که دوتای اول برای موتور اول و دوتای بعد برا موتور دومی هستن.>>>> مثلا اگه IN0 رو 5 ولت بهش بدی(1 منطقی) و IN1 رو هم صفر ولت(یا همون صفر منطقی) بهش بدی >>موتور اول به سمت جلو حرکت میکنه>>>و اگه برعکس کنی به سمت عقب حرکت میکنه.
اینم از کد های پروژه 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177#include #include #include #include #asm .equ __lcd_port=0x15 //PORTB#endasm #define ADC_VREF_TYPE 0xc0 intread_adc(unsignedcharadc_input){ ADMUX=adc_input|(ADC_VREF_TYPE&0xff); delay_us(10);// Delay needed for the stabilization of the ADC input voltage ADCSRA|=0x40;// Start the AD conversion while((ADCSRA&0x10)==0);// Wait for the AD conversion to complete ADCSRA|=0x10; returnADCW;} voidmain(void){ intocr_go,ocr_back,ocr_left,ocr_rigth; chararay[32]; PORTB=0x00; DDRB=0x00; PORTD=0x00; DDRD=0xFF; lcd_init(20); //************************TIMER0 TCCR0=0x00; TCNT0=0x00; OCR0=0x00; //************************TIMER1 //مود:نرمال TCCR1A=0xA3;//4 بيت آخر: تعيين نوع تغيير خروجي TCCR1B=0x03;//بيت هاي 0تا3-تعيين تقسيم فرکانسي TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; ICR1H=0x00; ICR1L=0x00; OCR1BH=0x00; OCR1BL=0x00; TIMSK=0x00; TIFR=0X00; //************************TIMER2 ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; MCUCSR=0x00; // ADC initialization // ADC Clock frequency: 250.000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: None ADMUX=ADC_VREF_TYPE&0xff; ADCSRA=0x85; /*lcd_puts("control dor MOTOR DC"); delay_ms(1000); lcd_clear();*/ while(1) { if(PINB.0)//GO { lcd_clear(); ocr_go=read_adc(0)*5.625; lcd_gotoxy(0,0);lcd_putsf("_________GO_________"); lcd_gotoxy(0,1);lcd_putsf("speed of motor 1&2~~"); itoa(ocr_go,aray); lcd_gotoxy(0,2);lcd_putsf(" ");lcd_puts(aray); PORTD=0b00000101; OCR1A=ocr_go; OCR1B=ocr_go; delay_ms(100); } if(PINB.1)//BACK { lcd_clear(); ocr_back=read_adc(1)*5.625; lcd_gotoxy(0,0);lcd_putsf("________BACK________"); lcd_gotoxy(0,1);lcd_putsf("speed of motor 1&2~~"); itoa(ocr_back,aray); lcd_gotoxy(0,2);lcd_putsf(" ");lcd_puts(aray); PORTD=0b00001010; OCR1A=ocr_back; OCR1B=ocr_back; delay_ms(100); } if(PINB.2)//LEFT { lcd_clear(); ocr_left=read_adc(2)*5.625; ocr_rigth=read_adc(3)*5.625; lcd_gotoxy(0,0);lcd_putsf("________LEFT________"); lcd_gotoxy(0,1);lcd_putsf("motor_left~~"); itoa(ocr_left,aray);lcd_puts(aray); lcd_gotoxy(0,2);lcd_putsf("motor_rigth~~"); itoa(ocr_rigth,aray);lcd_puts(aray); PORTD=0b00000101; OCR1A=ocr_rigth; OCR1B=ocr_left; delay_ms(10); } if(PINB.3)//RIGTH { lcd_clear(); ocr_left=read_adc(2)*5.625;ocr_rigth=read_adc(3)*5.625; lcd_gotoxy(0,0);lcd_putsf("________RIGTH_______"); lcd_gotoxy(0,1);lcd_putsf("motor_left~~"); itoa(ocr_left,aray);lcd_puts(aray); lcd_gotoxy(0,2);lcd_putsf("motor_rigth~~"); itoa(ocr_rigth,aray);lcd_puts(aray); PORTD=0b00000101; OCR1A=ocr_rigth; OCR1B=ocr_left; delay_ms(10); } if(PINB.4)//SHOW SPEED { lcd_clear(); ocr_go=read_adc(0)*5.625; lcd_clear();lcd_gotoxy(0,0); itoa(ocr_go,aray); lcd_putsf("GO~motor 1&2=");lcd_puts(aray); ocr_back=read_adc(1)*5.625; lcd_gotoxy(0,1); itoa(ocr_back,aray); lcd_putsf("BACK~motor 1&2=");lcd_puts(aray); ocr_left=read_adc(2)*5.625;ocr_rigth=read_adc(3)*5.625; lcd_gotoxy(0,2); lcd_putsf("LEFT & RIGTH~motor :"); lcd_gotoxy(0,3); lcd_putsf("left=");itoa(ocr_left,aray);lcd_puts(aray); lcd_putsf(" rigth=");itoa(ocr_rigth,aray);lcd_puts(aray); delay_ms(100); } if(PINB==0X00) { OCR1A=0; OCR1B=0; } }; }
دانلود این پروژه | حجم : 161 کیلوبایت!
دانلود این دو تا مقاله…
+ نوشته شده در پنجشنبه ۲۳ مهر ۱۳۹۴ ساعت 15:30 توسط آرش آقاطهرانی
|
با سلام و درود فراوان