Làm sao để cấp nguồn cho BeagleBone Black bằng pin LiPo 3.7V? Giả sử chúng ta cần kết nối board với động cơ DC hoặc những thiết bị khác mà tiêu thụ nhiều điện. Làm sao để cung cấp đủ dòng cho hệ thống hoạt động.
Bài này viết về cách thực hiện một hệ thống pin sạc dự phòng cho BeagleBone Black (BBB). Cách làm này đơn giản và rẻ tiền.
Trước khi bắt đầu, một vài thông tin mà bạn cần biết về mạch nguồn (power circuitry) trên BeagleBone Black board.
Trên BeagleBone Black có sẵn một IC quản lý nguồn (Power Management IC – PMIC) là TI TPS65217C. IC này chứa nhiều bộ điều chỉnh chế độ chuyển mạch (switch-mode regulator) và bộ điều chỉnh LDO (LDO regulator) để cung cấp tất cả các mức điện áp cần thiết cho toàn bộ board. Nó đảm nhiệm việc đánh thức (wake-up) board bằng nút nhấn có sẵn trên board. Tự động tắt nguồn thông qua nút nhấn này yêu cầu vài phần mềm thực thi tương đương gõ lệnh ‘shutdown now’ từ command line. Khi nút được nhấn đè và giữ, một ngắt (interrupt) được kích hoạt và vi xử lý (microprocessor) truy vấn tới PMIC (bằng I2C) để xem xét nút đã được nhấn hay chưa, và kích hoạt quá trình tắt máy (shutdown). Trong trường hợp xảy ra lỗi ở đây, bạn có thể tắt nguồn bằng cách giữ nút trong 8 giây. IC cũng tích hợp khả năng sạc pin.
Ngoài yêu cầu USB là 5V thì không cần phải chạy BBB ở 5V; nó có thể chạy thoải mái từ nguồn điện thấp hơn. Điều này có nghĩa là nó có thể sử dụng một cell 3.7V để cấp nguồn cho toàn bộ bo mạch. Không cần phải tăng điện áp lên 5V hoặc chạy hai cell và hạ áp xuống 5V, cả hai đều có thể không hiệu quả.
Lợi ích của việc gắn pin
Đây là một nền tảng thích hợp cho các ứng dụng ngoài trời hoặc di động. Đối với sử dụng trong nhà, pin có vai trò là nguồn dự phòng khi xảy ra mất kết nối nguồn điện chính (nguồn cung cấp qua cổng USB hoặc cổng nguồn 5V). Nó giúp ngăn hệ thống file bị hư do mất điện đột ngột. Nếu bị mất điện nguồn chính thì nguồn từ pin sẽ thay thế ngay lập tức. Chúng ta có thể luôn kết nối pin trong khi đang chạy từ nguồn chính để đề phòng trường hợp quên tắt nguồn board an toàn.
Có thể sử dụng pin nào?
Chúng ta có thể sử dụng các loại pin Lithium Ion (Li-Ion) hoặc Lithium Polymer (Li-Po) một cell đều được. Tốt nhất là nó có mạch bảo vệ tích hợp sẵn. Nếu nó không có mạch tích hợp thì bạn nên sử dụng loại có nhiệt điện trở tích hợp. Nên sử dụng pin có dung lượng từ 700mAH đến khoảng 2AH.
Pin dùng trong hình trên là pin Olimex BATTERY-LIPO1400mAh. Pin có thể dùng được khoảng 2 giờ 50 phút khi sạc đầy và sạc đầy trong khoảng 2 giờ. Loại pin này có kích thước vừa vặn để đặt vô giữa hai hàng header và nằm sát để vẫn có thể cắm them board mở rộng nếu cần. Cho nên toàn bộ hệ thống này có thể để vừa vặn bên trong một chiếc hộp nhỏ. Bạn cũng sẽ cần một đầu nối (xem ở phần tiếp theo) và một điện trở.
Chi tiết kỹ thuật
BeagleBone Black có 4 lỗ dành cho kết nối pin. Chi tiết xem trong tài liệu (PDF) BBB System Reference Manual.
Vị trí lỗ cắm trên board thì như hình sau:
Pin Olimex Li-Po đã tích hợp mạch bảo vệ, nên chỉ cần hàn một điện trở 10K giữa chân TS (TP7) và GND (TP8) để mô phỏng nhiệt điện trở. Tiếp theo nối 2 chân TP5 và TP6 bằng điện trở 0-ohm. Bạn nên xài một đầu cắm của pin Li-Po, vì nó rất tiện khi hàn các chân TP ở mặt dưới board.
CHÚ Ý: Bạn có thể làm bước này hoặc không. Một khi đã hàn điện trở 10K giữa chân TS và GND, và hàn điện trở 0-ohm giữa TP5 và TP6, thì BeagleBone Black phải luôn gắn pin để khởi động, bất kể bạn muốn cấp nguồn bằng cổng DC hoặc pin nếu được sạc. Nếu không gắn pin, thì PMIC sẽ không xác định được rằng pin có bị lỗi hay không, và sẽ không cấp nguồn cho board. Hãy đọc kỹ BBB System Reference Manual trước khi đưa ra quyết định.
Dưới đây là cách thực hiện. Gồm có 2 bước:
Bước 1: Hàn một điện trở 10K và một 0-ohm, cả hai đều hàn ở mặt dưới của board. Như trong hình dưới đây, ô màu vàng. Đây là loại điện trở 0603 đơn giản; bài viết này sử dụng điện trở có dung sai 1%, nhưng 5% vẫn ổn.

Bước 2: Hàn đầu nối pin. Điều này khá đơn giản, nhưng hơi phức tạp vì đầu nối có khoảng cách chân cắm là 2mm, nhưng bo mạch có khoảng cách là 0.1 inch (2.54mm). Nghĩa là các chân cắm trên đầu nối cần phải được xòe ra hoặc uốn cong theo đúng khoảng cách. Các đầu nối được bán có dạng cắm theo chiều dọc hoặc cắm theo góc vuông. Nếu bạn sử dụng đầu nối cắm theo chiều dọc, có thể không có đủ không gian để xòe ra các chân cắm. Thay vào đó, bạn có thể sử dụng đầu nối góc vuông và uốn các chân cắm theo hướng thẳng đứng để có không gian uốn cong các chân cắm và vẫn có đầu nối thẳng với bo mạch như hình ở đây. Bạn có thể thấy một góc nhìn khác của đầu nối này trong hình chụp ở đầu bài viết.

Thông tin tham khảo của loại đầu nối này ở đây JST ‘PH’ series.
Vậy là xong; cắm pin vào, board mạch sẽ hoạt động ngay lập tức.
Chú ý rằng phương pháp sạc pin Li-Po thường cần cung cấp một dòng điện không đổi cho pin cho đến khi pin đạt đến một điện áp nhất định, rất chính xác. Sau đó, bộ sạc chuyển sang chế độ điện áp không đổi. Trong bài viết này, bộ sạc của pin Li-Po cần được ở mức 4.2V, nhưng theo mặc định, BeagleBone Black chỉ đặt ở mức 4.1V (có thể chỉnh thành 4.2V thông qua điều khiển I2C, nhưng mình đã không làm). Theo tìm hiểu thì mình không chắc tác động của việc này là gì (ngoài việc lưu trữ ít điện tích hơn), nhưng nó an toàn. Nhiều người đã thử nghiệm, như sử dụng nó hàng ngày trong ba tháng thì pin luôn mát khi chạm vào.
Điều khiển PMIC
PMIC TPS65217C có thể lập trình được. Nó có hàng chục thiết lập cấu hình dành riêng cho việc sạc và có khả năng hẹn giờ an toàn. PMIC được cấu hình khi khởi động thông qua I2C. Có ba bus I2C trên BBB và một bus dành riêng cho các thiết bị ngoại vi trên bo mạch. Người dùng thường không thể kiểm soát PMIC vì nó yêu cầu code driver hoặc quyền truy cập thông qua cấu trúc hệ thống device tree. Việc kiểm tra thử file .dts trong /boot cũng không tiết lộ cách điều khiển bộ sạc pin.
Kiểm tra thời gian sử dụng pin
Bài kiểm tra đơn giản này được thực hiện bằng pin Olimex được đề cập ở trên.
1. Bật nguồn BBB bằng nguồn điện DC và để nó sạc pin trong khi cấp nguồn cho BBB
2. Sau khoảng 4-5 giờ, nguồn điện DC được ngắt kết nối và chạy một script trên BBB để ghi log ngày/giờ hiện tại vào một file, mỗi phút. Script sẽ ngủ trong khoảng thời gian đó. Kết nối Ethernet được giữ nguyên và BBB được để nguyên cho đến khi pin hết, sau đó kiểm tra log file.
#!/bin/bash while true; do date >> log.txt sleep 60 done
Kết quả là log file cho thấy BBB chạy trong 2 giờ 30 phút trước khi chết. Sau đó, bài kiểm tra được lặp lại. Lần thứ hai, nó chạy trong 2 giờ 50 phút. Sự khác biệt có thể là do pin này chưa bao giờ được sạc đầy sau đó xả lâu như vậy, và do đó có lẽ nó liên quan đến điều đó. Không có bài kiểm tra nào được chạy khi Ethernet bị ngắt kết nối, nhưng BBB sẽ chạy lâu hơn trong trường hợp đó.

Trong lần kiểm tra thứ ba, pin lại chạy trong 2 giờ 50 phút (chênh lệch 1 phút). Một lần nữa, điều này xảy ra khi Ethernet interface được bật.
Bài viết được dịch từ element14.com
Nguồn tham khảo
- BBB – Rechargeable on-board battery system
- How can I power Beagle Bone Black with 3.7V LiPo?
- BBB_SRM.pdf (github.com)
Bài viết nhằm mục đích phục vụ cộng đồng.
Nếu bạn yêu thích, hãy donate để tôi có thể tiếp tục việc làm ý nghĩa này. Tôi cần rất nhiều coffee để có thể tiếp tục.
Thông tin chuyển khoản:
VietinBank – 100868978931 – TA LUC GIA HOANG