اطلاعیه

Collapse
No announcement yet.

درایو سنسور دما mlx90614 با avr

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

    #16
    پاسخ : درایو سنسور دما mlx90614 با avr

    امکانش هست که کدتونو قرار بدید تا من روی یکی از بردهائی که دارم پروگرام کنم نتیجشو بهتون بگم

    دیدگاه


      #17
      پاسخ : درایو سنسور دما mlx90614 با avr

      خیلی لطف می کنید اگه این کار رو انجام بدید.
      چون ال سی دی و ... توی مدارها فرق می کنه من فقط قسمت خواندن از mlx رو قرار می دم.

      این متغییر هایی هست که من استفاده کردم و باید ابتدای برنامتون اضافه کنید.
      کد:
      unsigned char a;
      unsigned char b;
      int w1;
      
      char *p;
      unsigned char buf[2];
      int number=0;
      long int n=0;
      a,b دوتا بایت هستن برای خواندن بایت های ارسالی توسط سنسور.
      w1 متغییری است که آدرس سنسور توش ذخیره شده.
      p یک رشته هست که بعد از اینکه بایت ها خونده شده و تبدیل به عدد شد و بعد هم در فرمول قرار گرفت تبدیل به رشته می شه تا بشه روی ال سی دی چاپش کرد.
      buf هم یک آرایه از دوبایته که دوتا بایت رو بعد از خوندن میریزم تو این ها بعد تغییرات لازم رو از روی این ها می دم.(یه جور دوباره کاری هست می شد از همون a و b هم استفاده کرد.)
      number عدد حاصل از ترکیب بایت کم ازرش و پر ارزش هست.
      n هم همون نامبر هست با این تفاوت که long تعریف شده یدفعه اگه عدد بزرگ شد جا بشه!(اینم یه جور دوباره کاریه!)

      کد خواندن و چاپ روی ال سی دی هم که تویه یه حلقه بی نهایت باید نوشته بشه اینه:
      کد:
      w1=0x5A<<1;
          i2c_start();
          i2c_write(w1);
          i2c_write(0x07);
          i2c_start();
          i2c_write(w1 | 1);
          b=i2c_read(0);
          a=i2c_read(0);
          i2c_stop();
          delay_ms(20);
          
          buf[1]=a;
          buf[0]=b;
          number = (buf[1]<<8)+buf[0]; 
          n=number;
          n=(n*2)/100;
          
          lcd_puts("O:");
          itoa(n-273,p);
          lcd_puts(p);
          lcd_clear();
          delay_ms(180);

      دیدگاه


        #18
        پاسخ : درایو سنسور دما mlx90614 با avr

        فکر کنم مشکلت کد هستش
        من از توی سایت میکروچیپ کد کپی کردم
        http://www.microchip.com/forums/m643435.aspx
        با فیلتر شکن برو توی این لینک قسنت خواندن کدش تغییر بده

        کد:
        void main(void) 
        { 
          Initialize(); 
          init(); 
          read(); 
        } 
        
        void read() 
        { 
         char txt[7]; 
         char lowbyte; 
         char highbyte; 
         char pec; 
         char ack =0; 
        int temp; 
          print("started"); 
        while(1){ 
          do { 
            do{ 
            do{ 
               Soft_I2C_Start(); 
               ack = Soft_I2C_Write(0x5A); 
             }while(ack == 0); 
             //print("ack1"); 
             ack = Soft_I2C_Write(0x07); 
             }while(ack==0); 
             //print("ack2"); 
             Soft_I2C_Start(); 
             ack = Soft_I2C_Write(0x01); 
            }while(ack ==0); 
            //print("ack3"); 
          lowbyte = Soft_I2C_Read(1); 
          highbyte = Soft_I2C_Read(1); 
          pec = Soft_I2C_Read(0); 
          Soft_I2C_Stop(); 
          //print("finished"); 
          temp = (((((highbyte&0x007F)<<8)+ lowbyte) * 0.02)-.01); 
          temp = temp - 273; 
          IntToStr(temp,txt); 
          print(txt); 
          _delay_ms(100); 
          } 
        } 
        
        void print(char *ptr) 
        { 
          command(0x01); 
          home(); 
           while(*ptr) 
           { 
           write(*ptr++); 
           } 
        } 
        
        
        void write(char i) 
        { 
          PORTC = i; 
          RS = 1; 
          R_W = 0; 
          Nybble(); 
          i = i << 4; 
          PORTC = i; 
          Nybble(); 
        }
        متغیر temp از نوع float تعریف کن
        اگه نتونستی تغییر بدی بگو تا برات تغییر بدم :mrgreen:

        دیدگاه


          #19
          پاسخ : درایو سنسور دما mlx90614 با avr

          اگر به کد من دقت کنید می بینید با اون کد دقیقا یکی هست. فقط اون float استفاده کرده و من هم int پس اون کد تا دقت صدم درجه کار می کنه و من تا دقت یک درجه! که البته در عمل هم همین هست!
          بعلاوه این که کد من داره کار میکنه و اگه ایرادی داشت کلا پرت و پلا باید میداد ولی مشکل من اینه که اگر جسم از 3 -4 سانتی فاصلش نسبت به سنسور بیش تر بشه اونقت دیگه کار نمیکنه و همش دمای محیط رو میده انگار چیزی جلوش نیست!

          اضافه شده در تاریخ :
          خوب دوست عزیر من کدم رو تغییر دادم. خواهشا کمک کنید! دیگه دارم دیوونه می شم از دست این سنسور!
          1- الان با اعشاری کار می کنه
          2- با اون کدی که توی میکروچیپه کاملا منطبقه
          3- با اون شماتیکی که شما توی پست های قبلی دادید کاملا منطبق هست و می تونه سنسور و ال سی دی رو درایو کنه(میکرو مگای 8 هست که به یه ال سیدی روی پورت d و یک سنسور mlx وصل است)
          4- الان جلوی روی خودم داره درست کار میکنه
          فقط همون مشکل قبلی رو داره. یعنی بردش خیلی کمه!
          لطفا روی یک مگا 8 پروگرم کنید و روی مدارتون بذارید. و بردش رو با سنسور خودتون که تا 1 متر جواب داده تست کنید.اگر بازم جواب داد حتی 30 سانت.خوب مشکل از جنس سنسوره و مال منه احتمالا یک کپی چینی هست نه جنس اصل ولی اگه اونجا هم تا 4 سانت جواب داد یعنی مشکل از برنامه ی من هست.
          مرسی منتظر جوابتون هستم
          لینک فایل:
          ؟؟؟؟؟؟؟
          لینک چون ایراد داشت حذفش می کنم و لینک فایل جدید رو تا چند دقیقه ی دیگه می ذارم


          اضافه شده در تاریخ :
          الان فایل اصلاح شده!
          یک مدار هم دقیقا مطابق با شماتیک شما بستم و این فایل اصلاح شده رو روش تست کردم!
          کاملا داره درست جواب میده فقط مشکلش همون برد کم هست.
          لطفا روی مدار خودتون امتحان کنید.
          مرسی
          http://www.4shared.com/rar/UEdNqHQx/05_online.html

          دیدگاه


            #20
            پاسخ : درایو سنسور دما mlx90614 با avr

            خیر من پارسال خودم توی تیم بودم و امسال به عنوان سرپرست شرکت میکنم. همین لیگ rescue b
            من نمیفهمم چرا اینقدر اصرار دارید برد رو بیشتر کنید
            ما و تمام تیم های دیگه (به غیر از دوتا تیم دیگه که یکی pir و یکی tpa81 ) داریم با این سنسور روی روبات کار میکنیم و مشکلی هم نداریم
            4 سانت دمای دقیق رو نشون میده. حالا یکم فاصله بیشتر بشه مثلا 10 سانت هم دمای دیواره هارو کمتر نشون میده هم دمای مصدوم رو. فرقی نمیکنه که
            اون 1 متری هم دوستمون میگن درسته اگه سنسور سالم باشه شما از 1 متری هم که دستت رو بگیری بالای سنسور تغییراتی رو مشاهده میکنی اما نه به اندازه واقعی. فقط سنسور های لیزری میتونن دمای دقیق رو از اون فاصله که هیچ توی فواصل چند صد متری بدن
            AYRIC

            دیدگاه


              #21
              پاسخ : درایو سنسور دما mlx90614 با avr

              ببینید من از این سنسور تا فاصله 1 متر جواب گرفتم و دقت زیادی هم داشت . فقط اندازه جسمی که از فاصله 20 سانت به بالا باید حد اقل 10 * 10 باشه . امشب اگه تونستم فیلم اونو براتون میل میکنم تا ببینید . فاصله 3 تا 4 سانتی متر اگه بخواد کسی استفاده کنه و از 0 تا 100 درجه کسی بخواد استفاده کنه بهتره از همون lm35 استفاده کنه.
              http://yazdkit.com/mlx90614-digital-...eter-2766.html

              دیدگاه


                #22
                پاسخ : درایو سنسور دما mlx90614 با avr

                نوشته اصلی توسط jonbakhsh
                ببینید من از این سنسور تا فاصله 1 متر جواب گرفتم و دقت زیادی هم داشت . فقط اندازه جسمی که از فاصله 20 سانت به بالا باید حد اقل 10 * 10 باشه . امشب اگه تونستم فیلم اونو براتون میل میکنم تا ببینید . فاصله 3 تا 4 سانتی متر اگه بخواد کسی استفاده کنه و از 0 تا 100 درجه کسی بخواد استفاده کنه بهتره از همون lm35 استفاده کنه.
                http://yazdkit.com/mlx90614-digital-...eter-2766.html
                lm35 نمیشه
                روبات داره با سرعت میره و باید مصدوم رو تشخیص بده. lm35 تا میاد بفهمه دما زیاد شده روبات رفته طبقه دوم :mrgreen:
                اندازه مصدوم هم حدودا 4*4 سانت هست

                اینم فیلم روبات ما:
                http://www.youtube.com/watch?v=3saJYVPzuV8
                AYRIC

                دیدگاه


                  #23
                  پاسخ : درایو سنسور دما mlx90614 با avr

                  جناب roboreza
                  شما می گید در فاصله ی بیش تر هم دمای دیوارها کم میشه و هم جسم!خوب مشکل همین جاست!
                  من یه شی بزرگ ( یک پلاستیک گوشت یخ زده در فریز 16- درجه ) گرفتم بالای سنسور در فاصله ی 5 سانتی میگه 10- درجه و در فاصله ی 20 سانتی میگه دما حدود 10 درجه است!!!!!!( )
                  یک تکه ی 10 در 5 از ام دی اف هم با اتو داغ داغ کردم به طوری که دیگه نمیشه با دست نگرش داشت و وقتی می گیرم تو فاصله ی 10 سانتی میگه دماش 50 درجه است!!!!!
                  خوب این ها نشون میده هر چه جسم کوچیک تر و دماش به دمای محیط نزدیک تر بشه خطا بالاتر میره!
                  سوال من اینجاست با این توصیفات شما مطمئنید می تونید دمای مصدوم که 5 در 5 و حداکثر هم 45 درجه است رو تشخیص بدید؟
                  آیا در دمای مصدوم یا هیکلش بیش تر از این ها است؟

                  اضافه شده در تاریخ :
                  جناب jonbakhsh
                  من که کد رو نوشتم اگه زحمتی نیست لطفا پروگرم کنید و در عمل تست کنید ببینیم مشکل از کدومه؟ سنسور یا کد؟

                  اضافه شده در تاریخ :
                  جناب roboreza دو تا سوال دیگه هم داشتم.
                  1- احیانا شما پارسال با آقای نعمت بخش شرکت نکرده بودید؟ایشون رو می شناسید؟
                  2- من برای تشخیص دیوار ها از اولتراسونیک استفاده می کنم. اما به یه مشکل بزرگ خوردم و اونم اینه که مانعی که یک مکعب چوبی هست و میذارن توی زمین رو چطور باید با دیوار تمییز بدم. وقتی اولتراسونیک یه موج بفرسته چه به مانع بخوره و چه به دیوار برگشت داره. حالا کی بفهمیم مانع هست و باید دورش بزنیم و کی بفهمیم دیواره و انتهای مسیر بسته است؟

                  دیدگاه


                    #24
                    پاسخ : درایو سنسور دما mlx90614 با avr

                    نوشته اصلی توسط saate777
                    جناب roboreza دو تا سوال دیگه هم داشتم.
                    1- احیانا شما پارسال با آقای نعمت بخش شرکت نکرده بودید؟ایشون رو می شناسید؟
                    2- من برای تشخیص دیوار ها از اولتراسونیک استفاده می کنم. اما به یه مشکل بزرگ خوردم و اونم اینه که مانعی که یک مکعب چوبی هست و میذارن توی زمین رو چطور باید با دیوار تمییز بدم. وقتی اولتراسونیک یه موج بفرسته چه به مانع بخوره و چه به دیوار برگشت داره. حالا کی بفهمیم مانع هست و باید دورش بزنیم و کی بفهمیم دیواره و انتهای مسیر بسته است؟
                    بله درسته من با آقای نعمت بخش کار میکنم
                    شما پارسال شرکت کرده بودید؟ از کجا آقای نعمت بخش رو میشناسید؟ البته اینقدر سابقشون زیاده که تقریبا هرکی توی روباتیکه مهندس رو میشناسه
                    توی مسابقات بعضی وقتا اختلاف دمای مصدومین با دیوارها فقط 3 درجه بود. ولی باز هم مشکلی نداشتیم خیلی خوب مصدوم رو تشخیص میدادیم
                    برای مانع هم شما باید هر وقت که فاصلتون کم شد فاصله رو حفظ کنید و دور بزنید. منظورتون رو نفهمیدم
                    AYRIC

                    دیدگاه


                      #25
                      پاسخ : درایو سنسور دما mlx90614 با avr

                      داستان آقای نعمت بخش رو که بگذریم.... :biggrin:
                      اما ماجرای دمای سه درجه ای:
                      من بازم نفمیدم که وقتی الان این سنسور یه جسم به اون داغی یا سردی که توی پست قبلی گفتم رو تازه در فاصله ی نزدیک داره با این همه خطا تشخیص میده خوب اونوقت چند درصد احتمال داره روز مسابقه بتونه اختلاف به قول خودتون 3 درجه ای رو اونم از 10 سانتی تشخیص بده!
                      و ماجرای مانع:
                      من توی الگوریتم می خوام کدی بزنم که هر وقت جلوی ربات دیوار بود مثلا از الگوریتم راست گرد استفاده کن و بچرخ تا اولین خروجی رو پیدا کنی و هر وقت مانع بود فقط کافیه یه چرخش یه فورارد و یه چرخش و یه فوروارد و یه چرخش یه فوروارد و یه چرخش انجام بدی تا کاملا ردش کنی! حالا سوال اینه که هر وقت مانع وجود داشته باشه ربات فکر می کنه دیواره و الگوریتم راست گرد رو انجام می ده.

                      دیدگاه


                        #26
                        پاسخ : پاسخ : درایو سنسور دما mlx90614 با avr

                        نوشته اصلی توسط roboreza
                        بله درسته من با آقای نعمت بخش کار میکنم
                        شما پارسال شرکت کرده بودید؟ از کجا آقای نعمت بخش رو میشناسید؟ البته اینقدر سابقشون زیاده که تقریبا هرکی توی روباتیکه مهندس رو میشناسه
                        توی مسابقات بعضی وقتا اختلاف دمای مصدومین با دیوارها فقط 3 درجه بود. ولی باز هم مشکلی نداشتیم خیلی خوب مصدوم رو تشخیص میدادیم
                        برای مانع هم شما باید هر وقت که فاصلتون کم شد فاصله رو حفظ کنید و دور بزنید. منظورتون رو نفهمیدم
                        سلام.خیلی خوشحال شدم که با شما در اینجا هم ملاقات کردم.ما هم سال قبل شرکت کردیم.تا فینال هم رسیدیم ولی 10 دقیقه مانده به فینال ربات به کلی خراب شد و نتوانستیم در فینال شرکت کنیم.ما همان تیمی بودیم که در مرحله مقدماتی 1 ، 110 امتیاز آوردیم.ربات شما واقعا دقت زیادی داشت.چگونه با این دقت دور می زدید یا خانه ها را جلو می رفتید.از PID استفاده می کردید؟شما همون رباتی داشتید که بوق می زد؟دقت سنسور های gp در چه حدی است؟
                        درمورد سنسور دما تنها چیزی که سال قبل برای ما بسیار مشکل ساز شد تداخل این سنسور ها با سنسور آلتراسونیک srf08 بود.که در موقع مسابقات بلاخره توانستیم مشکل را حل کنیم.در غیر این صورت مشکل دیگری نداشتیم.البته امسال که دوباره ربات را راه اندازی کردم سنسور ها کار نمی کرد.
                        ما سنسور ها را از ایران ماژول می خریدیم.وبا 5 ولت با آن ها کار می کردیم.

                        دیدگاه


                          #27
                          پاسخ : درایو سنسور دما mlx90614 با avr

                          سلام
                          من تست کردم مشکلی نداشت . دمای چند تا جسم مختلف گرفتم خیلی دقیق نمایش میداد . فیلم اون هم یکم حجمش بالاست دیشب وقت نکردم flv کنم برات بفرستم . امروز میفرستم

                          دیدگاه


                            #28
                            پاسخ : درایو سنسور دما mlx90614 با avr

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

                            خوب فقط یک دلیل به ذهن من می رسه. اونم کیفیت جنس سنسوره! ولی وقتی فقط تو امجد دو تا مغازه ازش داره پس خیلی هم نباید تنوع داشته باشه!پس کجا رو دارم اشتباه میکنم؟؟؟؟؟
                            مال من دمای جسم داغ رو هم در برد زیاد نشون میده ولی به شرطی که جسم خیلی داغ و بزرگ باشه. تازه هر چه هم دورتر بشه عددش کم تر میشه.
                            بیاد مقایسه کنیم تا ببینیم واقعا مال کیفیت سنسوره یا چیز دیگه!
                            میشه بگید مال شما دمای کف دست انسان رو در 4 سانتی چقدر نشون میده و در 40 سانتی چقدر؟
                            سنسور من دمای پوست کف دست رو در 4 سانتی 32 نشون میده ودر 12 سانت به بالا تر نمی بینه و همون دمای محیط نشون میده!

                            دیدگاه


                              #29
                              پاسخ : درایو سنسور دما mlx90614 با avr

                              آخه منم از همون جایی گرفتم که شما گرفتی
                              ولی مشکلی نداره تا 20 30 سانت هم وقتی دستم رو جلوش میبردم و میاوردم تغییرات رو میدیدم
                              یه موقع بیشتر از 5 بهش ندادی؟ حتی چند دهم ولت؟
                              AYRIC

                              دیدگاه


                                #30
                                پاسخ : درایو سنسور دما mlx90614 با avr

                                نه تا حالا بیش تر از 5 ندادم
                                از اون اول 7805 می ذاشتم با باتری که کمتر از 5 هم شد بده ولی بیش تر از 5 اصلا

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

                                دیدگاه

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