Table of Contents
1. Linh kiện cần thiết làm mạch cảm biến Max31865 giao tiếp Arduino đọc PT100
1.1 Vi điều khiển Arduino Max31865 giao tiếp Arduino đọc PT100
a. Giới thiệu
Arduino Uno R3 (Dip) có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).Các chức năng khác
Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các bảng mạch mở rộng khác nhau. Mạch Arduino Uno thích hợp cho những bạn mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất ( lập trình Robot, xe tự hành, điều khiển bật tắt led…).![Mach-dieu-khien-dong-co-buoc-DC-step-Arduino-uno-r3-1](https://huynhnhattung.com/wp-content/uploads/2021/01/Mach-dieu-khien-dong-co-buoc-DC-step-Arduino-uno-r3-1.png)
![các ứng dụng của vi điều khiển](https://huynhnhattung.com/wp-content/uploads/2020/08/cac-ung-dung-cua-vi-dieu-khien.png)
b. Chức năng của Arduino R3:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Các chức năng khác
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
- Arduino Uno R3 có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit. Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
![Mach-dieu-khien-dong-co-buoc-DC-step-Arduino-uno-r3-2 BH1750 giao tiếp Arduino](https://huynhnhattung.com/wp-content/uploads/2021/01/Mach-dieu-khien-dong-co-buoc-DC-step-Arduino-uno-r3-2.png)
c.Thông số kỹ thuật Arduino Uno R3 (Dip)
Datasheets | Atmega328 |
Standard Package | 27 |
Category | Integrated Circuits (ICs) |
Family | Embedded – Atmel |
Series | Atmega |
Packaging | Tube |
Core Processor | AVR |
Core Size | 8-Bit |
Speed | 16MHz |
Connectivity | I²C, SPI, UART / USART, USB |
Peripherals | Brown-out Detec t/ Reset, HLVD, POR, PWM, WDT |
Number of I /O | 14 |
Program Memory Size | 32KB |
Program Memory Type | FLASH |
EEPROM Size | 1KB |
RAM Size | 2K |
Voltage – Supply (Vcc/Vdd) | 4.2 V ~ 5.5 V |
Data Converters | A/D 6 x 10bit |
Oscillator Type | Internal |
Operating Temperature | -40°C ~ 85°C |
Package / Case | 28-SOIC (0.295″, 7.50mm Width) |
Other Names | Atmega328 |
d. Power
- LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
- VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 7-12VDC).
- 5V: Điện áp ra 5V (dòng điện trên mỗi chân này tối đa là 500mA).
- 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là 50mA).
- GND: Là chân mang điện cực âm trên board.
- IOREF: Điệp áp hoạt động của vi điều khiển trên Arduino UNO và có thể đọc điện áp trên chân IOREF. Chân IOREF không dùng để làm chân cấp nguồn.
e.Bộ nhớ
Vi điều khiển ATmega328:- 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
- 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
- 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.
f. Các chân đầu vào và đầu ra
Trên Board Arduino Uno có 14 chân Digital được sử dụng để làm chân đầu vào và đầu ra và chúng sử dụng các hàm pinMode(), digitalWrite(), digitalRead(). Giá trị điện áp trên mỗi chân là 5V, dòng trên mỗi chân là 20mA và bên trong có điện trở kéo lên là 20-50 ohm. Dòng tối đa trên mỗi chân I/O không vượt quá 40mA để tránh trường hợp gây hỏng board mạch. Ngoài ra, một số chân Digital có chức năng đặt biệt:- Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và truyền dữ liệu (TX) TTL.
- Ngắt ngoài: Chân 2 và 3.
- PWM: 3, 5, 6, 9 và 11 Cung cấp đầu ra xung PWM với độ phân giải 8 bit bằng hàm analogWrite ().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này hỗ trợ giao tiếp SPI bằng thư viện SPI.
- LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
- TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
1.2 Module chuyển đổi tín hiệu RTD to digital Max31865 giao tiếp Arduino
a. Giới thiệu
MAX31865 giao tiếp Arduino đọc PT100 bằng Mạch chuyển tín hiệu RTD to Digital PT100/PT1000 được sử dụng để khuếch đại và chuyển tín hiệu từ các loại cảm biến Platinum RTD như PT100/PT1000 sang Digtal chuẩn giao tiếp SPI để có thể dễ dàng giao tiếp với Vi điều khiển, mạch có chất lượng linh kiện và gia công tốt, độ bền và độ ổn định cao, phù hợp cho các ứng dụng đo nhiệt độ cần độ chính xác cao sử dụng PT100/PT1000.![module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602](https://huynhnhattung.com/wp-content/uploads/2022/02/module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602.png)
b. Thông số kỹ thuật
- IC chính: RTD to Digital MAX31865
- Điện áp sử dụng: 3~5VDC
- Điện áp giao tiếp: 3~5VDC
- Chuẩn giao tiếp: SPI
- Sử dụng cho các loại cảm biến RTD: PT100 / PT1000,…
- Kích thước: 28 x 26mm
1.3 Cảm biến PT100 sử dụng Max31865 giao tiếp Arduino
a. Giới thiệu
Là cảm biến nhiệt độ thì thường có 3 dây là thông dụng. Trong đó có 2 dây chung màu trắng và 1 dây màu đỏ, loại này đo nhiệt độ dựa trên sự thay đổi điện trở của cảm biến. Ngoài ra còn có loại 4 dây và loại 2 dây. Trong các họ nhiệt điện trở thì còn có loại can nhiệt Pt1000, Pt50, cảm biến nhiệt độ Pt100 kép (đôi). Cảm biến nhiệt độ PT100 được dùng phổ biến trong công nghiệp, cảm biến có chất lượng tốt, sai số nhỏ, độ bền cao. Cảm biến nhiệt độ Thermocouple RTD PT100 loại B 2m chịu nhiệt cao được dùng để đo nhiệt độ cao với sai số rất nhỏ chỉ từ 0.2 độ C trở xuống, khoảng đo từ -50 đến 500 độ C. Ngoài ra dây cảm biến PT100 loại B chịu nhiệt cao được làm bằng sợi thủy tinh bọc kim loại cho độ bền, độ chịu nhiệt và độ cách nhiệt cao, đầu cảm biến được làm bằng thép không gỉ 304 và đổ keo đặc chống nước.![module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602-cac-loai-pt100-1](https://huynhnhattung.com/wp-content/uploads/2022/02/module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602-cac-loai-pt100-1.png)
b. Thông số kỹ thuật Pt100
- Sử dụng lõi cảm biến PT100 từ hãng Heraous (Made in Germany).
- Có đầu dò bằng thép không rỉ 304 đổ keo chống nước.
- Dây dẫn bằng sợi thủy tinh bọc kim loại dài tùy vào ứng dụng có chiều dài từ 1m-5m.
- Nhiệt độ hoạt động : từ -50 đến 500 độ C.
- Độ sai số < 0.2 độ C.
- Có 3 loại: 2 dây, 3 dây, 4 dây.
c. Các loại cảm biến PT100
![module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602-cac-loai-pt100](https://huynhnhattung.com/wp-content/uploads/2022/02/module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602-cac-loai-pt100.png)
Cảm biến nhiệt độ pt100 2 dây
Cảm biến nhiệt độ pt100 2 dây hay pt100 2 dây là loại đầu dò nhiệt độ pt100 có 2 dây ngõ ra. Cảm biến nhiệt độ pt100 đa phần là loại 3 dây nhưng trong một số trường hợp lại sử dụng loại 2 dây. Về hình dáng bên ngoài có thể ta thấy nó giống hoàn toàn với cảm biến nhiệt độ 2 dây can nhiệt loại K; nhưng về bên trong thì khác nhau rất xa. Tín hiệu truyền về của cảm biến nhiệt độ pt100 2 dây là điện trở 100 ohm chứ ko phải tín hiệu mili-voltage. Cảm biến nhiệt độ pt100 2 dây được thiết kế đơn giản sử dụng loại hai dây dẫn. Nó được sử dụng khi cần đo các ứng dụng mà độ chính xác không cần cao. Trong loại pt100 2 dây không được cấu tạo bù ở điện trở của dây dẫn tín hiệu nên nó sẽ được nối với bộ chuyển đổi, gây ra sự thiếu chính xác. Vì vậy không nhiều ứng dụng lựa chọn cảm biến hai dây.Cảm biến nhiệt độ pt100 3 dây
Cảm biến nhiệt độ pt100 3 dây hay pt100 3 dây, can nhiệt pt100 3 dây là loại cảm biến nhiệt độ rtd được sử dụng rất nhiều trong công nghiệp. Loại này có nhiều ưu điểm như: độ chính xác tương đối cao; dãy đo rộng từ -80ºC ~ 600ºC, một số cảm biến nhiệt độ pt100 3 dây có thiết kế đặc biệt để chịu được nhiệt độ từ -200ºC ~ 850ºC. Tuy nhiên trong các ứng dụng đo nhiệt độ cao người ta thường sử dụng can nhiệt loại K để tăng độ bền của cảm biến. Các loại cảm biến nhiệt độ pt100 3 dây là dạng đơn có nghĩa là có một đầu dò bên trong sẽ cho ra 3 dây. Ngoài ra trong một số ứng dụng sẽ có loại một cảm biến sẽ có hai đầu dò bên trong với 6 dây, hai loại cảm biến này có thể hoạt động song song và độc lập nhau để đưa về hai vị trí khác nhau. Trong cấu tạo 3 dây, bù được thực hiện bằng việc sử dụng dây thứ ba với giả định rằng nó sẽ có điện trở giống như hai dây còn lại và bù tương tự được áp dụng cho cả ba dây. Tuy nhiên trên thực tế, sẽ có sự khác nhau giữa L1 và L3 vì khi sản xuất độ dài không đều, kết nối không được chặt, làm cho cứng từ uốn cong và bị ăn mòn thiết bị đầu cuối.Cảm biến nhiệt độ pt100 4 dây
Cảm biến nhiệt độ pt100 4 dây hay pt100 4 dây là loại can nhiệt pt100 phổ biến vì điện trở dây tín hiệu không quan trọng đối với phép đo. Loại này sử dụng nguyên lý đo là cung cấp 1 dòng điện có giá trị khoảng 150 micro amps đi qua hai đầu cảm biến; và điện áp được đo dựa vào hai dây khác bằng vôn kế có điện trở và độ phân giải cao. Cảm biến nhiệt độ pt100 4 dây có giá thành cao hơn với loại 2 và 3 dây. Cảm biến nhiệt độ pt100 4 dây chỉ thích hợp cho các ứng dụng có độ chính xác gần như tuyệt đối, vì cảm biến nhiệt độ pt100 3 dây tuy có giá thấp hơn cảm biến nhiệt độ pt100 4 dây nhưng có độ chính xác tương đối cao, đủ đáp ứng nhu cầu cho hầu hết các các ứng dụng.1.4 Oled cho mạch chuyển đổi RTD to digital Max31865 giao tiếp Arduinno
a. Giới thiệu
Màn hình Oled 1.3 inch giao tiếp I2C cho khả năng hiển thị đẹp, sang trọng, rõ nét vào ban ngày và khả năng tiết kiệm năng lượng tối đa với mức chi phí phù hợp, màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO. Màn hình OLED SH1106 với kích thước 1.3 inch, cho khả năng hiển thị hình ảnh tốt với khung hình 128×64 pixel. Ngoài ra, màn hình còn tương thích với hầu hết các vi điều khiển hiện nay thông qua giao tiếp SPI. Màn hình sử dụng driver SH1106 cùng thiết kế nhỏ gọn sẽ giúp bạn phát triển các sản phẩm DIY hoặc các ứng dụng khác một cách nhanh chóng.![màn hình oled 1.3in chuẩn i2c](https://huynhnhattung.com/wp-content/uploads/2020/01/oled.jpg)
Màn hình Oled chuẩn truyền I2C
![màn hình oled chuẩn truyền SPI](https://huynhnhattung.com/wp-content/uploads/2020/01/oled1.3in_spi.jpg)
Màn hình Oled chuẩn truyền SPI
b. Thông số kỹ thuật
- Điện áp sử dụng: 2.2~5.5VDC
- Công suất tiêu thụ: 0.04w
- Góc hiển thị: lớn hơn 160 độ
- Số điểm hiển thị: 128×64 điểm.
- Độ rộng màn hình: 1.3 inch.
- Màu hiển thị: Trắng / Xanh Dương.
- Giao tiếp: I2C hoặc SPI tùy loại
- Driver: SH1106
- Kích thước 1.3 inch (128x64px)
- Góc nhìn tối đa: 160°
- Nhiệt độ làm việc: -30°V đến 80°C
- Tương thích với hầu hết các board như: Arduino, ESP8266, ESP32, STM32,
2. Hướng dẫn đồ án Max31865 giao tiếp Arduino đọc PT100 hiển thị Oled
Phần này chưa được chia sẻ.
LIÊN HỆ thông tin ở TẠI ĐÂY để được hổ trợ tốt hơn.
Phần cứng
![module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602-cac-loai-pt100-3](https://huynhnhattung.com/wp-content/uploads/2022/02/module-rtd-to-digital-max31865-giao-tiep-arduino-hien-thi-lcd1602-cac-loai-pt100-3.png)
Phần mềm
#include <Wire.h> //Arduino Uno; SDA = A4, SCL = A5
#include <SPI.h>
//CS => CS //Arduino 10
//MISO => SDO //Arduino 12
//MOSI => SDI //Arduino 11
//SCK => SCK //Arduino 13
//Variables for the PT100 boards
double resistance;
uint8_t reg1, reg2; //reg1 holds MSB, reg2 holds LSB for RTD
uint16_t fullreg; //fullreg holds the combined reg1 and reg2
double temperature;
//Variables and parameters for the R - T conversion
double Z1, Z2, Z3, Z4, Rt;
double RTDa = 3.9083e-3;
double RTDb = -5.775e-7;
double rpoly = 0;
//--Display---------------------------------------------
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin
Adafruit_SSD1306 display(OLED_RESET);
const int chipSelectPin = 10;
void setup()
{
SPI.begin();
Serial.begin(115200); //Start serial
pinMode(chipSelectPin, OUTPUT); //because CS is manually switched
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextSize(3);
display.setTextColor(SSD1306_WHITE);
}
void loop()
{
readRegister();
convertToTemperature();
printDisplay();
}
void printDisplay()
{
display.clearDisplay(); // Clear display
display.setCursor(0, 0); // Start at top-left corner
display.print(temperature);
display.display();
}
void convertToTemperature()
{
Rt = resistance;
Rt /= 32768;
Rt *= 430; //This is now the real resistance in Ohms
Z1 = -RTDa;
Z2 = RTDa * RTDa - (4 * RTDb);
Z3 = (4 * RTDb) / 100;
Z4 = 2 * RTDb;
temperature = Z2 + (Z3 * Rt);
temperature = (sqrt(temperature) + Z1) / Z4;
if (temperature >= 0)
{
Serial.print("Temperature: ");
Serial.println(temperature); //Temperature in Celsius degrees
return; //exit
}
else
{
Rt /= 100;
Rt *= 100; // normalize to 100 ohm
rpoly = Rt;
temperature = -242.02;
temperature += 2.2228 * rpoly;
rpoly *= Rt; // square
temperature += 2.5859e-3 * rpoly;
rpoly *= Rt; // ^3
temperature -= 4.8260e-6 * rpoly;
rpoly *= Rt; // ^4
temperature -= 2.8183e-8 * rpoly;
rpoly *= Rt; // ^5
temperature += 1.5243e-10 * rpoly;
Serial.print("Temperature: ");
Serial.println(temperature); //Temperature in Celsius degrees
}
//Note: all formulas can be found in the AN-709 application note from Analog Devices
}
void readRegister()
{
SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE1));
digitalWrite(chipSelectPin, LOW);
SPI.transfer(0x80); //80h = 128 - config register
SPI.transfer(0xB0); //B0h = 176 - 10110000: bias ON, 1-shot, start 1-shot, 3-wire, rest are 0
digitalWrite(chipSelectPin, HIGH);
digitalWrite(chipSelectPin, LOW);
SPI.transfer(1);
reg1 = SPI.transfer(0xFF);
reg2 = SPI.transfer(0xFF);
digitalWrite(chipSelectPin, HIGH);
fullreg = reg1; //read MSB
fullreg <<= 8; //Shift to the MSB part
fullreg |= reg2; //read LSB and combine it with MSB
fullreg >>= 1; //Shift D0 out.
resistance = fullreg; //pass the value to the resistance variable
//note: this is not yet the resistance of the RTD!
digitalWrite(chipSelectPin, LOW);
SPI.transfer(0x80); //80h = 128
SPI.transfer(144); //144 = 10010000
SPI.endTransaction();
digitalWrite(chipSelectPin, HIGH);
Serial.print("Resistance: ");
Serial.println(resistance);
}
3. Hoạt động của mạch cảm biến Max31865 giao tiếp Arduino đọc PT100
Khi cấp điện hệ thống hoạt động, vi điều khiển hiển thị thông tin ban đầu. lúc này vi điều khiển chờ tín hiệu từ module max31865 chuyển tín hiệu từ cảm biến nhiệt độ RTD sau đó gửi vào. Khi nhận tín hiệu từ vi điều khiển tính toán và xử lý đồng thời hiển thị thông tin lên màn hình Oled theo yêu cầu đã được lập trình quy định.4. Hoạt động mạch cảm biến Max31865 giao tiếp Arduino đọc PT100 các bạn xem video:
Ngoài ra còn nhiều Phần và các môn khác
Đồ án điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 1 Mạch điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 2 Thiết kế mạch điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 3 Vi xử lý, Lập trình vi điều khiển Pic – 8051 – Avr – Phần 4 Tổng hợp File ĐỒ ÁN Điện tử cơ bản Tổng hợp File ĐỒ ÁN Viễn thông Tổng hợp File ĐỒ ÁN PLC Tổng hợp File ĐỒ ÁN Cung cấp điện
Chúc các bạn thành công…!!!