Buat saklar sakelar sesaat untuk beralih

17

Apa cara termudah, termurah, terkecil untuk membuat sakelar sesaat menghasilkan output toggling 2-keadaan (menempel sakelar sesaat)?

Dengan kata lain, output terus rendah, dan ketika Anda menekan tombol / tact sesaat, output berubah menjadi terus menerus tinggi, dan kemudian ketika Anda menekannya lagi, itu beralih kembali ke rendah.

endolit
sumber
Saya pikir jawaban terbaik untuk ini tergantung pada penanya dan apakah Anda lebih nyaman dengan perangkat keras atau solusi perangkat lunak.
J. Polfer
Ini juga tergantung pada di mana sakelar keluaran ini dan tegangan apa (status!) Yang Anda miliki.
XTL
Hanya dua negara, tinggi dan rendah, seperti logika digital apa pun. Jika Anda ingin melakukan beberapa status yang Anda gunakan untuk bersepeda, saya pikir itu akan memerlukan mikrokontroler. Anda mungkin akan memiliki satu di sirkuit Anda untuk itu.
endolith
Saya suka solusinya dengan 2 inverter. Hanya ingin tahu apa yang diperlukan untuk mengaktifkan ini untuk beralih 30V @ 1A?
stevenrcfox
@ Overlow: Ganti transistor output dengan power transistor atau relay
endolith

Jawaban:

9

Berikut adalah alternatif lain dengan dua inverter dan debouncing:

Dua inverter

Untuk output logika, hanya dua inverter, RC, dan resistor umpan balik yang diperlukan:

masukkan deskripsi gambar di sini

NC7WZ14 adalah $ 0,06 dengan 2 inverter, paket 6-pin kecil, dan input pemicu Schmitt, meskipun saya pikir sirkuit ini bahkan tidak memerlukan input Schmitt karena RC. Itu juga dapat mendorong 24 mA, sehingga Anda dapat menghubungkan LED langsung ke sana jika Anda menggunakan LED untuk alasan apa pun.

Juga ditampilkan di sini dan di sini sebagai sakelar sentuh toggle .

Saya pikir resistor umpan balik harus jauh lebih kecil daripada resistor tengah untuk mencegahnya berosilasi jika Anda menahan tombol, karena koneksi impedansi rendah ke output akan mencegah kapasitor dari pengisian ke tegangan menengah sampai Anda melepaskannya.

Varian dijelaskan pada Press ON - Tekan OFF sirkuit penguncian lunak :

DAN varian gerbang

endolit
sumber
Ketika ini pertama kali dinyalakan, apakah akan memulai dengan output hidup, mati atau acak? Hanya memeriksa sirkuit, saya kira itu akan menyala dengan output menyala.
Craig McQueen
@CraigMcQueen Ketika pertama kali dinyalakan, kapasitor akan memiliki 0 V di atasnya. Jadi sirkuit pertama akan dimulai pada posisi ON. Hubungkan kapasitor ke suplai alih-alih ground, dan kapasitor akan mulai dalam posisi OFF.
endolith
@CraigMcQueen Sebenarnya apa itu dijamin? Saya tidak yakin. Impedansi output rendah inverter akan mendominasi resistor 220k, sehingga mungkin mulai dalam keadaan acak.
endolith
@CraigMcQueen Sirkuit terakhir yang ditampilkan akan mulai dengan kapasitor 0,01 μF 0 V, jadi Vout akan menjadi 0.
endolith
@ endolith Di mana pada gambar terakhir VCC terhubung? Saya melihat tanah dan Vout.
Mike
7

Salah satu metode yang mungkin:

Gunakan RC untuk menghapus sakelar

Jaringan RC yang terhubung ke saklar sesaat untuk melakukan debounce

dan kemudian memasukkannya ke dalam flip-flop D dengan output mengumpankan kembali ke input untuk mengimplementasikan flipflop T.

D flip-flop dikonfigurasi sebagai toggle flip-flop

Flip-flop D harus dipicu oleh edge positif saja, dan membutuhkan output yang terbalik.

  • 8-pin NC7SZ74 harus berfungsi, sangat kecil, dan biaya $ 0,12 secara kuantitas.
  • The 74HC74 adalah dual D flip-flop dengan 14 pin seharga $ 0,05.

Apakah ada masalah dengan ini? Saklar perlu ditekan sebentar untuk waktu naik untuk memicu input jam, yang mungkin bagus. Jika Anda menahan tombol, itu hanya akan memicu sekali, yang bagus. Apakah ada cara yang lebih baik untuk melonggarkan umpan balik atau sesuatu?

endolit
sumber
5
Benar-benar membutuhkan buffer trigger schmitt pada input dari tombol (atau jika flip-flop memiliki input trigger schmitt yang juga berfungsi). Jika tidak, FF mungkin berosilasi sejenak ketika input jam naik perlahan ketika tombol dilepaskan. (Ini bisa agak dikurangi dengan pemilihan tutup dan resistor debouncing yang hati-hati, tetapi tidak pernah dihilangkan)
Connor Wolf
Bisakah Anda juga tidak menggunakan filter RC di jalur umpan balik untuk mencegah memantul?
endolith
6

Atau Anda dapat melakukannya dengan mikrokontroler 6-pin tunggal dan tidak ada komponen lain. Mungkin harganya sedikit lebih mahal, tetapi lebih sederhana dan membutuhkan lebih sedikit ruang. Debouncing switch dalam perangkat lunak sederhana, maka itu hanya cara menyimpan boolean jika outputnya harus tinggi atau rendah. Versi terkecil dari MCU ini hadir dalam paket pemasangan permukaan 2mm x 2mm. Dalam jumlah besar mungkin $ 0,50.

beralih skematis

davr
sumber
+1 - Tapi saya percaya bagian itu hanya ada di SMT.
J. Polfer
1
Ya tapi bahkan mikrokontroler termurah akan lebih mahal daripada logika digital sederhana. Ini adalah sistem yang cukup kompleks untuk melakukan tugas sederhana, dan Anda membuka diri terhadap dunia bug perangkat lunak. Juga, apakah itu meningkatkan biaya produksi untuk memprogram setiap mikro?
endolith
Jadi, Anda akan menggunakan resistor pull-up internal pada pengaturan PB0 sebagai input digital dan kemudian membumikannya untuk memicu, kan? Anda seharusnya tidak memerlukan resistor secara seri dengan saklar seperti itu.
endolith
1
@TokenMacGuy Tidak ada arus yang mengalir dari PB0 ke GND, karena PB0 akan menjadi input, bukan output. @ endolith benar, menggunakan internal pull-up berarti tidak perlu untuk pull-up eksternal. (Selain itu, pull-up tidak sejalan dengan sakelar, dengan pull-up internal atau eksternal). @sheepsimulator yang masuk SMT hanya masalah bagi penghobi. Dalam hal ini, satu atau dua dolar tambahan tidak akan menjadi masalah, dan Anda dapat dengan mudah meningkatkan DIP ATtiny25 8-pin.
davr
@endolith Tergantung aplikasi yang saya kira. Selalu ada pengorbanan. Semuanya kecuali perangkat yang paling dasar memiliki semacam logika di dalamnya. Mengatakan Anda membuka diri Anda ke dunia bug perangkat lunak bukanlah masalah besar ... tanpa MCU Anda membuka diri untuk bug perangkat keras, karena Anda membangun semacam rangkaian digital / analog untuk melakukan logika.
davr
1

Sirkuit ini (juga dijelaskan di sini ) sangat murah, tetapi lebih kompleks dan membutuhkan ruang dengan semua komponen. Jika transistor seperti $ 0,02 dalam jumlah besar, itu mungkin total $ 0,10?

Sakelar pengunci 3-transistor

endolit
sumber
$ 0,02 ... mungkin jika Anda membeli 27.000 di antaranya seperti di sini: search.digikey.com/scripts/DkSearch/…
davr
1
$ 0,03 adalah banyak sekali seperti $ 0,02 dalam jumlah kecil ...
SingleNegationElimination
3904d untuk 1,4 sen: newark.com/on-semiconductor/mmbt3904lt1g/… Pada jumlah tinggi, kapasitor seperti 1 sen, dan resistor seperti 1/10 persen.
endolith
Sepertinya transistor Q2 membutuhkan resistor di pangkalan, untuk membatasi arus yang mengalir melalui pangkalan.
Craig McQueen
1

Buat T flip-Flop dengan memendekkan input dari flipflop jk yang dipicu tepi positif dan menghubungkan output tombol ke input jam dari flip flop jk.

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Prayuktibid
sumber
0

Saya tahu ini agak "tidak langsung" cara melakukannya, tetapi Anda bisa mendapatkan sensor efek hall seperti sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=9312

dan hanya menggunakan magnet, saya menemukan (cara yang sulit) bahwa efek hall khusus ini terkunci, sehingga tidak akan bekerja untuk apa yang saya butuhkan, tetapi sepertinya secara teori bisa bekerja untuk apa yang Anda cari .

Saya hanya menancapkannya ke papan tempat memotong roti, saya pikir saya mungkin telah menggunakan resistor (Mungkin sudah sebulan jadi saya agak kabur pada detailnya), dan ketika saya menggerakkan magnet dekat (sesaat) itu menutup sensor dan ada kamu pergi.

onaclov2000
sumber
1
Bagaimana Anda akan "melepaskan ikatan" itu? Membawa magnet dekat ke sensor untuk kedua kalinya tidak akan membuatnya tidak tertarik, bukan?
davr
Saya percaya Anda harus membalik polaritas magnet untuk "membersihkannya" Saya akan harus memasangnya lagi di rumah untuk mengujinya untuk memastikan, namun saya mencari tahu berapa lama waktu yang diperlukan untuk "mengatur ulang" jika Anda menghapus daya. Saya mungkin dapat menggunakannya untuk proyek yang akan saya jalani, dengan mematikan daya untuk waktu yang ditentukan (asalkan tidak terlalu lama)
onaclov2000
0

Alternatif termudah adalah dengan menggunakan tombol tekan bergantian.

Jika Anda mengabaikan fakta bahwa itu terkunci pada posisi yang berbeda, itu hampir persis seperti saklar sesaat. Saya mengerti bahwa ini bukan semangat pertanyaan, tetapi ini adalah solusi sederhana dan kompak yang tidak memerlukan perangkat lunak dan tidak ada perangkat keras eksternal.

Kevin Vermeer
sumber
0

Tidak yakin persis apa tujuan akhirnya, tetapi saya pikir saya akan meletakkannya di sana:

Ini adalah sirkuit kecil yang hebat yang saya suka gunakan untuk menggerakkan relay bistable. Cukup murah untuk dibangun juga.

Menekan sakelar sesaat akan mengubah status relai dan LED. Tidak terlalu pilih-pilih tentang berapa lama Anda menahan tombol. Karena relay terkunci, itu tidak akan menarik banyak saat ini sebagian besar waktu.

Dalam konfigurasi ini, LED akan menyala ketika relai dalam kondisi yang disetel dan mati ketika relai diatur ulang. Anda juga dapat menghubungkan R7 ke terminal + C3 untuk menghidupkan LED ketika relai di-reset.

Saya suka menggunakan ini dalam efek gitar sehingga saya dapat memotong atau menggunakan perangkat dengan footswitch sesaat. Tentu saja switch 3PDT akan melakukan hal yang sama sendiri, tetapi switching lebih tenang dengan cara ini (tidak ada sembulan besar) dan footswitch sentuhan lembut sesaat terasa jauh lebih baik daripada yang besar 3PDT.

Semoga ini membantu.

Menempel Driver Relay

Avid Pro Tool
sumber
0

Tidak bisakah Anda melakukannya dengan perangkat lunak?

Apakah tombol akan menjadi input pada perangkat yang dapat diprogram, atau apakah Anda perlu melakukan sakelar di bidang perangkat keras?

Dengan menyimpan status tombol dalam memori, cukup mudah untuk menggunakan sakelar sesaat sebagai sakelar.

boolean buttonState = false; // store for toggle state, false = off true = on

if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
     Serial.println("Button Toggled On"); // do something while button is on

     buttonState = true // set button state to on
}

if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
     Serial.println("Button Toggled Off");  // do something else while button is off

     buttonState = false // set button state to off
}

Maaf jika ini melenceng, jelas jawaban ini tergantung pada Anda menggunakan MCU atau chip yang dapat diprogram.

Jim
sumber
Secara pribadi, saya memerlukan solusi mandiri, tetapi pertanyaannya dimaksudkan untuk bersifat umum.
endolith
1
Ya, itu tentu saja solusi yang masuk akal ketika Anda memiliki mikroprosesor. Catatan, Anda juga harus menerapkan "debounce" karena sakelar dan tombol berisik saat beralih.
Craig McQueen