Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Mac

Làm chủ dữ liệu cảm biến trên bộ vi điều khiển:Hướng dẫn từng bước cho người mới bắt đầu

Làm chủ dữ liệu cảm biến trên bộ vi điều khiển:Hướng dẫn từng bước cho người mới bắt đầu

Trong thế giới ngày nay, máy tính có mặt khắp nơi và thường phục vụ hai mục đích chính.

Đầu tiên là điện toán đa năng, nơi chúng xử lý nhiều tác vụ khác nhau, bao gồm chạy các ứng dụng và chương trình đa dạng. Ví dụ bao gồm máy tính xách tay, máy tính để bàn, máy chủ và siêu máy tính.

Thứ hai là các hệ thống nhúng, là các máy tính chuyên dụng được thiết kế cho các chức năng cụ thể. Thường thấy trong các thiết bị như máy điều nhiệt, tủ lạnh, ô tô và các thiết bị thông minh khác, chúng dựa vào cảm biến để thu thập dữ liệu môi trường và thực hiện nhiệm vụ một cách hiệu quả.

Vai trò của cảm biến

Cảm biến đóng một vai trò quan trọng trong cả hai loại máy tính. Trong các hệ thống nhúng, cảm biến thu thập dữ liệu môi trường để giúp các thiết bị như xe tự hành, thiết bị gia dụng và máy công nghiệp thực hiện các nhiệm vụ. Trong các máy tính đa năng, cảm biến chủ yếu giám sát các điều kiện bên trong như nhiệt độ và điện áp, đảm bảo vận hành an toàn và ngăn ngừa các vấn đề như quá nhiệt hoặc lỗi điện.

Khi Trí tuệ nhân tạo (AI) và Internet vạn vật (IoT) phát triển, các cảm biến trở nên không thể thiếu để thu thập dữ liệu trong thế giới thực nhằm hỗ trợ việc ra quyết định thông minh. Các hệ thống nhúng tận dụng cảm biến để nhận biết môi trường, chuyển đổi dữ liệu thô thành thông tin chi tiết có thể áp dụng được, giúp hỗ trợ tự động hóa và nâng cao hiệu quả trong các ngành.

Điều này có nghĩa là việc hiểu biết về giao tiếp cảm biến và thiết kế phần mềm điều khiển cảm biến mạnh mẽ đã trở thành một kỹ năng quan trọng đối với các kỹ sư cũng như những người có sở thích.

Cho dù bạn là người mới bắt đầu hay kỹ sư có kinh nghiệm, hướng dẫn này sẽ giúp bạn xây dựng sự hiểu biết vững chắc về phần mềm giao tiếp cảm biến.

Bạn sẽ học những gì và phạm vi bài viết

Trong bài viết này, bạn sẽ tìm hiểu cách kết nối cảm biến với bộ vi điều khiển (MCU) và thiết kế đường dẫn phần mềm cảm biến để biến dữ liệu thô thành thông tin có ý nghĩa và có thể sử dụng được. Bạn cũng sẽ khám phá các kỹ thuật thực tế để xử lý dữ liệu cảm biến một cách chính xác và hiệu quả trong các hệ thống nhúng.

Sau đây là thông tin chi tiết về nội dung chúng tôi sẽ đề cập:

  • Cảm biến là gì và cách chúng hoạt động – Giới thiệu về cảm biến, các loại phổ biến và cách quy trình cảm biến giúp xử lý dữ liệu cảm biến.

  • Đặc điểm chính của cảm biến – Các thông số quan trọng như độ nhạy, độ chính xác, phạm vi, độ lệch và thời gian phản hồi để giúp bạn chọn cảm biến phù hợp cho dự án của mình.

  • Cách kết nối cảm biến với bộ vi điều khiển – Kết nối phần cứng và giao thức truyền thông như SPI, I²C và GPIO cho phép bộ vi điều khiển đọc dữ liệu cảm biến.

  • Kiến trúc phần mềm cho dữ liệu cảm biến – Tổng quan cấp cao về quy trình phần mềm xử lý dữ liệu cảm biến, bao gồm trình điều khiển, hỗ trợ ADC, chia tỷ lệ, hiệu chuẩn và xử lý hậu kỳ.

  • Thiết kế chi tiết các thành phần quy trình – Xem xét kỹ hơn từng bước trong quy trình, tập trung vào việc mở rộng dữ liệu thô, hiệu chỉnh cảm biến và áp dụng các bộ lọc để loại bỏ tín hiệu nhiễu.

  • Lời khuyên thiết thực để quản lý năng lượng – Các phương pháp hay nhất để xử lý năng lượng hiệu quả bằng cách sử dụng chế độ năng lượng thấp, bộ đệm FIFO và DMA khi làm việc với dữ liệu cảm biến trong hệ thống nhúng.

Đến cuối bài viết này, bạn sẽ biết cách thiết kế và triển khai một quy trình dữ liệu cảm biến hoàn chỉnh cho một hệ thống nhúng, từ việc đọc dữ liệu cảm biến thô cho đến việc chuẩn bị dữ liệu đó để sử dụng trong thế giới thực trong các thiết bị thông minh, được kết nối.

Lưu ý :Việc xử lý dữ liệu nâng cao, ADC có độ phân giải cao và thiết kế mạch phần cứng cho cảm biến nằm ngoài phạm vi của bài viết này.

Điều kiện tiên quyết

Để tận dụng tối đa bài viết này, bạn nên có:

  1. Kiến thức cơ bản về bộ vi điều khiển:Hiểu biết về các thiết bị ngoại vi phổ biến như ADC (Bộ chuyển đổi tương tự sang số), SPI (Giao diện ngoại vi nối tiếp), I2C (Mạch tích hợp liên kết) và GPIO (Đầu vào/đầu ra cho mục đích chung). Nếu bạn chưa quen với các giao thức này thì bài viết này sẽ cung cấp thông tin tổng quan tuyệt vời.

  2. Kiến thức cơ bản về điện tử:Làm quen với các mạch và tín hiệu, bao gồm giao diện analog và kỹ thuật số.

  3. Lập trình bằng C:Làm quen với việc phát triển phần mềm nhúng, bao gồm cả phát triển trình điều khiển.

  4. (Tùy chọn) Kiến thức cơ bản về cảm biến:Việc hiểu các loại cảm biến khác nhau (như nhiệt độ, áp suất, chuyển động) rất hữu ích nhưng không bắt buộc.

Ngoài ra, bài viết này giả định như sau:

  • Bạn đang làm việc với một bộ vi điều khiển được trang bị các thiết bị ngoại vi cần thiết để tích hợp cảm biến. Chi tiết về các thiết bị ngoại vi của vi điều khiển có thể được tìm thấy trong sách hướng dẫn tham khảo, ví dụ:đối với vi điều khiển dòng STM32F4 sẽ có tất cả các chi tiết:

  • Bạn đã quen thuộc với các trình biên dịch, trình gỡ lỗi và IDE được sử dụng trong các hệ thống nhúng. Một số công cụ phổ biến bao gồm:

    • Trình biên dịch:GCC, Clang,

    • Trình gỡ lỗi:GDB, LLDB

    • IDE:Visual Studio Code (VSCode) là một lựa chọn phổ biến, đặc biệt là với các tiện ích mở rộng để phát triển và gỡ lỗi nhúng.

  • Bạn đặt mục tiêu xây dựng các hệ thống nhúng điều khiển bằng cảm biến đáng tin cậy, có khả năng thu thập và xử lý dữ liệu trong thế giới thực một cách hiệu quả.

Mục lục

  • Cảm biến và Đường ống cảm biến là gì?

  • Đặc điểm cảm biến

  • Cách giao tiếp với vi điều khiển

  • Kiến trúc phần mềm

    • Tổng quan cấp cao về các thành phần

    • Truy cập dữ liệu từ cảm biến

    • Quản lý năng lượng cảm biến

  • Thiết kế chi tiết các thành phần

    • 1. Trình điều khiển cảm biến

    • 2. Hỗ trợ ADC

    • 3. Chia tỷ lệ

    • 4. Hiệu chuẩn

    • 5. Xử lý hậu kỳ dữ liệu

  • Kết luận

Cảm biến và đường ống cảm biến là gì?

Một cảm biến phát hiện những thay đổi về tính chất vật lý như nhiệt độ, áp suất hoặc ánh sáng và chuyển đổi chúng thành tín hiệu điện có thể đo được hoặc giải thích. Ví dụ, nhiệt điện trở là một loại điện trở có điện trở thay đổi theo nhiệt độ. Khi nhiệt độ thay đổi, điện trở của nhiệt điện trở thay đổi, làm thay đổi điện áp trên nó. Sau đó, hệ thống sẽ diễn giải sự thay đổi điện áp này để xác định nhiệt độ.

Để hiểu rõ hơn về cảm biến, hãy xem xét các cảm biến tự nhiên trong cơ thể con người:mắt, tai, da, mũi và lưỡi. Những cảm biến tự nhiên này liên tục gửi tín hiệu về môi trường đến não để xử lý. Các vùng khác nhau của não diễn giải các tín hiệu này và sử dụng thông tin để điều khiển hành động và phản hồi. Giống như bộ não xử lý tín hiệu từ các cảm biến tự nhiên, bộ vi điều khiển xử lý tín hiệu từ các cảm biến điện tử bằng cách sử dụng đường dẫn cảm biến.

Cảm biến có nhiều loại, mỗi loại được thiết kế để phát hiện các đặc tính vật lý cụ thể. Một số cảm biến có bộ phận cảm biến thay đổi đặc tính của nó để phản ứng với các điều kiện như nhiệt, ánh sáng hoặc áp suất. Các ví dụ bao gồm nhiệt điện trở, bộ thu hồng ngoại và điốt quang.

Để phát hiện chuyển động, chẳng hạn như gia tốc và quay, các cảm biến MEMS (Hệ thống vi cơ điện tử)—như gia tốc kế và con quay hồi chuyển—được sử dụng rộng rãi.

Để đo khoảng cách, các cảm biến như sóng siêu âm, cảm biến siêu âm và radar là phổ biến. Đây chỉ là một vài ví dụ trong số nhiều loại cảm biến hiện có.

Ngoài các loại đặc tính vật lý mà chúng phát hiện được, các cảm biến còn khác nhau về mức độ tích hợp. Một số cảm biến là cảm biến thô, chỉ bao gồm một phần tử cảm biến và một bộ chuyển đổi có dây dẫn đơn giản để kết nối trực tiếp với mạch bên ngoài.

Những loại khác, được gọi là cảm biến thông minh, bao gồm các thành phần bổ sung như ADC (bộ chuyển đổi tương tự sang số) và khả năng xử lý tích hợp, cho phép chúng xử lý nhiều hoạt động xử lý dữ liệu một cách độc lập hơn.

Việc lựa chọn giữa cảm biến thô và cảm biến thông minh tùy thuộc vào yêu cầu ứng dụng của bạn, bao gồm các yếu tố như chi phí, kích thước và tải xử lý trên bộ vi điều khiển giao tiếp.

Quay trở lại với sự tương tự của con người, hãy xem xét cách hoạt động của tầm nhìn như một đường dẫn cảm biến. Khi ánh sáng đi vào mắt chúng ta, các tế bào cảm quang (hình que và hình nón) trong võng mạc hoạt động như các yếu tố cảm nhận, chuyển đổi ánh sáng thành tín hiệu điện. Những tín hiệu này truyền qua dây thần kinh thị giác đến vỏ thị giác của não, nơi chúng trải qua quá trình xử lý để tạo thành hình ảnh dễ nhận biết. Sau đó, bộ não sẽ diễn giải thông tin này và bắt đầu phản hồi, giống như mỉm cười khi bạn nhìn thấy một khung cảnh đẹp.

Tương tự, có thể định nghĩa đường dẫn cảm biến cho hệ thống nhúng như trong hình bên dưới:

Làm chủ dữ liệu cảm biến trên bộ vi điều khiển:Hướng dẫn từng bước cho người mới bắt đầu

Mỗi bước này có thể có các yêu cầu khác nhau tùy theo ứng dụng. Việc tạo tài liệu yêu cầu cho cảm biến sẽ rất hữu ích khi chọn cảm biến thích hợp và định cấu hình đường ống.

Đặc điểm cảm biến

Trước khi đi sâu vào các khối của quy trình cảm biến, hãy xem lại một số đặc điểm quan trọng của cảm biến.

Độ nhạy

Độ nhạy là khả năng của cảm biến phát hiện những thay đổi nhỏ trong đặc tính vật lý mà nó được thiết kế để đo lường.

Độ nhạy có thể thay đổi dựa trên các yếu tố như quy trình sản xuất, chi phí và thiết kế của phần tử cảm biến.

Cảm biến được thiết kế cho một thuộc tính cụ thể thường có các mức độ nhạy khác nhau, cho phép người dùng chọn độ nhạy thích hợp dựa trên yêu cầu của ứng dụng.

Độ chính xác

Độ chính xác là mức độ mà phép đo của cảm biến khớp với giá trị thực của đặc tính vật lý mà nó đo. Kiểm tra độ chính xác của cảm biến thường yêu cầu so sánh số đọc của nó với số đọc của thiết bị tham chiếu.

Cảm biến có thể có lỗi khuếch đại và bù—những vấn đề mà hiệu chuẩn có thể giúp khắc phục. Việc hiệu chuẩn sẽ điều chỉnh các lỗi hệ thống này, thường là do dung sai của nhà sản xuất hoặc các yếu tố thiết kế.

Sau khi hiệu chỉnh, đầu ra của cảm biến có thể được xác minh dựa trên tham chiếu để xác nhận độ chính xác của nó. Mức độ chính xác cần thiết phải được xác định dựa trên nhu cầu của ứng dụng.

Độ chính xác

Độ chính xác đề cập đến tính nhất quán hoặc khả năng lặp lại của các phép đo của cảm biến, bất kể các phép đo đó gần với giá trị thực đến mức nào. Nó cho biết khả năng của cảm biến trong việc tạo ra cùng một đầu ra trong các điều kiện giống nhau cũng như mức độ phân giải và báo cáo giá trị của cảm biến.

Ví dụ:nếu nhiệt độ thực của một vật là 12,53°C:

  • Một cảm biến chính xác sẽ đo nhất quán các giá trị như 12,52°C, 12,53°C hoặc 12,54°C, ngay cả khi những giá trị đó hơi lệch so với nhiệt độ thực.

  • Mặt khác, cảm biến có độ chính xác cao sẽ đo các giá trị gần 12,53°C nhưng có thể thiếu độ chính xác nếu các giá trị đó chênh lệch lớn (ví dụ:12,50°C, 12,53°C và 12,56°C).

Đối với các ứng dụng yêu cầu phép đo chính xác, cảm biến có cả độ chính xác cao (gần với giá trị thực) và độ chính xác cao (độ biến thiên thấp) là điều cần thiết. Điều này đặc biệt quan trọng trong việc phân biệt những khác biệt nhỏ, chẳng hạn như giữa 12,5°C và 12,53°C.

Ngược lại, các ứng dụng có yêu cầu ít nghiêm ngặt hơn có thể sử dụng cảm biến có dung sai rộng hơn, chẳng hạn như ±1°C, đủ cho mục đích giám sát chung.

Phạm vi

Phạm vi của cảm biến đề cập đến khoảng cách giữa giá trị tối đa và tối thiểu của đặc tính vật lý mà nó có thể đo trong khi vẫn duy trì độ chính xác và độ chính xác được chỉ định. Phạm vi hoạt động của cảm biến có thể vượt quá phạm vi đo của nó, nhưng phạm vi đo xác định các giới hạn trong đó cảm biến tuân thủ một cách đáng tin cậy với độ nhạy, độ chính xác và thời gian phản hồi được chỉ định.

Trôi dạt

Trôi là khi đầu ra của cảm biến thay đổi theo thời gian do các điều kiện như nhiệt độ hoặc độ ẩm. Các thành phần bên trong cảm biến, bao gồm cả phần tử cảm biến, có thể nhạy cảm với những điều kiện này, dẫn đến sự thay đổi dần dần trong các phép đo.

Ví dụ, nhiều thành phần bị ảnh hưởng bởi sự thay đổi nhiệt độ và độ ẩm, điều này có thể làm thay đổi kết quả đọc của cảm biến. Ngoài ra, các cảm biến có bộ dao động bên trong có thể bị lệch theo thời gian, ảnh hưởng đến độ chính xác.

Hiệu chuẩn thường xuyên bằng tham chiếu bên ngoài chính xác (chẳng hạn như đồng hồ chính xác) có thể giúp hiệu chỉnh độ lệch và duy trì các phép đo đáng tin cậy. Đối với một số ứng dụng nhất định, việc chọn cảm biến có đặc tính trôi dạt chấp nhận được là rất quan trọng.

Thời gian phản hồi

Thời gian phản hồi là khoảng thời gian mà cảm biến cần để phát hiện và phản ánh sự thay đổi về đặc tính vật lý được đo. Ví dụ:nếu nhiệt độ tăng thêm 5°C thì thời gian phản hồi cho biết cảm biến nhiệt độ mất bao lâu để phản ánh sự thay đổi này ở đầu ra của nó.

Thời gian phản hồi phụ thuộc vào thiết kế, chất lượng sản xuất và các bộ phận bên trong của cảm biến, chẳng hạn như ADC (Bộ chuyển đổi tương tự sang số), mạch lấy trung bình và bộ lọc trong đường ống cảm biến.

Tất cả các thông số được đề cập ở trên đều được ghi lại kỹ lưỡng trong bảng dữ liệu của cảm biến. Trong thực tế, bạn nên tạo tài liệu yêu cầu về cảm biến cho từng ứng dụng cụ thể, nêu chi tiết các thông số chính này làm cơ sở cho việc lựa chọn cảm biến.

Bây giờ bạn đã xem xét các đặc điểm chính của cảm biến, hãy khám phá cách bạn có thể kết nối chúng với bộ vi điều khiển cho các ứng dụng trong thế giới thực.

Cách giao tiếp với vi điều khiển

Chọn giao thức truyền thông

Một khía cạnh thiết yếu khác của các yêu cầu về cảm biến là chỉ định giao diện giao tiếp giữa cảm biến và MCU hoặc bộ xử lý trong hệ thống. Điều quan trọng là phải hiểu cách giao tiếp của cảm biến dựa trên loại tín hiệu đầu ra và các chân có sẵn trên bộ vi điều khiển.

Chẳng hạn, một số cảm biến nhất định có thể kết nối trực tiếp với chân đầu vào tương tự hoặc kỹ thuật số trên vi điều khiển. Cảm biến thô, chẳng hạn như cảm biến nhiệt độ, thường kết nối với chân đầu vào tương tự, sau đó được đọc bởi ADC (Bộ chuyển đổi tương tự sang số) bên trong của bộ vi điều khiển.

Ngược lại, cảm biến đầu ra kỹ thuật số kết nối với chân GPIO (Đầu vào/Đầu ra mục đích chung) kỹ thuật số. Ví dụ, cảm biến tốc độ tạo ra sóng vuông với độ rộng xung thay đổi để biểu thị tốc độ. Các tín hiệu này thường được kết nối với chân GPIO được định cấu hình làm đầu vào ngắt ngoài hoặc chụp hẹn giờ, cho phép bộ vi điều khiển đo độ rộng xung một cách chính xác.

Mặt khác, cảm biến thông minh thường hỗ trợ các giao thức truyền thông như SPI (Giao diện ngoại vi nối tiếp) hoặc I2C (Mạch tích hợp). Các giao diện này cho phép bộ vi điều khiển định cấu hình cảm biến, kiểm tra trạng thái của cảm biến và truy xuất dữ liệu thông qua việc đọc và ghi thanh ghi.

Việc chọn giao thức giao tiếp thích hợp để giao tiếp với cảm biến tùy thuộc vào các chân có sẵn trong hệ thống và các yêu cầu cụ thể của ứng dụng.

Mẹo :Khi làm việc với các giao thức như I²C hoặc SPI, việc sử dụng các công cụ như máy phân tích logic Saleae có thể đơn giản hóa rất nhiều việc gỡ lỗi và xác thực. Máy phân tích logic thu thập và hiển thị các tín hiệu liên lạc, đồng thời các công cụ như Saleae cung cấp trình thông dịch giao thức tích hợp sẵn để giúp bạn giải mã giao tiếp cảm biến trong thời gian thực. Điều này có thể đặc biệt hữu ích khi khắc phục sự cố về cấu hình, vấn đề về thời gian hoặc lỗi giao tiếp trong quá trình giao tiếp với cảm biến.

Hình 2 bên dưới minh họa ví dụ về một bộ vi điều khiển được kết nối với 4 cảm biến có giao diện khác nhau.

Làm chủ dữ liệu cảm biến trên bộ vi điều khiển:Hướng dẫn từng bước cho người mới bắt đầu

Xác định yêu cầu về năng lượng

Yêu cầu về nguồn điện là một yếu tố quan trọng khác cần cân nhắc khi kết nối cảm biến. Các cảm biến có thể hoạt động ở các điện áp khác nhau (ví dụ:3,3V hoặc 5V), do đó việc đảm bảo bộ vi điều khiển có thể đáp ứng các mức điện áp này là điều cần thiết. Bộ chuyển đổi mức có thể khắc phục sự không khớp điện áp, đảm bảo khả năng tương thích giữa mức điện áp của cảm biến và bộ vi điều khiển.

Các yêu cầu về thời gian và lấy mẫu cũng phải được đánh giá, đặc biệt đối với các cảm biến tạo ra dữ liệu tần số cao. Việc định cấu hình các ngắt bên ngoài trên chân GPIO có thể đảm bảo thu thập dữ liệu kịp thời, trong khi các kỹ thuật như sử dụng DMA có thể hợp lý hóa việc truyền dữ liệu để lấy mẫu cảm biến ở tần số cao mà không cần sự tham gia của CPU.

Bây giờ bạn đã tìm hiểu về các giao thức truyền thông và kết nối phần cứng, hãy tập trung vào việc thiết kế kiến trúc phần mềm thu thập, xử lý và chuẩn bị dữ liệu cảm biến để sử dụng. Thiết kế phần mềm hiệu quả là yếu tố quan trọng để thu được dữ liệu rõ ràng, đáng tin cậy từ cảm biến.

Kiến trúc phần mềm

Bây giờ chúng ta đã chọn cảm biến và giao thức truyền thông, hãy thiết kế kiến trúc phần mềm cho đường dẫn cảm biến. Phần mềm này chạy trên bộ vi điều khiển được kết nối với cảm biến và xử lý dữ liệu thô để làm cho dữ liệu sạch và có thể sử dụng được.

Mặc dù việc xử lý dữ liệu ở cấp ứng dụng nằm ngoài phạm vi của bài viết này nhưng hãy tập trung vào việc giao tiếp với cảm biến và chuẩn bị dữ liệu để sử dụng cho ứng dụng.

Quy trình xử lý cảm biến có thể được chia thành các thành phần sau:

  1. Trình điều khiển cảm biến

  2. Hỗ trợ chuyển đổi tương tự sang số (ADC)

  3. Chia tỷ lệ

  4. Hiệu chuẩn

  5. Xử lý hậu kỳ dữ liệu

Hãy cùng xem xét tổng quan cấp cao về các thành phần này cho cả cảm biến thông minh và cảm biến thô.

Tổng quan cấp cao về các thành phần

  1. Trình điều khiển cảm biến

    1. Cảm biến thông minh:Trình điều khiển định cấu hình cảm biến, quản lý nguồn điện và xử lý các hoạt động đọc và ghi vào các thanh ghi cảm biến qua giao thức truyền thông như SPI, I2C.

    2. Cảm biến thô:Trình điều khiển chỉ có thể điều khiển GPIO để quản lý nguồn điện vì cảm biến thô thường thiếu thanh ghi.

  2. Hỗ trợ chuyển đổi tương tự sang kỹ thuật số (ADC)

    1. Cảm biến thông minh:Bao gồm ADC tích hợp, được định cấu hình thông qua trình điều khiển cảm biến.

    2. Cảm biến thô:Yêu cầu ADC bên ngoài, trình điều khiển ADC được triển khai trong phần mềm để định cấu hình ADC, bắt đầu chuyển đổi và truy xuất dữ liệu.

  3. Chia tỷ lệ :Việc chia tỷ lệ là cần thiết cho cả cảm biến thông minh và cảm biến thô. Nó chuyển đổi số lượng kỹ thuật số sau khi chuyển đổi tương tự sang kỹ thuật số thành các đại lượng vật lý có ý nghĩa bằng cách sử dụng các công thức được cung cấp trong bảng dữ liệu cảm biến. Ví dụ:cảm biến nhiệt độ sẽ sử dụng công thức để chuyển đổi số lượng kỹ thuật số sang độ C.

  4. Hiệu chỉnh :Sau khi thu được đại lượng vật lý đo được, hiệu chuẩn sẽ điều chỉnh giá trị bằng cách áp dụng độ lệch, mức tăng hoặc cả hai để sửa lỗi. Quá trình này đảm bảo đầu ra cảm biến phù hợp với các giá trị tham chiếu trên toàn bộ phạm vi đo của nó. Phần thảo luận chi tiết về quy trình hiệu chỉnh sẽ được trình bày trong phần tiếp theo.

  5. Xử lý sau dữ liệu :Các kỹ thuật xử lý hậu kỳ, chẳng hạn như lọc, được áp dụng để cải thiện chất lượng dữ liệu và giảm nhiễu. Các bộ lọc phổ biến như bộ lọc thông thấp hoặc thông cao có thể loại bỏ các thành phần tần số không mong muốn.

Truy cập dữ liệu từ cảm biến

Phương pháp truy cập dữ liệu phụ thuộc vào việc đó là cảm biến thô hay cảm biến thông minh. Cảm biến thông minh sẽ có ADC và FIFO tích hợp. Trước khi đi sâu vào cách truy cập dữ liệu, điều quan trọng trước tiên là phải hiểu tần suất lấy mẫu.

Tần suất lấy mẫu:

Tần suất thực hiện phép đo từ cảm biến phải tuân theo định lý lấy mẫu Nyquist-Shannon. Nó nêu rõ rằng tốc độ lấy mẫu phải gấp đôi thành phần tần số cao nhất của tín hiệu cần đo để tái tạo lại chính xác dữ liệu đo được.

Tần số lấy mẫu xác định tần suất cảm biến thu thập dữ liệu, điều này ảnh hưởng đến cách truy cập dữ liệu. Tùy thuộc vào việc cảm biến là cảm biến thô hay cảm biến thông minh, cách xử lý dữ liệu được lấy mẫu này sẽ khác nhau.

Cảm biến thông minh:

  1. Thanh ghi dữ liệu:Cảm biến ghi dữ liệu được lấy mẫu trực tiếp vào thanh ghi dựa trên tần số mẫu đã đặt được cập nhật trong quá trình thiết lập. Bộ vi điều khiển đọc thanh ghi dữ liệu này dựa trên ngắt hoàn thành chuyển đổi dữ liệu.

  2. FIFObBuffer:Một số cảm biến bao gồm bộ đệm FIFO (Vào trước, ra trước) để lưu trữ nhiều điểm dữ liệu. Khi được bật, FIFO sẽ cập nhật ở tần số lấy mẫu đã định cấu hình và ngắt kích hoạt khi nó đầy hoặc đạt đến mức được xác định trước.
    Lợi ích của FIFO bao gồm:

    1. Hiệu suất sử dụng năng lượng:MCU có thể xử lý dữ liệu theo đợt, giảm chi phí hoạt động của CPU và cho phép nó chuyển sang chế độ tiêu thụ điện năng thấp trong quá trình thu thập dữ liệu.

    2. Khớp tốc độ lấy mẫu và xử lý:Bộ đệm FIFO giúp dung hòa sự khác biệt giữa tốc độ lấy mẫu của cảm biến và tốc độ xử lý dữ liệu của MCU.

    3. Đối với MCU có quyền truy cập bộ nhớ trực tiếp (DMA), việc truyền dữ liệu từ cảm biến sang bộ nhớ MCU có thể diễn ra mà không cần sự can thiệp của CPU, giúp giảm mức tiêu thụ điện năng hơn nữa.

Cảm biến thô:

Đối với các cảm biến thô, MCU kích hoạt chuyển đổi ADC ở tần số lấy mẫu, thường sử dụng ngắt hẹn giờ. Dữ liệu được đọc khi ngắt hoàn toàn quá trình chuyển đổi ADC, cho phép MCU ở chế độ ngủ trong quá trình chuyển đổi và giữa các mẫu để tiết kiệm điện.

Quản lý năng lượng cảm biến

Quản lý năng lượng là rất quan trọng đối với các ứng dụng nhạy cảm với năng lượng. Các chiến lược bao gồm:

  1. Chế độ năng lượng thấp:Nhiều cảm biến hỗ trợ chế độ năng lượng thấp có thể định cấu hình thông qua thanh ghi cảm biến.

  2. Chu kỳ công suất do GPIO điều khiển (Duty-Cycling):Đối với các cảm biến không tích hợp sẵn chế độ năng lượng thấp, bộ vi điều khiển có thể chuyển đổi đường dây nguồn của cảm biến bằng cách sử dụng chân GPIO, giúp giảm mức tiêu thụ điện năng hơn nữa. Hình 3 bên dưới hiển thị sơ đồ của cảm biến nhiệt độ thô có nguồn điện được điều khiển bằng GPIO từ MCU. Ví dụ:cảm biến nhiệt độ ở chế độ ngủ chỉ có thể được kích hoạt khi cần đọc nhiệt độ.

Làm chủ dữ liệu cảm biến trên bộ vi điều khiển:Hướng dẫn từng bước cho người mới bắt đầu

Các kỹ thuật trên đảm bảo sử dụng năng lượng hiệu quả trong khi vẫn duy trì tốc độ lấy mẫu dữ liệu cần thiết và khả năng phản hồi của cảm biến.

Với kiến trúc cấp cao, giờ đây chúng ta sẽ đi sâu vào thiết kế chi tiết của từng thành phần quy trình.

Thiết kế chi tiết các thành phần

Trong phần này, bạn sẽ đi sâu vào các thành phần chính của quy trình cảm biến được nêu trong phần Kiến trúc phần mềm.

1. Trình điều khiển cảm biến

Trình điều khiển cảm biến chịu trách nhiệm quản lý hoạt động giao tiếp, cấu hình, nguồn điện và thu thập dữ liệu cho cả cảm biến thông minh và cảm biến thô.

Trình điều khiển cảm biến thông minh:

  1. Trình điều khiển giao tiếp:Trình điều khiển I2C hoặc SPI chung trên MCU có thể được điều chỉnh bằng cách sử dụng các hàm bao bọc để xử lý các yêu cầu dành riêng cho cảm biến, chẳng hạn như truyền 1 byte, 2 byte hoặc 4 byte.

  2. Cấu hình:Các tác vụ điển hình bao gồm đặt tốc độ lấy mẫu, định cấu hình các ngắt, quản lý bộ đệm FIFO và cài đặt đồng hồ nếu cần.

  3. Quản lý nguồn:API phải cho phép các lớp phần mềm cao hơn chuyển đổi cảm biến giữa các chế độ nguồn bằng cách ghi vào các thanh ghi cụ thể hoặc kiểm soát các dòng GPIO cho cảm biến không có chế độ nguồn tích hợp.

Trình điều khiển cảm biến thô:

Đối với các cảm biến thô, trình điều khiển chủ yếu quản lý nguồn điện, thường thông qua việc chuyển đổi do GPIO điều khiển.

2. Hỗ trợ ADC

Hỗ trợ ADC chỉ được yêu cầu cho các cảm biến thô. Trong bài viết này, chúng tôi tập trung vào SAR ADC, thường được nhúng trong bộ vi điều khiển.

Bộ ADC SAR hoạt động như thế nào?

ADC SAR chuyển đổi tín hiệu tương tự thành giá trị số qua nhiều chu kỳ xung nhịp, với số chu kỳ bằng với độ phân giải bit của nó (ví dụ:10 chu kỳ đối với ADC 10 bit).

  1. Điện áp tham chiếu (VRef):Biểu thị điện áp tối đa mà ADC có thể đo được. Tín hiệu tương tự vượt quá giới hạn này phải được thu nhỏ lại.

  2. Độ phân giải:Xác định sự thay đổi điện áp nhỏ nhất có thể phát hiện được. Ví dụ:ADC 10 bit có VRef 3,3V có độ phân giải 3,22 mV

$$V_{\text{Res}} =V_{\text{Ref}} /2^{10}$$

Kết quả ADC được lưu trữ trong một thanh ghi dữ liệu, sau đó có thể được chia tỷ lệ thành các đơn vị vật lý có ý nghĩa.

3. Chia tỷ lệ

Tính năng chia tỷ lệ chuyển đổi số lượng ADC thành các giá trị vật lý có ý nghĩa, chẳng hạn như nhiệt độ (°C) hoặc gia tốc (g) tùy thuộc vào loại cảm biến. Bảng dữ liệu cảm biến thường cung cấp các công thức hoặc bảng tra cứu cần thiết.

Ví dụ:phương pháp chuyển đổi điện áp được đo bằng cảm biến nhiệt độ thô thành giá trị nhiệt độ được hiển thị bên dưới:

$$V_{\text{Measured}} =Số lượng_{\text{ADC}} / 2^{10} * V_{\text{Ref}} \quad \text{(Lấy V_Đo từ số lượng ADC)}$$

$$Temperature_{\text{Measured}} =V_{\text{Measured}} * T_{\text{C/mV}} \quad \text{(Nhận giá trị vật lý Nhiệt độ)}$$

Tương tự, gia tốc kế 3 trục ánh xạ số đếm trên trục X, Y và Z thành các giá trị gia tốc tính bằng g hoặc milli-g.

4. Hiệu chuẩn

Làm chủ dữ liệu cảm biến trên bộ vi điều khiển:Hướng dẫn từng bước cho người mới bắt đầu

Hình trên bên trái (4a) đang hiển thị Hiệu chuẩn với mức tăng và độ lệch, trong khi hình trên bên phải (4b) đang hiển thị hiệu chuẩn với độ lệch cố định.

$$x_{\text{calibrated}} =Tăng * x_{\text{raw}} + Offset \quad \text{(Hình 4a - Hiệu chỉnh tuyến tính)}$$

$$x_{\text{calibrated}} =x_{\text{raw}} + Offset \quad \text{(Hình 4b - Hiệu chỉnh offset cố định)}$$

Hiệu chuẩn đảm bảo đầu ra của cảm biến phù hợp với các phép đo tham chiếu, sửa các lỗi do thiết kế, vật liệu hoặc sản xuất gây ra.

Các loại lỗi:

  1. Lỗi bù:Độ lệch không đổi của đầu ra của cảm biến so với giá trị tham chiếu thực, bất kể cường độ đầu vào.

  2. Lỗi tăng:Lỗi tỷ lệ trong đó thang đo đầu ra của cảm biến sai lệch so với giá trị mong đợi, khiến đầu ra tăng hoặc giảm không chính xác so với đầu vào.

Phương pháp hiệu chỉnh:

  1. Hiệu chuẩn 2/3 điểm:Loại hiệu chuẩn này có thể liên quan đến việc áp dụng độ lệch cố định cho giá trị thô hoặc áp dụng cả mức tăng và độ lệch. Hình 4a minh họa một ví dụ về hiệu chuẩn độ lợi/độ lệch, trong khi Hình 4b mô tả hiệu chuẩn độ lệch. Trong cả hai hình, trục y biểu thị giá trị tham chiếu được đo bằng thiết bị chính xác, trong khi trục x biểu thị giá trị thô được cảm biến đo sau ADC.

  2. Hiệu chỉnh điểm N:Liên quan đến nhiều điểm để sửa lỗi phi tuyến tính phức tạp hơn.

Triển khai:

  1. Các điểm hiệu chuẩn sẽ bao trùm toàn bộ phạm vi đo của cảm biến để đảm bảo độ chính xác.

  2. Các tham số như độ lợi và độ lệch sau khi được ước tính sẽ được lưu trữ trong bộ nhớ cố định trong hệ thống để sử dụng liên tục trong các chu kỳ nguồn.

5. Xử lý sau dữ liệu

Quá trình xử lý hậu kỳ được đề cập trong phần này nói về việc loại bỏ nhiễu và các thành phần tín hiệu không mong muốn, giúp cải thiện độ tin cậy của dữ liệu.

Lọc

Lọc là quá trình loại bỏ các thành phần tần số không mong muốn khỏi tín hiệu để cải thiện chất lượng dữ liệu. Có một số loại bộ lọc khác nhau:

  • Bộ lọc thông thấp:Cho phép tín hiệu tần số thấp đi qua đồng thời làm giảm nhiễu tần số cao.

  • Bộ lọc thông cao:Cho phép tín hiệu tần số cao đi qua đồng thời làm giảm nhiễu tần số thấp. (ví dụ:gia tốc trọng trường trong dữ liệu gia tốc kế).

  • Bộ lọc thông dải:Chỉ giữ lại các tín hiệu trong một dải tần số cụ thể, loại bỏ cả tần số thấp hơn và cao hơn bên ngoài dải tần mong muốn.

Các bộ lọc này thường được triển khai dưới dạng bộ lọc FIR (Phản hồi xung hữu hạn) hoặc IIR (Phản hồi xung vô hạn). Bộ lọc IIR dễ triển khai và tính toán hiệu quả trong khi bộ lọc FIR đòi hỏi tính toán chuyên sâu nhưng có khả năng kiểm soát đáp ứng tần số tốt hơn.

Ở đây, chúng ta sẽ khám phá một bộ lọc thông thấp đơn giản được gọi là Đường trung bình động hàm mũ (EMA), một loại bộ lọc IIR. Bộ lọc trung bình động là một kỹ thuật toán học giúp làm dịu các biến động ngắn hạn đồng thời làm nổi bật các xu hướng dài hạn.

Không giống như các bộ lọc trung bình động khác, EMA không yêu cầu duy trì bộ đệm, giúp sử dụng bộ nhớ hiệu quả hơn. Nó cũng phản ứng nhanh hơn với những thay đổi của dữ liệu trong khi vẫn cung cấp khả năng làm mịn, khiến nó rất phù hợp để lọc theo thời gian thực. EMA gán trọng số lớn hơn cho các mẫu dữ liệu gần đây so với các mẫu dữ liệu cũ, cho phép nó thích ứng nhanh chóng với những thay đổi trong chỉ số cảm biến.

EMA có thể được tính như thế này:

$$EMA_{\text{t}} =\alpha * x_{\text{t}} + (1 - \alpha) * EMA_{\text{t - 1}}$$

$$\alpha =2 / (N + 1) \quad \text{(Hệ số làm mịn, N - kích thước cửa sổ bộ lọc)}$$

$$EMA_{\text{t}} \quad \text{(Trung bình trượt theo hàm mũ trong lần lặp hiện tại)}$$

$$x_{\text{t}} \quad \text{(Mẫu dữ liệu mới trong lần lặp hiện tại)}$$

$$EMA_{\text{t - 1}} \quad \text{(Trung bình di chuyển theo hàm mũ trong lần lặp cuối cùng)}$$

Bây giờ chúng ta đã hiểu bộ lọc Trung bình trượt hàm mũ (EMA), đây là hai yếu tố chính cần xem xét khi điều chỉnh bộ lọc cho một ứng dụng:

  • Làm mịn so với Độ phản hồi:Hệ số làm mịn cao hơn (gần bằng 1, kích thước cửa sổ bộ lọc nhỏ hơn) mang lại nhiều trọng số hơn cho dữ liệu gần đây, khiến bộ lọc phản ứng nhanh hơn với các thay đổi nhưng kém hiệu quả hơn trong việc giảm nhiễu. Hệ số làm mịn thấp hơn (gần bằng 0, kích thước cửa sổ bộ lọc lớn hơn) giúp giảm nhiễu tốt hơn nhưng phản ứng chậm hơn với những thay đổi dữ liệu.

  • Điều chỉnh dành riêng cho ứng dụng:Hệ số làm mịn phải được chọn dựa trên tốc độ lấy mẫu, độ nhạy cảm biến và yêu cầu ứng dụng. Hệ thống thời gian thực thường yêu cầu sự cân bằng giữa khả năng phản hồi nhanh và đầu ra ổn định.

Đây là mẫu mã cho EMA:

#include <stdio.h>
#include <stdint.h>
// Exponential Moving Average (EMA) filter implementation
#define FILTER_WINDOW 5
// Function to calculate EMA
float calculateEMA(float ema, float new_value, float alpha) {
 return (alpha * new_value) + (1 - alpha) * ema;
}
int main() {
 float sensorReadings[] = {26.0, 27.5, 28.2, 27.0, 26.8, 26.5, 27.2};
 int numReadings = sizeof(sensorReadings) / sizeof(sensorReadings[0]);
 float alpha = 2.0f / (FILTER_WINDOW + 1); // Standard EMA formula
 float ema = sensorReadings[0]; // Initialize EMA with the first reading
 printf("EMA Filtered Sensor Data:\n");
 for (int i = 0; i < numReadings; i++) {
 ema = calculateEMA(ema, sensorReadings[i], alpha);
 printf("Reading %d: Raw = %.2f, EMA = %.2f\n", i + 1, sensorReadings[i], ema);
 }
 return 0;
}

Kết luận

Tóm lại, cảm biến là xương sống của các thiết bị thông minh hiện đại, thu hẹp khoảng cách giữa thế giới vật lý và hệ thống kỹ thuật số. Từ thiết bị điện tử tiêu dùng đến thiết bị tự động hóa công nghiệp và y tế, chúng cho phép các thiết bị nhận biết và tương tác với môi trường của chúng.

Hiểu cách hoạt động của các cảm biến, các thành phần trong đường dẫn dữ liệu của chúng và sự tích hợp của chúng với bộ vi điều khiển là điều cần thiết đối với các kỹ sư cũng như những người có sở thích. Bằng cách thiết kế các quy trình hiệu quả, các nhà phát triển có thể đảm bảo dữ liệu chính xác, rõ ràng và đáng tin cậy, cho phép các hệ thống đáp ứng các mục tiêu về hiệu suất và hiệu quả sử dụng năng lượng.

Nếu bạn có thắc mắc hoặc muốn nói thêm về chủ đề này, vui lòng liên hệ trên Twitter hoặc LinkedIn. Luôn sẵn lòng kết nối.

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu