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

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

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



كيف نستطيع ان نحدد اخفض نقطة في الاشارة
استطعنا تحديد اعلى نقطة في الاشارة او max peak الان نريد اخفض نقطة لاني اريد ايجاد الفرق بين اعلى و اخفض نقطة.
هذا الرابط لاعلى نقطة
http://www.qariya.com/vb/showthread.php?t=124761&page=4

اعلانات

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


ستضيف على الكود السابق عبارتين فقط ..
الاولى تضيف تعريف لاقل قيمة مثل Min
كود:
int min=1023;

و الثانية عبارة المقارنة و التخزين
كود:
IF(adc_read(0) < min) Min=adc_read(0);

و طباعة القيمة الصغرى على الشاشة بنفس الاسلوب ...

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

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


الله يكرمك اخي حيدر جربتها بااكثر من حالة لكن دون فائدة
1-لما اضع if لااقل قيمة يعطي صفر مثل الكود:

كود:
sbit LCD_RS at Rd2_bit;
sbit LCD_EN at Rd3_bit;
sbit LCD_D4 at Rd4_bit;
sbit LCD_D5 at Rd5_bit;
sbit LCD_D6 at Rd6_bit;
sbit LCD_D7 at Rd7_bit;

sbit LCD_RS_Direction at TRISd2_bit;
sbit LCD_EN_Direction at TRISd3_bit;
sbit LCD_D4_Direction at TRISd4_bit;
sbit LCD_D5_Direction at TRISd5_bit;
sbit LCD_D6_Direction at TRISd6_bit;
sbit LCD_D7_Direction at TRISd7_bit;
long int maximum=0, minimum =1023;
int i[8];
int k[8];
void main() 
{  ADCON1.PCFG3=0; ADCON1.PCFG2=0;ADCON1.PCFG1=0; ADCON1.PCFG0=1;
trisa.f0=1;trisb=0;portb=0;
lcd_init();
 lcd_cmd(_LCD_CURSOR_OFF); Lcd_Cmd(_Lcd_Clear);
while(1)
        {
        if(adc_read(0)> maximum)
                              {maximum=adc_read(0);
                                 IntToStr(maximum*3000/1023,i);
                                 lcd_out(1,1,i);
                                 lcd_out_cp("      mV");
                                  
         if(adc_read(0) < minimum)
                                  { minimum=adc_read(0);
                                  IntToStr(minimum*3000/1023,k);
                                  lcd_out(2,1,k);
                                  lcd_out_cp("      mV");
                                  }
        }

}
2-عندما الغي if تبع max يعطي قيمة لكن غير ثابتة.

3-فكرت اضم الاثنين مع بعض حيث تكون if وحدة بعبارة AND&& يعطي قرأة لااعلى قيمة ولكن اقل قيمة بسرعة تظهر ثم تختفي ويظهر صفر


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


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

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


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 466
نشاط [ ennng ]
قوة السمعة:0
قديم 24-03-2013, 07:22 PM المشاركة 5   
افتراضي


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


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


نعم المشكلة في اضهارا لقيم السالبة الناتجة من المدخل التناظري ...
لكن عند عمل اوفسيت للموجة يعمل بشكل طبيعي .. ربما عندك خطا في مكان ما ..ز
هذا الكود
كود:
sbit LCD_RS at Rd2_bit;
sbit LCD_EN at Rd3_bit;
sbit LCD_D4 at Rd4_bit;
sbit LCD_D5 at Rd5_bit;
sbit LCD_D6 at Rd6_bit;
sbit LCD_D7 at Rd7_bit;

sbit LCD_RS_Direction at TRISd2_bit;
sbit LCD_EN_Direction at TRISd3_bit;
sbit LCD_D4_Direction at TRISd4_bit;
sbit LCD_D5_Direction at TRISd5_bit;
sbit LCD_D6_Direction at TRISd6_bit;
sbit LCD_D7_Direction at TRISd7_bit;
long int maximum=0;
long int manimum=1023;
int i[8];
int j[8];
void main() 
{trisa.f0=1;trisb=0;portb=0;
lcd_init();
 lcd_cmd(_LCD_CURSOR_OFF); Lcd_Cmd(_Lcd_Clear);
while(1)
        {
        if(adc_read(0)> maximum)
                               {maximum=adc_read(0);
                                 IntToStr(maximum,i);
                                 lcd_out(1,1,i);
                                 lcd_out_cp("      mV");
                               }
        if(adc_read(0) < manimum)
                                {manimum=adc_read(0);
                                IntToStr(manimum,j);
                                lcd_out(2,1,j);
                                }

        
        }

}

و كيفية عمل الاوفسيت للموجة
جهد البطارية 3 فولت و قمة الموجة 2 فولت ..


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


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


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


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


إضافة رد

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

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

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


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

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