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

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

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 466
نشاط [ ennng ]
قوة السمعة:0
قديم 02-05-2013, 10:03 AM المشاركة 1   
افتراضي هل ينفع نخرج موجة مربعة من الميكرو ونعدها T0 Twitter FaceBook Google+



السلام عليكم اخواني الكرام
هذا مشروع كتبة الاخ القدير حيدر وهو عبارة عن تحديد قيمة max لساين ويف ومن ثم يخرج موجة مربعة او سبايك عند هذه القيم max

http://www.4shared.com/rar/YzCn-EJ6/enng3.html

المطلوب هو ادخال هذه الموجة المربعة على Timer0 لنفس المتحكم وعدها على سبيل المثال

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 02-05-2013, 07:06 PM المشاركة 2   
افتراضي


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

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

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 466
نشاط [ ennng ]
قوة السمعة:0
قديم 03-05-2013, 08:52 AM المشاركة 3   
افتراضي


والله كم يسعدني مرورك اخي حيدر وايضا انحرجت منك لانك ساعدتني كثير فاالله يبارك فيك ويجعله في ميزان حسناتك.
مشكلة كبيرة لاني بنيت مشروعي على هذه الفكرة ولايمكن استخدام متحكم اخر. طيب هل هناك فكرة معينة تسعفنا فيها!! ايه رايك في المشروع اللي يخزن 20 قيمة max في مصفوفة ممكن نستفيد منه هنا وكيف !!
اخي حيدر انا بانتظارك احر من الجمر.


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 03-05-2013, 11:16 AM المشاركة 4   
افتراضي


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


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 03-05-2013, 11:27 AM المشاركة 5   
افتراضي


هل تستقبل الاشارة من محرك ديسي متغير السرعة ؟؟؟


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 466
نشاط [ ennng ]
قوة السمعة:0
قديم 03-05-2013, 11:30 AM المشاركة 6   
افتراضي


بدلا من اضهار الموجة المربعة و اعادة ادخالها الى البك اخبر البك بان يعد الاشارة باستخدام التايمر او باي طريقة اخرى عند وصول اشارة الدخل الى قمتها و بذلك سيحصل التحسس و العد كله برمجيا داخل البك و لن تحتاج الى توصيلات خارجية ...
لاادري ماذا اقول اخي حيدر بارك الله فيك
كلام جميل جميل جميل... جدا وهذا مااريده بالفعل لااريد توصيلات خارجية وماشابة ذالك في البداية حاولت اوصل مقاومة رقمية متغيرة واستخدام I2C في التحكم بها ودخلت في مشاكل كثيره جدا ثم غيرت الي طريقة اخراج الموجة المربعة وادخالها على نفس المتحكم عن طريق توصيل خارجي وايضا مانفعت طيب اخي حيدر انا لااريد اخراج هذه الموجة المربعة فقط اريد تحديد قيم max وتشغيل T0 او عمل مقاطعة للعد بين مقاطعتين انا اريد اعرف الزمن بين قمتين ممكن تساعدني فيها علما بان الاشارة الداخلة ترددها صغير لايتجاوز 5 هيرتز.


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 466
نشاط [ ennng ]
قوة السمعة:0
قديم 05-05-2013, 09:18 PM المشاركة 7   
افتراضي


اخي حيدر توصلت لحل وهو عد النبضات الداخلة على تايمر 1 وهو كل نبضة داخلة يعدها بواحد اثنين ثلاث اربع .... وهكذا طيب انا اريد الزمن بين نبضتين وليس عدد النبضات الداخلة.

كود:
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;

int maximum=0;
 unsigned int TMR1_value;
char to_LCD[6];
void main() 
{trisa=1;trisb=0;portb=0;trisc.f0=1;
 ADCON1.PCFG3=0; ADCON1.PCFG2=0;ADCON1.PCFG1=0; ADCON1.PCFG0=1;
 T1CON.T1CKPS0=0; T1CON.T1CKPS1=0;
 T1CON.T1OSCEN=0;
 T1CON.T1SYNC=1;
 T1CON.TMR1CS=1;
 TMR1H = TMR1L = 0;
 Lcd_Init();
 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Cmd(_LCD_CURSOR_OFF);
 
while(1)
         {

          while(adc_read(0)> maximum) maximum = adc_read(0);
          portb.f0=1; 
          T1CON.TMR1ON=1;
          delay_ms(100);
          portb.f0=0;  
          TMR1_value = (TMR1H << 8) + TMR1L;
          WordToStr(TMR1_value, to_LCD);
          LCD_Out(2, 1, to_LCD); 
          while((adc_read(0)< maximum-1) ){}
          maximum=0;
         
         }

}

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025