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

   

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 13-03-2013, 12:55 AM المشاركة 9   
افتراضي



3- الغي فكرة المقارنة الان و ادخل الاشارة التناظرية مباشرة على منفذ المقاطعة سيعمل بشكل جيد ان شاء الله ...
اخي حيدر مستحيل انها تعمل هل تدخل اشارة تناظرية على مدخل رقمي !!

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 13-03-2013, 02:22 AM المشاركة 10   
افتراضي


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

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

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 13-03-2013, 04:59 PM المشاركة 11   
افتراضي


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


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 13-03-2013, 11:04 PM المشاركة 12   
افتراضي


لا تغير اي شيء في الكود و البروتوس ...
فقط غير الاشارة الى جيبية و اعطها Vmax=5
و اختر التردد ...



ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 13-03-2013, 11:20 PM المشاركة 13   
افتراضي


بالفعل اخي حيدر اشتغل الان لكن اعتقد عمليا لايشتغل
هل جربتها..!!
ناتج المقارن الاشارة المربعة هل نقدر من خلالها حساب التردد


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 14-03-2013, 01:35 AM المشاركة 14   
افتراضي


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


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 14-03-2013, 02:09 PM المشاركة 15   
افتراضي


بارك الله فيك اخي حيدر.
بحمد الله توصلت لحل مناسب للاشارة المربعة وهو دقيق 100%
عن طريق التايمر بحيث نعد عدد النبضات الداخلة في ثانية وحدة.
حقيقتا وجدت الكود وغيرت فيه شي بسيط جدا و وصلتة على المقارن اللي ينتج الموجة المربعة واشتغل تمام التمام لكن هناك مشكلتين بسيطة وهي:
1- التردد يقرأ من 1-99 اذا وضعنا اكثر من ذالك يعني 100 او 200 يعطي ارقام غريبة وغيرت في الكود واصبح يقرأ 100 و 200 لكن لايقرأ من 1-99 يعني اعتقد ان المشكلة بسيطة ويمكن حلها.
2-ان التردد يقرا اعداد صحيحة دون فواصل وهذا كما ذكرت انت سابقا انه سهل وبسيط.

ملاحظة : نسطيع عملها بواحد متحكم بحيث نصدر الموجة المربعة وندخلها على timer لنفس المتحكم.


الدائرة:



الكود:
كود:
sbit LCD_RS at RC4_bit;
sbit LCD_EN at RC5_bit;
sbit LCD_D4 at RC0_bit;
sbit LCD_D5 at RC1_bit;
sbit LCD_D6 at RC2_bit;
sbit LCD_D7 at RC3_bit;
sbit LCD_RS_Direction at TRISC4_bit;
sbit LCD_EN_Direction at TRISC5_bit;
sbit LCD_D4_Direction at TRISC0_bit;
sbit LCD_D5_Direction at TRISC1_bit;
sbit LCD_D6_Direction at TRISC2_bit;
sbit LCD_D7_Direction at TRISC3_bit;
// End LCD module connections
// Define Messages

char message1[] = "F=      Hz";
char *freq = "00";
void Display_Freq(unsigned int freq2write) {

 freq[0] = (freq2write/10)%10 + 48;    // Extract tens digit
 freq[1] =  freq2write%10     + 48;    // Extract ones digit
 // Display Frequency on LCD
 Lcd_Out(1, 5, freq);
}
void main() {

 CMCON0 = 0x07;    // Disable Comparators
 ANSEL = 0x00;     // Disable analog channels
 TRISC = 0x00;     // PORTC O/P
 TRISA = 0b00001100; // RA2/T0CKI input, RA3 is I/P only
 OPTION_REG = 0b00101000; // Prescaler (1:1), TOCS =1 for counter mode
 Lcd_Init();                 // Initialize LCD
 Lcd_Cmd(_LCD_CLEAR);        // CLEAR display
 Lcd_Cmd(_LCD_CURSOR_OFF);   // Cursor off
 Lcd_Out(1,1,message1);      // Write message1 in 1st row
 do {

  TMR0=0;
  Delay_ms(1000);  // Delay 1 Sec
  Display_Freq(TMR0);
 } while(1);  // Infinite loop
}


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 15-03-2013, 06:03 PM المشاركة 16   
افتراضي


بشر اخي حيدر توصلت لشئ انا في الانتظار



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