Có an toàn để loại bỏ đột ngột sức mạnh Arduino? [đóng cửa]


12

Nếu tôi có Arduino, tôi có thể đột ngột bật và tắt nguồn mà không làm hỏng nó không? Nếu tôi đang thiết kế một sản phẩm có công tắc bật / tắt, tôi có cần kết hợp độ trễ trước khi tắt nguồn để vi điều khiển có thể tắt sạch một số loại không? Hoặc có ổn không khi chỉ cần kết nối một công tắc SPST với đường dây điện của Arduino?

(Bằng cách thiết kế một sản phẩm, tôi có nghĩa là sử dụng ATmega với mã Arduino độc lập trên bảng tùy chỉnh với các thành phần khác.)

Chỉnh sửa: Bằng Arduino tôi chỉ có nghĩa là flash bộ tải khởi động Arduino để tôi có thể lập trình trong Arduino thay vì AVR. Con chip tôi muốn sử dụng là Atmel atmega328P Tôi không cần sử dụng EEPROM.


3
Lưu ý rằng "Arduino" là một tên thương hiệu để nó có vốn 'A'. Thủ đô quan trọng.
Transitor

3
Có lẽ nếu nó thực sự là một "Arduino", nhưng câu hỏi thực sự là về một ATmega trên một bảng tùy chỉnh sẽ giống như một "arduino". Đối với chủ đề thực tế, ngoài ATmega, người ta cũng nên xem xét bất kỳ thành phần nào khác có thể có trạng thái , đặc biệt là bộ nhớ ngoài - ví dụ: nếu có thẻ SD cần một lượng lớn suy nghĩ và quan tâm. Cuối cùng, một số nguồn cung cấp năng lượng làm những điều khó chịu khi bật / tắt.
Chris Stratton

1
Chúng tôi có thể cho rằng bạn không sử dụng thẻ SD không?
UKMonkey

Nó là sản phẩm của bạn. Bạn có cần phải lưu một cái gì đó nếu tắt nguồn? Câu trả lời cho câu hỏi đó trả lời câu hỏi của bạn.
StainlessSteelRat

Câu trả lời:


18

Có, an toàn khi tắt Arduino đột ngột.

Vâng, chủ yếu là an toàn.

Các bộ xử lý được sử dụng trong các Arduinos khác nhau có ba loại bộ nhớ:

  1. Flash - Nơi chương trình của bạn được lưu trữ. Chương trình của bạn có thể đọc nội dung từ đây, nhưng không thể viết nó.

  2. RAM - Nơi các biến chương trình của bạn được giữ trong khi chương trình đang chạy. Dữ liệu ở đây biến mất khi bạn tắt Arduino. Chương trình của bạn đọc và viết ở đây liên tục.

  3. EEPROM - Nơi chương trình của bạn có thể lưu trữ nội dung, nó sẽ cần vào lần chạy tiếp theo. Thông thường những thứ thay đổi hiếm khi, nhưng cần thiết bất cứ khi nào chương trình chạy. Giống như dữ liệu hiệu chuẩn cho một cảm biến.

Hầu hết các chương trình chỉ sử dụng Flash và RAM. Bạn có thể bật và tắt Arduino bất cứ lúc nào bạn muốn với các chương trình đó.

Nếu chương trình của bạn ghi vào EEPROM, thì việc tắt nguồn trong khi ghi vào EEPROM có thể làm hỏng dữ liệu ở đó.

Làm thế nào điều đó ảnh hưởng đến chương trình của bạn phụ thuộc vào dữ liệu là gì.

Nếu nó làm hỏng dữ liệu hiệu chuẩn cho cảm biến, bạn sẽ nhận được các phép đo xấu cho bất cứ thứ gì cảm biến đang phát hiện.

Nếu bạn viết tổng kiểm với dữ liệu EEPROM của mình, thì bạn có thể phát hiện tham nhũng và chương trình của bạn có thể tắt thay vì sử dụng dữ liệu xấu.

Tất nhiên, bạn sẽ biết nếu chương trình của bạn ghi vào EEPROM - bạn phải tải một thư viện riêng biệt và sử dụng các lệnh đặc biệt để đọc và ghi vào khu vực EEPROM.

Nguy hiểm thực sự chỉ trong khoảnh khắc ngắn ngủi khi bạn viết thư cho EEPROM. Vì điều đó hiếm khi xảy ra (và thường chỉ trong các điều kiện được kiểm soát) nên sẽ hiếm khi làm hỏng dữ liệu EEPROM.


Tóm lược:

Bạn có thể bật và tắt Arduino theo ý muốn mà không gặp nguy hiểm, trừ khi bạn đang sử dụng EEPROM - và thậm chí sau đó bạn sẽ thoát khỏi nó hầu hết thời gian.


8
"Flash - Nơi chương trình của bạn được lưu trữ. Chương trình của bạn có thể đọc nội dung từ đây, nhưng không thể viết nó." - Nhiều chip AVR (bao gồm 328P chắc chắn) có thể tự lập trình flash. Trong thực tế, đây là cách chu trình lập trình Arduino hoạt động; bộ tải khởi động, chạy trên 328P, tự lập trình cho 328P. Rất khó có khả năng OP sẽ làm điều đó, nhưng điều đó có thể.
marcelm

2
Ngoài ra, nếu bạn sử dụng một Arduino có phần cứng bổ sung trên nó, (như cảm biến), bạn cũng có thể thêm một tụ điện và sử dụng một chân cắm để đo công suất bên ngoài, để khi biến mất, bạn có thể tiết kiệm một cách an toàn cho bất cứ điều gì bạn muốn Trên ATmega, chu trình ghi EEPROM thường là 3,4 ms. Vì vậy, nếu tụ điện của bạn có thể giữ cho bộ xử lý tồn tại trong 5 ms và trước mỗi thao tác ghi eeprom bạn kiểm tra nguồn điện bên ngoài, bạn vẫn an toàn.
vsz

10

Có, bạn có thể tắt nguồn nhanh chóng mà không làm hỏng nó.

Lý do duy nhất tôi có thể thấy để đặt độ trễ xuống nguồn của mạch là vì lý do an toàn hoặc chức năng của các thiết bị ngoại vi bên ngoài của bạn.

Ví dụ, khi tắt nguồn, cần lưu dữ liệu vào bộ nhớ không bay hơi. Hoặc khi tắt nguồn, cần đảm bảo một cơ chế ở vị trí an toàn khi tắt nguồn.

Điều này sẽ yêu cầu giám sát nguồn cung và có đủ khả năng giữ để chạy bộ xử lý và chức năng nào được yêu cầu phải thực hiện.


6

Thuật ngữ Arduino đề cập đến một phổ rất rộng của các bảng vi điều khiển có nhiều loại chip khác nhau và do đó ảnh hưởng của việc mất điện do đó khác nhau. Vì vậy, tôi khuyên bạn nên đặt số phần chính xác của chip ATmega đang được sử dụng. Nhưng, nói chung, đối với các chip như ATmega328, những điều sau đây rất tốt.

Có, bạn có thể loại bỏ nguồn điện từ Arduino mà không làm hỏng hoặc làm hỏng bất cứ thứ gì nhưng hãy ghi nhớ những điều sau:

  • Nếu mã của bạn sử dụng EEPROM thì đèn flash có thể bị hỏng hoặc dữ liệu có thể không được lưu trữ chính xác khi thiết bị đang flash dữ liệu và mất nguồn.

  • Cách duy nhất để mất điện đột ngột có thể gây hại ngoài EEPROM là các thiết bị được sử dụng với Arduino (ví dụ: thẻ SD).

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.