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

   

الصورة الرمزية Abdw9
Abdw9
:: عضو فضي ::
تاريخ التسجيل: Nov 2011
الدولة: السودان
المشاركات: 519
نشاط [ Abdw9 ]
قوة السمعة:
قديم 10-05-2013, 04:52 AM المشاركة 9   
افتراضي



يتعامل معها من خلال داله خاصة بالكود تقرأ قيمة الجهد التناظري و بامكانك ان تتعامل معها رقميا او حتى بالنظام العشري مباشرة ...
كود القراءة يكون بالصيغة التالية ..
كود:
x=adc_read(0);
و و هناك عدة مداخل تناظرية في البك يتم التمييز بينها من خلال رقم المدخل بين القوسين ...
اخي حيدر اشكرك على تضامنك معي
ولكن هل تعني الرقم الذي اكتبه بين قوسين هي التي تحدد نوع المدخل من المداخل التناظرية اذا كان للبك مدخل واحد او اثنين أو ثلاثة مثلا ؟
اما الذي اود معرفته هل هذا يكفي ليقوم الميكرو بالتعرف على الجهد التناظري والتعامل معه ؟

اعلانات

الصورة الرمزية Abdw9
Abdw9
:: عضو فضي ::
تاريخ التسجيل: Nov 2011
الدولة: السودان
المشاركات: 519
نشاط [ Abdw9 ]
قوة السمعة:
قديم 10-05-2013, 04:57 AM المشاركة 10   
افتراضي


على حسب دقة ADC على سبيل المثال 8bit ADC=256, 10bits ADC=1023, 12bits ADC=4096 على حسب نوع المتحكم و ADC
فكلما زادت الدقة يكون افضل حتى يستطيع التفرقة بين قيم متقاربة جدا لكن ربما يستهلك بور اكثر.
اخي الكريم اشكرك على هذا التوضيح المهم
فيا حبذا لو اعقبتا لنا الامر بمثال بسيط لتوضيح المعني
اكن لك من الشاكرين

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

الصورة الرمزية Abdw9
Abdw9
:: عضو فضي ::
تاريخ التسجيل: Nov 2011
الدولة: السودان
المشاركات: 519
نشاط [ Abdw9 ]
قوة السمعة:
قديم 10-05-2013, 05:03 AM المشاركة 11   
افتراضي


السلام عليكم
طريقة حساب القيمة في التحويل من analog الى digital
كود:
Vdigital =Vinput * Resolution/Vref
Vinput: الاشاراة المراد قرائتها ( حساس حرارة, حساس مسافة...)
Resolution:
تحسب باستخدام المعادلة التالية:
كود:
resolution=(2^n) -1
حيث n = قيمة البت (bit) فمثلاً:
1023 اذا كان 10 bit resolution
255 اذا كان 8 bit resolution

Vref: في العادة يكون مساوي لقيمة ال vdd المستخدم في تشغيل المايكروكنترولر..فمثلاً بعض المايكروكنترولر يشتغل على 3 فولت (فيكون vref= 3) والبعض يشتغل على 5 فولت(vref=5)...ولكن بعض المايكروكنترولر يعطي سماحية للمبرمج بتغيير قيمة ال vref الى قيمة اخرى غير ال Vdd..مثلاً (Vref= Vdd/2).

فمثلاً: لو عندنا حساس ضوئي (light sensor) ووصلناه على المايكروكنترولر .وتم ضبط المايكروكنترولر 10 bit resolution ووضع ال Vref= Vdd=5V..وكانت قيمة الجهد الخارجة من الحساس الضوئي= 2.54 فولت..فكم قيمة القراءة الرقمية لهذا الجهد؟

Vdigital= 2.54 * 1023/5= 519

ان شاءالله تكون وضحت الفكرة..نقطة اخيرة ليس دائما اعلى resolution يكون افضل..لانه راح تكون القراءة جداً حساسة ويؤدي الى عدم استقرار البرنامج..مثلاً كنت اعمل مع صديقي على مشروع تحكم بمستوى الماء في اسطوانه باستخدام PLC وليس المايكركنترولر.. وكان مستوى الماء يحسب عن طريق حساس يحسب ضغط الماء..فعند ضخ الماء داخل الاسطوانه..الضغط يتغير (يزيد وينقص) حسب الموجات المتكونه على سطح الماء خلال ضخ الماء في الانبوب..وبالتالي القراءه كانت تزيد وتنقص بسرعه عالية جداً..وكنا نستخدم 1023 resolution...فهذا يعني ان القراءة تزيد وتنقص عندما ترتفع او تنقص قراءة الحساس بمعدل(5/1023= 4.8 ملي فولت) فقمنا بتقلليل ال resolutio الى 50 بدل 1024..بحيث ان القراءة تزيد و تنقص عند زيادة او نقصان قيمة الحساس بمقدار 100 ملي فولت..وقيمة resolution تم اختيارها بعد ملاحظة ان قيمة الضغط تزيد وتنقص بمقدار تقريبا 100 ملي فولت لكل انش.
ضبط المايكروكنترولر لل 50 resolution مستحيلة ..ولكن يمكن تنفيذها بتنفيذ عمليات حسابية بعد التحويل..فمثلاً لو كان المايكروكنترولر يعمل على 1023 resolution ..نقوم بقراءة قيمة التحويل وضربها في (50/1023) وبكذا قدرنا نحول القراءة الى 50 resolution.
كلام جميل وشرح واضح جزاك الله الف خير
وسوف اعود اليك عند حاجتي لاجابة مسألة الدمسألة لدي


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


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

اخي الكريم اشكرك على هذا التوضيح المهم
فيا حبذا لو اعقبتا لنا الامر بمثال بسيط لتوضيح المعني
اكن لك من الشاكرين
المسجل التناظري نفس المسجل الرقمي له سعة تختلف من متحكم الى اخر ..
فاذا كانت سعة المدخل 10 بت فان اعلى رقم يصل اليه هو 1024 و الذي ينتج من رفع الرقم 2 الى الاس 10
اذا كانت السعة 8 بت فان اعلى رقم سيكون 2 اس 8 = 256
و هكذا


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


هنا امر مهم جدا اذا استخدمت مكتبة x=adc_read(0); في الميكروسي هو يعمل كل setting والكنفقريشن انت فقط تكتب العبارة. وهذا امر يسهل كثيرا ولكن اخي ثق تماما انه تعمل setting بنفسك في الريجسترات الداخلية هو امر بسيط وسهل وايضا مهم واسرع و اوثق لانه يساعدك على تحديد الدقة وعلى تحديد sampling ومتى تبدا...
لكن اولا اتعامل مع المكتبة الجاهزة افضل. هذا مثال من Library Example تبع mikroC وهو قراءة قيمة تناظرية من قناة 2 ADC ومن ثم اظهار القيم الرقمية على portb , portc على شكل ليد او اضاءة.

كود:
unsigned int temp_res;

void main() {
  ANSEL  = 0x04;              // Configure AN2 pin as analog
  ANSELH = 0;                 // Configure other AN pins as digital I/O
  C1ON_bit = 0;               // Disable comparators
  C2ON_bit = 0;
  
  TRISA  = 0xFF;              // PORTA is input
  TRISC  = 0;                 // PORTC is output
  TRISB  = 0;                 // PORTB is output

  do {
    temp_res = ADC_Read(2);   // Get 10-bit results of AD conversion
    PORTB = temp_res;         // Send lower 8 bits to PORTB
    PORTC = temp_res >> 8;    // Send 2 most significant bits to RC1, RC0
  } while(1);
}


الصورة الرمزية Abdw9
Abdw9
:: عضو فضي ::
تاريخ التسجيل: Nov 2011
الدولة: السودان
المشاركات: 519
نشاط [ Abdw9 ]
قوة السمعة:
قديم 10-05-2013, 12:13 PM المشاركة 14   
افتراضي


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


المسجل التناظري نفس المسجل الرقمي له سعة تختلف من متحكم الى اخر ..
فاذا كانت سعة المدخل 10 بت فان اعلى رقم يصل اليه هو 1024 و الذي ينتج من رفع الرقم 2 الى الاس 10
اذا كانت السعة 8 بت فان اعلى رقم سيكون 2 اس 8 = 256
و هكذا
الان ادركت ووضحت لدي الفكرة تماما الرب يبارك فيك أخي المبدع حيدر
جزاك الله كل خير سوف اتمرن كثيرا على هذا الموضوع ولو تداركني بعض الاشكالات فسوف ارجع لكم تحياتي لكم جميعا أخوتي


الصورة الرمزية Abdw9
Abdw9
:: عضو فضي ::
تاريخ التسجيل: Nov 2011
الدولة: السودان
المشاركات: 519
نشاط [ Abdw9 ]
قوة السمعة:
قديم 10-05-2013, 12:39 PM المشاركة 15   
افتراضي


هنا امر مهم جدا اذا استخدمت مكتبة x=adc_read(0); في الميكروسي هو يعمل كل setting والكنفقريشن انت فقط تكتب العبارة. وهذا امر يسهل كثيرا ولكن اخي ثق تماما انه تعمل setting بنفسك في الريجسترات الداخلية هو امر بسيط وسهل وايضا مهم واسرع و اوثق لانه يساعدك على تحديد الدقة وعلى تحديد sampling ومتى تبدا...
لكن اولا اتعامل مع المكتبة الجاهزة افضل. هذا مثال من Library Example تبع mikroC وهو قراءة قيمة تناظرية من قناة 2 ADC ومن ثم اظهار القيم الرقمية على portb , portc على شكل ليد او اضاءة.

كود:
unsigned int temp_res;

void main() {
  ANSEL  = 0x04;              // Configure AN2 pin as analog
  ANSELH = 0;                 // Configure other AN pins as digital I/O
  C1ON_bit = 0;               // Disable comparators
  C2ON_bit = 0;
  
  TRISA  = 0xFF;              // PORTA is input
  TRISC  = 0;                 // PORTC is output
  TRISB  = 0;                 // PORTB is output

  do {
    temp_res = ADC_Read(2);   // Get 10-bit results of AD conversion
    PORTB = temp_res;         // Send lower 8 bits to PORTB
    PORTC = temp_res >> 8;    // Send 2 most significant bits to RC1, RC0
  } while(1);
}
كلام جميل ومظبوط ومحكم اخي الكريم ennng جزاك الله كل خير سوف انهج النهج الذي نصحتني به فكم من المرات تأتي النتا~ج السلبية عند الاستعجال والاستعانة بما هو جاهز أو معد من قبل فيأتي خيبة الامل عند مرادك للتعديل في البرمجة ليوافق ما تريد !!! لك مني كل الشكر للاهتمام بالموضوع وسرعت الاجابة والمساندة وجمعتك مباركة وسعيدة


4th ENgineer
:: مهندس ::
تاريخ التسجيل: Mar 2013
المشاركات: 31
نشاط [ 4th ENgineer ]
قوة السمعة:
قديم 11-05-2013, 05:42 PM المشاركة 16   
افتراضي


لكن كيف نحصل على قيمة الخرج من المتحسس ؟

مثلا لدي متحسس الغاز MQ-2 واريد برمجته لكن لا اعرف العلاقه التي تعطي الجهد الخارج منه ؟



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