Melindungi Pin Input Mikrokontroler dari Soft Power Switch

10

Saya sedang bekerja pada saklar daya lunak untuk mikrokontroler di mana saklar sesaat dapat menghidupkan sirkuit (termasuk mikrokontroler), dan kemudian ketika saklar didorong untuk kedua kalinya, mikrokontroler dapat mematikan dengan sendirinya setelah melakukan pembersihan.

gambar sirkuit

Saya memiliki sirkuit di atas sejauh ini, tetapi saya tidak yakin apakah itu akan dapat diandalkan. Saya menggunakan baterai lithium-ion (3.7-4.2V) dan regulator TC1015 (output 3.0V). Idenya adalah bahwa ketika sakelar ditekan, regulator menyala, maka mikrokontroler menjadi uC Powertinggi, tetap menyala. Ketika sakelar ditekan untuk kedua kalinya, interupsi aktif uC Switchakan memungkinkan mikrokontroler untuk mengatur uC Powerrendah, mematikannya sendiri.

Yang tidak saya yakini, adalah apakah saya perlu melindungi mikrokontroler dari tegangan baterai. Mikrokontroler yang saya gunakan memiliki tegangan maksimum absolut pada pin I / O dari Vdd + 0.4V, jadi saya tidak yakin bagaimana menangani yang terbaik.

Kedua, apakah sirkuit ini benar-benar membuat regulator tidak menyala ketika dalam keadaan "mati"? Saya telah berpikir tentang menggunakan resistor pulldown pada garis aktifkan, tetapi saya khawatir tentang penarikan saat ini saat chip dinyalakan.

Sunting: Mikrokontroler adalah beban utama yang akan diubah, jadi memasukkannya ke mode daya rendah sayangnya tidak akan berfungsi di sini.

Edit # 2 (Setelah jawaban diposting):

Saya akhirnya menggunakan rangkaian di bawah ini:

diagram sirkuit tetap

Sirkuit yang diposting sebelumnya tidak bekerja dengan baik, dan memiliki masalah dengan garis memungkinkan mengambang ketika mikrokontroler tidak menyalakannya.

Sirkuit baru menggunakan flip flop, dengan jalur data biasanya ditarik rendah. Menekan tombol menyentuh jam, menyalakan sistem. Menekan switch selanjutnya mendorong CLOCKjalur tinggi (memungkinkan mikrokontroler merasakan pers), tetapi tidak memengaruhi output regulator. Setelah mikrokontroler siap dimatikan, ia mengatur DATAjalur tinggi dan kemudian mengatur CLOCKjalur tinggi, yang akan menyebabkan regulator mati.

Salah satu hal yang sangat menyenangkan tentang pengaturan ini, adalah bahwa tekan tombol pertama menyalakan regulator, dan terus menyala sampai mikrokontroler siap dimatikan. Bouncing bukan merupakan masalah, karena tidak peduli berapa kali garis clock menjadi tinggi, garis data tetap rendah karena pull down. Selain itu, undian saat ini harus sangat minimal (hanya flip flop dan TC1015 saat dimatikan), dan ada arus undian minimum melalui resistor saat aktif.

Mikrokontroler tidak perlu dilindungi dari tegangan baterai pada garis clock, tetapi seperti yang disarankan @Andy alias, itu dapat dilakukan dengan sebuah resistor aktif CLOCK.

Carson Darling
sumber

Jawaban:

4

R1 dan R2 akan membatasi arus ke pin pada UC Anda dan ini biasanya cukup untuk melindungi perangkat Anda - Anda hanya perlu memeriksa dalam spesifikasi apa "batas" saat ini dan memilih nilai resistor yang sesuai mengingat bahwa pasokan UC mungkin pada 0V (tidak bertenaga). Zeners dapat ditinggalkan berdasarkan ini.

Keandalan adalah masalah lain. Beralih bouncing dapat menyebabkan UC Anda untuk hidup kemudian mematikan beberapa kali jadi tulis kode Anda untuk mengetahui hal ini.

Saya pikir mungkin disarankan untuk memiliki resistor yang diaktifkan tetapi mungkin di wilayah + 10K dan mungkin ini bisa lebih tinggi mungkin 100k.

Tegangan pada pin shutdown harus setidaknya 45% dari Vin jadi ini seharusnya tidak menjadi masalah.

Andy alias
sumber
3

Ini kelihatannya seperti sistem self latching, yang secara teori seharusnya bekerja, seperti rangkaian self latching relay (tombol A digunakan untuk menghidupkan relai, dan kemudian karena pin beban dan pin koil terikat bersama, relai tetap menyala selama daya masuk ke pin beban).

Untuk mengujinya, tanpa mempertaruhkan mikrokontroler, Anda dapat melakukan ini. Tambahkan beban boneka untuk membuat regulator senang (beberapa led, juga sehingga Anda dapat melihat bahwa itu berfungsi), dan kemudian ikat output ke titik di mana itu ditandai uC Power. Setelah Anda menekan sakelar, regulator harus memulai, menyalakan led dan Power uC, yang pada gilirannya harus menjaga pin Enable pada logika tinggi (Shutdown Logic High minimum 45% dari VIN, jadi 1,89V pada 4,2V In. ).

Jadi, jika Anda menekan tombol dan led tetap menyala setelah Anda melepaskannya, itu berhasil. Jika tidak, itu tidak akan berfungsi apa adanya.

Peringatan: Saya katakan itu, tidak yakin bagaimana dioda Zener akan menyebabkan sirkuit bereaksi.

Pejalan kaki
sumber
0

Sirkuit yang menghubungkan baterai, sinyal mikrokontroler, dan input SHDN * dari regulator (berganti nama menjadi EN) tampak cerdik.

Bagaimana dengan menggunakan kait (berjalan dengan daya baterai) untuk menangkap penutupan kunci. Kemudian output dari kait ini dapat OR'ed dengan sinyal sinyal dari MCU untuk menggerakkan pin SHDN * dari regulator (diubah namanya menjadi EN dalam skema). Saat boot, MCU harus menggerakkan jalur aktifnya terlebih dahulu, lalu mengosongkan kait, sehingga memastikan bahwa EN tetap bertahan.

Tindakan tombol selanjutnya dapat dipantau melalui kait: jika saklar ditekan lagi, kait menjadi tinggi lagi. MCU memperhatikan ini dan membersihkan kait dan sinyal yang memungkinkannya, memicu shutdown. Karena saklar terkunci, MCU dapat memonitor ini dengan sangat mudah dengan hanya polling pada frekuensi yang santai.

Satu lagi penyempurnaan opsional akan menjadi sirkuit untuk memastikan bahwa ketika baterai itu sendiri online, sistem menyala tanpa menggunakan tombol. Ini bisa menjadi semacam denyut nadi yang mengatur kait.

Kaz
sumber
0

Tarik EN rendah dengan resistor yang sesuai dan ikat ke pin io pada MCU. Sakelar berlangsung pada pin input MCU. Menekan tombol akan memicu interupsi pada pin input MCU yang mengaktifkan pin output yang mengontrol pin EN LDO Anda.

Menempatkan MCU dalam tidur nyenyak akan memungkinkan pin ditarik rendah dan menonaktifkan LDO. Memicu interupsi dengan sakelar akan membangunkannya, menarik pin tinggi kembali dan menyalakan LDO yang diaktifkan kembali.

cthree
sumber
Maaf, saya seharusnya menetapkan sedikit lebih jelas, mikrokontroler adalah beban utama yang akan ditukar LDO, jadi membiarkannya dalam kondisi daya rendah tidak akan berfungsi.
Carson Darling