پاسخ : راه اندازی موتور dc
سلام و عرض ادب.
دوستان باز هم مشکل....
من خواستم 2 تا موتور dc رو از این انکدرای خودمون بذارم روش و تو یه برنامه هر 2 تائیش رو با شرط خروجی اون سنسوره راه بندازم و با رسیدن به پالس خاصی بگم هر کدومشون وایستند...
القصه یکی یه انکدر سر هر کدومشون گذاشتم و جفت انکدرها رو هم دادم به اینت اکسترنال میکرو( به یه اینت اکسترنال، چون میکروم بیشتر از یکی نداره).
اما وقتی تست کردم، برای یکی 2 دفعه ی اول هر 2 موتور عملکرد درست داشتند، یعنی سر شرط راه میفتادن(که این شرطه از سنسور میاد) و سر شرط بعدی هم می ایستادند(که شرط ایستادن مربوط به پالسهایی میشه که انکدر شمرده)، اما الان موتور اول راه افتادن و ایستادنش درسته، اما دومی راه میافته، منتها اصلا میکرو پالسها رو نمیشماره که بخواد به پالس مورد نظر ما برسه و موتور وایسته!!
اینم برنامه:
به نظر دوستان ایراد ماجرا این بار از کجاس؟؟؟!!
اضافه شده در تاریخ :
فهمیدم کجاشو سوتی دادم!!
نباید جفتشون بیان به یه اینت اکسترنال...
حالا باید سعی کنم از یکی از کانترها استفاده کنم واسه خوندن پالسهای یکی از موتورها، که ممنون میشم باز هم دوستان راهنمائی کنن....
یه چیز دیگه!!
دوستان لطف میکنند میکرویی رو به بنده معرفی کنند که قابلیت ساپورت حدود 6 یا تا7 موتور رو داشته باشه، منظور در تعداد اینتهای اکسترنال و یا تایمرهاست ....
سلام و عرض ادب.
دوستان باز هم مشکل....
من خواستم 2 تا موتور dc رو از این انکدرای خودمون بذارم روش و تو یه برنامه هر 2 تائیش رو با شرط خروجی اون سنسوره راه بندازم و با رسیدن به پالس خاصی بگم هر کدومشون وایستند...
القصه یکی یه انکدر سر هر کدومشون گذاشتم و جفت انکدرها رو هم دادم به اینت اکسترنال میکرو( به یه اینت اکسترنال، چون میکروم بیشتر از یکی نداره).
اما وقتی تست کردم، برای یکی 2 دفعه ی اول هر 2 موتور عملکرد درست داشتند، یعنی سر شرط راه میفتادن(که این شرطه از سنسور میاد) و سر شرط بعدی هم می ایستادند(که شرط ایستادن مربوط به پالسهایی میشه که انکدر شمرده)، اما الان موتور اول راه افتادن و ایستادنش درسته، اما دومی راه میافته، منتها اصلا میکرو پالسها رو نمیشماره که بخواد به پالس مورد نظر ما برسه و موتور وایسته!!
اینم برنامه:
کد:
@ DEVICE PIC16F877A ,WDT_OFF ,LVP_OFF ,PROTECT_OFF ,PWRT_ON ,BOD_OFF DEFINE LCD_DREG PORTD DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTD DEFINE LCD_RSBIT 2 DEFINE LCD_EREG PORTD DEFINE LCD_EBIT 3 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE CCP1_REG PORTC DEFINE CCP1_BIT 2 deFINE CCP2_REG PORTC DEFINE CCP2_BIT1 TRISA = 0 TRISc.0 = 1 A VAR WORD f var word ON INTERRUPT GOTO lable OPTION_REG = $7F INTCON = %10010000 T1CON = $03 loop1: TMR1L=0 TMR1H=0 PIR1.0 = 0 T1CON.0 = 1 PAUSE 800 T1CON.0 = 0 f.byte1=TMR1H f.byte0=TMR1l lcdout $fe, 1 lcdout #f lcdout $fe, $14 lcdout "hz" pause 500 if f >= 20 and f <=40 then LOW portA.0 hpwm 1, 205, 300 pause 50 A = 0 loop_sh: LCDOUT $FE, $c0 LCDOUT "A =" lcdout $fe, $14 LCDOUT #A if A >= 30 then tormoz goto loop_sh endif if f >= 60 and f <=80 then LOW portA.1 hpwm 2, 205, 300 pause 50 A = 0 loop_sh_1: LCDOUT $FE, $c0 LCDOUT "A =" lcdout $fe, $14 LCDOUT #A if A >= 30 then tormoz goto loop_sh_1 endif goto loop1 tormoz: low portA.0 low portA.1 hpwm 1, 0, 300 hpwm 2, 0, 300 pause 500 goto loop1 disable lable: A = A + 1 INTCON.1 = 0 RESUME enable END
اضافه شده در تاریخ :
فهمیدم کجاشو سوتی دادم!!
نباید جفتشون بیان به یه اینت اکسترنال...
حالا باید سعی کنم از یکی از کانترها استفاده کنم واسه خوندن پالسهای یکی از موتورها، که ممنون میشم باز هم دوستان راهنمائی کنن....
یه چیز دیگه!!
دوستان لطف میکنند میکرویی رو به بنده معرفی کنند که قابلیت ساپورت حدود 6 یا تا7 موتور رو داشته باشه، منظور در تعداد اینتهای اکسترنال و یا تایمرهاست ....
دیدگاه