امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه اي براي قطعه "موتور-اينکودر" پروتيوس
نویسنده پیام
Bullet آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
برنامه اي براي قطعه "موتور-اينکودر" پروتيوس
سلام:

فکر کنم همه با قطعه ي MOTOR-ENCODER توي پروتيوس آشنا هستند،ولي بازم يه توضيح کوچولو ميدم.اين قطعه يه موتور دي سي و يک اينکودر سه سيمه هست که به صورت مجازي به هم متصلند.همونطور که تو شکل ميبينيد 5 تا پايه داره ، دوتا پايه چپ و راست براي چپگرد و راستگرد بودنه موتوره و سه تاي بالايي خروجي اينکودره.

حالا برا اين قطعه يه برنامه کنترلي با ميکرو ميخام بنويسم که يه قسمتشو نوشتم و بقيه رو هم به کمک دوستان انشالا مينويسيم و اين پروژه رو کامل ميکنيم.
دوستان کاري که ميخاييم اين برنامه انجام بده اينه که با اسفاده از کيپد 4X4 (که تو پروتيوس هست ) زاويه چرخش اين موتور رو کنترل کنيم (هم چپگرد هم راستگرد) و تو ال سي دس ببينيم.مثلا اگه عدد 10 رو وارد کرديم و دکمه راستگرد رو زديم موتور شروع به حرکت کنه و بعد از 10 درجه وايسه و يا اگه عدد 50 رو وارد کرديم و کليد چپگرد رو زديم 50 درجه به چپ حرکت کنه و وايسه.

برا اين کار ميکرو مگا32 رو انتخاب کردم و همونطور که تو شکل ميبينيد دوتا پايه A و B خروجي اينکودر رو (که 90 درجه با هم اختلاف فاز دارن متناسب با چپگرد يا راست گرد بودن يکي جلوتر از ديگريه) به پايه هاي اينتراپت ميکرو وصل کردم ، السي دي هم که به پورت A وصله.برنامه زير فقط برا قسمت اينتراپته که با فرمان دادن به پايه هاي موتور(فعلا به صورت دستي) موقعيت اينکودر تغيير پيدا ميکنه و تو ال سي دي نمايش داده ميشه.

قسمتهايي که برا تکميل اين پروژه نياز داريم:
1-برنامه اسکن کيپد 4X4
2-برنامه چپگرد و راستگرد واسه موتور متناسب با مقداري که با گيپد وارد ميکنيم.
3-برنامه اي برا تبديله مقدار متغيير char که تو ال سي دي با عنوانه position ميبينيم.(چون اين متغيير از نوع char هست بازه اش 0-255 هست فرمولي ميخاهيم که اينو به درجه تبديل کنه 0-360 درجه)

کامپايلر کدويژن هست و pulse per revolution اينکدر رو 360 تنظيم شده.ممنون ميشم اگه همکاري کنيد.
[left][تصویر:  simulation1.jpg]
کد:
/ ****************************************************
Chip type : ATmega32
Program type : Application
Clock frequency : 8.000000 MHz
*****************************************************/

#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm


char position,prevEnc;

interrupt [EXT_INT0] void ext_int0_isr(void)
{
if ( PIND.2==prevEnc )
position++;

else {
position--;
}
prevEnc=PIND.3;

}

interrupt [EXT_INT1] void ext_int1_isr(void)
{


}



void main(void)
{
char buffer[40];


GICR|=0xC0;
MCUCR=0x0F;
MCUCSR=0x00;
GIFR=0xC0;

lcd_init(16);

#asm("sei")


while (1)
{
sprintf(buffer,"position=%d",position);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(buffer);
delay_ms(300);
};
}
[/left]
۰۶-خرداد-۱۳۹۱, ۱۷:۳۶:۳۷
ارسال‌ها
پاسخ
Bullet آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #2
RE: برنامه اي براي قطعه "موتور-اينکودر" پروتيوس
کسی نیس یه راهنمایی یا کمک بکنه؟؟؟
۰۸-خرداد-۱۳۹۱, ۱۸:۳۲:۱۸
ارسال‌ها
پاسخ
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #3
RE: برنامه اي براي قطعه "موتور-اينکودر" پروتيوس
برنامه اسکن کیبورد کاری نداره ..
کد:
flash int scan[4]={0X01,0X02,0X04,0X08};
unsigned char arrkey[16]={
7,8,9,20,
4,5,6,30,
1,2,3,40,
70,0,60,50};
char key;

unsigned char keypad(){
unsigned char r,b;
while(1){
for (r=0; r<4; r++){
b=4;
PORTC=scan[r];
if(c1==0) b=0;
if(c2==0) b=1;
if(c3==0) b=2;
if(c4==0) b=3;

if (!(b==4)){
key=arrkey[(r*4)+b];
while(c1==0);
while(c2==0);
while(c3==0);
while(c4==0);
delay_ms(50);
return key;
}
}
}
}
برای چپ گرد راست گردم می تونی از یک دستور شرطی ساذه میتونی استفاده کنی.

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
(آخرین ویرایش در این ارسال: ۰۹-خرداد-۱۳۹۱, ۰۰:۲۰:۰۹، توسط h0x00i.)
۰۹-خرداد-۱۳۹۱, ۰۰:۱۹:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Pardazesh-Gar
Bullet آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #4
RE: برنامه اي براي قطعه "موتور-اينکودر" پروتيوس
(۰۹-خرداد-۱۳۹۱, ۰۰:۱۹:۰۹)h0x00i نوشته است: برنامه اسکن کیبورد کاری نداره ..
کد:
flash int scan[4]={0X01,0X02,0X04,0X08};
unsigned char arrkey[16]={
7,8,9,20,
4,5,6,30,
1,2,3,40,
70,0,60,50};
char key;

unsigned char keypad(){
unsigned char r,b;
while(1){
for (r=0; r<4; r++){
b=4;
PORTC=scan[r];
if(c1==0) b=0;
if(c2==0) b=1;
if(c3==0) b=2;
if(c4==0) b=3;

if (!(b==4)){
key=arrkey[(r*4)+b];
while(c1==0);
while(c2==0);
while(c3==0);
while(c4==0);
delay_ms(50);
return key;
}
}
}
}
برای چپ گرد راست گردم می تونی از یک دستور شرطی ساذه میتونی استفاده کنی.

ممنون از ارسال کد،از نحوه کارش سر در آوردم،میشه اضافه کنید چطوری میشه یه عدد 2رقمی یا سه رقمی رو از کیپد بگیرم و ذخیره کنم که بعدا تو برنامه ازش استفاده کنم.
۰۹-خرداد-۱۳۹۱, ۰۱:۵۸:۰۱
ارسال‌ها
پاسخ
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #5
RE: برنامه اي براي قطعه "موتور-اينکودر" پروتيوس
یک آرایه تعریف کنی اولین مقدار کیبورد د بگیره و ذخیره کنه دومین عدد بگیره و به 10 ضرب کنه و با عدد اول جمع کنه و ذخیره کنه بعد سومین عدد بگیره و به 100 ضرب کنه و با عدد قبلی که ذخیره شده جمع کنه همین طوری به ترتیب 1000 و 10000 و....

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
۰۹-خرداد-۱۳۹۱, ۱۲:۳۶:۴۵
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مدار دور موتور خودرو HPower 15 8,332 ۲۷-آبان-۱۳۹۷, ۲۱:۵۱:۱۷
آخرین ارسال: 1نفر
Question [سوال] کمک در برنامه نویسی دور موتور خودرو HPower 6 2,592 ۲۵-آبان-۱۳۹۷, ۲۲:۰۳:۵۷
آخرین ارسال: alimogmov
  راهنمایی در مورد کنترل دور موتور کولر sinastar 12 23,448 ۱۰-آبان-۱۳۹۷, ۱۰:۱۸:۵۹
آخرین ارسال: alimogmov
  كدهاي ريموت كنترل سيستمهاي صوتي و تصويري براي AVR ghafari 64 54,234 ۲۷-آذر-۱۳۹۵, ۱۴:۱۴:۳۳
آخرین ارسال: safeland
  ساخت تابلو روان و ساعت هوایی گردون یا همون Propeller Clock با موتور فن !!! t3r!p3000 85 91,068 ۲۲-شهریور-۱۳۹۵, ۲۱:۴۴:۳۸
آخرین ارسال: taherehselseleh
  [فوری] کنترل سرعت موتور با کیپد kurd9691 0 2,231 ۱۴-اردیبهشت-۱۳۹۵, ۱۶:۵۷:۴۶
آخرین ارسال: kurd9691
  lcd کاراکتری+موتور dc cortex-m3 2 2,754 ۲۷-مرداد-۱۳۹۴, ۱۵:۰۶:۴۶
آخرین ارسال: cortex-m3
  درخواست كمك براي رفع اشكال برنامه بيسيك يك دما سنج shoghal 16 7,341 ۰۵-مرداد-۱۳۹۴, ۱۵:۰۱:۲۶
آخرین ارسال: shoghal
  پیدا کردن باگ برنامه ساده کنترل دو طرفه موتور dc با pwm cortex-m3 1 2,801 ۰۱-مرداد-۱۳۹۴, ۲۳:۱۱:۰۰
آخرین ارسال: omid_phoenix
  درگیری LF33 و موتور! diamond_rtd 0 1,912 ۱۳-بهمن-۱۳۹۳, ۲۰:۲۷:۴۸
آخرین ارسال: diamond_rtd

پرش به انجمن:


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

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