PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : یه سوال خیلی مهم در مورد سنسور تشخیص رنگ لطفا اگه می شه سریع تر



abass ykanloo
25-04-2010, 15:50
می خواستم بدونم سنسور تشخیص رنگ چیه چیکار می کنه و طرز کارش چطوره؟
ممنون می شم اگه سریع تر جواب بدید

ROBOMAN
25-04-2010, 22:22
سلام
یه نمونه سنسور :
You can see links before reply
کار باهاش خیلی ساده هست

#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>

#asm
.equ __lcd_port=0x1B ;PORTA
#endasm

unsigned long int timer0_ov;
unsigned long int in_freq;
unsigned char lcd_buff[20];

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
timer0_ov ++;
}

void main(void)
{

// Timer/Counter 0 initialization
// Clock source: T0 pin Falling Edge
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCNT0=0x00;
OCR0=0x00;
TCCR0=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// LCD module initialization
lcd_init(16);

while (1)
{
TCCR0=0x06; // Start Timer T0 pin Falling Edge
#asm("sei") // Global enable interrupts
delay_ms(1000);
#asm("cli"); // Global disable interrupts
in_freq = timer0_ov * 256 + TCNT0;
sprintf(lcd_buff,"Freqency=%d",in_freq);
lcd_clear();
lcd_puts(lcd_buff);
TCCR0=0x00; //Stopt Timer0
timer0_ov=0; //Prepare for next count
TCNT0=0; //Clear Timer0
};
}

aminnori
14-07-2010, 15:14
به نام خدا

من با این سنسور (tcs230 ) کار کردم طرز کارشو براتون میذارم (محمد امین نوری) یا علی


1- سنسور تشخیص رنگ:( تمامی مطالب آورده شده در مورد این قطعه بر اساس datasheet کمپانی luenology میباشد.)




همان طور که از شکل ظاهری سنسور نیز پیداست، این سنسور
قطعه ای 8 پایه میباشد که داری 64 فوتودیود است.
16 فوتودیود با فیلتر قرمز ، 16 فوتودیود با فیلتر سبز ، 16 فوتودیود

با فیلتر آبی و16 فوتودیود دیگر بدون فیلتر روشن میشوند.

مد قرار گرفتن سنسور بر روی هر یک از فیلتر های قرمز، سبز و آبی (RGB ) توسوط پایه های 7و8 طبق جدول زیر تعیین میشود.

خروجی این سنسور فرکانسی با دیوتی سایکل 50% میباشد که با هر

مد و رنگ متغیر است. ولتاژ تغذیه 5 ولت و پالس خروجی یک شکل

موج مربعی است. برای فعال شدن خروجی باید پایه 3 زمین شود.


توسط پایه های 1و2 نیز میتوان فرکانس خروجی را کنترل کرد.

در این پروژه دو پایه 1و2 مستقیما 1 میشوند.(حداکثر فرکانس خروجی)

عملکرد سنسور رنگ:
بلو ک دیاگرام کلی عملکرد سنسور به صورت زیر است:


همان طور که از شکل پیداست، با تابیده شدن نور به فوتودیود در

خروجی پالس مربعی ایجاد می شود که هرچه نور تابیده شده بیشتر باشد فرکانس خروجی نیز بیشتر میشود.

طبق آزمایشات انجام شده برروی این سنسور این نکته با اهمیت

حاصل شد و اساس تشخیص رنگ نیز بر اساس این نکته میباشد وآن

این است که سنسور زمانی حداکثر فرکانس را دارد که رنگ نور

تابیده شده یا بازتاب شده به سنسور همان مد فیلتر سنسور باشد.

برای مثال زمانی که سنسور درمد قرمز قرار دارد حداکثر فرکانس

زمانی حاصل میشود که نور تابیده شده یا باز تاب شده به سنسور به رنگ قرمز باشد.

باتوجه به نکته گفته شده تشخیص رنگ توسط این سنسور از این به

بعد بر خلاف آنچه که قبل تصور میشد، بسیار آسان است.(برای من چنین بود)

تشخیص رنگ بوسیله این سنسور در این پروژه با مثالی که آورده میشود تشریح میشود:

فرض کنیم نور تابانیده شده به سنسور به رنگ Xاست ، مد سنسور را

تغییر میدهیم و نتایج زیر حاصل میشود:
در مد قرمز فرکانس 40 کیلو هرتز
در مد سبز فرکانس 35 کیلو هرتز
در مد آبی فرکانس 32 کیلو هرتز
با توجه به مطالب گفته شده و نتایج بدست آمده میتوان نتیجه گرفت که نور X به رنگ قرمز میباشد.

حال این سوال به وجود میآید که رنگ های فرعی که از تر کیب سه

رنگ اصلی بوجود می آیند را چگونه تشخیص دهیم ؟
پاسخ این سوال هم بسیار ساده است :

با تغییر مد های سنسور در هر مد فیلتر یک فرکانس داریم که

مشخص کننده نسبت ترکیب رنگ ها با یکدیگر است.

حال برای مثال اگر بدانیم رنگ بنفش از ترکیب دو رنگ آبی و قرمز

بوجود می آید ، در مییابیم فرکانسهای مدهای قرمز وآبی به مراتب

بیشتر و بهم نزدیک تراند در برابر فرکانس در مد سبز، برای رنگ بنفش.

و به همین صورت تمامی رنگ ها قابل تشخیص میباشند.

M_GH
28-03-2012, 02:38
آسون تر از این هم هست
s9706
ولی من طرز کارشو بلد نیستم هر کی بلده لطفا یک نمونه کد
با کدویژن برای مگا16 هم بنویسه
جون داداش خیلی لازم دارم :(

Aboulfazl
10-08-2012, 02:11
خيلي ممنون از توضيحات شما
اگر امكان دارد ميشه برنامه همين سنسور تشخيص رنگ با شكل مدارشم بدي
كه اجرت تو اين شباي قدر بيشتر بشه

darkknightrob
29-04-2014, 01:10
با تشکر فراوان از دوست عزیز که توضیحات لازمو دادن!
اگه اشتباه نکنم , اینطوری میشه از این سنسور خروجی گرفت،با استفاده از ی حلقه دائما نوع فیلتر هارو عوض کنیم بعد هربار عوض کردن فرکانسو بخونیم، و تو ی متغییر قرار بدیم،و بعد از هر 3 بار عوض کردن نوع فیلتر(سبز،قرمز و بعدشم آبی) فرکانس هارو با هم مقایسه کنیم، هرکدوم از فرکانس ها که بیشتر بود، برمیگردیم به نوع فیلترش،مثلا اگه تو فیلتر آبی بیشترین فرکانس رو داشتیم، میتونیم نتیجه بگیریم که رنگ مورد نظر آبیه
درسته آیا؟؟

M_GH
29-04-2014, 15:33
البته یک کار دگه هم میشه کرد که برای کار هایی که زیاد دقیق نیستن مناسبه !

سه تا ال ای دی سبر،ابی،قرمز رو کنار یک فتوسل قراربدین (فتوسل وصل بشه به adc)
و محیطش رو نسبت به نور اوپتیمایز کنین بعد اون جسم/سطح مورد نظر برای تشخیص رنک رو مقابلش قرار بدین
حالا نوبتی ال ای دی ها رو روشن کنین و مقدار adc رو بخونین
در واقع مقدار adc در هنگام روشن بودن نور آبی برابر میزان آبی بودن ربگ مربوط هست و....

من این روش رو برای یک روبات امدادگر معمولی (مصدوم یک برچسب خاص بایک رنگ خاص روی زمین هست که روبات باید روش توقف کنه) امتحان کردم
(البته بماند که خور روبات ب جایی نرسید! ولی تشخیص رنگش کار کرد !)
و جواب گرفتم البته رنگ حدودی بدست اوردم که البته با بهینه سازی های بیشتر میشه به نتیجه مطلوب رسید
مثلا میشه فرق بنفش با سبز رو تشخیص داد ! یا مثلا فرق قهوه ای با قرمز و...


امیدوارم کمکی کرده باشم

موفق باشیم