قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية noornader
noornader
:: عضو ذهبي ::
تاريخ التسجيل: Mar 2007
المشاركات: 608
نشاط [ noornader ]
قوة السمعة:
قديم 14-12-2011, 10:02 AM المشاركة 9   
افتراضي



شكرا اخي noornader علي الاستجابة السريعة ولكن افضل البرنامج بلغة السي واسف علذ تأخري في الرد لان النت كان مفصول عندي وبارك الله فيك.اخوي noornader
الشكر لله اخى الكريم
ولكن عذرا لأننى لا اجيد البرمجة بلغة السى
تمنياتى لك بالتوفيق


اعلانات

الصورة الرمزية noornader
noornader
:: عضو ذهبي ::
تاريخ التسجيل: Mar 2007
المشاركات: 608
نشاط [ noornader ]
قوة السمعة:
قديم 14-12-2011, 10:04 AM المشاركة 10   
افتراضي


اخى الكريم
يمكنك الاطلاع على موضوع ممكن يفيدك من هنا
بالتوفيق

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

spook2012
:: مهندس ::
تاريخ التسجيل: Dec 2011
المشاركات: 26
نشاط [ spook2012 ]
قوة السمعة:
قديم 16-12-2011, 06:38 PM المشاركة 11   
ha مساعدة في برنامج التحكم في سرعة dc motor


السلام عليكم
اريد مساعدة في كتابة برنامج خاص بالتحكم بسرعة dc motor بواسطة PI(Proportional, Integral Controllers ) لمعالج PIC16F877A وبواسطة برنامج mikroC PRO for PIC
وعندي هذا البرنامج لكنه خاص بالمعالج ATMEGA 8 ووجدته في مشروع الطالب علا جزماتي من سوريا وهذا رابط للمشروع لرؤيته في ملف pdf:http://www.4shared.com/document/gAvC8mdi/__online.html وأريد من الاخوة المساعدة في كتابته لمعالج PIC16F877A لأنني جديد في البرمجة بلغة C
وهذا هو الكود الذي أريد تعديله :
كود:
#include <mega8.h>
#include <stdio.h>
int time_index=0;
float a , alpha,Ua ;
float oldalpha=127; // 50% duty cycle
float Kv=1.7587;
float Kpv=0.3645;
float Kiv= 254.5755;
int counter=0;
float s_rpm , current_s_rpm ,error_star,Wref_star;
float Wref_star_old =0;
float Wref = 209;
float error=0;
float error_old=0;
float TPWM =0.00025; ///1/4KHZ
interrupt [EXT_INT0] void ext_int0_isr(void)
{
++counter;
if (TCNT0==0x06)
{ current_s_rpm = 1.07 * counter; //// speed = {1 RPM * 60 * counter } / 56
counter=0; }
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x06;
if(time_index++==500){
s_rpm = current_s_rpm ;
time_index=0;}
}
/// clk/64=125 KHZ ==> T= 8 micro second
// 8 micro second * 256(max value for Timer0) = 2.05 ms
// ==> we will take only 250 ==> 256‐250 = 6 = TCNT0
// 8 micro second * 250 = 2 ms ==> time_index=500
// 2ms * 500 = 1 second
void main(void)
{
// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=Out Func2=Out Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=0 State2=0 State3=T State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x06;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125.000 kHz
TCCR0=0x03;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: Fast PWM top=00FFh
// OC1A output: Non‐Inv.
// OC1B output: Inverted
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0xB1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x7F;
OCR1BH=0x00;
OCR1BL=0x7F;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x00;
ASSR=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: Off
GICR=0x40;
MCUCR=0x00;
GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
error= Wref ‐ s_rpm;
Wref_star = Wref_star_old + Kpv*error_old + Kiv*TPWM*error_old; // pi
error_star = Wref_star ‐ s_rpm ;
Ua = Kv*error_star ; // p
Wref_star_old = Wref_star ;
error_old = error ;
a = 0.083333 *Ua ; // a = Ua /12
alpha = 255 *a; // 8 bit pwm
oldalpha = alpha ;
OCR1AH=0x00;
OCR1AL=oldalpha;
OCR1BH=0x00;
OCR1BL=oldalpha; };}
الشكل التالي يوضح الدارة العملية التي تمت محاكاتها بواسطة برنامج 7 Proteus :


spook2012
:: مهندس ::
تاريخ التسجيل: Dec 2011
المشاركات: 26
نشاط [ spook2012 ]
قوة السمعة:
قديم 24-12-2011, 03:58 AM المشاركة 12   
ha ارجو المساعدة في دائرة (التحكم في سرعة محرك التيار المستمر)


السلام عليكم
ارجو مساعدتي وبأسرع وقت ممكن في هذه الدائرة اريد توضحيا اكثر لكيفية توصيلها عمليا وبالقيم ايضا اذا امكن ذلك وهذه الصورة توضح توصيلة الدائرة مبسطة :

وارجو ان تساعدوني لان احتاجها ضروري
وشكرا


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 24-12-2011, 12:06 PM المشاركة 13   
افتراضي


أخى
رجاء الرجوع للموقع الذى أحضرت منه هذه الدائرة فبعض المكونات غير واضح أرقامها و التوصيل مع الميكرو يعتمد على الأطراف الصحيحة
الأداء يعتمد أساسا على البرنامج فهو يستخدم حساس لتحديد سرعة الموتور و لم يحدد كيف يقيسها
الترانزيستور يعتمد على قدرة الموتور والمقاومات تعتمد على ما سبق

أيضا بالنسبة ل 24 فولت فسبق وضع دوائر كثيرة هنا تستخدم محول واحد بدلا من 3 محولات


spook2012
:: مهندس ::
تاريخ التسجيل: Dec 2011
المشاركات: 26
نشاط [ spook2012 ]
قوة السمعة:
قديم 24-12-2011, 02:03 PM المشاركة 14   
ha شكر اخي علي سرعة الرد


أخى
رجاء الرجوع للموقع الذى أحضرت منه هذه الدائرة فبعض المكونات غير واضح أرقامها و التوصيل مع الميكرو يعتمد على الأطراف الصحيحة
الأداء يعتمد أساسا على البرنامج فهو يستخدم حساس لتحديد سرعة الموتور و لم يحدد كيف يقيسها
الترانزيستور يعتمد على قدرة الموتور والمقاومات تعتمد على ما سبق

أيضا بالنسبة ل 24 فولت فسبق وضع دوائر كثيرة هنا تستخدم محول واحد بدلا من 3 محولات
تفضل اخي هذا الرابط:
http://www.qariya.com/vb/showthread.php?t=43672
وهو مشروع للاخ امين
وارجو ان تساعدني اخي لاني احتاجه ضروري وبارك الله فيك


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 24-12-2011, 02:36 PM المشاركة 15   
افتراضي


الشيء الغير واضع فيها قيمة المقاومتين وهما فقط للحماية و العزل بين مثبت الجهد 18 فولت و الأوبتو
يمكنك استخدام مقاومتين ثابتتين كل منهما 4.7 ك حتى 10 ك فالقيمة لا تفرق كثيرا لأن الترانزيستور موسفيت و ليس كما بالرسم
لاحظ أى نوع من الموتورات يستخدم - موتور 12 فولت مع تغذية 24 فولت


spook2012
:: مهندس ::
تاريخ التسجيل: Dec 2011
المشاركات: 26
نشاط [ spook2012 ]
قوة السمعة:
قديم 29-12-2011, 05:53 PM المشاركة 16   
ha ارجو المساعدة في تحليل معادلات dc motor


السلام عليكم
اسم المشروع (التحكم في سرعة dc motor بواسطة PID بالميكروكنترولر )
ممكن مساعدة في تحليل معادلات dc motor وايجاد قيم معامل التخامد والتردد الطبيعي والاقطاب وايجاد قيم Kv , Ki , Kp من خلال التعويض بقيم بارامترات المحرك لأني قمت بالتعويض في المعادلات ولم تكن نفس النواتج اللي اوجدها اخي علاء جزماتي في مشروعه وهذا رابط المشروع :
http://www.4shared.com/document/gAvC8mdi/__online.html
ارجو ان توضحوا لي و تساعدوني بأسرع وقت ممكن وان تشرحو لي المعادلات بالتفصيل
وشكرا



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:05 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)