Bagaimana cara buffer ATMEGA untuk gangguan daya level milidetik tanpa perilaku aneh?

8

Saya memiliki ATMEGA328p-pu arduino dengan rangkaian strip LED + shift-register yang terpasang pada SPI. Ketika dihidupkan, itu meningkatkan variabel di EEPROM untuk memajukan mode tampilan.

  • Kami memiliki detektor brownout yang diatur ke level 1 (2.7V).
  • Ada kapasitor 1500 uf yang dipasang secara paralel ke kabel mengarah, semoga, menjaga Arduino dari mengubah mode pada dampak fisik, karena terminal baterai dapat memutuskan sedikit untuk milidetik (?) Atau lebih.
  • Ada dioda pada ujung positif tutup untuk mencegah tutupnya terlepas ke dalam LED, jadi itu hanya menyangga arduino.
  • Ada juga resistor 1000 ohm secara paralel melintasi tutup untuk mengalirkannya karena memegang tegangan, yang kami asumsikan berada di belakang masalah di mana chip tidak menyala pada sirkuit LED kadang-kadang saat boot.
  • Arduino pro mini dan strip diberi peringkat 5V, tetapi kami menjalankannya secara rutin pada 3.7V sehingga dapat ditenagai dengan sel Li-Ion tunggal.

Terkadang setelah duduk selama 10 atau 15 detik, sirkuit tidak akan menyala. Terkadang setelah melepas baterai dan menghubungkannya kembali beberapa kali berturut-turut, baterai akan menyala.

Adakah yang bisa merekomendasikan cara yang lebih baik untuk menyediakan buffer daya ke ATMEGA (tetapi tidak ke strip LED)? Apakah kita melakukannya dengan benar untuk sebagian besar?

Diagram (maaf jika berantakan, saya dapat meminta teman saya mengulanginya di Illustrator jika tidak jelas, mungkin perlu beberapa jam): Diagram Sirkuit

jarak tempuh
sumber
2
Bisakah Anda menggambar diagram rangkaian situasi dengan AVR, catu daya, resistor, kapasitor, dioda, ...
jippie
Apakah satu-satunya alasan Anda memerlukan "penyangga" ini karena terminal baterai dapat sedikit terlepas jika terbentur? Jika demikian, Anda hanya harus melepas konektor dan solder kabel langsung ke papan tulis.
Garrett Fogerlie
Untuk echo jippie, Anda sudah mulai dengan deskripsi tertulis yang baik, penambahan skema akan sangat membantu. Jika Anda memiliki masalah dalam memposting, ada bantuan yang tersedia.
placeholder
2
Resistor pemeras Anda berada di sisi kecil, mengkonsumsi daya besar dibandingkan dengan kebutuhan siaga khas. Jika Anda dapat mendeteksi brownout dalam perangkat lunak, buatlah program yang "menghitung" pada output UART mulai dari brownout dan pantau sambil menarik catu daya dan lihat berapa lama itu berjalan, menghitung kembali melalui baudrate. Berhati-hatilah dengan kemungkinan secara tidak sengaja menyalakan periferal melalui jalur data.
Chris Stratton
1
Mungkin Anda dapat mencoba memberikan arduino beberapa output independen (serial, itu adalah LED diskritnya sendiri) sehingga Anda dapat melakukan sedikit indikasi debug di sana bahwa arduino telah diatur ulang, berbeda dengan keberhasilannya berbicara dengan strip LED. Saya berasumsi strip LED bahkan tidak benar-benar memiliki reset, berbeda dari perkembangan biasa itu menyatakan setiap kali Anda mengaksesnya?
Chris Stratton

Jawaban:

3

Anda dapat menggunakan kapasitor super (1F / 5.5v) setelah dioda, menghubungkannya langsung ke VCC dan GND. Ini akan membantu Anda dalam melindungi daya.

Chetan Bhargava
sumber