|
رد: مشروع تصميم جهاز تحكم عن بعد للانظمة غير المأهولة
الاشارة لها اقل قيمة تساوى 1 ملى ثانية (ليس مايكرو) واعلى قيمة تكون 2 ملى ثانية حتى تستطيع التحكم بالسيرفوا و الاسبيد كترولر
بالنسبة للسيرفو 1.5 هى نقطة المنتصف 2 ملى ثانية اعلى قيمة للزاوية و 1ملى ثانية هى اعلى قيمة للزاوية فى الاتجاة المعاكس
بالنسبة للسبيد كنترولر 1 ملى ثانية يكون الموتور لايعمل وتزيد سرعة الموتور بزيادة عرض النبضة حتى تصل الى 2 ملى ثانية تكون اقصى سرعة
ملحوظة مهمة عند استخدام اسبيد كنترولر لازم تبداء الاشارة عند التشغيل من 1m sec عدى ذلك لن يشتغل
هذه العملية للحماية معظم الاسبيد كنترولر تعمل بنفس المبداء
-----------------------------------
يتم حساب الجزء مرتفع الجهد من النبضة الجزء كما فى الرسم من A to B هو المهم
الجزء BC ليس حساس يمكن ان يكون اى قيمة حسب تجربتى
-----------------------------------
بالنسبة للاخطاء اذا كانت مسموحة ام لا (سوف تلاحظ ذلك فى حركة السيرفو )
اذا لم يكن الاداء ثابت وسريع معناها فى عدم استقرار فى الاشارة
------------------------------------
اذا كانت الاشارة لها عرض نبضة اكبر من 2 ملى ثانية سوف يتحرك السيرفوو الى اقل زاوية كما لو كانت الاشارة تساوى 1 ملى ثانية
------------------------------------
تردد الاشارة يفضل ان يكون 50 هيرتز يجب ان تعيد الاشارة نفسها كل 18 ملى ثانية
-----------------------------------
حسب ماطلبت هذا هو كود الاسمبلى
كود:
PM_USED EQU 1
INCLUDE "16F84A.INC"
; Define statements.
#define osc 12
RAM_START EQU 0000Ch
RAM_END EQU 0004Fh
RAM_BANKS EQU 00001h
BANK0_START EQU 0000Ch
BANK0_END EQU 0004Fh
EEPROM_START EQU 02100h
EEPROM_END EQU 0213Fh
R0 EQU RAM_START + 000h
R1 EQU RAM_START + 002h
R2 EQU RAM_START + 004h
R3 EQU RAM_START + 006h
R4 EQU RAM_START + 008h
R5 EQU RAM_START + 00Ah
R6 EQU RAM_START + 00Ch
R7 EQU RAM_START + 00Eh
R8 EQU RAM_START + 010h
T1 EQU RAM_START + 012h
FLAGS EQU RAM_START + 014h
GOP EQU RAM_START + 015h
RM1 EQU RAM_START + 016h
RM2 EQU RAM_START + 017h
RR1 EQU RAM_START + 018h
RR2 EQU RAM_START + 019h
_d EQU RAM_START + 01Ah
_angle EQU RAM_START + 02Ah
_value EQU RAM_START + 02Bh
_PORTL EQU PORTB
_PORTH EQU PORTA
_TRISL EQU TRISB
_TRISH EQU TRISA
#define _PORTC_1 PORTC, 001h
#define _PORTB_0 PORTB, 000h
#define _PORTB_1 PORTB, 001h
#define _PORTB_2 PORTB, 002h
#define _PORTB_3 PORTB, 003h
#define _PORTB_4 PORTB, 004h
#define _PORTB_5 PORTB, 005h
#define _PORTB_6 PORTB, 006h
#define _PORTB_7 PORTB, 007h
; Constants.
_T2400 EQU 00000h
_T1200 EQU 00001h
_T9600 EQU 00002h
_T300 EQU 00003h
_N2400 EQU 00004h
_N1200 EQU 00005h
_N9600 EQU 00006h
_N300 EQU 00007h
_OT2400 EQU 00008h
_OT1200 EQU 00009h
_OT9600 EQU 0000Ah
_OT300 EQU 0000Bh
_ON2400 EQU 0000Ch
_ON1200 EQU 0000Dh
_ON9600 EQU 0000Eh
_ON300 EQU 0000Fh
_MSBPRE EQU 00000h
_LSBPRE EQU 00001h
_MSBPOST EQU 00002h
_LSBPOST EQU 00003h
_LSBFIRST EQU 00000h
_MSBFIRST EQU 00001h
_CLS EQU 00000h
_HOME EQU 00001h
_BELL EQU 00007h
_BKSP EQU 00008h
_TAB EQU 00009h
_CR EQU 0000Dh
_UnitOn EQU 00012h
_UnitOff EQU 0001Ah
_UnitsOff EQU 0001Ch
_LightsOn EQU 00014h
_LightsOff EQU 00010h
_Dim EQU 0001Eh
_Bright EQU 00016h
INCLUDE "SERVO-~1.MAC"
INCLUDE "PBPPIC14.LIB"
MOVE?CB 000h, TRISD
LABEL?L _main
SERIN2DPIN?T _PORTC_1
SERIN2MODE?C 054h
LABEL?L L00001
SERIN2WAIT?CL 0A6h, L00001
SERIN2WAIT?CL 041h, L00001
SERIN2COUNT?C 010h
SERIN2STR?B _d
MOVE?BB _d + 00009h, PORTD
CMPLE?BCL _d + 00001h, 07Fh, L00002
SUB?BCB _d + 00001h, 080h, _angle
HIGH?T _PORTB_0
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_0
LABEL?L L00002
CMPGE?BCL _d + 00001h, 080h, L00004
SUB?CBB 07Fh, _d + 00001h, _angle
HIGH?T _PORTB_0
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_0
LABEL?L L00004
CMPLE?BCL _d + 00002h, 07Fh, L00006
SUB?BCB _d + 00002h, 080h, _angle
HIGH?T _PORTB_1
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_1
LABEL?L L00006
CMPGE?BCL _d + 00002h, 080h, L00008
SUB?CBB 07Fh, _d + 00002h, _angle
HIGH?T _PORTB_1
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_1
LABEL?L L00008
CMPLE?BCL _d + 00003h, 07Fh, L00010
SUB?BCB _d + 00003h, 080h, _angle
HIGH?T _PORTB_2
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_2
LABEL?L L00010
CMPGE?BCL _d + 00003h, 080h, L00012
SUB?CBB 07Fh, _d + 00003h, _angle
HIGH?T _PORTB_2
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_2
LABEL?L L00012
CMPLE?BCL _d + 00004h, 07Fh, L00014
SUB?BCB _d + 00004h, 080h, _angle
HIGH?T _PORTB_3
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_3
LABEL?L L00014
CMPGE?BCL _d + 00004h, 080h, L00016
SUB?CBB 07Fh, _d + 00004h, _angle
HIGH?T _PORTB_3
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_3
LABEL?L L00016
CMPLE?BCL _d + 00005h, 07Fh, L00018
SUB?BCB _d + 00005h, 080h, _angle
HIGH?T _PORTB_4
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_4
LABEL?L L00018
CMPGE?BCL _d + 00005h, 080h, L0****
SUB?CBB 07Fh, _d + 00005h, _angle
HIGH?T _PORTB_4
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_4
LABEL?L L0****
CMPLE?BCL _d + 00006h, 07Fh, L00022
SUB?BCB _d + 00006h, 080h, _angle
HIGH?T _PORTB_5
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_5
LABEL?L L00022
CMPGE?BCL _d + 00006h, 080h, L00024
SUB?CBB 07Fh, _d + 00006h, _angle
HIGH?T _PORTB_5
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_5
LABEL?L L00024
CMPLE?BCL _d + 00007h, 07Fh, L00026
SUB?BCB _d + 00007h, 080h, _angle
HIGH?T _PORTB_6
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_6
LABEL?L L00026
CMPGE?BCL _d + 00007h, 080h, L00028
SUB?CBB 07Fh, _d + 00007h, _angle
HIGH?T _PORTB_6
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_6
LABEL?L L00028
CMPLE?BCL _d + 00008h, 07Fh, L00030
SUB?BCB _d + 00008h, 080h, _angle
HIGH?T _PORTB_7
MUL?BCW _angle, 004h, T1
ADD?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_7
LABEL?L L00030
CMPGE?BCL _d + 00008h, 080h, L00032
SUB?CBB 07Fh, _d + 00008h, _angle
HIGH?T _PORTB_7
MUL?BCW _angle, 004h, T1
SUB?CWW 005DCh, T1, T1
PAUSEUS?W T1
LOW?T _PORTB_7
LABEL?L L00032
GOTO?L _main
END
بالتوفيق اخى
الف شكر لك اخي سأجرب وارد لك خبر
|