Bir Arduino 7/24 çalışabiliyor mu?


46

Basit bir Arduino web sunucusu yapıyorum ve her zaman açık kalmasını istiyorum. Bu yüzden sürekli çalışmaya devam etmek zorunda.

Ethernet Kalkanı olan Arduino Uno kullanıyorum. Basit bir çıkış güç kaynağı 5V @ 1A ile güçlendirilmiştir.

Sorularım:

  • Arduino'yu her zaman açık bırakmada herhangi bir sorun yaşar mıyım?
  • Bunun için daha iyi önerilen başka bir Arduino kurulu var mı?
  • Bu konuda almam gereken herhangi bir önlem var mı?

İlk soru!
TheDoctor

Moderatör notu: Durumlarında çalıştığını söyleyen birçok cevap alıyoruz gibi görünüyor. Soruya ekleyecek teknik bir şeyiniz varsa, cevaplamaktan çekinmeyin. Ancak, teknik cevapların işe yaradığı anlaşılıyor. Durumunuzun işe yaradığını kesinlikle belirtmek zorundaysanız , yorum eklemek daha iyi olur.
Anonymous Penguin

Yanıtlar:


58

Her zaman üzerinde tutan herhangi bir sorun yaşamamanız gerekir, ancak, göz önünde bulundurmanız gereken bazı konular, kullanımınız gibi, sahip olabileceğiniz herhangi bir sayaçtır millis().

Gönderen milisaniye üzerinde Arduino docs :

Bu sayı yaklaşık 50 gün sonra taşar (sıfıra döner).

Dolayısıyla, uzun süredir devam eden projeler için hemen bir sorun göremeyebilirsiniz, ancak bunun gibi bir şey ortaya çıkabilir ve yolda hatalara neden olabilir.


19
Kesin olmak gerekirse, millis bir uint32_tdeğişkendir, yani ~ 49.7 gün, ~ 1193 saat veya ~ 71582 dakika olan 4294967296 milisaniyede taşar ("sıfıra geri dön").
Connor Wolf

5
O zaman tek yapmanız gereken, ilk rulo atıldığında artan bir uint32_t kullanmak. Sonra rollover'lar arasında yaklaşık 5,846 × 10 ^ 8 yıl tadını çıkarabilirsiniz.
80HD

4
Eğer millis () - startTime (başlangıç ​​zamanı, bir imzasız uzun, yani uint32_t olarak başlar) yaparsanız, birden fazla taşma olmadıkça, daima geçerli bir sonuç alırsınız
Lesto

1
Daha kesin olmak gerekirse, taşma 49 gün, 17 saat, 2 dakika, 47 saniye ve 295 milisaniyeden sonra gerçekleşir.
Memet Olsen

4
Millis () taşması hiçbir zaman sorun olmak zorunda değildir. Millis () taşması bakın ... kötü bir şey mi? daha fazla ayrıntı için. Temel olarak, zaman aralıklarını çıkartarak, uygun veri türlerini kullanarak hesaplarsanız, hiçbir zaman sorun yaşamayacaksınız.
Nick Gammon

33

Akılda tutulması gereken birkaç şey (@ Sachleen'ın bahsettiği dışında millis()):

  • Herhangi bir elektronik cihaz gibi, ısı da rahatsız edici olabilir. Mikro denetleyicinin kendisi, ısı perspektifinden büyük bir sorun olmayacak, ancak güç kaynağı gibi diğer bileşenler sorunlara neden olabilir.

  • Kodunuz kullanılıyorsa EEPROM.write(), Uno'nuzun ATmega328P'nizdeki EEPROM'un yalnızca 100.000 yazma için derecelendirildiğini unutmayın.


12

Flaşın ve EEPROM'un sınırlı ömürleri olduğunu (sırasıyla yaklaşık 10.000 ve 100.000 yazma döngüsü) aklınızda bulundurun, bu yüzden bunlara çok fazla yazı yazarsanız, bozulabilirler. Yaptığım bir testte, harici bir EEPROM'un bozulmaya başlaması yaklaşık 3 gün sürdü.


1
Belgeler 10k döngüleri listeleyebilse de, çoğu test ~ 100k'nin problemlerin başladığı yer olduğunu göstermiştir.
Ron,

EEPROM kullanım ömrü, veri sayfasına göre en az 100.000 yazma çevrimidir. Sanırım yolsuzluğun bir milyona yaklaştığı bir test yazdığını hatırlıyorum.
user2973,

10

Arduino 7/24 Çalıştırmak sorun olmamalı.

Ancak havalandırmaya izin veren bir kasanız olduğundan ve onu iyi havalandırılan bir alanda tuttuğunuzdan emin olun. Tıpkı bilgisayarlar gibi, onları serin tutabilecek bir ortamda tutmazsanız serin kalmazlar.

Sunucu yükü ayrıca dikkate alınması gereken bir şey olmalı, sunucuda ne kadar fazla yük olursa o kadar fazla işlem yapmalı ve o kadar fazla ısı üretecektir.


3
ATmega normal bilgisayarlar gibi geleneksel düşük güç modlarına sahip değildir, bu nedenle yük önemsizdir. Aktif hesaplama yapmıyorsanız, sadece döndürmeyi bekler. En azından ATmega MCU için çalışırken güç tüketimi aslında oldukça statiktir (EEPROM / flaş'a yazmak gibi şeyler hariç). Trafik yükünün belirlediği ethernet arabirim gücünde farklılıklar olabilir, ancak mükemmel bir vakumda veya ısıtıcıda veya başka bir şeyde olmadığı sürece hiçbir şeyin bir sorun olması için yeterince ısı üretmesi muhtemel değildir.
Connor Wolf

1
Atmega328p , ~ 0.1 uA çeken düşük güçte bir uyku moduna sahiptir.
JRobert

2
Bu, yalnızca kod gerçekten işlemciyi uyku moduna geçirirse geçerli olur.
Chris Stratton

8

Arduino tabanlı RFID erişim sistemimizi 2011 yılının sonlarından bu yana Bloomington IN'deki Bloominglabs Hackerspace'de çalıştırıyoruz ve 24 saat boyunca yürüttüğü birkaç elektrik kesintisi ve yazılım güncellemesi dışında, sorun değil. Daha yakın zamanda bir ağ termostatı ekledik, aynı şey - 24 saat çalışıyor.


Benim de 7 gün 24 saat çalışan bir RFID erişim sistemim var. "Başarısız" olduğu tek zaman, elektrik kesilirse kesilir, çünkü elektrik kesilir. Bu 2011 yılından beri sorunsuz çalışıyor.
Nick Gammon

Haha, selam Steve!
deltaray

@NickGammon Evet, sisteminiz harika, ancak kimlik doğrulama neden kart DATA'ya dayanmıyor, ancak yalnızca belirteç UID'sine bağlı? Lütfen bize akıllı bir çözüm gösterin.
user2497 4:17

Ne demek istiyorsun? Bu, posterin sorusuyla alakasız.
sdcharle

6

Arduinos çok uzun süre sorunsuz çalışabilir, ancak yerel koşullara ve hesaplama yoğunluğuna bağlı olarak ısı emici takmak zorunda kalabilirsiniz.

Ayrıca, iyi havalandırılmış olmasını sağlayın.

Bu, kullanılan programa da bağlıdır, eğer sunucunuz her gün bir sayfa sunuyorsa ve bu bir sorun olmamalıdır, ancak sürekli trafik beklerseniz Arduino hızlı bir şekilde ısınabilir.

Ayrıca, Arduino ile tezgah üstü deneyler yaparken bu büyük bir sorun değil, elektriği kalıcı bir fikstür için şebekeden dönüştürürseniz sorun yaratabilir.


2
Hesaplamalı yükün bir Arduino'nun aşırı ısınmasına neden olmasını beklemenin bir nedeni yoktur. Gerçeğe dayalı cevaplarda daha önce belirtildiği gibi, normal durum tam yükte çalışmaktır. Aşırı ısınabilecek bir voltaj varsa voltaj regülatörü olacaktır, ancak bu öncelikle giriş voltajının bir fonksiyonudur, çünkü hiçbir şey yapmadan neredeyse en yüksek beklenen akımda çalışıyordur.
Chris Stratton

@ ChrisStratton Ethernet kalkanı kullanıma bağlı olarak gücü değiştirebilir. Ayrıca, Arduino düşük güçte olabilir (örneğin, 12:00 ve 05:00 arası uyuyor).
Anonymous Penguin

4

O zamandan beri bir Arduino'yu hiç kullanmadım, ama bir sorun olmamalı. Dikkat edilmesi gereken bir şey giriş voltajı.

Bir Arduino, 7-20v'yi giriş olarak kullanma yeteneğine sahipken, 12v'nin üzerindeki herhangi bir şey, uzun süre sonra aşırı ısınabilir ve kartın zarar görmesine neden olabilir. Arduino'nun aşırı ısınmasını önlemek için hızlı bir öneri olarak, voltajı mümkün olduğunca 7v'ye yakın tutardım.


4

Çok sık rastlanmayan ancak uzun vadeli sorunlara yol açabilecek bir konudan bahsetmek istiyorum. Bellek Kaçakları ve Yığın Parçalanması. Neredeyse hiç kimse katıştırılmış eşyalara mallocs yapmaz, ama yaparsanız, doğru yapın.


Beni yendin, +1.
hoosierEE

String sınıfının malloc kullandığına ve oldukça yaygın olduğuna inanıyorum.
user2973,

Kabul. Özellikle bir web sunucusuyla, String sınıfını kullanmak gibi, belleği parçalayabilecek hiçbir şey yapmadığınızdan emin olun. Ancak bundan kaçınmak kolaydır. Garaj kapımın kapalı olup olmadığını bildirmek için web sunucusu olarak çalışan bir Arduino var. Bu yıllardır koşuyor.
Nick Gammon

4

İlk Arduino'mla basit bir güç monitörü kurdum. Bir web sunucusundan USB ile beslenir, bu da oldukça önemli bir pil yedeklemesiyle desteklenir (ki bu bildirim yetenekleri yoktur).

Ayrıca, UPS olmayan bir prize takılı bir cep telefonu şarj cihazına da bağlı.

Güç kesilirse Arduino sunucuda çalışan küçük bir programa bir mesaj gönderir. Sunucu programı da bana bir e-posta bildirimi gönderir.

23.03.2014 tarihinde Eylül 2013'ün sonlarında kuruldu - ilk e-postamı aldım!

Bu yüzden bir problem görmedim (millis () kullanmıyor) ama her 5 saniyede bir gücü örnekliyor.


1

Bir Arduino 7/24 çalışabiliyor mu?

Bu bir güvenilirlik sorusudur. Güvenilirlikte göz önünde bulundurulması gereken çok şey var.

  1. Yazılım. Daha sağlam yazılımlar var. Daha az sağlam yazılımlar var. Örneğin, kritik uygulamalar için, bellek parçalanmasına yol açabileceğinden dinamik bellek tahsisi önerilmez. Ne yazık ki, Arduino yoğun bir şekilde dinamik bellek tahsisine dayanmaktadır. Bu sorun, Arduino kartının çoğunun çok sınırlı bir RAM'a sahip olması nedeniyle daha da artmaktadır.
  2. Kütüphaneler Arduino kütüphanelerinin çoğunda hatalar bulunur (Arduino paketinde yerleşik olanlar dahil, WString kadar basit!). Normal çalışmada, bu tür hatalar hiç görünmeyebilir. Ancak, "her şeyin yoluna gireceğini" ve "kullanıcının" (veya alt sistemin) öngörüldüğü gibi hareket etmesini umamazsınız. Kütüphaneler de kendi sınırlarına sahip olabilir (yani, uygun bir şekilde değil). Örneğin, birçok kullanıcı 50 gün sonra sıfırlanan millis () işlevini zaten gösterdi. Bu, doğru şekilde kullanılmazsa ciddi hatalara yol açabilir.
  3. Donanımın güvenilirliği (ucuz Arduino klonlarından bile bahsetmiyoruz ...). Burada yeni bir alt sorgu sınıfı açılır. Sadece çok sınırlı bir altküme atıfta bulunacağım.
    • Arduino Board'lar güvenilirlik için tasarlandı mı? (örneğin
      , kullanılan kapasitörlerin ve diğer bileşenlerin güvenilirliği nedir?)
    • EMI'ye karşı sağlamlık? Buna güvenmezdim: Arduino kartlarının çoğunun sadece iki katı var ve uygun bir toprak / güç düzleminin olmaması.
    • EEPROM (bu hem yazılım hem donanımdır). Yazılımınız EEPROM kullanıyor mu? Dönmeyi önlemek için bazı algoritmalar uygulamak mı (aynı hücrelerde tekrarlanan yazma / silme)?
    • Flash bellek tutma süresi. Tutma süresi sıcaklıkla ve ayrıca programlama döngüsü sayısıyla birlikte azalır.
    • İyonlaştırıcı radyasyon. Evet, olasılık ÇOK düşük olsa bile, en azından deniz seviyesinde, radyasyonun yol açtığı tek olayın bozulma olasılığı sıfır değildir ve bunun için gerekli önlemler alınmalıdır (özellikle RAM'in donanım hatası tespit edilemez olduğu dikkate alınmalıdır). ) kritik uygulamalarda.
    • Güç kaynağının kalitesi.
    • Çalışma ortamı. 25 ° C kontrollü bir ortam ya da çatı üzerinde siyah bir kutu içinde (yazın güneş altında 70 ° C)? Sıcaklık ne kadar yüksek olursa, tüm bozunma mekanizmaları o kadar hızlıdır.
    • ...

Arduino'nuz yıllarca kusursuz çalışacaksa, yine de şaşırmamalısınız. Ancak bu her arduino'nun yapacağı garantiyi vermez.

Bazı önlemler, güvenilirliği artıracaktır:

  • Bekçi köpeği kullanın: Tepki vermeyen bir sistemi sıfırlamak, sıkışmış / yaramazlık sistemine sahip olmaktan iyidir.
  • Bellek ayırma kullanan herhangi bir kitaplığı kullanmaktan kaçının.
  • (EEPROM kullanıyorsanız) korumak için bir algoritma uygulayın!
  • İyi güç kaynağı
  • Zorlu ortamlardan kaçının (yüksek sıcaklık, yüksek nem, büyük ve sürekli termal çevrimler, vb.).

0

Kesinlikle 24/7 çalıştırabilir. Vreg'i boşaltmak için 5V ila 5V pin veya Vin pin için 7808 kullanıyorum. İdeal olarak 6.5V olur, ancak böyle bir malzemem yok. Ancak, tedarikinizi güçlendirirken küçük çapaklara batırmak için 5V'ta dekuplaj kapağı isteyebilirsiniz.

5V'da çalışan herhangi bir donanım, 7805 ile besliyorum. 783s yerine LM317s veya LM350s kullanabilirsiniz, ancak bunlar için, belki de trimpots için birkaç direnç gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.