پاسخ : راه اندازی موتور 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 موتور رو داشته باشه، منظور در تعداد اینتهای اکسترنال و یا تایمرهاست ....








دیدگاه