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

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

khamed tabet
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 333
نشاط [ khamed tabet ]
قوة السمعة:0
قديم 06-04-2013, 05:12 PM المشاركة 1   
افتراضي سؤال في ADC Twitter FaceBook Google+



السلام عليكم
أريد ان اعرف هل بإمكان توفر في الميكروكنترول عند التحويل ADC بتخزين اعلى قيمة وأدنى قيمة خلال دورات مستمرة في متغيرات

اعلانات

khamed tabet
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 333
نشاط [ khamed tabet ]
قوة السمعة:0
قديم 11-04-2013, 04:22 PM المشاركة 2   
افتراضي


هل الفكرة صعبة!!!! انا اريد تسجيل اعلى قيمتين aو c و أدنى قيمة B و حساب
(A+C) ناقص أدنى قيمة B ويعطيني القيمة هل هاذه الطريقة مستحيلة في المسجل ADC


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

kishoko
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2011
المشاركات: 122
نشاط [ kishoko ]
قوة السمعة:0
قديم 11-04-2013, 05:32 PM المشاركة 3   
افتراضي


محتاجين بعض التوضيح اخى الكريم لكى نستطيع افادتك


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


اخي الفكرة جدا بسيطة ...
تفرض متغير اسمه MAX و تعطيه قيمة ابتدائية مقدارها صفر ..
و متغير اخر اسمه MIN و بقيمة ابتدائية مقدارها 1023
كود:
int max=0,min=1023;
void main()
{
.
.
. 
while(1)
{if(adc_read(0) > max) max=adc_read(0);
if(adc_read(0) < min)min=adc_read(0);
}
.
.
}


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


بارك الله في الجميع

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

http://www.qariya.com/vb/showthread.php?t=124761

لكن اعتقد والله اعلم وهذا سؤال موجه للاخ حيدر بارك الله فيه ممكن طريقتنا تنفع في حالة كانت الاشارة ثابتة اي amplitudes تبع الاشارة يكون متساوي في جميع الدورات اي لايطلع وينزل.
طيب الان السؤال اذا على سبيل المثال مثل الرسمة ان الميكرو بيقرأ القيمة a على انها max لكن مايقرأ c . انا اقترح ان نحدد max لكل دورة على سبيل المثال نحدد قيمة a كقيمة max ونحفظها في متغير وليكن max1 في الدورة الاولى ,وناخذ الدورة الثانية ونحدد قيمة max اللي بتكون c ونخزنها في متغير مثلا max2 وهكذا.. طبعا لابد ان نحدد وقت معين على سبيل المثال نقول ثلاث دورات او اربع دورات يتم فيها تحديد اعلى قيمة واقل قيمة في كل دورة.

ارجوا من الاخ حيدر يفيدنا في ذالك او يكون عندك فكرة اخرى بارك الله في الجميع


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


في هذا الكود لاحظ تغير القيم العظمى مع تغيير الجهد من خلال البوت ....
و عند تقليل الجهد ايضا يقل الخرج اي انه ياخذ القيمة العظمى لعدة دورات ثم يصفرها و يبدأ بحساب قيمة عظمى مرة اخرى و هكذا ..
صمم في هذا الكود جهاز لقياس التيار المتناوب ...
http://www.4shared.com/rar/hqW4LVCf/ameter.html


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


حلو الكلام اخي حيدر
هو عمل
كود:
i++;
          delay_us(10);
          if(i>300){i=0;current=0;}
اذا وصلت قيمة i الى 300 صفر قيمة الاشارة وخذ قراءات جديدة. طيب السؤال هنا لماذا وضع 300 وماذا تعني هنا اي المدة التي تأخذها

وفي الامر السابق
كود:
FloatToStr((current*10/94),txt);
لماذا ضرب current في 10 ومن ثم قسم على 94 ؟؟
انا لاحظت ان مقدار الاشارة الداخلة صغيرة جدا في حدود mv هل لهذا السبب عمل الضرب؟؟
غيرت مقدار الاشارة ووضعت قيم مختلفة للاشارة وغيرت فقط في هذا السطر في الكود مثل واشتغل تمام التمام لكن لااعرف لماذا هذه الارقام؟؟
كود:
FloatToStr((((current*10/94)/10)-0.2),txt);
سؤالي اخي حيدر نحن نريد على سبيل المثال تحديد ثلاث دورات وتحديد max في كل دورة وتخزينها في متغير.


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


لاحظ ان عبارة التاخير تؤخر الزمن بمقدار 10 مايكرو ثانية في كل عملية تكرار و عند وصول عمليات التكرار الى 300 فان الزمن سيكون 300 × 10 = 3 ملي ثانية ...
تستطيع ان تختار الزمن الذي تريده و حسب تردد اشارتك . و لا تنسى فان هذه الفقرة تحتاج الى تردد عالي للمذبذب لكي يستطيع البك اللحاق بالاشارة و ياخذ منها عينات كثيرة لان الميكروسي بطيء في تنفيذ الاوامر ...

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

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


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 12-04-2013 الساعة 09:27 PM
إضافة رد

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

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

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


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

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