khamed tabet

مساعدة في كود بستعمال المحول الرقمي

4 ردود في هذا الموضوع

السلام عليكم ورحمة الله

اريد من الاعضاء مساعدتي في كود بسيط

لدي اشارة داخلة الى الميكروكنترول من 0 الى 4 فولت
وقمت بمحاكاتها على البروتس
تصاعديا

 

qariya_com_8a68567d07.png

 

وكل 80 ملي ثانية منذ بداية الاشارة يختبر الشرط ووضعت الشرط الاول في المجال 1فولط لايزيد ولاينقص ثم بعد 80 ملي ثانية اخرى في المجال 2فولط وهاكذا حتى 4فولط
ثم يشتعل الليد المربوط بالb0
لكن لم ينجح

 

sbit led at RB0_bit ;
int yy;
int y;
void main(){
TRISA.f0=1;
TRISB = 0;
PORTB = 0;
adc_init();

while(adc_read(0)>0){

y=adc_read(0);
yy=(y*5)/1023;
delay_ms(80);
if((yy<=1)&&(yy>=1)){delay_ms(80);
if((yy<=2)&&(yy>=2)){delay_ms(80);
if((yy<=3)&&(yy>=3)){delay_ms(80);
if((yy<=4)&&(yy>=4)){led=1;}

;}
;}
;}

}
}

الملف المحاكات
http://www.4shared.com/rar/sEPKhepl/ADC1.html

ثانيا جربت
استعمل المصفوفة ونفس المشكلة

 

sbit led at RB0_bit ;
int mn[]={1,2,3,4};
int mx[]={1,2,3,4};
int x;
int yy;
int y;
void main(){
TRISA.f0=1;
TRISB = 0;
PORTB = 0;
adc_init();

while(adc_read(0)>0){

y=adc_read(0);
yy=(y*5)/1023;

while(x<4){

delay_ms(80);
if((yy<=mx[x])&&(yy>=mn[x])){x+1;}

}
if(x==3){led=1;x=0;}
}
}

 

كل 80 ملي ثانية يتم اختبار قيمة من المصفوفتين متزايدتين
mxاعلى قيمة 1v
mnادنى قيمة 1v

الملف
http://www.4shared.com/rar/NZcvQk7Z/ADC2.html

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

ليس لدي خبرة بالـ PIC  ولكن ملاحظتي علي الأكواد المرفقة أنك تقوم بمقارنة نفس القيمة المدخلة مع الشروط الأربعة وهذا لا يمكن أن يتحقق.

 عليك معالجة ذلك بأنه اذا تحقق أحد الشروط أن تأخذ قراءة جديدة من الـ ADC ومقارنتها مع الشرط التالي ... وهكذا

 

أيضاً أشك في أن  استخدام  علامة  = للمقارنة  ممكن أن يتحقق مع قيم real

 

في هذه النقطة أتمني من الأخوة المشاركة حتي يستفيد الجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا لك اخي خالد

لكن للتوضيح

الامر

(if((yy<=1)&&(yy>=1

يعني من 1.00 الى 1.99  والمحول يعتبره بألجزاء دقيقة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

 

شكرا لك اخي خالد

لكن للتوضيح

الامر

(if((yy<=1)&&(yy>=1

يعني من 1.00 الى 1.99  والمحول يعتبره بألجزاء دقيقة

 

الشرط الموضوع لا يمكن أن يتحقق إلا عند الحالة 1.00

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .