منتديات الالكترونيات العصرية  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصرية > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة السي MikroC

  #41  
قديم 11-06-2011, 01:44 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 9
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح التحكم فى السيرفو موتور

اقتباس:
المشاركة الأصلية كتبت بواسطة سعيد قادر مشاهدة المشاركة
جزاك الله استاذ اشرف كل الخير جار ى تحميل البرنامج وكل عام وانتم بخير
كل عام و انتم بخير و عيد سعيد
رد مع اقتباس
  #42  
قديم 12-15-2011, 05:55 AM
milan_lover milan_lover غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Nov 2010
المشاركات: 7
معدل تقييم المستوى: 0
milan_lover is on a distinguished road
افتراضي رد: شرح التحكم فى السيرفو موتور

جزاكم الله خيرا
رد مع اقتباس
  #43  
قديم 02-10-2012, 07:15 PM
alameen13 alameen13 غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Feb 2012
المشاركات: 8
معدل تقييم المستوى: 0
alameen13 is on a distinguished road
افتراضي رد: شرح التحكم فى السيرفو موتور

مشكور اخى
رد مع اقتباس
  #44  
قديم 02-12-2012, 03:11 PM
Dr.Genius Dr.Genius غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Jun 2009
المشاركات: 34
معدل تقييم المستوى: 0
Dr.Genius is on a distinguished road
افتراضي رد: شرح التحكم فى السيرفو موتور

السلاام عليكم
ممكن ياخي الكرريم توضحلنا هاي الجزئية

while(1){

if(porta.f0==0){while(porta.f0==0){}i++;if(i>=12){i=0;} }
if(porta.f1==0){while(porta.f1==0){}i--;if(i==0){i=12;}}
if(porta.f2==0){while(porta.f2==0){}i=0;}
وشكرا لك كثير
رد مع اقتباس
  #45  
قديم 02-12-2012, 03:36 PM
Dr.Genius Dr.Genius غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Jun 2009
المشاركات: 34
معدل تقييم المستوى: 0
Dr.Genius is on a distinguished road
افتراضي رد: شرح التحكم فى السيرفو موتور

مهندس اشرف .... بارك الله فيك علي هذا الشرح الجميل

ولكن انت قلت بان دقة الزاوية تعتمد علي تغيير اعدادت التايمر ... ؟

مالمقصود بهذا .. ؟ وهل ممكن تعتمد علي اعدادت المصفوفة ؟

سؤال اخر ::::::::::::::::::::
ممم مالذي يحكم السرعة .؟ في حالة السيرفو موتور ؟هل ممكن ان تكون دقة الزاوية ؟

وشكراا لك
رد مع اقتباس
  #46  
قديم 02-15-2012, 07:31 AM
booko78 booko78 غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Jan 2012
المشاركات: 14
معدل تقييم المستوى: 0
booko78 is on a distinguished road
افتراضي رد: شرح التحكم فى السيرفو موتور

شكرا لك الموضوع متميز
رد مع اقتباس
  #47  
قديم 03-24-2012, 10:47 PM
هبة الجرادي هبة الجرادي غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Mar 2012
المشاركات: 19
معدل تقييم المستوى: 0
هبة الجرادي is on a distinguished road
افتراضي رد: شرح التحكم فى السيرفو موتور

ملف قيم ومحتوى تشكر وتجزى عليه خيرا . بورك فيك .
رد مع اقتباس
  #48  
قديم 04-09-2012, 08:36 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 9
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح التحكم فى السيرفو موتور

قريبا ان شاء الله شرح التحكم فى اكثر من محرك سيرفو فى نفس الوقت و بطريقة بسيطة جدا بدون تعقيد ...

والسلام عليكم و رحمة الله و بركاته
رد مع اقتباس
  #49  
قديم 04-14-2012, 09:32 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 9
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح التحكم فى السيرفو موتور

السلام عليكم و رحمة الله...

نستكمل اخوانى شرح التحكم فى السيرفو موتور بطريقة اكثر سهوله و دقة حيث يمكنكم بهذة الطريقه التحكم فى محرك السيرفو بدقة اعلى من زى قبل.

نعلم من الشروحات السابقة اننا اذا اردنا للسيرفو ان يتحرك لزاويه معينة درجة يجب اعطاءة نبضة مدتها من 0.7 ms الى 2.3 ms ليتحرك من 0الى 180 درجة.
ولكن كانت المشكلة هى اننا نريد تغيير قيمة النبضة باستمرار لضمان التحكم الدقيق فى زاوية الدوران وكان ذلك غير ممكن عند استخدام امر التأخير الزمنى
كود:
delay_us(1000)
.فكنا نلجا الى الاسلوب الذى تم شرحة سابقا.
اليوم اقدم لكم امر جديد يمكننا بسهولة من التحكم فى التاخير الزمنى باستمرار فى الازمنة الصغيرة (ميكرو ثانية) بسهولة.
كود:
Delay_Cyc( );
امر التاخير الزمنى
كود:
Delay_Cyc( );
يمكننا عمل تاخير زمنى يعتمد على زمن التعليمات الخاصة بمذبذب الميكرو كنترول.
فمثلا عند استخدام كريستاله 4 Mega Hertz فان زمن التعليمة يكون 1 ميكرو ثانية .
ولعمل تاخير زمنى بقيمة 100 ميكرو ثانية تكون القيمة المكتوبة داخل امر التاخير هى
كود:
Delay_Cyc (10 );
حيث ان المكتبة الداخلية تقوم بضرب القيمة المكتوبة * 10 .


وبالتالى اذا اردنا اعطاء نبضة لمدة 1.7 ميللى ثانية تكون القيمة داخل امر التاخير هى
كود:
1700 (µS)/10=170
So,
  Delay_Cyc (170);
اذن لعمل برنامج يمكننا فية تغيير عرض نبضة باستمرار يمكننا عمل متغير نضعة داخل امر التاخير و نقوم بزيادتة باستمرار .

الان مطلوب برنامج يحرك السيرفو الى زاوية قيمتها 90 درجة.
بالتالى نحتاج نبضه لمدة 1500 ميكرو ثانية عالى و نبضة قيمتها 18500 منخفض حتى يكون التردد 50 هيرتز كما نعلم وبالتالى يكون البرنامج بالشكل التالى.

كود:
while(1){
servo1=on;
Delay_Cyc(150);         // delay=150*10=1500 us=1.5 ms
servo1=off ;
delay_ms(1850);
}
البرنامج التالى يمكننا من التحكم فى السيرفو بدقة عالية لكل درجة

كود:
while(1){
                  delay=i*10;
                  delay=delay+n;
                  servo1=on;
                  Delay_Cyc(delay);         // delay=70*10=700 us=.7 ms
                  servo1=off;
                  delay_ms(20);
                  if(sw1==pressed){delay_ms(200);                 
                      n++;
                      if(n>=161){n=0;}
                      }}

الشرح:
نريد زيادة المتغيرdelay بحيث يزداد من 70 الى 230 بمقدار الوحدة.
قمنا بفرض متغيرين n,m .
عند الضغط على المفتاح n يزداد المتغير يمقدار الوحدة

if(sw1==pressed){delay_ms(200);
n++;

المتغير i القيمة الابتدائية له هى 7 لاحظ عند التعويض يكون كما يلى:
كود:
delay=i*10;          //delay=70
delay=delay+n ;       //  delay =70+1=71


و عند التعويض فى الناتج النهائى فى دالة التاخير


كود:
Delay_Cyc(delay);         كما قلنا الدالة تقوم بضرب المتغير داخلها *10 يكون الناتج التاخير النهائى هو 701 ميكرو ثانية اى 0.71 ميللى ثانية وبالتالى استطعنا الزيادة بمقدار بسيط جدا.


الشرط الاخير اذا كانت قيمة n اكبر من او تساوى 161 نقوم بتصفير القيمة مرة اخرى ولكن لماذا هذة القيمة بالذات؟؟

لاننا نريد ان تكون قيمة التاخير الزمنى بالميكرو ثانية محصورة مابين 700 و 2300 و الفرق بينهم هو عدد الخطوات المطلوب زيادتها مقسومة على 10 .


[

LEFT]
كود:
2300-700=1600/10=160  n(max)=160
[/LEFT]

وبالتالى يكون الكود النهائى للبرنامج كالتالى

كود:
// servo motor control
// author :ashraf kamal elhanahmy
// 14-april-2012
# define servo1 portb.f1
# define servo1_dir trisb.f1
# define servo2 portb.f3
# define servo2_dir trisb.f3
# define sw1 portb.f0
# define sw2 portb.f2
# define sw1_dir trisb.f0
# define sw2_dir trisb.f2
# define pressed 0
# define output 0
# define input 1
# define on 1
# define off 0
  char i;
  char n; unsigned short delay;
void init(){
            servo1_dir=output;
            servo2_dir=output;
            sw1_dir=input;
            sw2_dir=input;
            }

void main() {
  init();   i=7;
            n=0;
           while(1){
		  delay=i*10;
                  delay=delay+n;
                  servo1=on;
                  Delay_Cyc(delay);         // delay=70*10=700 us=.7 ms
                  servo1=off;
                  delay_ms(20);
                  if(sw1==pressed){delay_ms(200);
                  
                      n++;

                      if(n>=161){n=0;}
                      }  }   }
رد مع اقتباس
  #50  
قديم 04-14-2012, 10:01 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 9
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح التحكم فى السيرفو موتور

ملفات المحاكاة و الكود و الهيكس على الرابط التالى:


هنا

فى المرة القادمة سنشرح كيفية التحكم فى اكثر من سيرفو موتور بنفس الطريقة مع التعديل البسيط باستخدام مقاطعه التايمر زيرو.
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 12:46 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77