DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển AVR

[HỌC AVR] BÀI 8: GIAO TIẾP CẢM BIẾN NHIỆT ĐỘ DS18B20

26 Tháng Sáu, 2022
in AVR, Vi Điều Khiển
401 4

Xin chào các bạn!
  Trong bài viết này, mình sẽ hướng dẫn các bạn lập trình đo nhiệt độ môi trường sử dụng cảm biến nhiệt độ DS18B20, nhiệt độ được hiển thị lên     LCD16x2 với Atmega16. Project chạy trên KIT AVR V4.

Chú ý : Source code bài viết dưới đây được biên dịch bằng phần mềm CodeVisionAVR để biên dịch code không lỗi xin vui lòng Download bản CodeVisionAVR Tại Đây

I.SƠ ĐỒ PHẦN CỨNG
Trên KIT AVR V4 hỗ trợ các bạn khối DS18B20 có sơ đồ như sau:

Trong đó, chân dữ liệu của DS18B20 được kết nối với PORTD_7 của Atmega16.
Đặc điểm kỹ thuật của DS18B20:

  • Sử dụng chuẩn giao tiếp 1 WIRE:​
    • Nhiều cảm biến có thể kết nối vào cùng 1 dây dữ liệu (chiều dài tối đa khoảng 300m).​
    • Không hạn chế số lượng cảm biến kết nối.​
  • Có thể cấp nguồn nuôi bằng đường dữ liệu, điện áp nguồn nuôi trong khoảng 3.0V – 5.5V.​
  • Dải nhiệt độ đo được -55oC – 125oC ( chính xác đến 0.5oC trong dải -10oC – 85oC).​
  • Có thể cài đặt độ phân giải khi đo bằng phần mềm: 9 bit, 10 bit, 11 bit, 12 bit (độ chính xác của nhiệt độ đo được tương ứng: 0.5, 0.25, 0.125, 0.0625).​
  • Có cờ báo khi nhiệt độ đo được nằm ngoài khoảng giá trị nhiệt độ cài đặt.​
  • Mỗi cảm biến có một mã định danh 64bit duy nhất chứa trong bộ nhớ ROM.​

II.LẬP TRÌNH PHẦN MỀM

Các bạn cấu hình GPIO:

  • PORTC3:5 (các chân điều khiển LCD16x2), PORTB4:7 (các chân dữ liệu LCD16x2) là OUTPUT với mức điện áp đầu ra ban đầu là mức 1.​
  • PORTD7 là INPUT có trở kéo lên bên trong.​
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=1 State5=1 State4=1 State3=T State2=T State1=T State0=T
PORTB=0xF0;
DDRB=0xF0;
 
// Port C initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=1 State4=1 State3=1 State2=T State1=T State0=T
PORTC=0x38;
DDRC=0x38;
 
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=P State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x80;
DDRD=0x00;

 

Hàm DS18B20_Config(15,40,DS18B20_9BIT_RES): Đây là hàm cấu hình trước khi đo cho DS18B20 (giá trị nhiệt độ ngường, độ phân giải khi đo) trong File ds18b20 thuộc Folder User:

void DS18B20_Config(uint8_t temp_low, uint8_t temp_high, uint8_t resolution)
{
    resolution=(resolution<<5)|0x1f;
    DS18B20_WriteFunc(DS1820_CMD_WRITESCRPAD);        // Cho phep ghi 3 byte vao bo nho nhap:
    DS18B20_WriteByte(temp_high);  // byte 2: Th
    DS18B20_WriteByte(temp_low);    // byte 3: Tl
    DS18B20_WriteByte(resolution);  // byte 4: configuration register
    DS18B20_WriteFunc(DS1820_CMD_COPYSCRPAD);        // Ghi vao EEPROM
}

 

Các bạn sử dụng các hàm float DS18B20_ReadTemp(void) trong File ds18b20 thuộc Folder Userđể đo nhiệt độ môi trường:

float DS18B20_ReadTemp(void)
{
    float temp;
    uint8_t buff_temp1,buff_temp2;
    DS18B20_WriteFunc(DS1820_CMD_CONVERTTEMP);  // Khoi dong qua trinh do va chuyen doi nhiet do ra so nhi phan
    delay_us(200);
    DS18B20_WriteFunc(DS1820_CMD_READSCRPAD);  // Doc du lieu tu bo nho DS18b20
    buff_temp1 = DS18B20_ReadByte();
    temp=((float)(buff_temp1&0x0f))/16;            // Lay phan thuc cua gia tri nhiet do
    buff_temp2 = DS18B20_ReadByte();           
    buff_temp1 =((buff_temp1&0xf0)>>4)|((buff_temp2&0x0f)<<4) ;    // Lay phan nguyen cua gia tri nhiet do
    temp=temp+buff_temp1;
    return temp; 
}

 

Thực hiện chương trình chính:

while(1)
{
    Temp=DS18B20_ReadTemp();
    sprintf(str,"Temp: %2.2f C    ",Temp);
    LCD16X2_Gotoxy(0,1);
    LCD16X2_Puts(str);     
}

 

Link dowload File Code của chương trình TẠI ĐÂY :

Tags: atmega16avrCodeVisionAVRds18b20lcd16x2
Share301Tweet188

Related Posts

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK
Điện Tử Cơ Bản

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

19 Tháng Sáu, 2022
Các hiệu ứng code cơ bản của LCD 16×2 với Arduino
Arduino

Các hiệu ứng code cơ bản của LCD 16×2 với Arduino

2 Tháng Bảy, 2022
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20
AVR

[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

12 Tháng Sáu, 2022
Next Post
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

[HỌC AVR] BÀI 9: HIỂN THỊ LED 7 THANH

[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

[HỌC AVR] BÀI 10: HIỂN THỊ LCD128x64 LOẠI CHIP KS0108

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz