Thức dậy từ chế độ ngủ sâu


13

Hầu hết các bộ vi điều khiển (ví dụ: AVR, MSP430, PIC, v.v.) đều hỗ trợ một số chế độ ngủ khác nhau. Chế độ ngủ "sâu nhất" là chế độ có khả năng giảm năng lượng thấp nhất (ví dụ "Tắt nguồn", "Tắt máy"), nhưng tất cả các hệ thống đồng hồ thường bị dừng trong các chế độ này và theo tôi đó là cách duy nhất để " thức dậy "từ chúng là thông qua kích thích bên ngoài (ví dụ như ngắt thay đổi pin, thiết lập lại chip). Tui bỏ lỡ điều gì vậy? Có phương pháp nào cực kỳ thấp để tạo tín hiệu đánh thức định kỳ cho MCU không?

Giả sử mục tiêu của tôi là giảm thiểu tiêu thụ năng lượng (tức là ngủ sâu càng lâu càng tốt, tỉnh táo càng nhanh càng tốt), trong khi thức dậy định kỳ để thực hiện một chức năng, cách phổ biến để đạt được loại hành vi này là gì? Để đơn giản hóa hơn nữa các vấn đề, hãy giả sử rằng chức năng của tôi là không trạng thái (tôi không phải nhớ bất cứ điều gì từ quá khứ để thực hiện nó).

Tôi đã có một số thành công khi sử dụng WDT trên MSP430 để có được hiệu ứng này. Tôi chỉ thực hiện thói quen chính của mình là chức năng của mình, với dòng cuối cùng cho phép đồng hồ bấm giờ hết hạn sau một khoảng thời gian nhất định và chuyển sang LPM4.5 hoặc bất cứ chế độ "ngủ sâu" nào được gọi. Kết quả cuối cùng là chức năng được thực hiện, MCU ngủ, WDT hết hạn và đặt lại chip, quảng cáo. Có vẻ như để làm việc, chỉ tự hỏi liệu có một cách "tốt hơn" hoặc "thanh lịch hơn" hoặc "hiệu quả năng lượng hơn" để có được loại hành vi này?

Tôi chưa thử cách tiếp cận này với một chiếc AVR, nhưng tôi nghĩ WDT "đói điện" hơn trong các máy AVR so với trên MSP430 nên có thể kém hấp dẫn hơn đối với công việc năng lượng thấp. Có lẽ không có cách tiếp cận "phổ quát" đối với công suất thấp và bạn phải sử dụng các công cụ được cung cấp bởi một dòng sản phẩm nhất định? Tôi biết dòng picoPower mới có rất nhiều tính năng phù hợp như Hệ thống sự kiện và Đi bộ trong giấc ngủ mà trong một số trường hợp hầu như không yêu cầu CPU phải tỉnh táo nếu bạn có thể làm cho ứng dụng của mình phù hợp với cấu trúc đó ...

Được rồi, tôi đi lang thang, hãy đến đây những gì bạn sẽ nói :)

Chỉnh sửa các ví dụ cụ thể minh họa kỹ thuật cũng sẽ được mát mẻ!


2
Bạn đã thấy Focus.ti.com/lit/wp/slay015/slay015.pdf chưa? Một số điểm thú vị bên cạnh số lượng sức mạnh giấc ngủ tuyệt đối.
XtL

Câu trả lời:


15

Hầu hết các micros đều hỗ trợ bộ tạo dao động tinh thể đồng hồ 32.768 kHz công suất thấp với một số loại bộ đếm trước và ngắt hẹn giờ. Đặt bộ đếm gộp trước để bộ đếm thời gian đếm chậm và ngắt xảy ra ở khoảng thời gian bạn mong muốn.

Một số micros cũng có bộ hẹn giờ RC công suất thấp tích hợp nếu thời gian chính xác không quan trọng.

Bảng dữ liệu cho bất kỳ vi năng lượng thấp nào sẽ liệt kê công suất với bộ dao động 32.768 (và không có gì khác) đang chạy. Nó khá gần với số không. Bạn có thể làm toán để xem điều này có chấp nhận được không, và so sánh nó với hiện tại được vẽ bởi cơ quan giám sát.

OK, ví dụ trên msp430f2013, hãy xem sức mạnh trong biểu dữ liệu.

0,5 A gần như bằng 0, mặc dù nó gấp năm lần chế độ TẮT thực sự.

Để biết thêm chi tiết, chúng ta có thể nhìn vào bảng dữ liệu.
Đi từ LPM4 (mọi thứ tắt) sang LPM3 (chạy bộ dao động) là sự khác biệt giữa 0,5 A và 1 A.

Giả sử pin là CR2032 với dung lượng 225 mAh. Sau đó, chế độ chờ trong LPM4 là khoảng 50 năm và trong LPM3 là khoảng 25 năm. 25 năm là đủ dài cho nhiều ứng dụng, bởi vì dòng điện ON (trong quá trình đo) chiếm ưu thế tiêu thụ.

văn bản thay thế


vui lòng chọn một ví dụ cụ thể ... :)
Abbeyatcu

xong, cho tế bào msp430f2013 và cr2032.
markrages

Chúng tôi sử dụng Cr2032 trong công việc của tôi với ACLK ở 32768, cứ sau 2 giây lại thức dậy. Chúng tôi sử dụng một bộ thu phát cứ sau 90 giây. Chúng tôi thực hiện đo nhiệt độ cứ sau 10 giây. Chúng tôi có thể tồn tại hơn 4 năm với CR2032 mới.
Kortuk

3

Một số bộ phận có bộ dao động công suất khá thấp (một vài uA) để đánh thức và một số PIC cũng có phần cứng để cho phép điện áp tăng rất chậm trên pin để đánh thức - đây có thể là từ một tụ điện bên ngoài được thiết lập trước khi ngủ để sạc qua yêu cầu thời gian đánh thức.


3

Các PIC có RTC có thể đặt RTC ở trạng thái báo động, do đó, nó sẽ đánh thức MCU tại một thời điểm nhất định, với tinh thể 32.768kHz bên ngoài. Họ rút ~ 450nA IIRC ở chế độ ngủ RTC +, nhưng chỉ tắt 20nA khi tắt RTC.


3

Bộ định thời giám sát AVR không tệ như bạn nghĩ. Theo bảng dữ liệu ATTiny13A, mức rút hiện tại ở chế độ giảm nguồn @ 3V là 2μA khi không bật WDT và 4μA với. Chắc chắn, nó nhiều hơn gấp 2 lần, nhưng bản thân dòng điện này đủ nhỏ cho khoảng 6,2 năm hoạt động, tức là khoảng thời gian mà pin phải tự xuống cấp dù sao đi nữa (nguồn: ngày tốt nhất trước ngày).

Ngoài ra, thực tế, bất cứ điều gì khác mà bạn kết nối xung quanh μC sẽ thu hút được nhiều hơn nữa. Trong thực tế, phần khó nhất của việc thiết kế một mạch công suất thấp như vậy là tắt tất cả dòng điện trong phần còn lại của sơ đồ trong suốt thời gian ngủ.

Độ trễ đánh thức cũng có thể cấu hình độc đáo, từ ~ 12ms đến 8 giây, nếu bộ nhớ phục vụ. Tần số thực tế không tạo ra bất kỳ sự khác biệt đáng chú ý nào nếu các thói quen gián đoạn ngắn được sử dụng: Tôi đã thoát khỏi việc bật ADC, lấy mẫu nồi 1K, tính toán một số thứ từ kết quả và trở lại giấc ngủ mà không có thay đổi đáng chú ý nào về mức tiêu thụ chung ( làm mịn bằng một tụ điện lớn để bù đắp cho sự chậm chạp của vạn năng của tôi).

Xin lưu ý rằng WDT không phải là một công cụ chấm công chính xác, vì vậy bạn có thể muốn kết nối RTC bên ngoài. Những người có thể tiêu thụ chỉ nanoamp, vì vậy nó nên là một cặp tốt. Trong thực tế, nếu RTC trong câu hỏi có thể tạo ra các xung thông thường, bạn có thể sử dụng đó làm nguồn thức dậy thay vì WDT với chi phí sử dụng hết pin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.