اطلاعیه

Collapse
No announcement yet.

مشکل با سنسور DS18B20

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

    مشکل با سنسور DS18B20

    سلام
    دوستان من از سنسور DS1820 استفاده کردم .سنسور و برنامه در پرتئوس بدون هیچ مشکلی کار میکنه ولی در عمل دما زیر 4 هست و اصلا بالای 5 نمیره .سنسور رو عوض کردم جواب نداد حتی بجای مقاومت پول اپ 4.7K از پتانسیومتر 10 جهت تنظیم دقیق مقاومت استفاده کردم ولی مشکل همچنان باقیست ./
    این فایل برنامه و شماتیک هست .ممنون میشم دوستان در این زمینه همکاری بفرمایند.

    http://s2.picofile.com/file/7830743652/SENS.rar.html
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    #2
    پاسخ : مشکل با سنسور DS1820

    سلام
    کسی نبود؟؟
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    دیدگاه


      #3
      پاسخ : مشکل با سنسور DS1820

      سلام دوست عزیز
      مشکل اینه که سنسور توی پروتئوس DS18B20 هست و سنسور در عمل ds1820 یا ds18s20 هست، کافیه تو برنامتون ، دوبایت دیتا رو که میگیرید، هر دو رو سه بیت به راست شیفت بدید، این بخاطر اینه که ds18b20 از راست به ترتیب 1/16 و 1/8 و 1/4 و 1/2 و 1 و 2 ... درجه سانتی گراد رو میفرسته، یعنی رزولوشنش 1/16 یا 0.0625 درجه سانتی گراده اما ds1820 و ds18s20 از راست 1/2 و 1 و 2 و... رو میفرسته که رزولوشنش 0.5 درجه سانتی گراده، شما تو پروتیوس سنسور رو ds18s20 بذارید هم دما 4-5 درجه سانتی گراده، برنامه تون رو به همون نحو که عرض کردم اصلاح کنید دوست عزیز

      Good Luck

      دیدگاه


        #4
        پاسخ : مشکل با سنسور DS1820

        نوشته اصلی توسط scienceaddict
        سلام دوست عزیز
        مشکل اینه که سنسور توی پروتئوس DS18B20 هست و سنسور در عمل ds1820 یا ds18s20 هست، کافیه تو برنامتون ، دوبایت دیتا رو که میگیرید، هر دو رو سه بیت به راست شیفت بدید، این بخاطر اینه که ds18b20 از راست به ترتیب 1/16 و 1/8 و 1/4 و 1/2 و 1 و 2 ... درجه سانتی گراد رو میفرسته، یعنی رزولوشنش 1/16 یا 0.0625 درجه سانتی گراده اما ds1820 و ds18s20 از راست 1/2 و 1 و 2 و... رو میفرسته که رزولوشنش 0.5 درجه سانتی گراده، شما تو پروتیوس سنسور رو ds18s20 بذارید هم دما 4-5 درجه سانتی گراده، برنامه تون رو به همون نحو که عرض کردم اصلاح کنید دوست عزیز

        Good Luck
        سلام
        ممنونم دوست عزیز اره متوجه شدم که مشکل از کجاست و برنامه DS1820 رو جایگزینش کردم و داره کار میکنه .

        در مورد شیف بیت فوق الذکر یعنی بجای 1/16 از 1/2 استفاده کنم ؟؟
        یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

        دیدگاه


          #5
          پاسخ : مشکل با سنسور DS1820

          سلام دوست عزیز
          سنسوری که شما تو دستت داری اون بیت 1/16 رو نمیده، ولی تو برنامه ات میکرو این بیتو میگیره و روش محاسبات انجام میدی، من اشتباه کردم سه بیت به چپ باید شیفت میدادی، چون برای مثال میکرو فکر میکنه که بیت 4 ام دیتا بیت 1 درجه سانتی گراد(2 به توان 0) هست در صورتی که سنسور داره تو بیت چهارم 8 درجه سانتی گراد(2 به توان 3) رو میفرسته و سه بیت شیفت به چپ مشکل رو حل میکرد، که خداروشکر حل شد

          Good Luck

          دیدگاه


            #6
            پاسخ : مشکل با سنسور DS1820

            [quote author=scienceaddict link=topic=79141.msg478591#msg478591 date=1373039059]
            ویرایش شد.
            یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

            دیدگاه


              #7
              پاسخ : مشکل با سنسور DS1820

              سلام
              من از چند تا سنسورds18b20 روی یک خط(bus) استفاده کردم و هیچ مشکلی ندارم .به عنوان مثال 4 تا سنسور رو روی یک خط قرار دادم و بدون هیچ مشکلی کار میکنه .فقط مشکل اینجاست که وقتی یکی از سنسورها رو از روی خط خارج میکنم --- چون از مدار خارج شده باید دمای رو نشون نده . ولی دمای یکی از سنسورهای دیگه رو نشون میده .ممنون میشم در این زمینه راهنمایی کنید.
              یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

              دیدگاه


                #8
                پاسخ : مشکل با سنسور DS18B20

                دوستان میشه اصول خوندن خروجی این سنسور به صورت پایه (مختصر ) توضیح بدین :rolleyes:
                خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                [hr]

                دیدگاه


                  #9
                  پاسخ : مشکل با سنسور DS18B20

                  اقای 4850
                  تو خود کدویژن کتابخونه داره
                  یه سرچ بزن تو گوگل هزار تا برنامه ش میاد بالا
                  کتابخونه هم که داره

                  من خودم یه مشکل باهاش دارم که اون ارایه ی که میدم واسه ادرس سنسور ds ها
                  ادرس هاش تغییر میکنه
                  در صورتی که هیچ کاری نکردم که اینجوری بشه

                  دیگه خب ادرس ها خراب بشن کارنمیکنه باید ری4ستارت بشه همه چی
                  کسی این مشکل داره
                  ____________________________________

                  دیدگاه


                    #10
                    پاسخ : مشکل با سنسور DS18B20

                    دوست عزیزم sahel2013 بابا من اصلا نمی خوام با c کار کنم من منظورم تو بیسکام هستش و من اصلا نمیخوام صرفا یه برنامه داشته باشم که جواب از این سنسور بگیره آخرش هم ندونم چی شد منظور من اینه که نکات ریز کاربا این سنسور را یاد بگیرم تا تو بیسکام هر تغییری خواستم بدونم چی کار بکنم :read: ولی بازم معرف تو که یه جوابی به سوالای ما میدی بقیه برو بچ که اصلا مارو قاطی آدمیزاد نمیدونن :cry2: دستت گلت درد نکنه
                    خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                    [hr]

                    دیدگاه


                      #11
                      پاسخ : مشکل با سنسور DS18B20

                      دوستان به منم خواهشا کمک کنید !

                      تاپیک جدید نزدم که نظم فروم بهم نریزه

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

                      ساعت دقیق کار میکنه فقط مشکل دما هست !

                      اینم فایل پروتئوس + برنامه C :

                      http://www.uploadtak.com/images/p7369_7Segment.zip

                      ممنونم
                      * هر گاه خدا بخواهد بنده اي را خوار كند، دانش را از او دور سازد.
                      * سخن بگوييد تا شناخته شويد، زيرا كه انسان در زير زبان خود پنهان است.
                      *بدترين دوست،آ‌ کسی است که براي او به رنج و زحمت افتي.
                      حضرت علی(ع)
                      آموزش AVR به ساده ترین زبان ممکن : Noise.Blog.IR

                      دیدگاه


                        #12
                        پاسخ : مشکل با سنسور DS18B20

                        اقای 4850
                        نیاز نیست با جزییات ارتباط ووو بدونی // چون مختص به خودشه و به همین خاطر کتابخونه براش زدن
                        اما خب راست میگی : یه نکات و مشکلاتی هم داره
                        خیلی راحت میشه با برنامه های سطح نت راه اندازیش کرد // اما مانور نمیتونی بدی
                        اتفاقا منم مثل تو دنبال مانورم که همچنان هم اکنون باهاش درگیرم
                        و بعد راجب اخر سخنتون /// دست رو دلم نذار // بگذریم

                        اقای احسان نوری :
                        اولا که ولتاز باطری ساعت باید 3.3 بکاپ باشه هواست باشه
                        -2 کار های که برای نمایش انجام دادی جالب نیست
                        تو باید از این سگمنت های 4 تا یی بگیری و راه اندازی کنی برنامه شم تو نت هست و بگذریم
                        و برنامه ds فکر کنم کامل نیست
                        و یادت باشه این سنسوز در واقع برنامه کتابخونه ش زیاد قهر ناز میکنه
                        الان خودم دارم نازشو میکشم اما به صورت معمولی کار میکنه نگران نباش
                        من این برنامه شو میدم خوب بخونش
                        مال خودت کامل نیست مثلا تابع پیکربندیشو ندادی
                        فقط دما رو خواستی
                        این برنامه خوب جواب میده
                        فقط یه خواهش دارم
                        اگه هر چیزی یاد گرفتید بیارید بذارید تو انجمن تا همه یاد بگیرن //
                        این بدترین ضربه ای که میتونیم به ادم های متکتمان بزنیم و خیلی حال میدهد
                        :wow:
                        _____________________________________________


                        #include <mega16.h>
                        #include <stdio.h>
                        #include <delay.h>
                        // 1 Wire Bus functions
                        #asm
                        .equ __w1_port=0x1B ;PORTA
                        .equ __w1_bit=0
                        #endasm
                        #include <1wire.h>

                        // DS1820 Temperature Sensor functions
                        #include <ds1820.h>

                        // maximum number of DS1820 devices
                        // connected to the 1 Wire bus
                        #define MAX_DS1820 8
                        // number of DS1820 devices
                        // connected to the 1 Wire bus
                        unsigned char ds1820_devices;
                        // DS1820 devices ROM code storage area,
                        // 9 bytes are used for each device
                        // (see the w1_search function description in the help)
                        unsigned char ds1820_rom_codes[MAX_DS1820][9];

                        // Alphanumeric LCD Module functions
                        #asm
                        .equ __lcd_port=0x15 ;PORTC
                        #endasm
                        #include <lcd.h>

                        // Declare your global variables here
                        char lcd_buffer[33];
                        void main(void)
                        {
                        // Declare your local variables here
                        unsigned char i, j;
                        int temp;
                        lcd_init(16);
                        lcd_clear();


                        PORTA=0x00;
                        DDRA=0x00;


                        PORTB=0x00;
                        DDRB=0x00;

                        PORTC=0x00;
                        DDRC=0x00;


                        PORTD=0x00;
                        DDRD=0x00;


                        // Determine the number of DS1820 devices
                        // connected to the 1 Wire bus
                        ds1820_devices=w1_search(0xf0,ds1820_rom_codes);

                        // LCD module initialization


                        sprintf(lcd_buffer, "%u DS1820\nDevice detected", ds1820_devices);
                        lcd_puts(lcd_buffer);
                        delay_ms(2000);

                        /* display the ROM codes for each device */
                        if (ds1820_devices) {
                        for (i=0; i < ds1820_devices; i++) {
                        sprintf(lcd_buffer, "Device #%u ROM\nCode is:", i+1);
                        lcd_clear();
                        lcd_puts(lcd_buffer);
                        delay_ms(2000);
                        lcd_clear();
                        for (j=0; j<8; j++) {
                        sprintf(lcd_buffer, "%02X ", ds1820_rom_codes[i][j]);
                        lcd_puts(lcd_buffer);
                        if (j == 3) lcd_gotoxy(0, 1);
                        };
                        delay_ms(5000);
                        };
                        }
                        else while (1); /* stop here if no devices were found */

                        /* measure and display the temperature(s) */

                        while (1)
                        {
                        for (i=0; i < ds1820_devices {
                        temp = ds1820_temperature_10(&ds1820_rom_codes[i][0]);
                        j = '+';
                        if (temp < 0) {
                        j = '-';
                        temp =- temp;
                        };
                        sprintf(lcd_buffer, "t%u=%c%i.%u\xdfC", ++i, j,
                        temp / 10, temp % 10);
                        lcd_clear();
                        lcd_puts(lcd_buffer);
                        delay_ms(800);
                        };

                        };
                        }

                        ______________________________________________

                        یادتون باشه این برنامه ds1820
                        باید اینکلود ds18b20 رو فعال کنید و از توابع اون استفاده کنید
                        دست به چیز خخاصی نزنید
                        فقط جایگرینی توابع 18b20
                        خروجیش هم فلوت بریزید توی یه متغیر فلوت
                        و نمایشش بدید
                        j = '+';
                        if (temp < 0) {
                        j = '-';

                        این قسمت حذف کنید مال ds1820
                        کمی باهاش ور برید کار میکنه خوب
                        اول با همون ds1820 امتحانش کنید بعد تغییرات برای 18 b 20 اعمال کنید
                        :icon_razz:

                        دیدگاه


                          #13
                          پاسخ : مشکل با سنسور DS18B20

                          جناب sahel2013 ممنون

                          در مورد فرمایشاتتون :

                          1.حواسم به باتری بکاپ هست.عرض هم کردم مشکلی در زمینه ساعت فعلا نیست.
                          2.با توجه به اینکه میخوام سگمنت ها رو خودم با LED در ابعاد بزرگ طراحی کنم ، قضیه مالتی پلکس بودن منتفیه !
                          3.در مورد کتابخونه هم باید عرض کنم که من یه پروژه براتون قرار میدم با همین توابعی که بکار بردم کلا 20 خط شاید باشه و سنسور با موفقیت کار میده و مشکلی هم نیست.در واقع من هم چیزی غیر از اون برنامه ننوشتم و فقط اون رو LCD نمایش داده و من روی 7سگمنت !!!
                          4.تنها دلیلی که من به ذهنم میرسه مبنی بر کار نکردن سنسور دما روی سون سگمنت اینه که متغیر temp هنگامی که تقسیم بر 10 میشه یا باقیمانده اش رو بر 10 میگیریم،دچار تغییر میشه ! و اون جوابی که باید بده رو نمیده.من هم با int هم با float امتحان کردم و جوابی نگرفتم !!!

                          این پروژه ای که ذکر کردم البته با LCD :

                          کد:
                           #include <mega16.h>        
                          #include <delay.h>
                          #include <lcd.h>         
                          #include <1wire.h>       
                          #include <ds18b20.h>       
                          #include <stdio.h> 
                          #define xtal 8000000       
                          #asm
                            .equ __w1_port=0x18 ;PORTB
                            .equ __w1_bit=1
                          #endasm
                          #asm
                            .equ __lcd_port=0x15 ;PORTC
                          #endasm
                                 
                          char buffer[32];
                                
                            void main(void){
                              unsigned char devices;     
                              float temp;            
                              lcd_init(16);          
                              devices=w1_init();        
                             while(devices>0){
                               temp=ds18b20_temperature(0);  
                               sprintf(buffer,"T=%5.3f\xdfC",temp);  
                               lcd_clear();        
                               lcd_puts(buffer);    
                               delay_ms(300);       
                             }
                            }
                          فقط من شرایط نمایش روی سون سگمنت رو فراهم کردم وگرنه برنامه همینه !

                          با سپاس
                          * هر گاه خدا بخواهد بنده اي را خوار كند، دانش را از او دور سازد.
                          * سخن بگوييد تا شناخته شويد، زيرا كه انسان در زير زبان خود پنهان است.
                          *بدترين دوست،آ‌ کسی است که براي او به رنج و زحمت افتي.
                          حضرت علی(ع)
                          آموزش AVR به ساده ترین زبان ممکن : Noise.Blog.IR

                          دیدگاه


                            #14
                            پاسخ : مشکل با سنسور DS18B20

                            سلام اقای احسان
                            ولا تقریبا میدونم چی میگین
                            گفتم من هم با این مشکل پیدا کردم
                            باور میکنید بیشتر از 2 هفته ست داره با روانم بازی میکنه
                            اره این برنامه رو که دادم مشکلی نداره البته خودش تنها
                            اما تغییراتی توی برنامه خودت ایجاد میکنی از کار میوفته و اصلا کار خاصی نکردیکه ربطی به اون داشته باشه
                            اما چیزای که ساعتها روشون کار کردم و متوجه شدم به شما هم میدم
                            حالا من با ال سی دی هم جواب اشتباه میده
                            تغییراتی که دادم اصلا ربطی با این تابع های این نداره

                            هر چی هست زیر سر توابع این سنسوره
                            شاید خوب طراحی نشدن
                            جوری که اطلاعات ریجستر های دیگه رو تغییر میدن
                            حالا خوب نگاه کنید به احتمال اونارایه ای که دادید برای ذخیره ادرس سنسور اون مشکل پیدا میکنه
                            من خوب دقت کردم
                            اطلاعات اون تغییر میکنه // حتی دیدم عدد دما میره تو ارایه ادرس

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

                            من همچنان باهاش درگیرم و درست بشونیست واقعا تو کارش موندم چشه؟ :angry:

                            دیدگاه


                              #15
                              پاسخ : مشکل با سنسور DS18B20

                              والا منم خودم به کدویژن شک داشتم.چون واقعا من برنامه پیچیده ای ننوشته بودم که بخواد اینقدر سرم بازی در بیاره !
                              یکی از دوستان میگفت که کدویژن 2.5.03 کرک شده مشکلاتی داره !

                              بهر حال اگه فکر میکنید که با sprintf میشه مشکل رو حل کرد و ممکنه اون میارتش رو فرم ! بیایم و یجوری از آرایه buffer اطلاعات رو بخونیم و نمایش بدیم.شاید اینجوری جواب داد.

                              والا ما که موندیم چیکار کنیم ! با LM35 ببندیم هزار تا مشکل داریم از جمله نویز شدید که میزنه میترکونه
                              با DS18B20 میبندیم که یعنی دیجیتال باشه ، اینجوری !

                              خوشبحال اونی که به جای استفاده از کتابخونه کل برنامه رو خودش مینویسه و از کار خودش مطمئنه !
                              * هر گاه خدا بخواهد بنده اي را خوار كند، دانش را از او دور سازد.
                              * سخن بگوييد تا شناخته شويد، زيرا كه انسان در زير زبان خود پنهان است.
                              *بدترين دوست،آ‌ کسی است که براي او به رنج و زحمت افتي.
                              حضرت علی(ع)
                              آموزش AVR به ساده ترین زبان ممکن : Noise.Blog.IR

                              دیدگاه

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