Thông báo

Collapse
No announcement yet.

Nhờ giúp đỡ con DS18B20 luôn đọc 127 độ

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nhờ giúp đỡ con DS18B20 luôn đọc 127 độ

    Như chủ đề ạ. Em làm mạch dùng 18B20 đọc nhiệt độ, mô phỏng thì chạy bình thường nhưng vào mạch thật thì luôn hiện 127 độ.
    Em dùng codeVision:
    lcd_init(16);
    ds18b20_init(T,0,0,DS18B20_12BIT_RES);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("TIME:\n ");
    i2c_init();
    rtc_init(3,0,0);
    while (1)
    {
    // Place your code here
    rtc_get_time(&h,&m,&s);
    sprintf(LCD_Buffer,"%2d:%2d:%2d",h,m,s);
    lcd_gotoxy(8,0);
    lcd_puts(LCD_Buffer);
    Tem=ds18b20_temperature(T);
    sprintf(LCD_Buffer,"TEMP: %2d^C",Tem);
    lcd_gotoxy(0,1);
    lcd_puts(LCD_Buffer);

    }
    }
    P/s: Ko phải do mạch sai đâu ạ, vì em thử code khác lập trình bằng Winavr thì chạy bình thường.

  • #2
    bạn xem cái hàm này đã đúng chưa, các đáp ứng thời gian đúng chưa ? ds18b20_temperature(T); phần cứng thì trở kéo, nguồn cho ds1820 đã ổn chưa ? đo xung ở chân data của ds1820 xem có xung không ? và có đáp ứng reset ko ?

    Comment


    • #3
      Cảm ơn bác trả lời, bác cho em hỏi đo xung chân data như thế nào ạ ?

      Comment


      • #4
        Bạn đọc kỹ datasheet của ds1820, nó có các đáp ứng xung: reset, bit0, bit1, ack, command, data. Đầu tiên là kiểm tra xem nó có respone cái xung reset không đã.

        Comment


        • #5
          Có bác ạ. Reset được 18B20 bác ạ. Em kiểm tra datasheet rồi. Em cắm dây chuẩn. Dùng đúng trở treo 4.7k. Ko biết sao nữa. hix

          Comment


          • #6
            Nguyên văn bởi phucphan Xem bài viết
            Như chủ đề ạ. Em làm mạch dùng 18B20 đọc nhiệt độ, mô phỏng thì chạy bình thường nhưng vào mạch thật thì luôn hiện 127 độ.
            Em dùng codeVision:
            lcd_init(16);
            ds18b20_init(T,0,0,DS18B20_12BIT_RES);
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("TIME:\n ");
            i2c_init();
            rtc_init(3,0,0);
            while (1)
            {
            // Place your code here
            rtc_get_time(&h,&m,&s);
            sprintf(LCD_Buffer,"%2d:%2d:%2d",h,m,s);
            lcd_gotoxy(8,0);
            lcd_puts(LCD_Buffer);
            Tem=ds18b20_temperature(T);
            sprintf(LCD_Buffer,"TEMP: %2d^C",Tem);
            lcd_gotoxy(0,1);
            lcd_puts(LCD_Buffer);

            }
            }
            P/s: Ko phải do mạch sai đâu ạ, vì em thử code khác lập trình bằng Winavr thì chạy bình thường.
            Hình như thiếu hàm w1_init() trước hàm ds18b20_init() thì phải

            Comment


            • #7
              đã sửa được chưa bạn?

              Comment


              • #8
                Cảm ơn bác chu đáo, nhưng mãi em ko sửa được ? Có khi em xem lại phần cứng xem sao. Vì code này đơn giản và khá phổ biến, nhiều thằng bạn em chạy code này mạch của nó ko bị sao. Haizzzzz

                Comment


                • #9
                  Nguyên văn bởi phucphan Xem bài viết
                  Cảm ơn bác chu đáo, nhưng mãi em ko sửa được ? Có khi em xem lại phần cứng xem sao. Vì code này đơn giản và khá phổ biến, nhiều thằng bạn em chạy code này mạch của nó ko bị sao. Haizzzzz
                  Có khả năng là do thạch anh đó

                  Comment


                  • #10
                    Có khi cắm ngược ds1820 cháy mất rồi chăng? mình cũng có chú ds1820 mặc dù có đáp ứng reset nhưng ko trả lại data (toàn 0xFF) do cắm ngược GND -VCC . Nói về bán modul nhiệt đo nhiệt ds18b20 thì mình cũng có, đo từ -55 đến 125 phân giải 0.1 * . Ngoài ra còn nhiều chức năng khác như điều khiển PID, on/off, set nhiệt độ...

                    Comment

                    Về tác giả

                    Collapse

                    phucphan Tìm hiểu thêm về phucphan

                    Bài viết mới nhất

                    Collapse

                    Đang tải...
                    X