CongNgheRobot.comLinh kiện làm nên một con robot
Chip & bo điều khiển

Vi điều khiển và tầng thời gian thực

Tầng dưới cùng của mọi robot: vòng lặp chạy hàng nghìn lần mỗi giây và không được phép trễ.

Bo mạch vi điều khiển với các cổng kết nối

Máy tính chính của robot chạy hệ điều hành, xử lý ảnh, nói chuyện với máy chủ. Nhưng vòng điều khiển động cơ không chạy ở đó, và lý do rất cụ thể.

Vì sao cần tầng riêng

Hệ điều hành thông thường không đảm bảo thời gian. Nó có thể tạm dừng chương trình của bạn để làm việc khác. Bình thường thì vài mili giây, thỉnh thoảng thì lâu hơn nhiều.

Vòng điều khiển không chịu được điều đó. Trễ trong vòng phản hồi làm giảm biên độ ổn định. Trễ đủ lớn thì hệ dao động hoặc mất kiểm soát.

Vi điều khiển không có vấn đề này. Không hệ điều hành hoặc hệ điều hành thời gian thực, chương trình chạy đúng nhịp, thời gian đáp ứng đoán trước được.

Lý do thứ hai — an toàn. Chức năng an toàn phải hoạt động kể cả khi máy tính chính treo. Đặt ở vi điều khiển riêng là cách đảm bảo điều đó.

Lý do thứ ba — khởi động nhanh. Vi điều khiển sẵn sàng trong mili giây; máy tính mất hàng chục giây khởi động.

Lý do thứ tư — tiêu thụ điện. Vi điều khiển tiêu thụ rất ít, cho phép giữ chức năng cơ bản khi robot ở chế độ ngủ.

Ranh giới phân chia. Việc gì cần đúng nhịp và cần đảm bảo thì ở vi điều khiển; việc gì cần thư viện phong phú và tính toán nặng thì ở máy tính.

Chọn vi điều khiển

Tốc độ xử lý. Đủ để hoàn thành vòng điều khiển trong chu kỳ. Tính thô là tần số nhân với số lệnh có thể chạy, chia cho tần số vòng lặp.

Có đơn vị tính dấu phẩy động không. Điều khiển thường dùng số thực. Không có phần cứng hỗ trợ thì phải mô phỏng bằng phần mềm, chậm hơn nhiều lần.

Số lượng và loại ngoại vi. Bộ tạo xung điều khiển động cơ, bộ đếm cho cảm biến vị trí, bộ chuyển đổi tương tự số, các cổng giao tiếp. Đếm nhu cầu trước khi chọn.

Bộ đếm phần cứng cho encoder. Rất quan trọng. Đếm xung bằng phần mềm ở tần số cao là gánh nặng lớn và dễ mất xung.

Số chân. Thường là ràng buộc thực tế trước cả tốc độ.

Hệ sinh thái. Công cụ phát triển, thư viện, tài liệu, cộng đồng. Chip mạnh mà không có công cụ tốt thì tốn thời gian hơn nhiều.

Nguồn cung. Chip còn sản xuất bao lâu, có mua được ở Việt Nam không, thời gian giao bao lâu. Đã có những giai đoạn thiếu chip khiến dự án phải thiết kế lại.

Viết phần mềm điều khiển

Vòng lặp có nhịp cố định. Dùng ngắt định thời để đảm bảo đúng chu kỳ, không dùng vòng lặp có độ trễ.

Đo thời gian thực thi. Bật một chân ra khi bắt đầu vòng lặp và tắt khi kết thúc, đo bằng máy hiện sóng. Cho biết vòng lặp chiếm bao nhiêu phần trăm chu kỳ.

Giữ dư địa. Vòng lặp nên chiếm dưới bảy mươi phần trăm chu kỳ. Sát quá thì một nhánh xử lý hiếm gặp có thể làm trễ.

Tránh phép tính tốn kém trong vòng lặp. Chia, căn, lượng giác. Thay bằng bảng tra hoặc xấp xỉ nếu cần.

Không cấp phát bộ nhớ động. Thời gian không đoán trước được và có thể thất bại. Cấp phát tĩnh toàn bộ.

Xử lý ngắt ngắn gọn. Ngắt chỉ ghi dữ liệu vào biến, xử lý ở vòng lặp chính. Ngắt dài chặn các ngắt khác.

Cẩn thận với biến chia sẻ giữa ngắt và chương trình chính. Đọc một biến nhiều byte có thể bị ngắt giữa chừng, cho giá trị lai. Nguồn lỗi rất khó tìm.

Giao tiếp với tầng trên

Yêu cầu. Máy tính gửi lệnh mục tiêu xuống, vi điều khiển gửi trạng thái lên. Tần số vài chục tới vài trăm lần mỗi giây.

Các chuẩn thường dùng. Giao tiếp nối tiếp đơn giản cho hệ nhỏ. Bus vi sai cho môi trường nhiễu và nhiều thiết bị. Mạng cho tốc độ cao và khoảng cách xa.

Thiết kế giao thức. Gói có tiêu đề, độ dài, dữ liệu và mã kiểm tra. Mã kiểm tra là bắt buộc — dữ liệu hỏng không được phép trở thành lệnh chuyển động.

Xử lý mất kết nối. Vi điều khiển phải phát hiện khi không nhận được lệnh trong một khoảng thời gian và tự chuyển sang trạng thái an toàn — thường là dừng.

Đây là cơ chế an toàn quan trọng. Máy tính treo hoặc cáp đứt thì robot dừng thay vì chạy tiếp theo lệnh cuối cùng.

Đồng bộ thời gian. Dữ liệu trạng thái nên kèm dấu thời gian để tầng trên biết nó cũ bao nhiêu.

Đừng gửi quá nhiều. Băng thông có hạn và xử lý gói cũng tốn thời gian của vòng lặp. Gửi cái cần, ở tần số cần.

Nạp phần mềm và gỡ lỗi

Cập nhật từ xa. Vi điều khiển gắn sâu trong robot nên phải nạp được phần mềm qua kết nối, không phải tháo máy. Cần thiết kế từ đầu.

Vùng khởi động an toàn. Một chương trình nhỏ luôn tồn tại, cho phép nạp lại nếu bản chính hỏng. Không có nó thì một lần nạp lỗi biến bo mạch thành gạch.

Quay lui. Giữ bản cũ để trở về nếu bản mới có vấn đề.

Gỡ lỗi bằng chân ra. Bật tắt một chân để đánh dấu sự kiện, xem bằng máy hiện sóng. Cách gỡ lỗi hiệu quả nhất cho vấn đề về thời gian.

Ghi nhật ký lên tầng trên. Vi điều khiển gửi thông tin chẩn đoán cho máy tính lưu. Không lưu tại chỗ vì bộ nhớ hạn chế.

Mạch giám sát tự khởi động lại. Nếu chương trình treo thì tự khởi động lại. Bắt buộc với hệ thống chạy không giám sát.

Đèn báo trạng thái. Một đèn nhấp nháy theo mã cho biết vi điều khiển đang ở trạng thái nào. Rẻ và cứu rất nhiều thời gian khi chẩn đoán tại hiện trường.

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

Vì sao vòng điều khiển không chạy trên máy tính chính?

Vì hệ điều hành thông thường có thể tạm dừng chương trình bất cứ lúc nào, và trễ trong vòng phản hồi làm giảm biên độ ổn định tới mức hệ dao động.

Ngoại vi nào quan trọng nhất khi chọn vi điều khiển cho robot?

Bộ đếm phần cứng cho cảm biến vị trí. Đếm xung bằng phần mềm ở tần số cao là gánh nặng lớn và dễ mất xung.

Cơ chế an toàn nào bắt buộc trong giao tiếp hai tầng?

Vi điều khiển phát hiện khi không nhận được lệnh trong một khoảng thời gian và tự dừng. Nhờ đó máy tính treo hoặc cáp đứt thì robot dừng thay vì chạy tiếp.

Vì sao cần vùng khởi động an toàn?

Vì không có nó thì một lần nạp phần mềm lỗi biến bo mạch thành không dùng được, và với vi điều khiển gắn sâu trong robot thì đó là sự cố tốn kém.

Đọc thêm trong Camera & LiDARVật liệu & kết cấu.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138