اطلاعیه

Collapse
No announcement yet.

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

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

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

    کد:
    #include <mega8.h>        
    #include <delay.h>
    #include <lcd.h>         
    #include <1wire.h>       
    #include <ds18b20.h>       
    #include <stdio.h>        
    #asm
      .equ __w1_port=0x12 ;PORTD
      .equ __w1_bit=1
    #endasm
    #asm
      .equ __lcd_port=0x18 ;PORTB
    #endasm
           
    char buffer[32];
    unsigned char rom_codes[1][9];
    unsigned char devices;
    float temp;
          
      void main(void){
      w1_search(0xf0,rom_codes);
      ds18b20_init(&rom_codes[0][0],0,80,3);   
      lcd_init(16);                 
       while(1){
         temp=ds18b20_temperature(&rom_codes[0][0]);  
         sprintf(buffer,"T=%5.3f\xdf",temp);  
         lcd_clear();        
         lcd_puts(buffer);    
         delay_ms(750);       
       }
      }
    پروگرام ببین جواب میده
    سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

    دیدگاه


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

      نوشته اصلی توسط سید سجاد احدزاده
      این یه برنامه که دو سال پیش ازش استفاده کردم فقط قسمت پیکر بندی سون سگمنتش خودم با تست تکتک پایه های سون سگمنت نوشتم اگه یکم گیج شدین شرمنده
      ونکته دیگه شما از این سنسور فقط هر 750 میلی ثانیه میتونید بخونید تو تمام برنامه هاتون باید یه چنین تاخیری رو مد نظر داشته باشین که من برای نمایش روی سون سگمنت استفاده کردم البته فقط برنامه رو واسه نشون دادن دما مثبت نوشتم
      کد:
      #include <io.h>
      #asm
          .equ __w1_port=0x18
          .equ __w1_bit=7
        #endasm
      #include <ds18b20.h>
      #include <1wire.h>
      #define seg_ddr DDRD
      #define seg_port PORTD
      
      
      
      void main(void)
      {
      
      unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
      int a[3],b=1;
      
      unsigned char rom_codes[1][9];
      int temp=0,t2;
      float t3;
      int t;
      DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
      seg_ddr=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
      seg_port=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (1<<PORTD1) | (1<<PORTD0);
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) |(0 <<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);
      delay_ms(2000);
      
      PORTB=0x00;
      a[0]=0;
      a[1]=0;
      a[2]=0;
      
      w1_search(0xf0,rom_codes);
      ds18b20_init(&rom_codes[0][0],0,80,3);
      while (1)
         {
         t3=ds18b20_temperature(&rom_codes[0][0]);
         t2=t3*10;
         t=t2;
         
       a[2]=t%10;
       a[1]=(t/10)%10;
       a[0]=(t/100)%10;
       for(b=0;b<125;b++){
       PORTB.0=1;
       seg_port=seg[a[0]];
       delay_ms(4);
       PORTB.0=0;
       PORTB.1=1;
       seg_port=seg[a[1]];
       delay_ms(4);
       PORTB.1=0;
       PORTB.2=1;
       seg_port=seg[a[2]];
       delay_ms(4);
       PORTB.2=0;
       delay_ms(4);
       PORTB.0=0;
       PORTB.1=0;
       PORTB.2=0;
       }
       }
      }
      سلام و عرض ادب


      دوست عزیز در مورد این قسمت که فرمودید :
      ونکته دیگه شما از این سنسور فقط هر 750 میلی ثانیه میتونید بخونید تو تمام برنامه هاتون باید یه چنین تاخیری رو مد نظر داشته باشین
      من الان با 500 میلی ثانیه تست کردم ؛جواب میده ولی هر از گاهی " منفی یک (1-) رو نشون میده بعضی مواقع خطای فاحش ./

      خاستم ببینم مشکل ازکجا میتونه باشه ؟




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

      دیدگاه


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

        نوشته اصلی توسط اقای دکتر
        سلام و عرض ادب


        دوست عزیز در مورد این قسمت که فرمودید :
        من الان با 500 میلی ثانیه تست کردم ؛جواب میده ولی هر از گاهی " منفی یک (1-) رو نشون میده بعضی مواقع خطای فاحش ./

        خاستم ببینم مشکل ازکجا میتونه باشه ؟
        توی دیتا شیت نوشته 750 میلی ثانیه استانداردش که البته یعنی در هر شرایطی و با هر کیفیت که ضمانت کرده سنسور با 750 میلی ثانیه خروجی درست و صحیح ارئه میده ،من با 200 میلی ثانیه هم ازش خوندم اما جالب اینه که روی برد pcb با 200 میلی ثانیه جواب گرفتم اما روی بردبرد کمتر از از 600 میلی ثانیه خطا میگرفت حتی بعضی از این سنسورا روی pcb یکسان کمتر از 750 میلی ثانیه جواب نداده این قزیه هر علتی میتونه داشته باشه که یکیش به کیفت سنسور برمیگرده و یکی به مقاومت موجود در اتصال مابین سنسور و خواننده سنسور حتی من بضان دیدم نوع تغذیه هم تاثیر میزاره تو مقدار خروجی بعضی از سنسورا
        سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

        دیدگاه


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

          این 750 میلی ثانیه برمیگرده به رزولیشن انتخابی
          با تایم کمتر هم میشه
          برای 12 بیت که بصورت پیش فرض تعیین شده 750 میلی ثانیه ست
          و رزولیشن های پایین تر با تایم پایین تر هم داره که در موقع اینیت کردن ds میتونید اعمال کنید

          دیدگاه


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

            سلام
            از پاسخگویی شما بزرگوارن تشکر میکنم


            در دیتاشیت DS18B20 در مورد یک نکته اشاره کرده که در سنسورهای قبلی یعنی DS1820 / DS 18S20 اشاره نکرده و اون اینکه

            Converts Temperature to 12-Bit Digital Word in 750ms (Max

            دما رو در حالت 12 بیتی ؛؛ در ماکزیمم زمان 750 میلی ثانیه تبدیل میکنه و درون متغییری از جنس WORD میریزد.


            درست متوجه شدم ؟ دما خوانده شده رو درون متغییری از جنس WORD میریزد ؟

            البته من درون متغییری از جنس BYTE میریختم و جواب هم میداد ولی بعضی وقتها میدیم که یکی دو تا از سنسور خود به خود میزد منفی یک (1-) و خود به خود هم درست میشد

            علی ایحاله این قسمت از دیتاشیت رو امروز بعد از دو سال دیدم :redface:

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




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

            دیدگاه


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

              نوشته اصلی توسط اقای دکتر
              سلام
              از پاسخگویی شما بزرگوارن تشکر میکنم


              در دیتاشیت DS18B20 در مورد یک نکته اشاره کرده که در سنسورهای قبلی یعنی DS1820 / DS 18S20 اشاره نکرده و اون اینکه

              Converts Temperature to 12-Bit Digital Word in 750ms (Max

              دما رو در حالت 12 بیتی ؛؛ در ماکزیمم زمان 750 میلی ثانیه تبدیل میکنه و درون متغییری از جنس WORD میریزد.


              درست متوجه شدم ؟ دما خوانده شده رو درون متغییری از جنس WORD میریزد ؟

              البته من درون متغییری از جنس BYTE میریختم و جواب هم میداد ولی بعضی وقتها میدیم که یکی دو تا از سنسور خود به خود میزد منفی یک (1-) و خود به خود هم درست میشد

              علی ایحاله این قسمت از دیتاشیت رو امروز بعد از دو سال دیدم :redface:

              خاستم ببینم شما زمانیکه دمای تبدیل شده رو میخونید درون چی میریزدید ؟
              منظورش اینه وقتی سنسور دما رو تبدیل میکنه .. اونو توی یه ورد نگه میداره
              و ما اون ورد رو میخونیم و بعد با فرمول اونو به عدد اعشار تبدیل میکنیم
              که این کار توی تابع مختص به خودش انجام میشه توی کتابخونه این سنسور
              با این تابع
              کد:
              ds18b20_temperature(&rom_codes[0][0]);
              خروجی این تابع باید یه عدد فلوت باشه .. چون اعشاریه دیگه


              ولی اون دیتای اولیه که ما از سنسور میگیریم یک ورد هست دیگه
              بایت بالا و بایت پایین که بعد یه سری اعمالات اونو به اعشار تبدیل میکنیم خودمون توی برنامه ( برنامه کتابخونه )

              دیدگاه


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

                سلام
                من یه برنامه آماده رو بستم که توی پروتئوس کاملا جواب میده ولی درعمل -9999.0000 نشون میده! مقاومت پول آپ هم گذاشتم میکرو هم مگا 8 تمام نکات این تاپیک رو هم رعایت کردم ولی نشد که نشد*!
                کمک

                دیدگاه


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

                  هم شماتیک بذار و هم برنامه .احتمالا مشکل از برنامه باشه.

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  نوشته اصلی توسط electronic_2222 نمایش پست ها
                  کمک
                  کمک گرفتن شما خیلی جالبه.انگا دارین غرق می شید.
                  eshop-hodhod.ir

                  دیدگاه


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

                    حل شد مهندس! فرکانس روی 8 بود اوردمش روی 1 درست شد!!!

                    دلیل: ادغام دو پست برای جلوگیری از اسپم

                    فقط یه سوال اینگه دقت این دماسنج رو توی سایت فروشگاه نوشته 0.0625 ولی ظاهرا دقتش 0.5 هست! راهی برای بالا بردن دقت هست؟

                    دیدگاه


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

                      نوشته اصلی توسط electronic_2222 نمایش پست ها
                      سلام
                      من یه برنامه آماده رو بستم که توی پروتئوس کاملا جواب میده ولی درعمل -9999.0000 نشون میده! مقاومت پول آپ هم گذاشتم میکرو هم مگا 8 تمام نکات این تاپیک رو هم رعایت کردم ولی نشد که نشد*!
                      کمک
                      سلام
                      بنده الان میخوام از این سنسور تو برنامم استفاده کنم
                      اما فرکانس برنامم 8مگاهرتز خارجیه
                      و سنسور عدد 0 رو نشون میده
                      چه طور این مشکل رو حل کنم؟

                      دیدگاه


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

                        والا من مشکل صفر نشون دادن نداشتم ولی با کریستال خارجی 11.0592 مشکل 999 نشون دادن رو حل کردم. با 1 مگ داخلی هم اوکی بود.

                        پول آپشم نباشه 999 نشون میده. سنسور درست وصل نباشه هم همینطور.

                        دیدگاه


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

                          من الان همین کریستال خارجی 11.05200 رو تو مدار دارم و دوتا خازن 22 پیکوفاراد هم زمین کردم با پایه هاش
                          وقتی میرم تو فیوز بیت و فرکانس رو میزارم رو ext .low ferekns میکرو دیگه پروگرم نمیشه و میره واسه خودش
                          یعنی بخوامم نمیتونم $crystal رو بیارم رو 1مگا هرتز و این که کله برنامم که ساعت هست با 8مگا هرتز جواب میده
                          چیکار باید کنم

                          دیدگاه


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

                            کد:
                            $regfile = "m32def.dat"
                            $crystal = 1000000
                            
                            
                            Config Lcdpin = Pin , Rs = Portc.7 , E = Portc.5 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
                            Config Lcd = 16 * 2
                            Cursor Off
                            Cls
                            
                            
                            Config 1wire = Porta.0
                            
                            
                            Dim Temperature As String * 6
                            Dim Buffer As Integer
                            
                            
                            Deflcdchar 0 , 232 , 244 , 232 , 227 , 228 , 228 , 227 , 224
                            
                            
                            Do
                               1wreset
                               1wwrite &HCC
                               1wwrite &H44
                               Waitms 100
                            
                            
                               1wreset
                               1wwrite &HCC
                               1wwrite &HBE
                               Buffer = 1wread(2)
                               Buffer = Buffer * 10 : Buffer = Buffer \ 16
                               Temperature = Str(buffer) : Temperature = Format(temperature , "0.0")
                               Locate 1 , 1 : Lcd "Temp: " ; Temperature ; Chr(0) ; "   "
                               Locate 2 , 1 : Lcd "www.M32.ir"
                            Loop
                            [FONT=Yekan]End[/FONT]
                            این کد که مشکلی نداره؟

                            دیدگاه


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

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

                              دیدگاه


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

                                با سلام به همه دوستان
                                من یه مشکل عجیبی با DS18B20 دارم. وقتی که سنسور را با ولتاژ 5 ولت راه اندازی میکنم سنسور به خوبی کار میکنه ولی وقتی ولتاژ اون رو کمتر میکنم و حدود 4.1 ولت ش میکنم سنسور دقت ش رو از دست میده و قسمت اعشاری ش ثبات نداره و میشه گفت خطا داره و مقادیر اعشاری اون بدون نظم و تصادفی تغییر میکنه. توی دیتاشیت این آی سی گفته ولتاژ کاری ش بین 3.3 ولت تا 5.5 ولت هستش ولی فقط توی 5 ولت خوب جواب میده
                                کسی به این مشکل برنخورده؟
                                لطفا" راهنمایی کنید
                                حاصلظرب توان در ادعا مقداری ثابت است.هرچه توان انسان کمتر باشد ادعای او بیشتر است و هرچه توان انسان بیشتر شود ادعایش کمتر میگردد.(دکتر حسابی)

                                دیدگاه

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