Bagaimana cara mengganti tombol power mikrokontroler?

13

Saya memiliki perangkat mikrokontroler dengan daya baterai. Saat ini saya beralih daya dengan sederhana on / off switch. Saya ingin beralih daya dengan satu tombol dengan sedikit modifikasi skema (dan mungkin program mikrokontroler) dan tanpa konsumsi ketika perangkat mati. Bagaimana saya bisa melakukannya?

TAMBAH . Saya tahu trik berikut:

masukkan deskripsi gambar di sini

Di sini, di awal, mikrokontroler mengatur PB3 ke tinggi dan dengan demikian menahan daya untuk perangkat. Tapi ini bukan solusi untuk masalah saya, karena saya juga perlu mematikan perangkat dengan menekan S1.

TAMBAH . Dapatkah saya mengecualikan VT2 dari sirkuit (mis. Basis drive mikrokontroler VT1 secara langsung)?


sumber
Apakah menempel tombol akan menjadi solusi yang dapat diterima?
AndrejaKo
@AndrejaKo: Tidak.
Semoga beruntung! Salah satu cara saya melihat akan mengisi kapasitor saat tombol-tekan ditekan dan kemudian mencoba untuk mengaktifkan sesuatu dengan itu, seperti MOSFET, tetapi itu akan tergantung pada waktu tombol ditekan.
AndrejaKo
@ tcrosley Ini bukan duplikat, pertanyaan yang Anda referensikan tidak mengharuskan daya di-toggle ketika tombol ditekan, itu hanya mengharuskannya menyala sehingga memungkinkan mikrokontroler untuk menutup sendiri.
Bruno Ferreira
@ BrunoFerreira ok, setuju - Saya menghapus komentar saya sebelumnya. Saya menambahkan baris ke mikro dalam jawaban ini tetapi saya tidak memasukkan zener seperti yang Anda lakukan dalam jawaban Anda yang merupakan tambahan yang bagus.
tcrosley

Jawaban:

6

Berdasarkan rangkaian yang Anda berikan, Anda bisa menambahkan dioda secara seri setelah sakelar (S1) (katoda terhubung ke sakelar) dan mereka dapat menggunakan input untuk mendeteksi jika sakelar ditekan lagi, jika demikian, matikan PB3.
Diperlukan modifikasi

Dioda zener melindungi input PIC dari tegangan yang berasal dari catu daya.

Bruno Ferreira
sumber
Apa peran dioda?
m. Setiap
@ m.Alin Dioda di sini memungkinkan mikrokontroler untuk mendeteksi ketika sakelar dilepaskan. Jika kita tidak memiliki dioda, ketika VT1 mulai melakukan kita akan selalu memiliki level tinggi pada input mikrokontroler.
Bruno Ferreira
8

Bagaimana Anda benar-benar perlu? Banyak mikrokontroler modern memiliki arus tidur jauh di bawah arus self-discharge bahkan dari baterai kecil. Anda dapat memiliki tombol hanya mendorong pin I / O dari mikro, yang kemudian beralih antara mode tidur dan aktif setiap tombol tekan. Beberapa debouncing akan dibutuhkan, tetapi itu semua bisa dilakukan di firmware juga.

Metode on / off semacam ini menjadi sangat umum saat ini. Ketika hanya membutuhkan µA, mikrokontroler tidak perlu benar-benar mati, cukup tidur, yang dapat dilakukan di bawah kendali sendiri. Garis tombol harus ditransfer ke sesuatu yang dapat menyebabkan mikro untuk bangun dari tidur, tetapi hampir setiap mikro memiliki setidaknya satu dari mereka, biasanya beberapa.

Olin Lathrop
sumber
1
Setuju, banyak desain saya saat ini bahkan tidak memiliki tombol on / off, mereka hanya bangun dengan menekan tombol.
Oli Glaser
Perangkat Me juga mengandung LCD dan perangkat lainnya. Jadi saya harus mematikannya juga.
4
@ Pengguna: Itu tidak berarti Anda harus mematikan mikro, hanya logika lainnya. Dengan mikro melakukan pemikiran on / off, mikro dapat mengontrol daya ke perangkat lain sehingga mereka mati ketika mikro sedang tidur. Ini berarti Anda memiliki output digital yang disengaja yang bisa menjadi polaritas apa pun yang nyaman untuk menghidupkan dan mematikan sesuatu, dan Anda tidak perlu menerapkan toggling dalam perangkat keras analog.
Olin Lathrop
Meskipun banyak mikrokontroler memiliki arus tidur yang sangat rendah, kualitas regulator lebih mahal daripada yang jelek. Regulator yang menggunakan 250uA ekstra (atau bahkan 2,5mA) mungkin baik-baik saja jika hanya harus aktif ketika perangkat sedang digunakan, tetapi akan benar-benar tidak dapat diterima jika harus aktif bahkan ketika perangkat "dimatikan" . Satu produk yang saya rancang beberapa tahun yang lalu bahkan tidak menggunakan regulator - melainkan menggunakan tiga transistor dan sekitar tujuh resistor untuk menyediakan pasokan 5 volt nominal dengan shutdown yang dikendalikan prosesor. Dengan "regulator" standar akurasi tegangannya benar-benar payah ...
supercat
1
@OlinLathrop: Dua 2N3094 dan 2N3906 harganya kurang dari $ 0,07. Bahkan jika satu angka sepuluh komponen masing-masing biaya satu sen untuk perakitan, itu masih menghemat uang receh per unit - jika 100.000 unit diproduksi, itu $ 10.000. Jika suatu produk tidak akan memiliki volume semacam itu, mungkin tidak ada gunanya mencoba memeras $ 0,10 itu; jika regulator hari ini tersedia ketika saya merancang benda itu, dan jika saya tidak tahu sebelumnya seberapa baik itu akan dijual, saya mungkin hanya akan menggunakan regulator dengan kontrol siaga, tetapi sirkuit saya bekerja dan lebih murah daripada yang lain; tidak ada alasan untuk tidak terus menggunakannya.
supercat
3

EDIT - pada refleksi, rangkaian di bawah ini (yang saya akan tinggalkan untuk referensi) mungkin paling cocok untuk digunakan di sirkuit tanpa mikro. Seperti yang disebutkan dalam jawaban lain, kecuali jika Anda benar-benar tidak mampu membeli sedikit uA, itu tidak masuk akal untuk tidak menggunakan mikro untuk mengontrol daya beralih, karena menggunakan lebih sedikit komponen dan dapat dikontrol dengan akurat.
Versi paling sederhana dapat berupa input IOC (interrupt on change) dengan pull up, dengan tombol ke ground. Mikro memiliki daya yang diterapkan sepanjang waktu, dan mengontrol MOSFET P-channel (dengan pullup dari gerbang ke sumber) untuk sisa rangkaian. Ketika tidur itu memungkinkan gerbang melayang untuk mematikan sirkuit.

Rangkaian referensi:

ToggleSwitch

Pada awalnya P-MOSFET mati, sehingga tidak ada arus basis pada Q2, yang juga mati. Q1 mati, jadi Q1c pada 5V. Rangkaiannya statis.

Ketika S1 (mengabaikan + dan - node, mereka ada untuk tujuan memicu SPICE) menekan 5V pada Q1c yang terhubung ke basis Q2, menyalakannya. Ini menarik gerbang P-MOSFET ke ground, menyalakannya juga.
R4 sekarang melihat 5V dan ketika S1 dirilis, ia memberikan basis Q2s dengan arus yang diperlukan untuk tetap terbuka (dan karena itu MOSFET juga) Q1 juga dihidupkan ketika arus melalui biaya R2 C1 ke ~ 600mV, di mana titik Q1c adalah <200mV (yaitu Q1 dihidupkan)
Rangkaian sekarang statis lagi.

Ketika S1 ditekan lagi, Q1 menenggelamkan arus dari R4 (yang membuat Q2 hidup) mematikan Q2. R1 menarik basis MOSFET hingga 5V dan mematikannya lagi.

Berikut adalah simulasi (V (push) yang tinggi mewakili ketika tombol ditekan):

ToggleSwitchSim

Kita juga dapat melihat setelah matikan kepala saat ini ke nol (saat C1 dilepaskan dan Q1 mati) sehingga sirkuit tidak mengkonsumsi daya dalam keadaan mati (kursor untuk I (V1) berada pada 19.86s dan mengukur 329nA):

ToggleSwitchPower

Ide sirkuit asli bukan milik saya, itu berasal dari Dave Jones di EEVblog .

Oli Glaser
sumber
1

Seperti yang disarankan Bruno Ferreira, cara termudah untuk memungkinkan tombol untuk bertindak sebagai sakelar "mati" adalah mengubah sirkuit Anda adalah dengan memungkinkan prosesor mengetahui kapan tombol ditekan. Saya pikir kita dapat menggunakan resistor untuk melindungi input prosesor terhadap voltase yang melebihi VDD tanpa perlu Zener untuk itu.

Berikut ini sketsa kasar desain sirkuit yang mungkin Anda gunakan. Setengah bagian kanan mewakili perilaku prosesor, dan saya menggunakan kombinasi transistor, Zener, dan resistor untuk menggantikan regulator. Output prosesor diwakili dengan menggunakan analog switch VDD-nya, bukan gerbang, karena gerbang dalam simulator ini selalu menghasilkan output + 5V.

Aspek kunci dari rangkaian, yang dapat menyebabkan masalah jika diabaikan, adalah bahwa ia dirancang sedemikian rupa sehingga prosesor tidak dapat menghidupkan rangkaian kecuali VDD-nya setidaknya ~ 3,6 volt; Saya juga telah memasang simulator sehingga prosesor akan selalu mencoba untuk menghidupkan outputnya setiap kali VDD-nya di bawah 3,5 volt. Saya telah melihat banyak desain yang mengasumsikan bahwa prosesor tidak akan mencoba untuk menghasilkan logika yang tinggi karena kekuatannya hilang. Asumsi itu mungkin berhasil dengan sejumlah batch chip yang digunakan dalam pengujian, tetapi kemudian gagal dengan batch chip lain yang digunakan dalam produksi skala penuh. Perilaku sebagian besar prosesor tidak ditentukan selama kondisi undervoltage; desain yang baik harus direkayasa sehingga perilaku prosesor selama kondisi seperti itu tidak masalah (sedikit catatan: mungkin aman untuk mengasumsikan bahwa prosesor yang tidak t secara eksplisit dirancang untuk menghasilkan voltase yang lebih tinggi dari voltase apa pun yang diterapkan tidak akan secara ajaib mulai melakukannya; Saya tidak berpikir ada spesifikasi eksplisit untuk itu, tapi saya pikir dalam banyak kasus itu dapat disimpulkan dengan aman).

supercat
sumber