Khởi động với nguồn điện thấp hơn không hoạt động


9

Tôi có một bo mạch Arduino ATMega328 tùy chỉnh thường chạy ở mức 5V @ 8 MHz (sử dụng cấu hình và bộ tải khởi động Arduino Pro 3.3V 8 MHz). Lý do chính tôi đang sử dụng thiết lập này là để tôi có thể đặt bảng ngủ khi nguồn điện chính bị ngắt và nó bắt đầu hết pin (3V từ một tế bào tiền xu). Các nguồn 5V và 3V là các diode OR'ed với nhau và đầu vào 5V được gắn với INT0. Trong mã, khi phát hiện INT0 đã xuống thấp, nó sẽ khởi chạy chế độ ngủ và mọi thứ đều tắt, ngoại trừ đồng hồ bấm giờ giữ chu kỳ 1Hz để giữ số đếm bên trong và kiểm tra xem chip có bị đánh thức lại không. Này hoạt động rất đẹp khi 5V điện được áp dụng đầu tiên, sau đó lắp pin, sau đó5V bị ngắt kết nối. Nó đi ngủ và khi 5V được đưa trở lại, nó thức dậy và tôi có thể thấy nó đã không bị mất.

Tuy nhiên, vấn đề xảy ra khi 3V được áp dụng đầu tiên . Tôi thực sự không chắc chắn nếu nó thậm chí khởi động. Nhưng những gì cần làm là khởi động, kiểm tra xem INT0 (Digital 2) có thấp không và nếu có, hãy đi ngay vào giấc ngủ. Bằng cách xem bản vẽ hiện tại tôi thấy rằng nó tăng sức mạnh lên đến vài mA trong vài giây, sau đó giảm xuống còn khoảng 0,3mA (vẫn cao hơn mức cần ở chế độ ngủ). Nhưng khi tôi áp dụng lại 5V, không có gì . Việc rút điện trở lại nhưng không phản hồi (qua FTDI nối tiếp).

Có lẽ tôi thiếu thứ gì đó mà nó không thể khởi động được trên 3V ... theo lý thuyết thì nó sẽ chạy tốt.

Cập nhật: Tôi đã thả một đèn LED vào D13 và thử bản phác thảo nhấp nháy. Hoạt động tốt khi bắt đầu từ 3V hoặc 5V. Tuy nhiên, khi tôi chạy phần sụn của mình và khởi động nó từ 3V, đèn LED chỉ bắt đầu nhấp nháy dữ dội. Tôi không biết điều gì gây ra nó vì tôi thậm chí không bao giờ thiết lập D13 như bất kỳ thứ gì trong mã của mình. Nhưng nó khiến tôi nghĩ đó là việc phải làm với bộ nạp khởi động ...


1
BOD được đặt là gì, và điểm thu hút hiện tại khi khởi động là gì?
Ignacio Vazquez-Abrams

Nó được đặt thành 2.7V. Hiện tại rút trong khi ở 3V là khoảng 4mA trong vài giây đầu tiên, sau đó giảm xuống và đèn LED phát điên.
Adam Haile

Bạn đã thử mà không có bootloader, tức là qua ISP chưa?
Ignacio Vazquez-Abrams

Không, tôi chưa thử điều đó. Điều kỳ lạ là nó ổn khi chỉ chạy bản phác thảo chớp mắt
Adam Haile

2
Bạn có thể thêm một sơ đồ để hiển thị "chính xác" cách kết nối dây của bạn, bao gồm bất kỳ và mọi cảm biến hoặc tải trên pin. Bạn đang sử dụng loại tế bào đồng xu nào, đó là một loại Ion Ion (có thể sạc lại) hay kiềm?
Ron J.

Câu trả lời:


6

Vì vậy, ... hóa ra những gì đang xảy ra đều nằm trong mã. Hóa ra tôi đã khởi tạo một ngắt trên INT0, khi nó ở mức thấp, ngay từ đầu mã của tôi. Vấn đề là khi nó khởi động với nguồn dự phòng 3V, INT0 luôn ở mức thấp vì INT0 được gắn với đường dây 5V (đó là cách nó biết đi vào giấc ngủ). Vì INT0 ở mức thấp và ngắt được kích hoạt ở mức thấp nên nó gây ra sự gián đoạn liên tục xảy ra, không bao giờ cho phần còn lại của chương trình bất cứ lúc nào để chạy. Chuyển sang cho phép ngắt chỉ khi tôi đã vào chế độ thức dậy đầy đủ và giờ nó hoạt động tốt.


4

Chính xác những gì đang xảy ra và tại sao không thể được xác định dựa trên lượng thông tin được cung cấp. Tuy nhiên, tôi thấy ít nhất một vấn đề tiềm ẩn sẽ giải thích ít nhất một phần các triệu chứng được mô tả.

Bạn nói rằng bạn đang sử dụng điốt để chọn nguồn cung cấp điện áp và một nguồn cung cấp là pin 3V. Nếu bạn đang sử dụng điốt tiêu chuẩn giảm ~ 0,6V thì điện áp cung cấp cho MCU chỉ là ~ 2,4V. Nếu bạn đang sử dụng điốt Schottky có điện áp giảm trong khoảng 0,15-0,45, điện áp cung cấp có khả năng thấp tới 2,5V. Bạn có điện áp BOD được đặt thành 2,7 volt, vì vậy về mặt lý thuyết, MCU sẽ không bao giờ khởi động bằng pin.

Về lý do tại sao bạn có thể bắt đầu nó ở mức 5v, giảm xuống còn 3v và đưa nó trở lại một lần nữa- Tôi không chắc chắn. Bạn có thể vô hiệu hóa mã BOD trong mã ... có thể là Không biết tại sao nó hoạt động, nhưng nó có thể không được đảm bảo để hoạt động.

Tôi thiết lập một mạch chuyển đổi diode với 5v và 3,3v để xem nó trông như thế nào trên máy hiện sóng của tôi khi chuyển đổi điện áp. Khi ở mức 3,3v chuyển đổi lên đến 5v, điện áp ban đầu dao động khá nhiều. Điều này có khả năng gây ra một số vấn đề khi MCU cố gắng đi ra khỏi giấc ngủ. Đặt một nắp giữa VCC và GND làm mịn tín hiệu rất độc đáo. Khi chuyển từ 5v sang 3,3v, thực sự không có bất kỳ dao động nào, chỉ là một giọt sạch.

Từ thông tin này, có vẻ như bạn nên hạ thấp ngưỡng BOD hoặc tắt BOD và đặt giới hạn tách giữa VCC và GND. Có lẽ bạn cũng nên đảm bảo rằng bạn có điện trở kéo xuống trên INT0 và đọc các phần biểu dữ liệu MCU giải thích các chế độ ngủ khác nhau, tất cả các cân nhắc cho việc ngủ và thức - nó khá liên quan. Chúc mừng


2

Tôi nghĩ vấn đề là ở bộ nạp khởi động của bạn, nhưng không phải theo cách bạn nghĩ.

Khi một Arduino khởi động, một bộ tải khởi động có lợi cho một số tác vụ, chẳng hạn như tìm kiếm một máy chủ nối tiếp hoặc tải dữ liệu chương trình từ flash sẽ tốn nhiều năng lượng hơn một Arduino đang ngủ.

Tôi nghĩ lý do tại sao Arduino của bạn sẽ không khởi động là vì bộ tải khởi động yêu cầu nguồn đồng hồ chính xác, nhưng áp dụng 3v cho nó sẽ làm rối đồng hồ đó và có lẽ nó sẽ bị sập hoặc đợi 3.3v được áp dụng cho nguồn ổn định.

Nhìn vào bảng dữ liệu:

bản quyền ATMEL

Chúng tôi thấy rằng hiện tại rút ra trong khi thức dậy (chạy bộ nạp khởi động) có thể sẽ ở khoảng 2mA, trong khi hiện tại ngủ là khoảng 0,8 microamp . Điều này chắc chắn có thể dẫn đến mất điện khi khởi động mà không có dòng điện thích hợp.

Có lẽ bạn chỉ nên bật nó với nguồn 5v, hoặc có thể bạn cần một dòng điện cao hơn, pin điện áp cao hơn.


Điều này có nghĩa là Blink cũng không hoạt động? Ngoài ra, tôi đang chạy nhiều hơn một vài Arduino từ các tế bào tiền xu mà không gặp vấn đề gì. Họ có thể cung cấp rất nhiều hiện tại trong một thời gian ngắn.
Cyberg Ribbon

-5

Hãy thử khởi động lại arduino của bạn bằng cách vào Công cụ> Ghi Bootloader


1
Bạn có thể vui lòng thêm chi tiết về cách tiếp tục làm điều này? Nó không cụ thể lắm: Bạn có thể kết nối gì với Arduino? Có bất kỳ rủi ro? Cảm ơn!
Chim cánh cụt vô danh

tôi sẽ rút tất cả mọi thứ để an toàn, nhưng không nên có bất kỳ rủi ro nào
DeveloperACE

Dưới đây là cách ghi bộ tải khởi động: arduino.stackexchange.com/a/474/37 . Câu trả lời của bạn không giải thích tất cả về cách thực hiện.
Chàng trai với chiếc mũ
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.