اطلاعیه

Collapse
No announcement yet.

سنسور RGB

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سنسور RGB

    سلام
    بعد از دو روز انتظار کسی به سوال قبلیم جواب نداد. یه سوال دیگه دارم. تو رو خدا اگه بلدید به این جواب بدید. اخیرا داشتم با سنسور TCS3200 کار میکردم به خیال اینکه سرعت واکنش سنسور به تغییرات نور محیط در حد میکرو ثانیه هست. اما تازه فهمیدم که میکرو ثانیه که هیچ، حتی یکی دو میلی ثانیه هم نیس!!. شاید بیش از 100 میلی ثانیه طول میکشه تا فرکانس خروجیش تغییر کنه. متاسفانه برداشت من از دیتاشیت اون غلط بود. حالا میخواستم بدونم کسی سنسور دیگه ای سراغ داره که مشخصات مورد نظر من رو داشته باشه؟ یعنی تغییرات سریع خروجی نسبت به تغییرات نور محیط(در حد حداکثر 2 میلی ثانیه). البته قیمتش هم زیر 50 هزار تومان باشه.

    #2
    پاسخ : سنسور RGB

    شما سنسور رنگ میخواید یا سنسور نور؟
    اسم تاپیک رو گذاشتید rgb ولی صحبت از نور محیط میکنید
    AYRIC

    دیدگاه


      #3
      پاسخ : سنسور RGB

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

      دیدگاه


        #4
        پاسخ : سنسور RGB

        درسته اما سنسورهای شدت نور فیلتر های RGB ندارن برای همین گفتم پ

        شما با چه روشی سنسورتون رو درایور کردید؟
        چون من با این سنسور ها با مدل TCS230 کار کردم که البته با مال شما فرق چندانی نمیکنه. روی ربات گذاشته بودم و ربات با سرعت تقریبا 2 متر برثانیه حرکت میکرد اما به راحتی یه برچسب 5*5 سانتی که توی مسیرش بود رو تشخیص میداد و به محص رسیدن بهش ترمز میکرد. با یه محاسبه کوچیک میشه متوجه شد سنسور در کمتر از 25 میلی ثانیه به رنگ پاسخ میداده
        احتمال زیاد بخاطر نحوه درایوتون هست
        راستی SCALE رو روی چند درصد گذاشتید؟
        AYRIC

        دیدگاه


          #5
          پاسخ : سنسور RGB

          منظور از درایو رو متوجه نمیشم. از scale صد رد صد استفاده کردم. یعنی بالاترین فرکانس خروجی. در استفاده از فیلتر هم تمام فیلتر ها رو آزمایش کردم. البته تمامscale ها رو هم آزمایش کردم. قصدم این بود که حداقل شدت یکی از رنگها(مثلا R) رو برای یه جسم در حال سقوط (در مراحل اولیه سقوط که سرعت کمه) بسنجم اما خروجی عکس العملی نشون نمیداد. فرکانس میکرو هم 100 مگاهرتز بود. وقتی همون جسم رو ثابت نگه میداشتم جواب میگرفتم. توی دیتا شیت خود سنسور راجع به response time چیزی ننوشته اما توی دیتا شیت یکی از سنسورای همین خانواده( یادم نیس کدومش) respone time برابر با 500 میلی ثانیه بود.

          دیدگاه


            #6
            پاسخ : سنسور RGB

            منظورم اینه که روشتون برای اندازه گیری فرکانس توسط میکرو چیه؟
            میکروتون چیه؟
            و یه چیز دیگه. ابعاد جسمتون چقدره؟ میخوام ببینم چه مدت زمانی صفحه جلوی سنسور هست؟
            AYRIC

            دیدگاه


              #7
              پاسخ : پاسخ : سنسور RGB

              نوشته اصلی توسط roboreza
              منظورم اینه که روشتون برای اندازه گیری فرکانس توسط میکرو چیه؟
              میکروتون چیه؟
              و یه چیز دیگه. ابعاد جسمتون چقدره؟ میخوام ببینم چه مدت زمانی صفحه جلوی سنسور هست؟
              میکرو : lpc1768
              ابعاد جسم : 1cm*1cm(یعنی در یک سانت اول سقوط 45 میلی ثانیه و در یک سانت دوم 18 میلی ثانیه میتونه جلوی سنسور باشه. بعبارتی اگه سنسور در 1 سانتی اول نصب بشه 45 میلی ثانیه زمان داریم)
              خروجیه سنسور به اینتراپت خارجی وصله(p2.12) که در زیر روال اون فقط پالس ها (لبه بالا رونده) رو میشمرم(j++
              از timer0 هم برای تولید زمان 1 میلی ثانیه استفاده کردم و با هر وقفه تایمر اول تعداد پالسها رو میخونم بعد شمارنده رو صفر میکنم برای اندازه گیری بعدی.
              فرکانس cpu میکرو هم که صده!!

              دیدگاه


                #8
                پاسخ : سنسور RGB

                این روش اندازه گیری رو هم تست کنید:
                به محض ایجاد وقفه در زیر روال تایمر رو 0 کنید و همونجا منتظر بمونید تا پایه 0 بشه. حالا مقدار تایمر رو به فرکانس تبدیل کنید
                این روش خیلی سریع تره

                اگر نشد به نظرم باید سنسورتون رو عوض کنید. از همون TCS230 استفاده کنید که زمان های پایین تر از اینم جواب داده.
                و یه سوال چرا از فرستنده گیرنده مادون قرمز برای تشخیص رنگ استفاده نمیکنید؟ نور محیط متغیره؟
                AYRIC

                دیدگاه


                  #9
                  پاسخ : سنسور RGB

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

                  Output data can be collected at a rate of twice the output frequency or one data point every microsecond for
                  full-scale
                  output.

                  احتمالا مشکل از برنامت هست. مقادیر کانتر برای حالت جسم ثابت و جسم متجرک چقدر هست؟

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

                  اگه یک میلی ثانیه کم باشه، با توجه به سرعت بالای میکروت، به حای انداره گیری فرکانس، زمان یک پریود رو اندازه بگیر و از روی اون فرکانس رو حساب کن (با کلا با زمان کار کن و lookup table زمانی برای رنگ ها داشته باش).
                  برای بالا بردن دقت می تونی چند پریود رو اندازه بگیری با scale رو کم کنی.
                  مـن هیچ ندانم که مرا آن که سرشت
                  از اهل بهشت کرد یا دوزخ زشت
                  جامی و بتی و بربطی بر لب کشت
                  اين هر سه مرا نقد و تو را نسیه بهشت

                  دیدگاه


                    #10
                    پاسخ : سنسور RGB

                    نوشته اصلی توسط roboreza
                    این روش اندازه گیری رو هم تست کنید:
                    به محض ایجاد وقفه در زیر روال تایمر رو 0 کنید و همونجا منتظر بمونید تا پایه 0 بشه. حالا مقدار تایمر رو به فرکانس تبدیل کنید
                    این روش خیلی سریع تره

                    اگر نشد به نظرم باید سنسورتون رو عوض کنید. از همون TCS230 استفاده کنید که زمان های پایین تر از اینم جواب داده.
                    و یه سوال چرا از فرستنده گیرنده مادون قرمز برای تشخیص رنگ استفاده نمیکنید؟ نور محیط متغیره؟
                    بله این روش رو هم قبلا تست کردم و سریعتر هم هست. ولی توی روش فعلی هم کانتر لا اقل باید یه شماره بندازه! میدونید من با یه led قرمز که با یه تایمر دیگه میکرو 1 میلی ثانیه اونو روشن و بعد خاموش میکردم هم هیچ جوابی نگرفتم. led رو درست روی سنسور گذاشتم و فیلتر قرمز سنسور رو فعال کردم بازم نشد!!
                    tcs230 روهم باید امتحان کنم. اما با فرستنده و گیرنده مادون قرمز هم میشه رنگ رو تشخیص داد؟؟؟ چطوری؟؟؟ میشه کمی توضیح بدید.
                    نور محیط رو سعی میکنم ثابت کنم. یعنی توی اتاق تقریبا تاریک کار میکنم.

                    دیدگاه


                      #11
                      پاسخ : سنسور RGB

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

                      Output data can be collected at a rate of twice the output frequency or one data point every microsecond for
                      full-scale
                      output.

                      احتمالا مشکل از برنامت هست. مقادیر کانتر برای حالت جسم ثابت و جسم متجرک چقدر هست؟

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

                      اگه یک میلی ثانیه کم باشه، با توجه به سرعت بالای میکروت، به حای انداره گیری فرکانس، زمان یک پریود رو اندازه بگیر و از روی اون فرکانس رو حساب کن (با کلا با زمان کار کن و lookup table زمانی برای رنگ ها داشته باش).
                      برای بالا بردن دقت می تونی چند پریود رو اندازه بگیری با scale رو کم کنی.
                      مقدار کانتر برای جسم ثابت حول و حوش 375 هست. البته بستگی به شدت نور بازتابیده شده هم داره. 375 مربوط به این حالته :
                      1 led قرمز که روی برد بورد زدم و با زاویه تقریبا 45 درجه که حدودا 2 سانت با سنسور فاصله داره و اتاق تاریک. تغذیه led برابر با 3.3 ولت با یه مقاومت سری 470 اهم.
                      برنامه توی لپ تاپمه. متاسفانه الان بهش دسترسی ندارم. انشا اله بعد از ظهر برنامه رو میذارم اینجا که ببینید.
                      با این حال فکر نکنم مشکل از برنامه باشه. چون کانتر برنامه برای جسم متحرک سرعت بالا حتی یه دونه پالس هم نمیشمره.

                      دیدگاه


                        #12
                        پاسخ : سنسور RGB

                        گفتی که led رو خودت یک میلی ثانیه روشن حاموش میکنی.
                        ممکنه اینتراپت رو در این لحظه غیر فعال می کنی.
                        LED رو با یه میکروی دیگه روشن کن.
                        به هر حال چون میگی حتی یه دونه هم نمبشمره به نظر من حتما مشکل ار برنامه هست.
                        مـن هیچ ندانم که مرا آن که سرشت
                        از اهل بهشت کرد یا دوزخ زشت
                        جامی و بتی و بربطی بر لب کشت
                        اين هر سه مرا نقد و تو را نسیه بهشت

                        دیدگاه


                          #13
                          پاسخ : سنسور RGB

                          نوشته اصلی توسط marychi
                          گفتی که led رو خودت یک میلی ثانیه روشن حاموش میکنی.
                          ممکنه اینتراپت رو در این لحظه غیر فعال می کنی.
                          LED رو با یه میکروی دیگه روشن کن.
                          به هر حال چون میگی حتی یه دونه هم نمبشمره به نظر من حتما مشکل ار برنامه هست.
                          تا چند ساعت دیگه برنامه رو لود میکنم خودتون ببینید.

                          دیدگاه


                            #14
                            پاسخ : سنسور RGB

                            سلامی دوباره
                            ببخشید دیر کردم. اینم کد :
                            کد:
                            #include"LPC17xx.h"
                            #include "lcd.h"
                            
                            #define family_lpc17xx          /* TFTLCD definition */
                            #define TFTLCD_DATA_MSB_Nibble_Port_0
                            #define LCD_MSB_Nibble_OFFSET     15
                            #define TFTLCD_DATA_LSB_Nibble_Port_0
                            #define LCD_LSB_Nibble_OFFSET     4
                            #define TFTLCD_CONTROLPORT_2
                            #define TFTLCD_CS           8
                            #define TFTLCD_RS           9
                            #define TFTLCD_WR           10
                            #define TFTLCD_RD           11
                            #define TFTLCD_RST           13
                            
                            int pulsecounter=0,max=0;
                            
                            main(void){
                              int i;
                              SystemInit();
                              
                              LCD_Init();
                              LCD_Clear (White);
                              
                              LPC_GPIO0->FIODIR=0x01;
                              
                              LPC_PINCON->PINSEL4=(1<<24); //select the EINT2 function on P2.12
                              LPC_SC->EXTMODE=0x04;  //falling edge on P2.12 cause interrupt
                              NVIC_EnableIRQ(EINT2_IRQn);  //enable EINT2 interrupt on NVIC
                                 
                              LPC_SC->PCONP|=(1<<22);  //power on timer2  
                              LPC_TIM2->TCR=0X02; //reset and stop timer
                              LPC_TIM2->PR=0X04;  //set prescaler=4
                              LPC_TIM2->MR0=25000; // set match value for compare--->(compare every 1ms)
                              LPC_TIM2->MCR=0x01; //interrupt on match (TC=MR0)
                              LPC_TIM2->TC=0X0;  //timer-counter=0
                              NVIC_EnableIRQ(TIMER2_IRQn); //enable TIMER2 interrupt in NVIC
                              LPC_TIM2->TCR=0X01;   //enable timer2
                            
                              while(1){
                               LCD_Clear (White);
                               if(max>pulsecounter){
                                 LCD_ShowNum(150,150,max,4,16);
                               }
                               else{
                                 max=pulsecounter;
                                 LCD_ShowNum(150,150,max,4,16); 
                               }
                               for(i=0;i<10000000;i++);
                              }
                            }
                            //****************************************************************************************************
                            TIMER2_IRQHandler(void){
                            LPC_TIM2->IR=0X01;  //clear MR0 interrupt flag 
                            LPC_TIM2->TCR=0x02; //reset and stop timer2
                            LPC_TIM2->TC=0x00;  //timer-counter=0
                            LPC_TIM2->TCR=0x01; //enable timer2
                            pulsecounter=0;
                            return; 
                            }
                            EINT2_IRQHandler(void){
                            LPC_SC->EXTINT=0x04; //clear the interrupt flag
                            pulsecounter++; 
                            return;  
                            }

                            دیدگاه


                              #15
                              پاسخ : سنسور RGB

                              اگر نشد به نظرم باید سنسورتون رو عوض کنید. از همون TCS230 استفاده کنید که زمان های پایین تر از اینم جواب داده.
                              بعد از اینکه گفتید،دیتا شیت هر دو رو کنار هم گذاشتم. فرقشون در اینه که tcs3200 به لحاظ مصرف انرژی و دمای کار محیط شرایط بهتری داری و کلا میشه گفت سرتره!
                              اما یه سوال فنی دیگه دارم. وقتی با چشم به یه جسم مثلا قرمز رنگ نگاه میکنیم قرمزی اون با تغییر فاصله بنظرمون تغییری نمیکنه. یعنی مثلا اگه قرمز کم رنگه چه از 10 سانتی نگاه کنیم چه از 1 متری اونو قرمز کم رنگ میبینیم. اما با سنسور اصلا اینطور نیس! چطور میشه با سنسور هم مثل چشم تشخیص داد؟ اگه سنسور به طول موج دریافتی حساسه پس چرا این اتفاق میفته؟ در فاصله 1 متر که دیگه طول موج عوض نمیشه. اما اگه سنسور به شدت نور حساس باشه در این صورت میشه با طول موجهای قرمز و سبز(به عنوان مثال) شدت تابش مساوی ایجاد کرد. نظرتون چیه؟

                              دیدگاه

                              لطفا صبر کنید...
                              X