Arduino 전원을 갑자기 제거해도 안전합니까? [닫은]


12

Arduino가있는 경우 전원을 손상시키지 않고 갑자기 전원을 켜고 끌 수 있습니까? 켜기 / 끄기 스위치가있는 제품을 설계하는 경우 마이크로 컨트롤러가 어떤 종류의 깨끗한 전원을 끌 수 있도록 전원을 끄기 전에 지연을 포함시켜야합니까? 아니면 SPST 스위치를 Arduino의 전원 라인에 연결해도 괜찮습니까?

(제품을 설계 할 때 다른 구성 요소가있는 사용자 정의 보드에서 Arduino 코드와 함께 ATmega를 독립적으로 사용하는 것을 의미합니다.)

편집 : Arduino는 Arduino 부트 로더를 깜박이는 것을 의미하므로 AVR 대신 Arduino에서 프로그래밍 할 수 있습니다. 사용하려는 칩은 Atmel atmega328P입니다. EEPROM 사용이 필요하지 않습니다.


3
"Arduino"는 브랜드 이름이므로 대문자 'A'를 얻습니다. 수도는 중요합니다.
Transistor

3
아마도 그것이 "아두 이노"라면 아마도 문제는 실제로 "아두 이노"에 해당하는 커스텀 보드의 ATmega에 관한 것입니다. 실제 주제에 관해서는, ATMEGA에 추가 한도 가질 수있는 다른 구성 요소를 고려해야 상태를 , 특히 외부 메모리를 - 예를 들어, 생각과 우려의 많은 양을 필요로 SD 카드가 있다면. 마지막으로 일부 전원 공급 장치는 켜거나 끌 때 불쾌한 일을합니다.
Chris Stratton

1
SD 카드를 사용하지 않는다고 가정 할 수 있습니까?
UKMonkey

당신의 제품입니다. 당신이 뭔가를 저장해야합니까 경우 전원이 꺼집니다? 해당 질문에 대한 답변이 귀하의 질문에 답변합니다.
StainlessSteelRat

답변:


18

예, Arduino를 갑자기 종료하는 것이 안전합니다.

음, 대부분 안전합니다.

다양한 Arduino에 사용되는 프로세서에는 세 가지 유형의 메모리가 있습니다.

  1. 플래시-프로그램이 저장된 위치. 귀하의 프로그램은 여기서 내용을 읽을 수는 있지만 쓸 수는 없습니다.

  2. RAM-프로그램이 실행되는 동안 프로그램 변수가 유지되는 위치. Arduino를 끄면 데이터가 사라집니다. 귀하의 프로그램은 여기에서 지속적으로 읽고 씁니다.

  3. EEPROM-프로그램이 물건을 저장할 수있는 곳에서는 다음에 실행할 때 필요합니다. 일반적으로 거의 변경되지 않지만 프로그램이 실행될 때마다 필요합니다. 센서의 교정 데이터와 같습니다.

대부분의 프로그램은 플래시와 RAM 만 사용합니다. 해당 프로그램에서 언제든지 Arduino를 켜고 끌 수 있습니다.

프로그램이 EEPROM에 쓰는 경우 EEPROM에 쓰는 동안 전원을 끄면 데이터가 손상 될 수 있습니다.

이것이 프로그램에 미치는 영향은 데이터가 무엇인지에 달려 있습니다.

센서의 캘리브레이션 데이터가 손상되면 센서가 감지하는 모든 측정 결과가 잘못됩니다.

EEPROM 데이터로 체크섬을 작성하면 손상을 감지하여 잘못된 데이터를 사용하는 대신 프로그램이 종료 될 수 있습니다.

물론 프로그램이 EEPROM에 쓰는지 알 수 있습니다. 별도의 라이브러리를로드하고 특수 명령을 사용하여 EEPROM 영역에 읽고 쓸 수 있습니다.

EEPROM에 쓸 때 바로 그 순간이 위험합니다. 이는 거의 발생하지 않으며 (일반적으로 제어 된 조건에서만) EEPROM 데이터를 손상시키는 경우는 거의 없습니다.


요약:

EEPROM을 사용하지 않는 한 위험없이 Arduino를 자유롭게 켜고 끌 수 있습니다.


8
"플래시-프로그램이 저장된 위치입니다. 프로그램은 여기서 읽을 수는 있지만 쓸 수는 없습니다." -많은 AVR 칩 (확실히 포함 된 328P)은 플래시를 자체 프로그래밍 할 수 있습니다. 실제로 이것은 Arduino 프로그래밍주기가 작동하는 방식입니다. 328P에서 실행되는 부트 로더는 328P 자체를 프로그래밍합니다. 이는 영업 이익이 그 일을 할 것입니다 꽤 확률이 낮다, 그러나 그것은 이다 가능합니다.
marcelm

2
또한 센서와 같은 추가 하드웨어가있는 Arduino를 사용하는 경우 커패시터를 추가하고 외부 전력을 측정하기 위해 포트 핀을 사용할 수 있으므로 사라지면 안전하게 eeprom에 저장할 수 있습니다 필요. ATmega에서 EEPROM 쓰기주기는 일반적으로 3.4ms입니다. 따라서 커패시터가 프로세서를 5ms 동안 활성 상태로 유지할 수 있고 각 eeprom 쓰기 작업 전에 외부 전원을 확인하면 안전합니다.
vsz

10

예, 전원을 손상시키지 않고 빠르게 전원을 끌 수 있습니다.

회로의 전원 차단에 지연을 발생시키는 유일한 이유는 외부 주변 장치의 안전 또는 기능상의 이유 때문입니다.

예를 들어 전원을 끄면 데이터를 비 휘발성 메모리에 저장해야합니다. 또는 전원을 껐을 때 전원을 껐을 때 메커니즘이 안전한 위치에 있어야합니다.

이를 위해서는 전원을 모니터링하고 프로세서를 실행하기에 충분한 용량을 확보해야하며 수행해야 할 기능이 있어야합니다.


6

Arduino 라는 용어 는 다양한 칩을 가진 매우 광범위한 마이크로 컨트롤러 보드를 의미하므로 전력 손실의 영향은 다양합니다. 따라서 사용중인 ATmega 칩의 정확한 부품 번호를 입력하는 것이 좋습니다. 그러나 ATmega328과 같은 칩의 일반적인 방법으로는 다음과 같은 장점이 있습니다.

예, 아무것도 손상시키지 않고 Arduino의 전원을 차단할 수 있지만 다음 사항에 유의하십시오.

  • 코드가 EEPROM을 사용하는 경우 장치가 데이터를 깜박이고 전원이 제거 될 때 플래시가 손상되거나 데이터가 정확하게 저장되지 않을 수 있습니다.

  • Arduino와 함께 사용되는 장치 (예 : SD 카드)는 EEPROM과는 별도로 갑작스런 전력 손실이 발생할 수있는 유일한 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.