ايران ويج

نسخه‌ی کامل: لطفا کمک کنید ( مشکل در تشخیص رنگ )
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
(۱۸-فروردین-۱۳۸۹, ۱۱:۲۲:۵۰)sararobo نوشته است: [ -> ]HENAS عزیز !Heart
من با adc میکرو کار نکردم !Shy راهنمایی بیشتر !!!!!!!!!! ممنون ممنون ممنون !HappyHappyHappyHeart
راستی یادم رفت بگم زبان برنامم c هستش باکد ویژن کار میکنم

خوش حال میشم بتونم کمک کنم
کارمون خیلی راحت تر شد چون منم با C کار میکنم
موقعی که داری پروژه درست میکنی (تو کدویژن) یه تب داره به اسم ADC بعد اینکه ADC ENABLE رو فعال کردی USE 8bit رو تیک بزن (از 8 بیت برا ADC میکنه از بازه 0 تا 1023)
میکرو یه پایه داره به اسم AREF اونو با یه خازن کوچیک میزنی به 5v
منطق سنسورهات (همون جایی که برا بافرت از سنسور گیرنده برق آوردی) رو مستقیم میزنی به پایه ی A.0 تا A.8 (به همون تعداد که میخای ADC بخونی)
بعد میری سراغ گرفتن ADC
اگه کارکردن با LCD رو بلدی میتونی این مقدار رو بذاری داخل یه متغیر و بعد مقدار متغیر رو بعد رو رو LCD نمایش بدی و اگه کار کردن با LCD رو بلد نیستی مشکلی نیست :
من یه روش ساده دارم و اونم اینه که به یکی از پایه های خروجیت یه LED ریز وصل کن تا ADC رو راحتتر بدست بیاری
مثلا : ما در نظر میگیریم شما LED تو رو دادین به پایه ی D.7 و یکی از سنسورات به پایه ی A.0 وصله و میخای ADC رنگ سبز رو بدست بیاری
تو برنامت اینو مینویسی

کد php:
if (read_adc(0)>=500 && read_adc(0)<600 )
{
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
}
if (
read_adc(0)>=600 && read_adc(0)<700)
{
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
delay_ms(2000);
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
}
if (
read_adc(0)>=700 && read_adc(0)<800)
{
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
delay_ms(2000);
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
delay_ms(2000);
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
}
if (
read_adc(0)>=800 && read_adc(0)<900)
{
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
delay_ms(2000);
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
delay_ms(2000);
PORTD.7=1;
delay_ms(2000);
PORTD.7=0;
delay_ms(2000);
PORTD.7=1;
delay_ms(2000);
PORTD.7=0

این برنامه میاد ADC سنسور A.0 رو چک میکنه و اگه بزرگتر یا مساوی 500 و کوچکتر 600 باشه اون LED رو 2 ثانیه روشن و سپس خاموش میکنه و همین منوال ادامه داره تا آخر برنامه و شما میتونی هر کدوم از این شرطا که اتفاق افتاد ADC اون سنسور رو بدست بیاری
گرچه حالگیره اما برا کسایی که تازه کارن بهترین روش همینه
روشهای دیگه ای هم هست اما در حال حاضر ساده ترینش همین روش هستش
اگه سوالی هست At
آقا هناس نوشته است:USE 8bit رو تیک بزن (از 8 بیت برا ADC میکنه از بازه 0 تا 512)
ببخشین 8 بیت یعنی 0-255

واسه سرعت بیشتر تو برنامه پیشنهاد میشه یه بار مقدار ADC رو بخونین و تو متغیر ذخیره کنین و تو شرطها از متغیر فوق استفاده کنین !
چون سرعت خوندن از ADC کمه !

با اجازتون پستتون رو هم ویرایش کردم تا برنامه بهتر دیده بشه !!
(۱۸-فروردین-۱۳۸۹, ۱۴:۵۹:۲۲)t3r!p3000 نوشته است: [ -> ]ببخشین 8 بیت یعنی 0-255

واسه سرعت بیشتر تو برنامه پیشنهاد میشه یه بار مقدار ADC رو بخونین و تو متغیر ذخیره کنین و تو شرطها از متغیر فوق استفاده کنین !
چون سرعت خوندن از ADC کمه !

با اجازتون پستتون رو هم ویرایش کردم تا برنامه بهتر دیده بشه !!
ممنون
میدونم 8 بیت میشه 255
ولی من منظورم از 8 بیت 8 ورودیش هستش
آره این حرف شمام متینه که تو یه متغیر ذخیره کنیم اما من گفتم او سنسور ثابت رو خط باشه نگفتم ربات مسیریاب در حال حرکت
بازم ممنون Wink
(۱۸-فروردین-۱۳۸۹, ۱۴:۵۹:۲۲)t3r!p3000 نوشته است: [ -> ]
آقا هناس نوشته است:USE 8bit رو تیک بزن (از 8 بیت برا ADC میکنه از بازه 0 تا 512)
این 512 یه قضیه دیگست Biggrin تصحیح شد
(۱۷-فروردین-۱۳۸۹, ۲۳:۳۵:۱۳)HENAS نوشته است: [ -> ]مثلا : اگه از ADC هشت بیت استفاده کنی میتونی از بازه ی 0 تا 512 استفاده کنی و تو برنامت میزنی مثلا وقتی ADC اون سنسور بین 300 تا 400 هستش این کارو بکن
حتی میتونی این مقدار (ADC یه سنسور ) رو بذاری داخل یه متغیر برای دسترسی های بعدی
اگه اینو میدونستین معذرت و اگه نمیدونستین و نامفهومه براتون بگین تا کاملترشو بگم
مهندس اگه از هشت بیت استفاده کنی میشه از 0 تا 255AngryAngryAngry
عدد 0 را به ولتاژ 0ولت اختصاص مي‌دهد، و 255 را به 5 ولت؛ و هر ولتاژي بين 0 تا 5 ولت را، متناسباً، با عددي بين 0 تا 255 گزارش مي‌كند.
اگر تيكِ گزينه‌ي "Use 8 bits" را برداريم، بازه‌ي ما به 0 تا 1024، گشترش پيدا خواهد كرد و در حقيقت دقت اندازه‌گيري ما 4 برابر خواهد شد. يعني 5 ولت ما، به جاي 255، با عدد 1024 گزارش خواهد شد، و ولتاژهاي بين 0 و 5 ولت نيز متناسباً با عددي بين 0 تا 1024 گزارش خواهند شد. اما در كار‌هاي ما نيازي به اين دقت بالا نيست و معمولاً "Use 8 bits" را تيك مي‌زنيم تا بازه‌ي ما بين 0 تا 255 باشد.
اگر بخواهيم مقدار ADC0 را بررسي كنيم كه آيا از 100 بزرگتر است يا خير، به شكل زير عمل مي‌كنيم:
If (read_adc (0) > 100)
يا مثلاً اگر بخواهيم مقدار ADC1 را در داخل يك متغير نگه داري كنيم، به شكل زير عمل مي كنيم:
Int a;
a= read_adc (1);

در تکمیل صحبتهای اقای henas
مثل اینکه منم سوال پرسیدما!!!


(۱۷-فروردین-۱۳۸۹, ۲۳:۰۴:۴۱)hadii نوشته است: [ -> ]
نقل قول: ولی میشه با دستور PULSEIN تو بسکام طول پالس رو بدست آورد و برعکسش کرد تا فرکانس بدست بیاد !!!!
علی جونم میشه این قسمتو یکمی توضیح بدی، یعنی با داشتن طول یه پالس میشه فرکانس رو محاسبه کرد؟ یه مثال میزنی؟

(۱۷-فروردین-۱۳۸۹, ۲۳:۱۸:۵۴)t3r!p3000 نوشته است: [ -> ]فرکانس برابر است با یک تقسیم بر مدت زمان پالس !!

کد:
F=1/T

F فرکانس بر حسب هرتز !
T طول پالس بر حسب ثانیه !

(۱۷-فروردین-۱۳۸۹, ۲۳:۲۴:۲۸)hadii نوشته است: [ -> ]بابا اینا رو میدونم

منظورم این بود که چطوری تو بسکام نوشته میشه؟
مقدار تایمر رو چقدر میگیری؟
چطوری طول پالس رو پیدا میکنی؟
آقا ما یه اشتباهی کردیم خودمونم درستش کردیم اما شماها ولکن نیستین
بیا وو خوبی کن
ممنون آقا مسعود
هادی جان واسه اینکه توضیحات رو بذارم باید آفیس نصب کنم و اصلا حوصلش نیست !

تا فردا می ذارم !

این پست به زودی پاک می شود!
سلام دوستان از راهنماييهاتون واقعا ممنون !HeartHeartWink

فقط يه چيزي ازهمين سنسورهاي cny70 براي تشخيص رنگ و استفاده از adc ميشه استفاده كرد ؟
(۱۹-فروردین-۱۳۸۹, ۰۰:۱۵:۲۱)sararobo نوشته است: [ -> ]سلام دوستان از راهنماييهاتون واقعا ممنون !HeartHeartWink

فقط يه چيزي ازهمين سنسورهاي cny70 براي تشخيص رنگ و استفاده از adc ميشه استفاده كرد ؟
آره
هم از IR معمولی میشه هم از CNY70 و هم از TCRT5000 و .....
از همه IRها میشه استفاده کرد
فقط یه چیزی مونده که هیشکی اشاره نکرد اونم اینه که نویز توی کار با ADC مشکل سازه
مثلا ADC یه سنسور در فضای بسته با فضای باز فرق میکنه (این بسته به نوع سنسور و جایگاهش رو برد سنسور متفاوته : زیاد یا کم)
Pulsein:

توسط اين دستور ميتوان زمان تناوب يک پالس مربعي را اندازه گرفت ، فرم کلي اين دستور به شکل زير است:

کد php:
Pulsein Var , PINX State 

اين دستورزمان تناوب پالس اعمال شده به پورت PINX و پين Y دلخواه را در متغير Var که بايد از جنس Word باشد قرار مي دهد .

شما ميتوانيد مشخص کنيد که زمان بين از صفر به يک رفتن يا از يک به صفر رفتن پالس اندازه گرفته شود ، براي حالت اول به جاي STATE صفر و براي حالت دوم به جاي STATE يک قرار دهيد .

مثال :

کد php:
$regfile "m16def.dat"
$crystal 1000000
Config Lcd 
16 Cursor Off
Config Lcdpin 
Pin Db4 PORTD.0 Db5 PORTD.1 Db6 PORTD.2 _
Db7 
PORTD.3 PORTD.4 Rs PORTD.5
Dim X 
As Word
Config PORTC.0 
Input
Do
   
Bitwait PINC.0 Reset
   Pulsein X 
PINC 1
   Locate 1 
Lcd "1 = " "   "
   
Bitwait PINC.0 Set
   Pulsein X 
PINC 0
   Locate 2 
Lcd "0 = " "   "
Loop
End 

در مثال بالا زمان تناوب پالس مثبت و منفی که به پين C.0 اعمال شده اندازه گرفته مي شود و سپس بر روي LCD نمايش داده مي شود .

(زمان تناوب نبايد از 65535 ميلي ثانيه بيشتر باشد ، اين دستور از تايمر هاي ميکرو استفاده نمي کند .)

دریافت فایل مثال : ( پروتئوس و بسکام )
صفحه‌ها: 1 2 3