Arduino는 연중 무휴 운영이 가능합니까?


46

간단한 Arduino 웹 서버를 만들고 있는데 항상 켜져 있습니다. 따라서 지속적으로 작업을 지속해야합니다.

이더넷 쉴드와 함께 Arduino Uno를 사용하고 있습니다. 간단한 콘센트 전원 공급 장치 5V @ 1A로 전원이 공급됩니다.

내 질문 :

  • Arduino를 항상 켜두는 데 문제가 있습니까?
  • 다른 Arduino 보드가 더 권장됩니까?
  • 이와 관련하여주의해야 할 사항이 있습니까?

첫 번째 질문!
TheDoctor

사회자 주 : 우리는 그것이 그들의 상황에서 효과가 있다는 많은 답을 얻고있는 것 같습니다. 질문에 추가 할 기술적 인 내용이 있으면 언제든지 대답하십시오. 그러나 기술 답변은 작동하는 것으로 보입니다. 상황이 효과가 있다고 절대적으로 언급 해야하는 경우 의견을 추가하는 것이 좋습니다.
익명 펭귄

답변:


58

항상 유지하는 데 아무런 문제가 없어야하지만 고려해야 할 것은의 사용과 같은 카운터가 있습니다 millis().

MillisArduino 문서에서 :

이 숫자는 약 50 일 후에 오버플로됩니다 (0으로 되돌아 감).

따라서 오랜 시간 동안 사용중인 프로젝트의 경우 즉시 문제가 표시되지 않지만 이와 같은 문제가 발생하여 오류가 발생할 수 있습니다.


19
정확히 말해, millis는 uint32_t변수이므로 4294967296 밀리 초 (~ 49.7 일, ~ 1193 시간 또는 ~ 71582 분)로 오버플로 ( "0으로 돌아 가기")됩니다.
코너 울프

5
그런 다음 첫 번째 롤오버시 증가하는 다른 uint32_t를 사용하기 만하면됩니다. 그런 다음 롤오버간에 약 5.846 × 10 ^ 8 년을 즐길 수 있습니다.
80HD

4
millis ()-startTime (unsigned long, 일명 uint32_t로 시작)을 수행하면 둘 이상의 오버플로가 발생하지 않는 한 항상 유효한 결과를 얻을 수 있습니다.
Lesto

1
보다 정확하게는 오버플로는 49 일, 17 시간, 2 분, 47 초 및 295 밀리 초 후에 발생합니다.
Memet Olsen

4
millis () 오버플 로는 문제가 될 필요가 없습니다 . 참조 밀리 () 오버 플로우를 ... 나쁜 일을? 상세 사항은. 기본적으로 적절한 데이터 유형을 사용하여 빼기로 시간 간격을 계산하면 아무런 문제가 없습니다.
Nick Gammon

33

몇 가지 염두에 (의 @ Sachleen의 언급 밖에 유지 millis()) :

  • 다른 전자 제품과 마찬가지로 열은 파괴적 일 수 있습니다. 마이크로 컨트롤러 자체는 열의 관점에서 큰 문제가되지는 않지만 전원 공급 장치와 같은 다른 구성 요소로 인해 문제가 발생할 수 있습니다.

  • 코드에서를 사용하는 경우 EEPROM.write()Uno의 ATmega328P에있는 EEPROM의 쓰기 횟수는 10 만 회입니다.


12

플래시와 EEPROM의 수명은 각각 약 10,000 및 100,000 쓰기 주기로 제한되어 있으므로 쓰기 작업을 많이하면 손상 될 수 있습니다. 내가 한 테스트에서 외부 EEPROM이 손상되기 시작하는 데 약 3 일이 걸렸습니다.


1
문서에 10k주기가 나열 될 수 있지만 많은 테스트에서 ~ 100k가 문제가 발생하기 시작하는 것으로 나타났습니다.
Ron

데이터 시트에 따라 EEPROM 수명은 최소 100,000 쓰기주기입니다. 필자는 백만 건에 가까운 부패가 시작된 테스트를 읽는 것을 기억합니다.
user2973

10

Arduino 24/7 실행은 문제가되지 않습니다.

그러나 통풍이 잘되는 케이스가 있고 통풍이 잘되는 곳에 보관하십시오. 컴퓨터와 마찬가지로 컴퓨터를 시원하게 유지할 수있는 환경에 두지 않으면 시원하게 유지되지 않습니다.

서버로드도 고려해야합니다. 서버에로드가 많을수록 더 많은 처리를 수행해야하며 더 많은 열이 생성됩니다.


3
ATmega에는 일반 컴퓨터와 같은 기존의 저전력 모드가 없으므로로드와 관련이 없습니다. 능동적 인 계산을하지 않으면 스핀 대기 중입니다. 적어도 ATmega MCU의 경우 EEPROM / 플래시 쓰기와 같은 것을 제외하고는 실행시 전력 소비가 거의 정적입니다. 트래픽 부하에 따라 결정되는 이더넷 인터페이스 전력 소비량에는 차이가있을 수 있지만, 완벽한 진공 상태 나 히터 또는 기타 장치가 아닌 한 문제가 될 정도로 충분한 열을 발생시킬 수있는 것은 없습니다.
코너 울프

1
Atmega328p 는 ~ 0.1 uA를 소비하는 저전력 절전 모드를 가지고 있습니다.
JRobert

2
코드가 실제로 프로세서를 휴면 상태로 만드는 경우에만 관련이 있습니다.
Chris Stratton

8

우리는 2011 년 말부터 Bloomington IN의 Bloominglabs Hackerspace에서 Arduino 기반 RFID 액세스 시스템을 운영하고 있으며, 몇 가지 정전 및 소프트웨어 업데이트 외에도 24 시간 내내 작동합니다. 보다 최근에는 네트워크로 연결된 온도 조절 장치를 추가했습니다.


나도 24 시간 연중 무휴 RFID 액세스 시스템을 운영하고있다. "실패"하는 유일한 시간은 주 전원에서 실행되기 때문에 전원이 꺼진 경우입니다. 2011 년부터 문제없이 실행되었습니다.
Nick Gammon

하하, 스티브!
deltaray

@NickGammon 예, 시스템은 멋지지만 인증은 왜 카드 DATA를 기반으로하지 않고 토큰 UID만을 기반으로합니까? 영리한 해결책을 보여주세요.
user2497

너의 요점이 뭐야? 그것은 포스터의 질문과 관련이 없습니다.
sdcharle

6

Arduino는 현지 조건과 계산 강도에 따라 방열판을 연결해야 할 수도 있지만 실제로 오랫동안 문제없이 실행될 수 있습니다.

또한 통풍이 잘되도록하십시오.

서버가 지금 페이지를 제공하고 있다면 문제가되지는 않지만 사용중인 프로그램에 따라 다르지만 일정한 트래픽을 기대하면 Arduino가 빠르게 가열 될 수 있습니다.

또한 전원 공급 장치의 안정성을 보장하고 싶을 것입니다. Arduino로 벤치 탑 실험을 실행할 때 큰 문제는 아니지만 비트를 메인에서 전원으로 변환하여 영구적으로 고정하면 문제가 될 수 있습니다.


2
계산 부하로 인해 Arduino가 과열 될 것으로 예상 할 이유가 없습니다. 보다 사실에 기반한 답변에서 지적했듯이 일반적인 경우는 전체 부하에서 실행하는 것입니다. 과열 될 수있는 부품이 전압 레귤레이터가 될 수 있지만, 이는 아무것도하지 않을 때 이미 가장 높은 예상 전류로 작동하고 있기 때문에 주로 입력 전압의 기능입니다.
Chris Stratton

@ChrisStratton 이더넷 쉴드는 사용법에 따라 전력이 다를 수 있습니다. 또한 Arduino는 저전력 상태 일 수 있습니다 (예 : 오전 12시에서 오전 5시 사이에 잠자기).
익명 펭귄

4

나는 오랫동안 Arduino를 실행 한 적이 없지만 문제가 없어야합니다. 주의해야 할 사항은 입력 전압입니다.

Arduino는 7-20V를 처리 할 수 ​​있지만 12v 이상은 오랜 시간이 지나면 과열되어 보드 손상을 일으킬 수 있습니다. Arduino의 과열을 피하기위한 빠른 권장 사항으로 가능한 한 전압을 7V에 가깝게 유지하십시오.


4

자주 발생하지 않지만 장기적인 문제를 일으킬 수있는 문제에 대해 언급하고 싶습니다. 메모리 누수 및 힙 조각화. 거의 모든 것이 내장 된 물건에 담겨 있지는 않지만, 그렇게한다면 제대로해야합니다.


당신이 나를 이겼습니다, +1
hoosierEE

나는 String 클래스가 malloc을 사용한다고 생각하며 꽤 일반적입니다.
user2973

동의했다. 특히 웹 서버의 경우 String 클래스 사용과 같이 메모리를 조각화 할 수있는 작업을 수행하지 않아야합니다. 그러나 그것을 피하는 것은 쉽습니다. 차 고문이 닫혀 있는지 알려주기 위해 웹 서버로 Arduino를 실행하고 있습니다. 그것은 몇 년 동안 실행되었습니다.
Nick Gammon

4

첫 Arduino로 간단한 전원 모니터를 만들었습니다. 웹 서버에서 USB를 통해 전원을 공급받으며, 상당한 양의 배터리 백업을 통해 전원을 공급받습니다 (알림 기능이 없음).

또한 UPS가 아닌 전원 소켓에 연결된 휴대폰 충전기에 연결되어 있습니다.

따라서 전원이 꺼지면 Arduino는 서버에서 실행되는 작은 프로그램에 메시지를 보냅니다. 서버 프로그램은 이메일 알림을 보냅니다.

2013 년 9 월 말, 2014 년 3 월 23 일에 설치되었습니다. 첫 번째 이메일을 받았습니다!

그래서 문제를 보지 못했지만 (millis () 사용하지 않음) 5 초마다 전원을 샘플링합니다.


1

Arduino는 연중 무휴 운영이 가능합니까?

이것은 신뢰성 질문입니다. 신뢰성에는 고려해야 할 사항이 많이 있습니다.

  1. 소프트웨어. 보다 강력한 소프트웨어가 있습니다. 덜 강력한 소프트웨어가 있습니다. 예를 들어 중요한 응용 프로그램의 경우 메모리 조각화로 이어질 수 있으므로 동적 메모리 할당은 권장되지 않습니다. 불행히도 Arduino는 동적 메모리 할당에 크게 의존합니다. 이 문제는 대부분의 Arduino 보드에 매우 제한된 RAM이 있기 때문에 악화됩니다.
  2. 도서관. 많은 Arduino 라이브러리에는 버그가 있습니다 (Arduino 패키지에 내장 된 버그조차도 WString처럼 간단합니다). 정상적인 작동에서는 이러한 버그가 전혀 나타나지 않을 수 있습니다. 그러나 "모든 것이 정상"이고 "사용자"(또는 하위 시스템)가 예상대로 작동하기를 희망 할 수 없습니다. 라이브러리에도 한계가있을 수 있습니다 (즉, 제대로 버그가 아님). 예를 들어, 많은 사용자가 이미 millis () 함수를 인용했는데,이 함수는 50 일 후에 재설정됩니다. 올바르게 처리하지 않으면 심각한 버그가 발생할 수 있습니다.
  3. 하드웨어의 신뢰성 (저렴한 Arduino 클론에 대해 이야기조차하지 않음 ...). 여기서 새로운 하위 질문 클래스가 열립니다. 매우 제한된 하위 집합 만 인용하겠습니다.
    • Arduino 보드는 신뢰성을 위해 설계 되었습니까? (예 :
      사용한 커패시터와 다른 구성 요소 의 신뢰성은 무엇 입니까?)
    • EMI에 대한 견고성? 나는 그것에 의지하지 않을 것이다 : 대부분의 Arduino 보드는 단지 2 개의 층을 가지고 있고 적절한 접지 / 전력 평면이 없다.
    • EEPROM (소프트웨어 및 하드웨어 모두) 소프트웨어가 EEPROM을 사용하고 있습니까? 사이클링을 방지하는 알고리즘을 구현하고 있습니까 (같은 셀에서 반복적 인 쓰기 / 삭제)?
    • 플래시 메모리 보존 시간. 온도 및 프로그래밍주기 횟수에 따라 머무름 시간이 줄어 듭니다.
    • 이온화 방사선. 예, 적어도 해수면에서 확률이 매우 낮더라도 방사선에 의한 단일 사건의 발생 확률은 0이 아니며 적절한 대책을 취해야합니다 (특히 RAM에 하드웨어 오류 감지가 없음을 고려함) )는 중요한 응용 프로그램에서.
    • 전원 공급 장치의 품질.
    • 운영 환경. 25 ° C로 제어되는 환경 또는 지붕 위의 블랙 박스 (여름에는 햇빛 아래 70 ° C)? 온도가 높을수록 모든 분해 메커니즘이 더 빨라집니다.
    • ...

그럼에도 불구하고 arduino가 수년 동안 불완전하게 작동하더라도 놀라지 않아야합니다. 그러나 이것이 모든 아두 이노가 보장하는 것은 아닙니다.

일부 대책은 신뢰성을 향상시킵니다.

  • 워치 독 사용 : 멈춤 / 오작동을 일으키는 것보다 응답하지 않는 시스템을 재설정하는 것이 좋습니다.
  • 메모리 할당을 사용하는 라이브러리는 사용하지 마십시오.
  • 알고리즘을 구현 (EEPROM을 사용하는 경우)하여 알고리즘을 유지하십시오!
  • 좋은 전원 공급 장치.
  • 열악한 환경 (고온, 습도, 크고 연속적인 열 사이클 등)을 피하십시오.

0

확실히 연중 무휴로 운영 될 수 있습니다. 5V를 5V 핀에, 7808을 Vin 핀에 사용하여 vreg를 오프로드합니다. 이상적으로는 6.5V이지만, 그러한 공급 장치는 없습니다. 그러나 전원을 켤 때 약간의 스파이크를 흡수하기 위해 5V의 디 커플러 캡이 필요할 수 있습니다.

5V로 실행되는 하드웨어는 7805와 함께 공급됩니다. 78XX 대신 LM317 또는 LM350을 사용할 수 있지만 트림 팟과 같은 경우에는 몇 가지 저항이 필요합니다.

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