Arduino gücünü aniden kaldırmak güvenli mi? [kapalı]


12

Bir Arduino'm varsa, gücü bozmadan aniden açabilir ve kapatabilir miyim? Açma / kapama düğmesi olan bir ürün tasarlıyorsam, mikrodenetleyicinin bir tür temiz bir kapanma yapabilmesi için gücü kapatmadan önce bir gecikme eklemem gerekir mi? Yoksa sadece Arduino'nun güç hattına bir SPST anahtarı bağlamak uygun mu?

(Bir ürün tasarlayarak, Arduino kodlu bir ATmega'yı diğer bileşenlerle birlikte özel bir kartta bağımsız olarak kullanmak istedim.)

Düzenleme: Arduino tarafından sadece Arduino bootloader yanıp sönen yani Arduino AVR yerine programlayabilirsiniz demek. Kullanmak istediğim çip Atmel atmega328P. EEPROM kullanımına ihtiyacım yok.


3
Unutmayın "Arduino" bir marka adıdır, bu yüzden büyük bir 'A' alır. Başkentler önemlidir.
Transistör

3
Belki de aslında bir "Arduino" ise, ama asıl soru, daha çok bir "arduino" olacak özel bir tahtadaki bir ATmega ile ilgilidir. Asıl konuya gelince, ATmega'ya ek olarak, durumu olabilecek diğer bileşenleri , özellikle de harici anıları da düşünmelisiniz - örneğin, büyük miktarda düşünce ve endişe gerektiren bir SD kart varsa. Son olarak, bazı güç kaynakları açma / kapama sırasında kötü şeyler yapar.
Chris Stratton

1
SD kart kullanmadığınızı varsayabilir miyiz?
İngiltere

Bu sizin ürününüz. Bir şey kaydetmek gerekiyor mu eğer güç kapanır? Bu sorunun cevabı sorunuza cevap veriyor.
StainlessSteelRat

Yanıtlar:


18

Evet, bir Arduino'yu aniden kapatmak güvenlidir.

Pekala, çoğunlukla güvenli.

Çeşitli Arduino'larda kullanılan işlemcilerin üç tür belleği vardır:

  1. Flash - Programınızın depolandığı yer. Programınız buradan bir şeyler okuyabilir, ancak yazamaz.

  2. RAM - Program çalışırken program değişkenlerinizin tutulduğu yer. Arduino'yu kapattığınızda buradaki veriler kaybolur. Programınız burada sürekli olarak okur ve yazar.

  3. EEPROM - Programınızın bir şeyleri depolayabileceği yerlerde, bir dahaki sefer çalıştırılması gerekir. Genellikle nadiren değişen şeyler, ancak program her çalıştığında gereklidir. Bir sensör için kalibrasyon verileri gibi.

Çoğu program yalnızca Flash ve RAM kullanır. Bu programlarla Arduino'yu istediğiniz zaman açıp kapatabilirsiniz.

Programınız EEPROM'a yazarsa, EEPROM'a yazarken gücü kapatmak oradaki verileri bozabilir.

Bunun programınızı nasıl etkilediği verilerin ne olduğuna bağlıdır.

Bir sensörün kalibrasyon verilerini bozarsa, sensörün algıladığı her şey için kötü ölçümler alırsınız.

EEPROM verilerinizle sağlama toplamları yazarsanız, bozulmayı tespit edebilirsiniz ve kötü veriler kullanmak yerine programınız kapanabilir.

Elbette, programınızın EEPROM'a yazıp yazmadığını bilirsiniz - ayrı bir kütüphane yüklemeniz ve EEPROM alanını okumak ve yazmak için özel komutlar kullanmanız gerekir.

Tehlike gerçekten sadece kısa sürede EEPROM'a yazdığınızda ortaya çıkar. Bu nadiren (ve genellikle sadece kontrollü koşullar altında) gerçekleştiği için EEPROM verilerinin bozulması da nadirdir.


Özet:

EEPROM'u kullanmadığınız sürece Arduino'yu tehlikesizce açıp kapatabilirsiniz - ve o zaman bile çoğu zaman ondan kurtulacaksınız.


8
"Flash - Programınızın saklandığı yer. Programınız buradan bir şeyler okuyabilir, ancak yazamaz." - Birçok AVR çipi (328P kesinlikle dahil) flaşı kendi kendine programlayabilir. Aslında, Arduino programlama döngüsü bu şekilde çalışır; 328P üzerinde çalışan bootloader, 328P'nin kendisini programlar. Bu OP yapıyor olacak oldukça düşüktür, ancak bir olası.
marcelm

2
Ayrıca, üzerinde ekstra bir donanıma sahip bir Arduino (sensör gibi) kullanırsanız, bir kondansatör ekleyebilir ve harici gücü ölçmek için bir portpin harcayabilirsiniz, böylece yok olduğunda, eeprom'a güvenli bir şekilde tasarruf edebilirsiniz istemek. Bir ATmega'da bir EEPROM yazma döngüsü tipik olarak 3,4 ms'dir. Yani kapasitörünüz işlemciyi 5 ms canlı tutabilirse ve her eeprom yazma işleminden önce harici gücü kontrol edersiniz.
vsz

10

Evet, gücü bozmadan hızlı bir şekilde kapatabilirsiniz.

Devrenin gücünü kesmenin gecikmesini sağlamak için görmememin tek nedeni, harici çevre birimlerinizin güvenliği veya işlevsel nedenleri olabilir.

Örneğin güç kapalıyken, verileri kalıcı belleğe kaydetmeniz gerekir. Veya güç kapalıyken, bir mekanizmanın güç kapalıyken güvenli bir konumda olduğundan emin olun.

Bu, arzın izlenmesini ve işlemciyi çalıştırmak için yeterli tutma kapasitesine ve yapılması gereken işlevlere sahip olmayı gerektirir.


6

Terimi Arduino çeşitli fiş Mikrodenetleyici çok geniş bir spektrumunu belirtir, ve güç kaybı etkisi bu şekilde değişir. Bu nedenle, kullanılan ATmega çipinin tam parça numarasını koymanızı tavsiye ederim. Ancak, ATmega328 gibi yongalar için genel olarak, aşağıdakiler iyidir.

Evet, Arduino'dan herhangi bir şeyi bozmadan veya zarar vermeden gücü kaldırabilirsiniz, ancak aşağıdakileri aklınızda bulundurun:

  • Kodunuz EEPROM kullanıyorsa, cihaz veri yanıp söndüğünde ve güç kesildiğinde flaş bozulabilir veya veriler doğru şekilde depolanmayabilir.

  • Ani bir güç kaybının EEPROM dışında zarar vermesinin tek yolu, Arduino (örneğin bir SD kart) ile kullanılan cihazlardır.

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.