اطلاعیه

Collapse
No announcement yet.

[آموزش] راه اندازی سنسور دمای DS18B20 با کد ویژن

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

    [آموزش] راه اندازی سنسور دمای DS18B20 با کد ویژن

    با سلام
    به تازگی کار با ds18b20 تو محیط کد ویژن شروع کردم
    تاپیک های انجمنو خوندم ولی تاپیکی در این مورد نبود

    خب حالا ببینیم که سنسوره ds18b20 چه کارهای میتونه انجام بده :agree:

    رنج تشخیص دمایی از : +125 تا -55

    قابلیت نمونه برداری در رنج های 9و10و11و12 بیتی

    قابلیت ثبت محدوده دمای برای آلارم توسط خوده سنسور

    امکان راه اندازه با 2 سیم(data & gNd)

    حداکثر زمان پاسخ گوی در حالت 12 بیتی 750ms

    امکان ارسال دیتا بر روی سیم شیلد دار تا 30 متر

    دارای حافظه eeprom برای ذخیره محدوده دما و رنج نمونه برداری
    =-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=
    خب حالا که اشنا شدیم میریم سر وقت اشنا شدن با روش را اندازی سنسور
    توی اولین گام میریم سراغ نسبتا سخت کار راه اندازی دو سنسور بر روی 1 سیم دیتا!!!

    شاید سوالی که براتون پیش بیاد نحوه ارتباط این سنسور یا سنسور ها با میکرو باشه که در ادامه به اون بیشتر توجه میکنیم

    در صورت علاقه مندی عزیزان ای تاپیک ادامه خواهد یافت
    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    #2
    پاسخ : آموزش راه اندازی سنسور ds18b20

    خب بحثو ادامه میدیم اما این عکسارو ببینین



    =-=-=-=-=-=-=-=-=-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-=




    =-=-=-=-=-=-=-=-=-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-==-=-=
    همین طور که در عکس ها مشخصه سنسور ها با استفاده از یک سیم data به هم متصل شدن بدون این که اختلالی در خواندن data در این نوع ارتباط
    معروف به ارتباط تک سیمه (1wire) اتفاق بیوفته. به این صورت که این ارتباط در زمانی برقراره که از طرفه میکرو برای سنسورها در خواستی ارسال بشه وبعد از ارسال درخواست میکرو منتظر دریافت جواببیه درخواست میمونه.
    در کامپیالر کد ویژن کتابخانه ای در رابطه با 1wire نوشته شده که در این بخش از اموزش به شرح تابعی از اون به نام w1_search خواهیم پرداخت. :agree:

    بدنه تابع:

    کد:
     unsigned char w1_search(unsigned char cmd,void *p

    با استفاده از این دستور میشه فهمید که چه تعداد سنسور چه از نوعds18b20 و هر نوع سنسور که این ارتباط رو حمایت کنه وجود داره
    خب اجرای تابع w1_search مستلزمه داشتن یک اریه 2 بعدیه که ما اینجا تعریفش میکینیم

    کد:
    #define MAX_DEVICE 2
    unsigned char rom_codes[MAX_DEVICE][9]

    خب یه ارایه تریف کردیم به این شکل دو سطر داره 9 ستون
    حالا قسمت جذابه مسئله کار با تابعه

    کد:
    1wire_search(0xf0,rom_code)

    خب حالا 0xf0 از کجا اومد و چه مقداری rom_code میگیره و اصلا چرا دو بعدی تعریف شد این عکسو ببینین




    [size=+2]
    طبقه گفته data sheet برای اینکه میکرو اطلاع حاصل کنه از وجود سنسورها باید دستوره 0xf0 ارسال کنه بعد از ارسال میکرو ها خودشونو معرفی میکنن
    به این صورت که هر ایسی از خانواده ds یک family code داره و یک مشخه شخصی مثه اثر انگشت انسان که برای هر کس مختص خوده اونه
    حالا دستوره 0xf0 فرستاده شد
    جوابیه ها میان رویه خط :wow:
    به این شکل hex:
    کد:
    28 6A 77 00 00
    28 6A 74 00 00

    خب ارایه rom_code به درد خورد الان میرم سر وقت تحلیل ای کد بالای :read:
    این 28H که اول اومده famili code ds18b20 یعنی میکرو میگه اولین سنسوری که توی حاضر غایبی که کردم :mrgreen: گفت من ds18b20 هستم با شماره شناسه ای 28 6a 77 00 00
    حالا توجه کنین اگه به جای 10H, 28H میمود به این معنیه که سنسور از نوع ds1820 هست
    حاضر غایبه بعدی :mrgreen: سنسور دوم از نوع ds18b20 بود با serial number متفاوت


    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    هلاک شدم !!!!
    هرجا کم کاستی بود بگین
    تا تاپیک بعدی یا حق :wink
    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    دیدگاه


      #3
      پاسخ : آموزش راه اندازی سنسور ds18b20

      با سلامی دوباره ادامه تاپیکو میزارم:
      همونطور که در تاپیک قبل دیدیم نوع هر سنسور شناسی شد و سریال کد هم برای ما معلوم شد :agree:
      حالا این تابع w1_search یه مقدار بر میگردونه که تعداد سنسور ها مشخص میشه و یه متغیر لازم که این رخدادو ذخیره کنه:

      کد:
      unsigned char device
      device=1wire_search(0xf0,rom_code)
      که در اینجا مقدار device دو میشه چون 2 تا سنسور شناسایی شد :agree:
      حالا که فهمیدیم سریال و نوع سنسورها چیه میریم به مرحله تنظیمات سنسور برای عملکرد بهتر!!!
      در اینجا به کتاب خونه ds18b20 احتیاج داریم
      یک تابع در کتاب خانه ds18b20 هست که به ما این امکانو میده به هر dsb18b20 بگیم که چه دقتی میخوام و اگه دما از حدی که برات مشخص میکنم پایین یا بالا تر رفت بهم خبر بده :applause:
      بدنه تابع:

      کد:
      unsigned char ds18b20_init(unsigned char *addr,signed char temp_low,signed char temp_high,
      unsigned char resolution);
      خب این تابع دارای یه اشارهگر ادرس و یک مشخص کننده حد بالا و پایین دما و تعین دقت اندازه گیری هست!
      با یک مثال مشخص میکنم این موضوع رو
      فرض: دقت 10 بیت.حد بالا 80و پایین 0(کامل در باره کاربرد تعیین این 2 پارامتر توضیح میدم)

      کد:
      ds18b20_init(&rom_codes[0][0],0,80,1);

      این 1 اخر دستور مشخص کننده دقته بیتی هست:
      0= 9بیتی
      1= 10بیتی
      2= 11بیتی
      3= 12بیتی
      در اینجا برای سنسور اول تنظیمات رو فرستادیم لازمه بگم که اگه یک بار این تنظیمات فرستاده شه وسنسور تغذیش قطع شه این تنضیمات مجدداً لازم نیست!EEPROM

      =-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


      =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
      ادامه تاپیک بعد
      .The best question deserves a better answer
      =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
      «پناه»می برم «به خدا»
      از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
      محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

      دیدگاه


        #4
        پاسخ : آموزش راه اندازی سنسور ds18b20

        سلامه دوباره :mrgreen:
        خب تا اینجا جلو رفتیم که تابع ds18b20_init برای ما کار تنضیماتو انجام میداد .خوده تابع هم یه مقدار برگشتی داره که یک یا صفر میتونه باشه
        صفر:تنظیمات با موفقیت انجام نشد
        یک:تنظیمات با موفقیت انجام شد

        خب حالا سنسور ها امادن وقتشه از روی اونا دما خونده شه :agree:
        این عمل با تابع ds18b20_temperature انجام میشه:
        بدنه تابع:

        کد:
        float ds18b20_temperature(unsigned char *addr);

        در این تابع یک اشاره گر ادرس وجود داره که دمارو از کدوم اذرس بخونم و مقدار برگشتی تابع ار نوع float است
        فرض :
        مقدار دما خونده شه از سنسور شماره 2

        کد:
        ds18b20_temperature(&rom_codes[1][0])

        اگه بخوام از سنسور 1 بخونم

        کد:
        ds18b20_temperature(&rom_codes[0[0])

        و در اخر میرسیم به قسمت اخر بخش:
        در جای گفته شد که این سنسور توانایی تشخیص محدودیت دمارو داره با این مثال این موضوع رو روشن میکنم:
        میکرو این دستور 0xec رو با تابع w1_search میفرسته رو خط و میگه:
        کی محدوویت دما داره دستش بالا :mrgreen: و اونی که محدوده دمای که براش تنظیم کردیم خودشو معرفی میکنه به این صورت:
        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



        =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        کد:
        unsigned char alarm_code_rom [MAX_DEVICE] [9]
        unsigned char temp_hi_low
         temp_hi_low=w1_search(0xec,alarm_code_rom)
        سوالی بود بگین :agree:
        راستی قیمت این سنسور
        ds18b20=سه هزار 900
        به امید ایرانی سر افرازتر
        یا حق
        .The best question deserves a better answer
        =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
        «پناه»می برم «به خدا»
        از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
        محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

        دیدگاه


          #5
          پاسخ : آموزش راه اندازی سنسور ds18b20

          آقای blue_pulse کاشکی عین همین توضیحاتو برای بسکام هم می زاشتی :cry:
          من تو کل اینترنت گشتم هیچ کسی مثل شما از پایه ( البته برای بسکام ) توضیحاتی در مورد این سنسور نذاشته :angry: :angry:
          آخه چراااااااااااااااااااا oo:
          خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
          [hr]

          دیدگاه


            #6
            پاسخ : آموزش راه اندازی سنسور ds18b20

            نوشته اصلی توسط 4850
            آقای blue_pulse کاشکی عین همین توضیحاتو برای بسکام هم می زاشتی :cry:
            من تو کل اینترنت گشتم هیچ کسی مثل شما از پایه ( البته برای بسکام ) توضیحاتی در مورد این سنسور نذاشته :angry: :angry:
            آخه چراااااااااااااااااااا oo:
            به زودی تاپیکی در این رابطه ایجاد خواهد شد
            .The best question deserves a better answer
            =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
            «پناه»می برم «به خدا»
            از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
            محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

            دیدگاه


              #7
              پاسخ : آموزش راه اندازی سنسور ds18b20

              تو فکر این بودم حالا کی بشینه دیتاشیت این سنسو رو ترجمه کنه و راش بندازه!!!!!!!!!! :!!
              خدا رو شکر. این مشکلم حل شد. ^^
              آقا •.´™ مَسِِــــح`.• دستت درد نکنه. حال کردیم. =D> :wow: :applause:
              تو را دانش و دین نماید درست در رستگاری ببایدت جست
              وگر دل نخواهی که باشی نژند نخواهی که دائم بوی مستمند
              به گفتار پیغمبرت راه جوی دل از تیرگی ها بدین آب شوی

              دیدگاه


                #8
                پاسخ : آموزش راه اندازی سنسور ds18b20

                این قسمت آلارم کار نمیکنه اگه میشه یه راهنمایی بکنین :smile: :smile: :smile: :smile:
                زندگی با الکترونیک زیباست

                دیدگاه


                  #9
                  پاسخ : آموزش راه اندازی سنسور ds18b20

                  نمونه کد موجود در help کد ویژن در رابطه با آلارم
                  کد:
                  #include <mega8515.h>
                  
                  
                  /* the ATmega8515 port and bit used for the 1 Wire bus must be
                    specified in the Project|Configure|C Compiler|Libraries 1 Wire
                    menu */
                  
                  
                  /* include the DS1820/DS18S20 functions prototypes */
                  #include <ds1820.h>
                  
                  
                  /* include the printf function prototype */
                  #include <stdio.h>
                  
                  
                  /* include the abs function prototype */
                  #include <stdlib.h>
                  
                  
                  /* quartz crystal frequency [Hz] */
                  #define xtal 4000000L
                  
                  
                  /* Baud rate */
                  #define baud 9600
                  
                  
                  /* maximum number of DS1820/DS18S20 connected to the bus */
                  #define MAX_DEVICES 8
                  
                  
                  /* DS1820/DS18S20 devices ROM code storage area,
                    9 bytes are used for each device
                    (see the w1_search function description),
                    but only the first 8 bytes contain the ROM code and CRC */
                  unsigned char rom_codes[MAX_DEVICES][9];
                  
                  
                  /* allocate space for ROM codes of the devices
                    which generate an alarm */
                  unsigned char alarm_rom_codes[MAX_DEVICES][9];
                  
                  
                  main()
                  {
                  unsigned char i,devices;
                  int temp;
                  
                  
                  /* initialize the USART control register
                    TX enabled, no interrupts, 8 data bits */
                  UCSRA=0x00;
                  UCSRB=0x08;
                  UCSRC=0x86;
                  
                  
                  /* initialize the USART's baud rate */
                  UBRRH=(xtal/16/baud-1) >> 8;
                  UBRRL=(xtal/16/baud-1) & 0xFF;
                  
                  
                  /* detect how many DS1820/DS18S20 devices
                    are connected to the bus and
                    store their ROM codes in the rom_codes array */
                  devices=w1_search(0xf0,rom_codes);
                  
                  
                  /* display the number */
                  printf("%-u DEVICE(S) DETECTED\n\r",devices);
                  
                  
                  /* if no devices were detected then halt */
                  if (devices==0) while (1); /* loop forever */
                  
                  
                  /* set the temperature alarms for all the devices
                    temp_low=25°C temp_high=35°C */
                  for (i=0;i<devices;i++)
                    {
                    printf("INITIALIZING DEVICE #%-u ", i+1);
                    if (ds1820_set_alarm(&rom_codes[i][0],25,35))
                      putsf("OK"); else putsf("ERROR");
                    };
                  
                  
                  while (1)
                     {
                     /* measure and display the temperature(s) */
                     for (i=0;i<devices;)
                       {
                       temp=ds1820_temperature_10(&rom_codes[i][0]);
                       printf("t%-u=%-i.%-u\xf8C\n\r",++i,temp/10,
                       abs(temp%10));     
                       };
                  
                  
                     /* display the number of devices which
                       generated an alarm */    
                     printf("ALARM GENERATED BY %-u DEVICE(S)\n\r",
                     w1_search(0xec,alarm_rom_codes));
                     };
                  }
                  .The best question deserves a better answer
                  =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                  «پناه»می برم «به خدا»
                  از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                  محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                  دیدگاه


                    #10
                    پاسخ : آموزش راه اندازی سنسور ds18b20

                    سلام کاش با بسکام هم توضیح بدید

                    دیدگاه


                      #11
                      پاسخ : آموزش راه اندازی سنسور ds18b20

                      متاسفانه در بسکام برای شبکه کردن ds18b20 ها کدی نوشتم اما پاسخی که از طرف سنسور میاد درست نیست!علتشو نمیدونم چیه!
                      .The best question deserves a better answer
                      =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                      «پناه»می برم «به خدا»
                      از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                      محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                      دیدگاه


                        #12
                        پاسخ : [آموزش] راه اندازی سنسور دمای DS18B20 با کد ویژن

                        سلام خسته نباشید تاپیک مفیدی هست . من در هیچ جا ندیدم کاملا درباره این توضیح داده بشه

                        نوشته اصلی توسط •.´™ مَسِِــــح`.•
                        متاسفانه در بسکام برای شبکه کردن ds18b20 ها کدی نوشتم اما پاسخی که از طرف سنسور میاد درست نیست!علتشو نمیدونم چیه!
                        میشه کد رو برام بفرستی نگاش بکنم .

                        اگه با بیسیک هم قرار بدیم عالی میشه . من 4 تا سنسور رو با بسکام راه اندازی کردم

                        دیدگاه


                          #13
                          پاسخ : [آموزش] راه اندازی سنسور دمای DS18B20 با کد وی&#16

                          بر اثر شدت اصابنیت Shift+delet شد :mrgreen:
                          شما همون کدتو بزار اینجا
                          بچه ها نیاز دارن بش
                          مرسی
                          .The best question deserves a better answer
                          =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                          «پناه»می برم «به خدا»
                          از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                          محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                          دیدگاه


                            #14
                            پاسخ : [آموزش] راه اندازی سنسور دمای DS18B20 با کد ویژن

                            بله اگه میشه کد برنامه با بیسیک رو بزارین . لطفا

                            دیدگاه


                              #15
                              پاسخ : [آموزش] راه اندازی سنسور دمای DS18B20 با کد ویژن

                              بسکام نسلش منقرض شده در حد دایناسور برو کد ویژن یاد بگیر تا نسل اونم منقرض نشده :applause: :applause: :applause: :applause:
                              زندگی با الکترونیک زیباست

                              دیدگاه

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