help: công thức tính nhiệt độ cho LM35

Thảo luận trong 'AVR' bắt đầu bởi huan.ddh, 26 Tháng sáu 2013.

Users Viewing Thread (Users: 0, Guests: 0)

Lượt xem: 1,851

  1. Đăng ngày 26 Tháng sáu 2013 #1

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    e chào các bác.
    e đang tìm hiểu LM35 để đo hiển thị nhiệt độ lên LCD1602 dùng avr.
    e có tham khảo trên mạng cách tính như sau:
    Dùng ADC 10 bit! Giá trị của ADC lầy từ [-1024 đến 1024] nên ta chỉ lấy giá trị dương giá trị ADC của nó là 0 đến 2048.
    + Bước thay đổi của ADC là n = 5/2048 = 2.44mV
    + Tại 0 độ C thì giá trị đầu ra của LM35 là 0mV tương ứng với ADC = 0
    Với ADC = 1 thì điện áp tương úng là 2.44mV mà LM35 thay đổi trong 10mV. Nên giá trị ADC thay đổi trong 1 đơn vị thì nhiệt độ phải thay đổi là (2.44mV/10mV) = 0.244
    Vậy ta có công thức tính toán đầy đủ cho nhiệt độ đầu ra là
    nhiệt đọ = ADC * 0.244 = ?
    xin hỏi các bác công thức này có đúng ko?nêu sai bác nào có thể chỉ cho e cách tính được ko?
    thank các bác!
    CHỦ ĐỀ NGẪU NHIÊN CÙNG CHUYÊN MỤC
    CHIA SẺ Share





    phongict thích bài này.
  2. Đăng ngày 26 Tháng sáu 2013 #2

    Dukebk.dt7

    Member

    Số bài viết: 50
    Đã được thích: 30
    Điểm thành tích: 18
    Giới tính: Nam
    Tiền:
    $4,145
    Chào bạn!
    Bộ ADC 10 bit thì giá trị của ADC sẽ là từ 0-1024 (2^10).
    Vì thế bước thay đổi sẽ là n=5/1024.
    Khi thay đổi 1 độ thì điện áp ra của LM35 sẽ thay đổi 10mV.
    Vì vậy công thức nhiệt độ sẽ là T=ADC x n /10^-2.
    Bạn chỉ bị nhầm về bộ ADC 10bit thôi, vì thế công thức tính sẽ bị sai.
    Chúc bạn thành công.
  3. Đăng ngày 26 Tháng sáu 2013 #3

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    thank bác!
  4. Đăng ngày 26 Tháng sáu 2013 #4

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    thank bác!
  5. Đăng ngày 27 Tháng sáu 2013 #5

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    e tính theo công thức của bác nhưng thấy nó không đúng
    ADC của e đọc từ LM35=14
    e thay vào công thức của bác thì nó là 6.835975
    thế có nghĩa là sao hả bác?
  6. Đăng ngày 27 Tháng sáu 2013 #6

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    e tính mấy lần rồi mà vẫn thế:(
  7. Đăng ngày 27 Tháng sáu 2013 #7

    an.dxuan

    Nhóm MCU

    Số bài viết: 54
    Đã được thích: 28
    Điểm thành tích: 18
    Giới tính: Nam
    Tiền:
    $2,172
    bạn gửi code với mo phỏng lên đi mọi người xem rồi chỉnh cho
  8. Đăng ngày 27 Tháng sáu 2013 #8

    an.dxuan

    Nhóm MCU

    Số bài viết: 54
    Đã được thích: 28
    Điểm thành tích: 18
    Giới tính: Nam
    Tiền:
    $2,172
    bạn gửi code với mo phỏng lên đi mọi người xem rồi chỉnh cho
  9. Đăng ngày 27 Tháng sáu 2013 #9

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    e tính ra rồi ,do e khai báo sai. bác xem hộ e nó hiển thị nhưng nhiệt độ cứ nhảy từ 27-31.
    thanks bác!

    Các file đính kèm:

  10. Đăng ngày 27 Tháng sáu 2013 #10

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    e tính ra rồi ,do e khai báo sai. bác xem hộ e nó hiển thị nhưng nhiệt độ cứ nhảy từ 27-31.
    thanks bác!
  11. Đăng ngày 27 Tháng sáu 2013 #11

    huan.ddh

    Member

    Số bài viết: 56
    Đã được thích: 9
    Điểm thành tích: 8
    Giới tính: Nam
    Tiền:
    $1,520
    e ko mô phỏng proteus. e nạp trực tiếp vào mạch
  12. Đăng ngày 27 Tháng sáu 2013 #12

    an.dxuan

    Nhóm MCU

    Số bài viết: 54
    Đã được thích: 28
    Điểm thành tích: 18
    Giới tính: Nam
    Tiền:
    $2,172
    trong công thức Temp=((read_adc(4)*4.45)/(0.01*1024)); thì read_adc(4) là kiểu int ,4.45 là kiểu float nên phép tính của bạn sẽ tự ép thành kiểu int ,bạn thay đổi công thức đó thành Temp=(((float)read_adc(4)*4.45)/(0.01*1024)); rồi biên dịch lại và nạp xem nhé
  13. Đăng ngày 27 Tháng sáu 2013 #13

    an.dxuan

    Nhóm MCU

    Số bài viết: 54
    Đã được thích: 28
    Điểm thành tích: 18
    Giới tính: Nam
    Tiền:
    $2,172
    trong công thức Temp=((read_adc(4)*4.45)/(0.01*1024)); thì read_adc(4) là kiểu int ,4.45 là kiểu float nên phép tính của bạn sẽ tự ép thành kiểu int ,bạn thay đổi công thức đó thành Temp=(((float)read_adc(4)*4.45)/(0.01*1024)); rồi biên dịch lại và nạp xem nhé
  14. Đăng ngày 25 Tháng năm 2014 #14

    coolchicken01

    New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 1
    Giới tính: Nam
    Tiền:
    $2
    bạn ơi cho mình hỏi? tính theo công thức này nhiệt độ nếu có thay đổi thì mỗi lần thay đổi 2 độ, vd: từ 29 lên 31 hay 33. làm thế nào để chỉ thay đổi 1 độ thôi??
  15. Đăng ngày 26 Tháng năm 2014 #15

    BanLinhKien.Vn

    Nhóm MCU

    Số bài viết: 192
    Đã được thích: 66
    Điểm thành tích: 28
    Nơi ở: Số 11 Ngõ 66 Đại Cồ Việt - Hai Bà Trưng - Hà Nội
    Chào bạn!
    Việc giá trị nhiệt độ thay đổi 2 độ thì vi điều khiển mới xác định được là không phải do công thức tính này mà do bộ ADC bạn sử dụng. Nếu bạn sử dụng bộ ADC có độ phân giải lớn thì bạn sẽ phát hiện được những bước thay đổi nhiệt độ nhỏ hơn.
  16. Đăng ngày 12 Tháng sáu 2014 #16

    bienhaui

    New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 1
    Giới tính: Nam
    Tiền:
    $2
    Sai luồng chút. nhưng mình dùng DS18B20

    mình dùng bản codevisions1.24 , thư viện của nó chỉ có hàm này thôi

    int Temp;
    Temp=ds1820_temperature_10(0);

    Mình đọc và in lên màn hình sao nó toàn là giá trị 10240 thôi, bạn nào giải thích giùm với
  17. Đăng ngày 12 Tháng sáu 2014 #17

    BanLinhKien.Vn

    Nhóm MCU

    Số bài viết: 192
    Đã được thích: 66
    Điểm thành tích: 28
    Nơi ở: Số 11 Ngõ 66 Đại Cồ Việt - Hai Bà Trưng - Hà Nội

Chia sẻ trang này