اطلاعیه

Collapse
No announcement yet.

سنسور ds18b20

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

    سنسور ds18b20

    سلام
    می خوام سنسور دما ds18b20 رو روی نمایشگر سون سگمنت نشون بدم
    ولی یه تاخیری تو برنامه ایجاد میکنه که نمیشه درست نشون بده

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

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

    دیدگاه


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

      نوشته اصلی توسط shahpoori
      احتمالا تاخیرهایی واسه نمونه برداری از سنسور دما تو برنامه گذاشتی.نمونه برداری را از داخل روتین سون سگمنت بردار.
      البته باید متن برنامتو میذاشتی تا ایرادت برطرف بشه.اینجوری کسی از غیب نمیتونه بفهمه چیکار کردی.

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




      [code=c]
      #include <mega32a.h>

      #include <delay.h>
      #include <1wire.h>

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



      long int part1=0,part2=0,part3=0;
      flash long int c7seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 f};

      float temp;


      //Temp
      void HEX_to_seg(long int k){
      part3 = c7seg [k%10];
      part2 = c7seg [k/10%10];
      part1 = c7seg [k/10/10%10];


      }



      void main(void)
      {

      PORTC=0x00;
      DDRC=0xff;

      PORTD=0x00;
      DDRD=0xFF;



      // 1 Wire Bus initialization
      // 1 Wire Data port: PORTA
      // 1 Wire Data bit: 5
      // Note: 1 Wire port settings must be specified in the
      // Project|Configure|C Compiler|Libraries|1 Wire IDE menu.

      w1_init();

      while (1)
      {


      temp=ds18b20_temperature(0);


      HEX_to_seg(temp);


      PORTC=0b1111110;
      PORTD=part1;
      delay_ms(5);

      PORTC=0b1111101;
      PORTD=part2;
      delay_ms(5);

      PORTC=0b1111011;
      PORTD=part3;
      delay_ms(5);



      }
      }









      [/code]

      دیدگاه


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

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

        دیدگاه


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

          نوشته اصلی توسط shahpoori
          من زیاد c و کد و ... کار نکردم و با بسکام کار میکنم .حالا که برنامه را گذاشتی دوستان میتونند راهنمایی کنند.

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

          دیدگاه


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

            من با Codevision کار نکردم ولی یک جستجو در گوگل میگه مشکل اینه که تابع ds18b20_temperature در کتابخانه ds18b20.h برای خوندن دما از تاخیر استفاده میکنه. یعنی بین دستور تبدیل دما و خوندن دما تاخیر گزاشته.

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

            دیدگاه


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

              نوشته اصلی توسط freedom_truth
              من با Codevision کار نکردم ولی یک جستجو در گوگل میگه مشکل اینه که تابع ds18b20_temperature در کتابخانه ds18b20.h برای خوندن دما از تاخیر استفاده میکنه. یعنی بین دستور تبدیل دما و خوندن دما تاخیر گزاشته.

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

              سلام من این کارا رو که گفتین انجام داد بازم فایده نداره
              انم می دونم که سنسور تاخیر ایجاد می کنه در حالت 12 بیتی حدود 750ms تاخیر داره.
              همین باعث میشه رفرش سون سگمنت بهم بریزه..
              کسی راه حلی نداره برای حل این موضوع
              اگر داره خواهشا با مثالل بزارین...

              اضافه شده در تاریخ :
              یه استاد تو این فروم وجود نداره که این مساله رو حل کنه...
              :read: :read: :read: :read: :read: :read: :read: :read: :read: :read:

              دیدگاه


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

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

                دیدگاه


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

                  نوشته اصلی توسط 2gihsoy
                  سلام من این کارا رو که گفتین انجام داد بازم فایده نداره
                  ...
                  غیر ممکنه.

                  یه استاد تو این فروم وجود نداره که این مساله رو حل کنه...
                  نه.

                  دیدگاه


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

                    نوشته اصلی توسط freedom_truth
                    غیر ممکنه.

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


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

                    دیدگاه


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

                      دوست عزیز به حرف استاد freedom_truth گوش نکردیا!
                      شما باید نمایشگر را با استفاده از یه روتین تایمر نشون بدی یعنی بجای استفاده از این تاخیرهای 5 میلی ثانیه که تو خطوط 54تا68 نوشتی این زمان رفرش را باید با وقفه یه تایمر درست کنی و توی روتین تایمر باشه نه تو حلقه اصلی.
                      اگه قبلا این کار را کردی حتما یجا اشتباه داشتی.
                      الهم صل علی محمد و آل محمد و عجل فرجهم

                      دیدگاه


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

                        نوشته اصلی توسط shahpoori
                        دوست عزیز به حرف استاد freedom_truth گوش نکردیا!
                        شما باید نمایشگر را با استفاده از یه روتین تایمر نشون بدی یعنی بجای استفاده از این تاخیرهای 5 میلی ثانیه که تو خطوط 54تا68 نوشتی این زمان رفرش را باید با وقفه یه تایمر درست کنی و توی روتین تایمر باشه نه تو حلقه اصلی.
                        اگه قبلا این کار را کردی حتما یجا اشتباه داشتی.
                        اقا من این کارو کردم . رفرش سون سگمنت درست شد

                        ولی اما هیچ چیزی به غیر از عدد صفر نشون نمیده.
                        یعنی عددی که مربوط به دما هستش رو دریافت نمیکنه که نشون بده.


                        اگر هم نمیتونید
                        منم بی خیال موضوع میشم..

                        ولش کن اصلا..
                        شما نتوستید ... منم نمیتونم... این شعار ما :applause: :applause: :applause: :applause: :applause:

                        دیدگاه


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

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

                          دیدگاه


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

                            نوشته اصلی توسط shahpoori
                            دوست عزیز خودت باید انقد بهش وربری تا درست بشه.مطمئن باش میشه! ما می توانیم!
                            دوستان اینجا فقط در حد راهنمایی میتونند وقت بذارند.
                            باید محاسبات خروجی سنسور را داخل روتین نمایشگر بذاری.
                            دوست عزیز برنامه با ور رفتن درست نمیشه
                            باید بلد باشی چطوری برنامه نوشت.... منظور کلی بود :read:

                            دیدگاه


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

                              نوشته اصلی توسط 2gihsoy

                              سلام من این کارا رو که گفتین انجام داد بازم فایده نداره
                              انم می دونم که سنسور تاخیر ایجاد می کنه در حالت 12 بیتی حدود 750ms تاخیر داره.
                              همین باعث میشه رفرش سون سگمنت بهم بریزه..
                              کسی راه حلی نداره برای حل این موضوع
                              اگر داره خواهشا با مثالل بزارین...
                              سلام خوب از همون تاخیر 750ms برای نمایش استفاده کن یعنی یه حلقه for راحت میتونی به این صورت که انقدر عدد رو روی سون سگمنت نشون بده تا 750میلی ثانیه تموم بشه مثلا الان که سه تا تاخیر 5 میلی ثانیه داری 750 میلی ثانیه رو تقسیم بر 15 کن که میشه 50 که به این صورت میتونی بنویسی
                              کد:
                              temp=ds18b20_temperature(0); 
                               
                                 
                                 HEX_to_seg(temp);
                              for(a=0,a<=50,a++)
                              {
                              PORTC=0b1111110;
                                 PORTD=part1;
                                 delay_ms(5);
                               
                                 PORTC=0b1111101;
                                 PORTD=part2;
                                 delay_ms(5); 
                                  
                                 PORTC=0b1111011;
                                 PORTD=part3;
                                 delay_ms(5); 
                                }
                              سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

                              دیدگاه

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