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

   

naje
:: مهندس ::
تاريخ التسجيل: Apr 2012
المشاركات: 3
نشاط [ naje ]
قوة السمعة:
قديم 12-06-2012, 08:01 PM المشاركة 25   
افتراضي ADC 3 channales with mikroC prp



الاخوه الكرام
الكود التالي يعمل على pic16f877 و ir sharp distance sensor على المنفذ :PORTA0 واحتاج لاستخدام سنسورين 2 sensors على PORTA0 & PORTA1


ارجوا المساعده في الكود ليعمل على السنسورين 2 sensors

وجزاكم الله كل خير
// LCD module connections;
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections;

unsigned int cm,cm10;
unsigned int math;
char *text;
char *digit = "00";

void calc_distance(void)
{
// from the datasheet the analog voltage is
// the inverse of distance, so distance can be calculated
// d = (1 / volts) then just scaled to suit the datasheet
// load ADC value in 16bit math variable.
math = ADC_Read(0);

math = ADRESH;
math = (math * 255);
math += ADRESL;
// now invert it; (1 / volts) use (6050 / volts) for scaling, 6050 is a constant;
math = (6050 / math);
if(math >= 2) math -= 2; // fix linear error (-2)
if(math < 10) math = 10; // min limit at 10cm
if(math > 80) math = 80; // max limit at 80cm
// convert from 0-99 to 2 decimal digits, 0-99cm
cm10=0;
while(math >= 10)
{
cm10++;
math -= 10;
}
cm = math;
}

void main(void)
{
ADCON0 = 0X01; // RA0 as Analog Input;
ADCON1 = 0X00; // Reference VDD and VSS, with left justified;



TRISA0_bit = 1; // Make RA0 as input;
PORTA = 0x00; // Initial value of PORTA;

LCD_Init(); // Initialize the LCD;
LCD_Cmd(_LCD_CURSOR_OFF); // Cursor mode off;
LCD_Cmd(_LCD_CLEAR); // Clear the entire LCD;

text = "front";
LCD_Out(1,3,text);
text = "=";
LCD_Out(1,8,text);
text = "cm";
LCD_Out(1,13,text);
text = "back";
LCD_Out(2,3,text);
text = "=";
LCD_Out(2,8,text);
text = "cm";
LCD_Out(2,13,text);

while(0)
{
calc_distance(); // Call the "calc_distance" function;

digit[0] = cm10 + 48; // tens digit;
digit[1] = cm +48; // unit digit;
Lcd_Out(1,10,digit); // display on LCD from column 2, from character 10;
delay_ms(100);
}

اعلانات

محمددش
:: مهندس ::
تاريخ التسجيل: Feb 2009
المشاركات: 48
نشاط [ محمددش ]
قوة السمعة:
قديم 25-08-2012, 12:26 PM المشاركة 26   
افتراضي


الله علي الابداع

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

الصورة الرمزية guermi
guermi
:: مهندس ::
تاريخ التسجيل: Apr 2012
المشاركات: 49
نشاط [ guermi ]
قوة السمعة:
قديم 30-10-2012, 11:19 PM المشاركة 27   
افتراضي


السلام عليكم
اضحى سعيد للجميع اعاده الله بالخير واليمن والبركات
شكراا لك اخي على الشرح المفصل عن المحول ولدي طلب ان امكن وهو كيفية تفعيل المحولadc دون استعمال الدوال الجاهزة في الميكروسي لاني استعمل MPLAB IDE و Hi-Tech compiler وشكرااا اخي


banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 403
نشاط [ banna1980 ]
قوة السمعة:
قديم 03-11-2012, 12:17 PM المشاركة 28   
افتراضي


جزاك الله خيرا ، وارجو توضيح لو يمكن ادخال اشارة أمبير بدلا من الفولت


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


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

بعد اذن صاحب الموضوع اذا يسمح ان اضيف اضافة هامة جدا جدا جدا وهي كما ذكر المهندس انه كلما زادت العينات المأخوذة يكون افضل وتكون شكل الاشارة الناتجة قريب من الشكل الاصلي وهذا نسميه تردد التحويل او sampling frequency. طيب تمام الان هل له قاعدة معينة بالطبع اكيد له قاعدة ويسمونها Nyquist frequency اي ان تردد التحويل لابد على الاقل ان يكون ضعف او اكثر من تردد الاشارة الاصلية او الداخلة حتى تكون الاشارة الخارجة قريبة من الاشارة الاصلية او قليلة التشوهات مثال على ذالك لو عندنا اشارة داخلة على المتحكم ترددها 10kHz فلابد ان يكون تردد التحويل او sampling frequency الضعف او اكثر 20kHz او اكثر حتى تضمن ان الاشارة الخارجة تكون مناسبة جدا.
ممتاز حتى الان طيب ايه الدوخة دي واللف والدوران وايه يفيدنا الكلام دا اقول في اختيار التردد المناسب لحساب الزمن اللي شرحة المهندس كان واضح جدا وبمثال واضح ولكن كان ذالك الزمن لقيمة واحد بت Tad طيب لو رجعنا للداتا شيت بيقول انADC 10 bits تستغرق من الوقت 12 دورة وبعض المتحكمات تستغرق 15 دورة وبالتالي اذا تريد حساب الوقت اللازم لابد ان تضرب الزمن اللي عندك في 12 حتى يعطي الزمن اللازم لتحويل 10 bits. وبالتالي تستطيع معرفة تردد التحويل المناسب مع اخذ الاعتبار بتردد الاشاة الاصلية او الداخلة على المتحكم.


محمد_على
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2013
المشاركات: 97
نشاط [ محمد_على ]
قوة السمعة:
قديم 12-07-2015, 01:49 AM المشاركة 30   
افتراضي قراءة اشارات الانالوج بواسطة البيك والتعامل معه




السلام عليكم ورحمة الله وبركاتة تحية طيبة للجميع

بعد اذن صاحب الموضوع اذا يسمح ان اضيف اضافة هامة جدا جدا جدا وهي كما ذكر المهندس انه كلما زادت العينات المأخوذة يكون افضل وتكون شكل الاشارة الناتجة قريب من الشكل الاصلي وهذا نسميه تردد التحويل او sampling frequency. طيب تمام الان هل له قاعدة معينة بالطبع اكيد له قاعدة ويسمونها Nyquist frequency اي ان تردد التحويل لابد على الاقل ان يكون ضعف او اكثر من تردد الاشارة الاصلية او الداخلة حتى تكون الاشارة الخارجة قريبة من الاشارة الاصلية او قليلة التشوهات مثال على ذالك لو عندنا اشارة داخلة على المتحكم ترددها 10kHz فلابد ان يكون تردد التحويل او sampling frequency الضعف او اكثر 20kHz او اكثر حتى تضمن ان الاشارة الخارجة تكون مناسبة جدا.
ممتاز حتى الان طيب ايه الدوخة دي واللف والدوران وايه يفيدنا الكلام دا اقول في اختيار التردد المناسب لحساب الزمن اللي شرحة المهندس كان واضح جدا وبمثال واضح ولكن كان ذالك الزمن لقيمة واحد بت Tad طيب لو رجعنا للداتا شيت بيقول انADC 10 bits تستغرق من الوقت 12 دورة وبعض المتحكمات تستغرق 15 دورة وبالتالي اذا تريد حساب الوقت اللازم لابد ان تضرب الزمن اللي عندك في 12 حتى يعطي الزمن اللازم لتحويل 10 bits. وبالتالي تستطيع معرفة تردد التحويل المناسب مع اخذ الاعتبار بتردد الاشاة الاصلية او الداخلة على المتحكم.
ده بالنسبة للدخل ياريت مشروع يخرج اليد من خمسه فولت وينزل الفلت الى صفر وياريت مره ديجتل ومره انلوج وجزاكم الله خيرا


محمد_على
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2013
المشاركات: 97
نشاط [ محمد_على ]
قوة السمعة:
قديم 15-07-2015, 01:14 AM المشاركة 31   
افتراضي قراءة اشارات الانالوج بواسطة البيك والتعامل معه


ده بالنسبة للدخل ياريت مشروع يخرج اليد من خمسه فولت وينزل الفلت الى صفر وياريت مره ديجتل ومره انلوج وجزاكم الله خيرا
ده بالنسبة للدخل ياريت مشروع يخرج اليد من خمسه فولت وينزل الفلت الى صفر وياريت مره ديجتل ومره انلوج وجزاكم الله خيرا


محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 30-03-2016, 05:32 PM المشاركة 32   
افتراضي


موضوع رائع.. جزاكم الله خيرا.



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