Table of Contents
1. Linh kiện cần thiết làm mạch cảm biến Max31865 giao tiếp STM32 đọc PT100
1.1 Vi điều khiển Arduino Max31865 giao tiếp STM32 đọc PT100
a. Giới thiệu
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như F0,F1,F2,F3,F4….. Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3. STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz. Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng. Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ… Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR Embedded Workbench, Keil C… Ở đây mình sử dụng Keil C nên các bài viết sau mình chỉ đề cập đến Keil C.Thông tin khác
Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit hiện nay không còn nhưng vi xử lý 8 bit vẫn còn mặc dù đã có vi xử lý 64 bit. Lý do sự tồn tại của vi xử lý 8 bit là phù hợp với một số yêu cầu điều khiển trong công nghiệp. Các vi xử lý 32 bit, 64 bit thường sử dụng cho các máy tính vì khối lượng dữ liệu của máy tính rất lớn nên cần các vi xử lý càng mạnh càng tốt. Các hệ thống điều khiển trong công nghiệp sử dụng các vi xử lý 8 bit hay 16 bit như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây chuyền sản xuất, …b. Sơ lược về STM32:
- 1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug.
- 2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình.
- Có chân Output riêng cho các chân mạch nạp trên MCU1.
- Có chân Output đầy đủ cho các chân MCU2.
- Chân cấp nguồn ngoài riêng cho MCU2 nếu không sử dụng nguồn từ USB.
- Thạch anh 32,768khz dùng cho RTC và Backup.
- Chân nạp dùng cho chế độ nạp boot loader.
- Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2.
c.Thông số kỹ thuật STM32
- Vi điều khiển: STM32F103C8T6.
- Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và cấp cho Vi điều khiển chính.
- Tích hợp sẵn thạch anh 8Mhz.
- Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC.
- Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,…
- Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
- Kích thước: 53.34 x 15.24mm
- Sử dụng với các mạch nạp:
- ST-Link Mini
- J-link
- USB TO COM
- Kết nối chân khi nạp bằng ST-Link Mini
- Nạp theo chuẩn SWD
- TCK — SWCLK
- TMS — SWDIO
- GND — GND
- 3.3V — 3.3V
d. Cấu hình
- ARM 32-bit Cortex M3 với clock max là 72Mhz.
- Bộ nhớ:
- 64 kbytes bộ nhớ Flash(bộ nhớ lập trình).
- 20kbytes SRAM.
- Clock, reset và quản lý nguồn.
- Điện áp hoạt động 2.0V -> 3.6V.
- Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD).
- Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz.
- Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz.
- Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC.
- Trong trường hợp điện áp thấp:
- Có các mode :ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ.
- Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính.
- 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ.
- Khoảng giá trị chuyển đổi từ 0 – 3.6V.
- Lấy mẫu nhiều kênh hoặc 1 kênh.
- Có cảm biến nhiệt độ nội.
- DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CPU.
- 7 kênh DMA.
- Hỗ trợ DMA cho ADC, I2C, SPI, UART.
- 7 timer.
- 3 timer 16 bit hỗ trợ các mode IC/OC/PWM.
- 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time..
- 2 watdog timer dùng để bảo vệ và kiểm tra lỗi.
- 1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay….
- Hỗ trợ 9 kênh giao tiếp bao gồm:
- 2 bộ I2C(SMBus/PMBus).
- 3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control).
- 2 SPIs (18 Mbit/s).
- 1 bộ CAN interface (2.0B Active)
- USB 2.0 full-speed interface
- Kiểm tra lỗi CRC và 96-bit ID.
e.Bộ nhớ
Vi điều khiển ATmega328:- 64 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
- 20 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.
1.2 Module chuyển đổi tín hiệu RTD to digital Max31865 giao tiếp STM32
a. Giới thiệu
MAX31865 giao tiếp STM32 đọ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.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 STM32
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.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
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 STM32
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 chuẩn truyền I2C
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 STM32 đọ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
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 STM32 đọ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 STM32 đọ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…!!!