Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Tài liệu
Bài 11: PIC Đọc nhiệt độ PT 100 hiển thị lên LCD 16x2
Yêu cầu: Đọc nhiệt độ từ cảm biến PT100 và hiển thị lên LCD 16x2
Linh kiện chuẩn bị
- PIC 16F887
- Biến trở 1K Ohm
- Điện trở 250 Ohm
- Nguồn 24V
- Cảm biến nhiệt độ PT100
- Bộ chuyển đổi nhiệt độ cho PT100 J2H16
- LCD 16x2
Mạch đi dây

Vì arduino chỉ đọc được giá trị từ 0 - 5V nên mà bộ chuyển đổi J2H16 sẽ xuất tín hiệu 4 - 20mA nên sẽ gắn thêm điện trở để chuyển đổi giá trị. Giá trị điện trở sẽ = 5V/20mA = 250Ohm. Sau khi gắn điện trở giá trị mà arduino sẽ đọc được từ bộ chuyển đổi sẽ trong khoảng 4mA*250 - 20mA*250 = 1 - 5V
Biểu đồ phương trình chuyển đổi

Arduino đọc giá trị 0 - 5V sẽ chuyển đổi thành số 0-1024 nên phương trình chuyển đổi Y = 5/1024x (1)(y là Volt, x là số arduino đọc được). Bộ chuyển đổi J2H16 kết hợp điện trở sẽ quy đổi tín hiêụ 0 - 400 độ C sẽ chuyển đổi thành 1- 5V nên ta có phương trình chuyển đổi Y = 100x - 100 (2)(y là nhiệt độ, x là Volt). Tổng hợp (1)(2) ta có phương trình biểu diển nhiệt độ theo số đọc được của Arduino: Y = 125/256x-100
Chương trình điều khiển:
#include
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include
unsigned int16 nd1;
void khoitao_ADC0()
{
setup_adc_ports(SAN0|VSS_VDD);
setup_adc (adc_clock_div_32);
delay_us(100);
}
void main()
{
set_tris_a(0xff);
khoitao_ADC0();
lcd_init ();
//lcd_putc("NHIET DO LM35:");
while(TRUE)
{
set_adc_channel(0);
delay_us(10);
nd1= read_adc()*125/256-100;
LCD_GOTOXY(1,1);
printf(LCD_PUTC, "NHIET DO = %02LU C",nd1);
LCD_GOTOXY(14,1);
LCD_PUTC(0xDF);
}
}
Mình sẽ để file chương trình code ở dưới.







