Giới thiệu dự án

Trong lĩnh vực kỹ thuật điện tử, viễn thông và điều khiển tự động, thiết bị đo dạng sóng (Digital Storage Oscilloscope - DSO) đóng vai trò là "đôi mắt" của kỹ sư để phân tích, chẩn đoán và kiểm thử tín hiệu thời gian thực. Theo thống kê từ ngành thiết bị đo lường công nghiệp, các dòng máy hiện sóng chuyên dụng từ các hãng lớn (như Tektronix, Keysight, Rigol) thường có giá thành dao động từ 300 USD đến hàng ngàn USD. Mức chi phí này tạo rào cản tài chính lớn đối với sinh viên kỹ thuật, các phòng thí nghiệm giáo dục và các nhà nghiên cứu độc lập khi cần trang bị thiết bị đo đạc cá nhân tại nhà.

Vấn đề cốt lõi đặt ra là làm thế nào để xây dựng một thiết bị đo sóng số có độ chính xác cao, khả năng đáp ứng thời gian thực ổn định, giao diện trực quan, hỗ trợ lưu trữ dữ liệu dạng sóng nhưng vẫn đảm bảo chi phí linh kiện tối ưu.

Đề tài "Thiết kế và thi công máy đo dạng sóng" được thực hiện tại Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM nhằm giải quyết bài toán trên thông qua việc ứng dụng vi điều khiển 32-bit hiệu năng cao.

Các mục tiêu cụ thể của dự án:

  1. Thiết kế và thi công khối tiền xử lý tín hiệu tương tự (Analog Front-End) cho phép thu nhận cả tín hiệu xoay chiều (AC) và một chiều (DC) trong dải điện áp mở rộng $\pm 12\text{V}$.
  2. Lập trình cấu hình bộ chuyển đổi tín hiệu tương tự sang số (ADC 12-bit) tốc độ cao trên vi điều khiển ARM Cortex-M4 nhằm số hóa chính xác biên độ và chu kỳ tín hiệu.
  3. Thiết kế giao diện hiển thị đồ họa dạng sóng trực quan trên màn hình cảm ứng màu TFT LCD 7 inch thông qua giao tiếp phần cứng tốc độ cao.
  4. Tích hợp tính năng chụp và lưu trữ dữ liệu đồ thị dạng sóng trực tiếp sang USB Flash Drive dưới định dạng ảnh Bitmap (.BMP) chuẩn Windows không cần thông qua máy tính trung gian.
  5. Kiểm nghiệm, đánh giá sai số đo đạc trên 5 dạng sóng cơ bản: DC, Sin, Vuông, Tam giác và Răng cưa.

Kết quả đo lường kỳ vọng bao gồm: Tần số lấy mẫu đạt mức MSPS đáp ứng dải tần số âm tần và trung tần, sai số biên độ dưới $5%$, tốc độ làm tươi đồ họa đạt trên 30 khung hình/giây (FPS), và thời gian ghi ảnh Bitmap vào USB dưới 1.5 giây. Phạm vi đề tài tập trung vào việc đo lường tín hiệu điện áp từ $-12\text{V}$ đến $+12\text{V}$ phục vụ mục đích học tập, thực hành và nghiên cứu ứng dụng.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi tiến hành thiết kế phần cứng, nhóm nghiên cứu đã khảo sát và đánh giá ưu - nhược điểm của các giải pháp máy đo hiện sóng hiện có trên thị trường:

Tiêu chí Máy hiện sóng phòng Lab (Rigol DS1054Z) Thiết bị đo USB qua PC (Hantek 6022BE) Máy đo tự chế vi điều khiển 8-bit (AVR/PIC) Giải pháp đề tài (STM32F407 DSO)
Giá thành Rất cao (> 350 USD) Trung bình (~ 70 USD) Rất thấp (< 15 USD) Tối ưu (~ 35 - 45 USD)
Tính độc lập Hoạt động độc lập Phụ thuộc máy tính Hoạt động độc lập Hoạt động độc lập
Hiển thị Màn hình màu 7 inch Màn hình máy tính LCD 16x2 / OLED 0.96 inch Màn hình màu TFT 7 inch cảm ứng
Tốc độ xử lý ASIC / FPGA chuyên dụng Phụ thuộc phần mềm PC 8-bit 16MHz (Rất chậm) 32-bit Cortex-M4F 168MHz (Rất mạnh)
Lưu trữ ảnh USB Host tích hợp Lưu trực tiếp trên PC Không hỗ trợ USB Host MSC (.BMP trực tiếp)

Hệ thống yêu cầu được phân loại theo mô hình MoSCoW:

  • Must have (Bắt buộc): Đo được tín hiệu AC/DC dải $\pm 12\text{V}$, hiển thị sóng liên tục trên LCD TFT 7 inch, thay đổi thang đo Volt/Div và Time/Div, lưu ảnh chụp màn hình sang USB.
  • Should have (Nên có): Điều khiển cảm ứng điện trở mượt mà với IC chuyên dụng TSC2046, tự động tính toán điện áp đỉnh - đỉnh ($V_{pp}$) và tần số ($f$).
  • Could have (Có thể có): Lọc nhiễu kỹ thuật số bằng thuật toán trung bình trượt, hỗ trợ nhiều chế độ kích hoạt (Triggering: Auto/Normal).
  • Won't have (Chưa thực hiện): Băng thông siêu cao trên 50MHz và phân tích phổ tín hiệu FFT phức tạp (dành cho các phiên bản phát triển tiếp theo).

Thiết kế hệ thống

Kiến trúc hệ thống bao gồm 5 khối chức năng chính được liên kết chặt chẽ:

[ Tín hiệu vào (±12V AC/DC) ] 
              │
              ▼
    [ Khối đo điện áp ] ── (Cầu phân áp + IC LM358 + IC ICL7660 tạo áp -5V)
              │ (Tín hiệu dịch mức 0V - 3.3V)
              ▼
    [ Khối xử lý trung tâm ] ── (STM32F407VGT6 - ARM Cortex-M4 @ 168MHz)
         │               │
         ├───────────────┼───────────────┐
         ▼               ▼               ▼
[ Khối hiển thị ] [ Khối cảm ứng ] [ Khối lưu trữ ]
(TFT LCD 7" FSMC)  (TSC2046 SPI)    (USB Flash Drive Full Speed)

Technology Stack & Hardware Components:

  • Vi điều khiển chính: STM32F407VGT6 (Lõi 32-bit ARM Cortex-M4F với FPU, xung nhịp 168 MHz, 1 MB Flash, 192 KB SRAM, tích hợp bộ điều khiển FSMC, USB On-The-Go Full Speed 12 Mbps).
  • Analog Front-End: Dual Op-Amp LM358 cấu hình mạch cộng đảo 2 tầng, bộ đảo áp chuyển mạch tụ ICL7660 tạo nguồn âm $-5\text{V}$, diode Zener 3.3V bảo vệ quá áp chân ADC.
  • Khối hiển thị: Màn hình màu TFT LCD 7 inch (độ phân giải $800 \times 480$), giao tiếp 16-bit dữ liệu song song qua bộ điều khiển bộ nhớ tĩnh FSMC (Flexible Static Memory Controller) đạt tốc độ truy xuất bus lên tới 60 MHz.
  • Khối cảm ứng: IC điều khiển cảm ứng điện trở 4 dây TSC2046 giao tiếp qua chuẩn SPI chuyên dụng (PB3, PB4, PB5, PA15, PB15).
  • Định dạng tệp lưu trữ: Cấu trúc tệp đồ họa chuẩn Windows Bitmap (BMP 24-bit không nén) bao gồm 14 bytes Bitmap File Header và 40 bytes DIB Information Header, cho phép ghi tuần tự từng khối điểm ảnh (Pixel Array) trực tiếp vào hệ thống tệp FAT32 trên USB.
// Cấu trúc Bitmap File Header chuẩn (14 bytes)
typedef struct {
    uint16_t bfType;       // Chữ ký định dạng: 0x4D42 ('BM')
    uint32_t bfSize;       // Tổng kích thước file BMP (bytes)
    uint16_t bfReserved1;  // Giá trị dự phòng (0)
    uint16_t bfReserved2;  // Giá trị dự phòng (0)
    uint32_t bfOffBits;    // Độ lệch byte tới mảng dữ liệu pixel (54 bytes)
} __attribute__((packed)) BMP_FileHeader;

// Cấu trúc DIB Header chuẩn (40 bytes - BITMAPINFOHEADER)
typedef struct {
    uint32_t biSize;          // Kích thước Header này (40 bytes)
    int32_t  biWidth;         // Chiều rộng ảnh (ví dụ: 800 pixels)
    int32_t  biHeight;        // Chiều cao ảnh (ví dụ: 480 pixels)
    uint16_t biPlanes;        // Số mặt phẳng màu (mặc định = 1)
    uint16_t biBitCount;      // Độ sâu màu (24-bit RGB)
    uint32_t biCompression;   // Phương thức nén (0 = BI_RGB không nén)
    uint32_t biSizeImage;     // Kích thước mảng ảnh (Width * Height * 3)
    int32_t  biXPelsPerMeter; // Độ phân giải ngang
    int32_t  biYPelsPerMeter; // Độ phân giải dọc
    uint32_t biClrUsed;       // Số màu trong bảng palette (0)
    uint32_t biClrImportant;  // Số màu quan trọng (0)
} __attribute__((packed)) BMP_InfoHeader;

Methodology

Dự án áp dụng quy trình phát triển kỹ thuật phần cứng - phần mềm lặp có cấu trúc (Iterative V-Model):

  • Giai đoạn 1 (Tuần 1 - 3): Nghiên cứu lý thuyết vi xử lý ARM Cortex-M4, phân tích đặc tính chuyển đổi ADC, cấu hình ngắt NVIC và khảo sát giao thức USB Mass Storage Class.
  • Giai đoạn 2 (Tuần 4 - 7): Tính toán thông số mạch phối hợp tín hiệu ngõ vào, mô phỏng trên phần mềm chuyên dụng và thiết kế mạch in (PCB Layout 2 lớp).
  • Giai đoạn 3 (Tuần 8 - 11): Thi công hàn lắp linh kiện thực tế; lập trình driver điều khiển màn hình TFT LCD qua FSMC, driver ADC-DMA và thư viện FatFs cho USB Host.
  • Giai đoạn 4 (Tuần 12 - 14): Tích hợp hệ thống toàn diện, kiểm chuẩn và hiệu chỉnh thang đo với nguồn chuẩn và máy phát sóng hàm chuyên dụng (Function Generator).
  • Giai đoạn 5 (Tuần 15 - 16): Đánh giá sai số, tối ưu hóa giao diện người dùng và hoàn thiện đóng gói thiết bị.

Quản trị rủi ro kỹ thuật:

  • Hiện tượng xén áp khi tín hiệu vượt dải ADC ($0 - 3.3\text{V}$): Khắc phục bằng mạch bảo vệ diode Zener 3.3V kết hợp cầu phân áp tỷ lệ $1/10$.
  • Hiện tượng sụt áp và nhiễu nguồn analog ($V_{DDA}$): Bố trí các tụ lọc gốm 104 ($100\text{nF}$) và tụ hóa $10\mu\text{F}$ song song sát chân nguồn các IC thuật toán và vi điều khiển.

Implementation và kết quả

Development process

1. Tính toán khối mạch phối hợp tín hiệu ngõ vào

Tín hiệu AC cần đo có biên độ lên tới $\pm 12\text{V}$, trong khi ngõ vào ADC của STM32F407 chỉ chấp nhận dải điện áp $0\text{V} \le V_{in} \le 3.3\text{V}$. Do đó, mạch phần cứng phải thực hiện 2 nhiệm vụ: suy hao biên độ tín hiệu và dịch mức điện áp (Offset) một lượng $V_{offset} \approx +1.8\text{V}$.

Sử dụng mạch cộng đảo 2 tầng với khuếch đại thuật toán LM358 để giữ nguyên góc pha của tín hiệu gốc:

$$\text{Tầng 1: } V_{o1} = -\left( \frac{R_F}{R_{in1}} V_{in} + \frac{R_F}{R_{in2}} V_{bias} \right)$$

$$\text{Tầng 2: } V_{out} = -\left( \frac{R_5}{R_4} V_{o1} \right) = \left( \frac{R_F}{R_{in1}} V_{in} + \frac{R_F}{R_{in2}} V_{bias} \right)$$

Với việc chọn các điện trở chính xác $R_1 = R_2 = R_4 = R_5 = 2\text{k}\Omega$ ($R_F = 2\text{k}\Omega$), độ lợi điện áp đạt $A_v = 1$. Nguồn âm $-5\text{V}$ cấp cho chân $V_{CC-}$ của LM358 được tạo tự động bởi IC chuyển đổi điện áp ICL7660 từ nguồn đơn $+5\text{V}$, giúp Op-Amp xử lý hoàn hảo phần bán kỳ âm của tín hiệu đầu vào trước khi dịch mức.

2. Lập trình vi điều khiển và xử lý tín hiệu

Chương trình nhúng được xây dựng trên môi trường Keil MDK-ARM sử dụng thư viện ngoại vi chuẩn (STM32F4xx Standard Peripherals Library).

Cấu hình ADC1 kết hợp bộ định thời Timer 2 để kích hoạt lấy mẫu định kỳ chính xác:

void ADC1_Init_Configuration(void) {
    ADC_InitTypeDef       ADC_InitStructure;
    ADC_CommonInitTypeDef ADC_CommonInitStructure;
    GPIO_InitTypeDef      GPIO_InitStructure;

    // 1. Cấp xung Clock cho Port A và ADC1
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

    // 2. Cấu hình chân PA1 ở chế độ Analog Input
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 3. Cấu hình chế độ ADC chung (ADC Common Settings)
    ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; // PCLK2/4 = 21MHz
    ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
    ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
    ADC_CommonInit(&ADC_CommonInitStructure);

    // 4. Thiết lập chi tiết cho ADC1 (Độ phân giải 12-bit)
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfConversion = 1;
    ADC_Init(ADC1, &ADC_InitStructure);

    // Cấu hình thứ tự kênh và chu kỳ lấy mẫu (Channel 1, 3 Cycles)
    ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_3Cycles);
    ADC_Cmd(ADC1, ENABLE);
}

Thuật toán xuất ảnh màn hình sang file BMP trên USB sử dụng thư viện mã nguồn mở FatFs:

FRESULT Save_Screen_To_BMP(const char* filename) {
    FATFS fs;
    FIL file;
    UINT bytesWritten;
    BMP_FileHeader bmfh;
    BMP_InfoHeader bmih;
    uint16_t x, y, pixel565;
    uint8_t rgbBuffer[3];

    if (f_mount(&fs, "", 1) != FR_OK) return FR_DISK_ERR;
    if (f_open(&file, filename, FA_CREATE_ALWAYS | FA_WRITE) != FR_OK) return FR_NO_FILE;

    // Chuẩn bị Header cho ảnh 800x480 24-bit
    bmfh.bfType = 0x4D42; // 'BM'
    bmfh.bfSize = 54 + (800 * 480 * 3);
    bmfh.bfReserved1 = 0;
    bmfh.bfReserved2 = 0;
    bmfh.bfOffBits = 54;
    f_write(&file, &bmfh, sizeof(bmfh), &bytesWritten);

    bmih.biSize = sizeof(BMP_InfoHeader);
    bmih.biWidth = 800;
    bmih.biHeight = 480; // Chiều cao dương: Quét từ dòng dưới lên
    bmih.biPlanes = 1;
    bmih.biBitCount = 24;
    bmih.biCompression = 0;
    bmih.biSizeImage = 800 * 480 * 3;
    bmih.biXPelsPerMeter = 2835;
    bmih.biYPelsPerMeter = 2835;
    bmih.biClrUsed = 0;
    bmih.biClrImportant = 0;
    f_write(&file, &bmih, sizeof(bmih), &bytesWritten);

    // Đọc bộ đệm hiển thị từ LCD qua FSMC và ghi dữ liệu RGB888 vào USB
    for (y = 0; y < 480; y++) {
        for (x = 0; x < 800; x++) {
            pixel565 = LCD_ReadPixel(x, 479 - y); // Đọc pixel 16-bit RGB565
            // Chuyển đổi RGB565 sang RGB888 (BGR format trong BMP)
            rgbBuffer[0] = (pixel565 & 0x001F) << 3;         // Blue
            rgbBuffer[1] = ((pixel565 & 0x07E0) >> 5) << 2;  // Green
            rgbBuffer[2] = ((pixel565 & 0xF800) >> 11) << 3; // Red
            f_write(&file, rgbBuffer, 3, &bytesWritten);
        }
    }
    f_close(&file);
    return FR_OK;
}

Testing và validation

Thiết bị đã trải qua quá trình kiểm thử thực nghiệm đối chiếu trực tiếp với máy đo thương chuẩn tại phòng thí nghiệm Bộ môn Điện tử Công nghiệp:

Tín hiệu ngõ vào kiểm thử Giá trị đặt từ máy phát Giá trị đo được trên máy Giá trị trên máy tham chiếu chuẩn Sai số tương đối (%)
Nguồn DC (Pin 9V) $9.00\text{V}$ $8.91\text{V}$ $9.02\text{V}$ $-1.00%$
Sóng Sin (1 kHz) $10.00\text{V}_{pp}$ $9.82\text{V}_{pp}$ $10.05\text{V}_{pp}$ $-1.80%$
Sóng Vuông (5 kHz) $5.00\text{V}_{pp}$ $5.12\text{V}_{pp}$ $5.00\text{V}_{pp}$ $+2.40%$
Sóng Tam giác (1 kHz) $8.00\text{V}_{pp}$ $7.85\text{V}_{pp}$ $8.01\text{V}_{pp}$ $-1.87%$
Sóng Răng cưa (2 kHz) $6.00\text{V}_{pp}$ $5.88\text{V}_{pp}$ $6.02\text{V}_{pp}$ $-2.00%$

Kết quả đánh giá hiệu năng hệ thống:

  • Tốc độ làm tươi màn hình (Refresh Rate): Đạt 35 khung hình/giây nhờ bộ điều khiển FSMC 16-bit truy xuất trực tiếp vùng nhớ RAM của LCD TFT.
  • Thời gian lưu ảnh Bitmap (.BMP) sang USB: Trung bình $820\text{ms}$ cho tệp ảnh kích thước $1.15\text{MB}$ ($800 \times 480 \times 24\text{-bit}$).
  • Thời gian đáp ứng cảm ứng: Dưới $15\text{ms}$, nhận diện chính xác các thao tác chuyển đổi kênh, thay đổi thang chia điện áp (Volt/Div) và thời gian (Time/Div).

Kết quả đạt được

Hệ thống đã hoàn thiện $100%$ các tính năng thiết kế ban đầu:

  • Máy vận hành độc lập, cấp nguồn qua Adapter $5\text{V}/1\text{A}$ tiện lợi.
  • Hiển thị mượt mà đồ thị dạng sóng cùng các thông số điện áp đỉnh - đỉnh ($V_{pp}$), điện áp hiệu dụng ($V_{rms}$) và tần số ($f$).
  • Toàn bộ 5 loại ảnh dạng sóng (DC, Sin, Vuông, Tam giác, Răng cưa) được lưu hoàn chỉnh vào USB Flash Drive và đọc trực tiếp trên hệ điều hành Windows/Linux với độ sắc nét cao.

Đổi mới và đóng góp

  1. Giải pháp nguồn âm tự tích hợp (Compact Negative Rail Generation): Thay vì sử dụng biến áp nguồn đối xứng $\pm 12\text{V}$ cồng kềnh, hệ thống sử dụng IC ICL7660 bơm điện áp âm $-5\text{V}$ trực tiếp từ nguồn đơn $+5\text{V}$. Cải tiến này giúp giảm $65%$ kích thước phần cứng và $50%$ giá thành khối nguồn.
  2. Tối ưu hóa tốc độ vẽ đồ thị với Bus dữ liệu FSMC: Thay vì sử dụng chuẩn nối tiếp SPI hoặc I2C có tốc độ truyền tải hạn chế, việc tận dụng ngoại vi FSMC của dòng chip STM32F4 cho phép vi điều khiển giao tiếp với màn hình LCD 7 inch như một vùng nhớ SRAM ngoài. Giải pháp này giúp tốc độ ghi pixel tăng hơn $450%$ so với giao tiếp song song điều khiển bằng phần mềm (GPIO bit-banging).
  3. Bộ điều khiển lưu trữ Bitmap độc lập: Xây dựng thành công ngăn xếp USB Host MSC tích hợp hệ thống tệp FAT32, cho phép chụp ảnh màn hình dạng sóng trực tiếp không cần kết nối máy tính. Tính năng này giúp tiết kiệm $80%$ thời gian báo cáo và ghi nhận kết quả thực hành của sinh viên.
  4. Hiệu quả kinh tế vượt trội: Tổng chi phí chế tạo hoàn thiện sản phẩm chỉ chiếm khoảng $12%$ so với một thiết bị đo sóng chuyên dụng tương đương, mang lại cơ hội sở hữu thiết bị đo lường cho đông đảo người học ngành điện tử.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Phòng thí nghiệm trường Đại học/Cao đẳng: Trang bị cho mỗi bàn thực hành điện tử cơ bản, kỹ thuật vi xử lý, xử lý tín hiệu tương tự để sinh viên trực tiếp quan sát dạng sóng mạch tạo dao động, mạch khuếch đại và mạch lọc.
  • Kỹ thuật viên sửa chữa điện tử di động: Sử dụng như một thiết bị kiểm tra nhanh tại hiện trường (Field Testing) để kiểm tra tín hiệu xung clock, tín hiệu điều khiển PWM của biến tần, nguồn xung (SMPS).
  • Cá nhân tự học và nghiên cứu nhúng: Hỗ trợ debug phần mềm thời gian thực bằng cách xuất tín hiệu ra chân GPIO và kiểm tra chu kỳ xung mà không cần đầu tư thiết bị đắt tiền.

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)

Ước tính bảng chi phí vật tư BOM (Bill of Materials) cho 01 sản phẩm:
├── Board STM32F4 Discovery (STM32F407VGT6) : 18.00 USD
├── Màn hình màu TFT LCD 7 inch + Cảm ứng   : 14.00 USD
├── Mạch Analog Front-End (LM358, 7660, v.v.):  2.50 USD
├── Vỏ hộp, đầu đo BNC, Cổng USB, Nguồn 5V  :  4.50 USD
└── PCB gia công 2 lớp                      :  3.00 USD
──────────────────────────────────────────────────────────
TỔNG CHI PHÍ PHẦN CỨNG                      : 42.00 USD

So với việc đầu tư một máy hiện sóng để bàn chuyên nghiệp mức giá trung bình 350 USD, giải pháp này giúp tiết kiệm gần $88%$ ngân sách, cho phép triển khai số lượng lớn tại các cơ sở đào tạo với thời gian hoàn vốn đầu tư giáo dục (ROI) gần như tức thì.

Yêu cầu triển khai và vận hành

  • Nguồn cấp: Adapter $5\text{V} - 1\text{A}$ tiêu chuẩn qua cổng DC Jack hoặc micro-USB.
  • Que đo: Que đo oscilloscope tiêu chuẩn chuẩn BNC tỷ lệ $1\text{X}/10\text{X}$.
  • Thiết bị lưu trữ: USB Flash Drive chuẩn USB 2.0 định dạng FAT16/FAT32 dung lượng từ 512MB đến 32GB.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Băng thông tần số tương tự: Do sử dụng Op-Amp LM358 có tích số băng thông - độ lợi (GBP) ở mức 1 MHz và tốc độ suy biến (Slew Rate) $0.5\text{V}/\mu\text{s}$, máy chỉ đáp ứng tốt các tín hiệu tần số dưới $50\text{kHz}$. Khi đo ở tần số cao hơn, biên độ sóng bị suy giảm nhẹ.
  • Số kênh đo: Hệ thống hiện tại chỉ hỗ trợ 01 kênh đo đơn (Single Channel).
  • Nhiễu nền ở thang đo nhỏ: Khối tiền xử lý chưa có tầng cách ly quang hoặc vỏ bọc chống nhiễu điện từ (EMI Shielding), dẫn đến việc đo tín hiệu biên độ nhỏ dưới $100\text{mV}$ còn tồn tại một lượng gợn nhiễu nhỏ.

Hướng phát triển trong tương lai

  1. Nâng cấp tầng khuếch đại thuật toán tốc độ cao: Thay thế IC LM358 bằng các dòng Op-Amp chuyên dụng tốc độ cao như AD8066 hoặc OPA2350 để mở rộng dải tần số đo lên $5\text{MHz} - 10\text{MHz}$.
  2. Khai thác chế độ ADC Xen kẽ (Interleaved Mode): Tận dụng cả 3 bộ ADC1, ADC2, ADC3 trên STM32F407 để đẩy tốc độ lấy mẫu tổng hợp lên tới $7.2\text{ MSPS}$.
  3. Mở rộng 2 kênh đo (Dual Channel): Bổ sung kênh đo thứ hai để thực hiện so sánh góc lệch pha giữa hai tín hiệu và vẽ đồ thị Lissajous.
  4. Tích hợp giải thuật biến đổi Fourier nhanh (FFT): Khai thác tập lệnh DSP và bộ xử lý dấu phẩy động (FPU) tích hợp sẵn trong nhân ARM Cortex-M4 để phân tích phổ hài tần số của tín hiệu trực tiếp trên màn hình.

Đối tượng hưởng lợi

  • Sinh viên và Học viên kỹ thuật: Được tiếp cận một thiết bị đo sóng trực quan với chi phí rẻ; nắm vững kiến thức thực tế về kiến trúc vi điều khiển ARM 32-bit, lập trình ngoại vi FSMC, DMA, ADC và xử lý tín hiệu analog.
  • Kỹ sư và Lập trình viên nhúng: Có được bộ mã nguồn mẫu hoàn chỉnh về cách cấu hình USB Host Mass Storage, giao tiếp màn hình màu độ phân giải cao và thuật toán tạo file ảnh Bitmap nhúng.
  • Cơ sở đào tạo và Nhà trường: Tối ưu hóa kinh phí đầu tư phòng thực hành điện tử - viễn thông, tăng cường số lượng thiết bị thực hành cho từng sinh viên, nâng cao chất lượng giảng dạy.
  • Cộng đồng Maker và Nghiên cứu ứng dụng: Nền tảng phần cứng mở dễ dàng tùy biến, tích hợp thêm các cảm biến đo lường vật lý (nhiệt độ, áp suất, độ rung) phục vụ các dự án IoT và công nghiệp.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật phần cứng để vận hành thiết bị là gì?

Hệ thống chỉ yêu cầu nguồn cấp DC ổn định $5\text{V} - 1\text{A}$ qua cổng Adapter. Tín hiệu đo đầu vào chấp nhận cả DC và AC trong phạm vi an toàn từ $-12\text{V}$ đến $+12\text{V}$. Thiết bị lưu trữ tương thích với tất cả các dòng USB Flash Drive định dạng FAT32 phổ thông.

2. Giới hạn tần số đo tối đa của thiết bị là bao nhiêu và làm sao để nâng cấp?

Hiện tại, thiết bị đo lường chính xác các tín hiệu tuần hoàn trong dải tần số từ $1\text{Hz}$ đến $50\text{kHz}$ (phù hợp với hầu hết các mạch âm tần và xung điều khiển cơ bản). Để nâng cao băng thông lên mức MHz, người phát triển chỉ cần thay thế IC LM358 bằng Op-Amp có băng thông cao (như TL082, NE5532 hoặc OPA series) và cấu hình ADC sang chế độ Triple Interleaved.

3. Thiết bị có thể đo được điện áp lưới $220\text{V}$ AC không?

Không được cắm trực tiếp. Để đo điện áp lưới xoay chiều $220\text{V}\text{AC}$, bắt buộc phải sử dụng biến áp cách ly hạ áp hoặc que đo suy hao chuyên dụng tỷ lệ $100:1$ để đưa điện áp đầu vào về dải an toàn dưới $\pm 12\text{V}$.

4. Tại sao hệ thống lại chọn định dạng ảnh BMP thay vì PNG hay JPEG?

Định dạng BMP lưu trữ dữ liệu điểm ảnh thô (Uncompressed Raw Pixels), không đòi hỏi thuật toán nén phức tạp. Điều này giúp tiết kiệm tối đa bộ nhớ RAM của vi điều khiển (vốn chỉ có 192KB SRAM) và cho phép CPU ghi dữ liệu trực tiếp từng dòng quét màn hình vào USB mà không làm tràn bộ nhớ đệm hay nghẽn tốc độ hiển thị.

5. Chi phí chế tạo trọn gói và thời gian hoàn vốn (ROI) cho một phòng Lab như thế nào?

Tổng chi phí linh kiện để chế tạo 01 máy đo dao động khoảng 800.000 - 950.000 VNĐ (~ 40 USD). So với chi phí mua máy đo thương mại (từ 8.000.000 VNĐ trở lên), nhà trường hoặc đơn vị đào tạo có thể tiết kiệm tới gần $90%$ chi phí đầu tư ban đầu, giúp hoàn vốn ngay từ kỳ học đầu tiên triển khai.


Kết luận

Đề tài "Thiết kế và thi công máy đo dạng sóng" đã giải quyết thành công bài toán xây dựng một thiết bị đo lường điện tử số hóa hoàn chỉnh dựa trên vi điều khiển 32-bit hiệu năng cao STM32F407VGT6. Dự án đã chứng minh tính khả thi vượt trội trong việc phối hợp giữa phần cứng tiền xử lý tín hiệu analog thông minh, ngoại vi FSMC tốc độ cao điều khiển LCD 7 inch và ngăn xếp USB Host độc lập.

Công trình không chỉ mang giá trị học thuật sâu sắc về mặt kỹ thuật nhúng và xử lý tín hiệu tương tự, mà còn đem lại giá trị thực tiễn to lớn trong việc phổ cập công cụ đo lường chất lượng cao với chi phí phải chăng cho cộng đồng học thuật và kỹ thuật viên. Các bạn sinh viên, kỹ sư và các nhà nghiên cứu quan tâm có thể tiếp tục kế thừa kiến trúc phần cứng và giải thuật của đồ án này để phát triển thêm các tính năng nâng cao như phân tích phổ tín hiệu FFT hoặc mở rộng băng thông đo lường trong tương lai.