Menyederhanakan banyak pembanding jendela

10

Saya memiliki 8 termistor dan saya harus memastikan bahwa masing-masingnya ada di dalam jendela suhu. Mereka semua memiliki jendela yang sama dan saya tidak peduli yang mana atau berapa banyak yang berada dalam rentang yang valid, saya hanya perlu tahu apakah mereka semua berada di dalam jendela (sama) atau tidak. Ini menjadi solusi perangkat keras saja, sehingga sequencing perangkat lunak dari ADC tidak ada pertanyaan.

Solusi terbaik saya saat ini adalah menggunakan banyak IC komparator dan mengimplementasikan komparator jendela terpisah untuk setiap termistor. Untuk mengoptimalkan solusi, saya dapat menggunakan sejumlah komparator quad, masing-masing dengan keluaran terbuka sehingga saya dapat menghubungkan semuanya. Namun, pada dasarnya itu adalah sirkuit yang sama. Referensi / pemicu tegangan yang bisa saya buat sekali, buffer, lalu suplai ke semua komparator.

Saya merasa bodoh karena hanya melemparkan banyak pembanding pada masalah. Saya tidak yakin jika tidak ada cara yang lebih baik, saya kebanyakan mencoba untuk mengoptimalkan ruang papan. Adakah cara kreatif yang Anda ketahui? Misalnya, pilih tegangan min / maks dari semua termistor dan gunakan komparator jendela tunggal (EDIT: dua komparator ofc), yang IMHO akan mengarah ke solusi yang lebih besar dan karenanya bukan jawaban yang baik, saya hanya menyebutkan ini untuk inspirasi.

EDIT: Saya tahu bahwa solusi berbasis perangkat lunak akan menjadi yang terbaik. Itulah sebabnya saya sebutkan di awal dan di muka untuk mencegah semua orang menyarankannya. Alasan masalahnya didefinisikan dengan cara ini adalah karena ini adalah sirkuit keselamatan, dan spesifikasi mengharuskan saya untuk mengimplementasikan solusi perangkat keras saja selain monitor perangkat lunak. Jadi solusi berbasis perangkat lunak sudah ada di sana, saya "hanya" perlu menemukan cara terbaik untuk mengimplementasikan yang berbasis perangkat keras.

ultimA
sumber
1
Anda dapat mengalikan input ke satu komparator jendela. Tetapi Anda membutuhkan sesuatu untuk mengurutkan pengukuran dan menggabungkan hasilnya. Pembatasan "tidak ada perangkat lunak" adalah masalah karena Anda bisa melakukan semua ini dengan satu mikrokontroler dengan ADC bawaan, yang akan menghasilkan jejak terkecil seperti yang saya lihat. Karena saya seorang pria perangkat keras, saya menyesal mengakuinya tetapi UC dan program kecil sulit dikalahkan di sini.
Bimpelrekkie
4
Jika akurasi yang Anda inginkan tidak terlalu 'kencang' Anda bisa menggunakan dioda atau gerbang dengan resistor pull down untuk jendela tinggi yang digerakkan oleh termistor melalui dioda dari masing-masing. Tegangan resistor akan menjadi tegangan tertinggi dikurangi penurunan dioda. Ulangi untuk jendela rendah dengan pull up resistor dan dioda polaritas terbalik. | Meskipun Anda mengatakan ini bukan untuk menjadi solusi perangkat lunak - Arduino yang berdedikasi (atau hanya prosesor pilihan yang hanya melakukan tugas ini) cenderung dekat karena kompak dan berbiaya rendah.
Russell McMahon
1
"Urutan perangkat lunak dari ADC dibaca tidak mungkin." Dengan itu Anda telah membuang solusi yang paling sederhana dan lebih kecil.
Oldfart
1
Standar apa ini yang membutuhkan dua sistem independen dengan salah satunya hanya perangkat keras? Saya telah melihat spesifikasi untuk sistem yang diimplementasikan secara independen, tetapi redundansi memasok keandalan yang diperlukan. Anda bisa menerapkan dua sistem pemeriksaan berbasis mikro untuk ruang satu perangkat keras saja, misalnya.
Olin Lathrop
2
Apakah FPGA dianggap perangkat lunak?
Eric Johnson

Jawaban:

11

Satu komparator jendela, penghitung 3 bit, dan mux analog 8: 1 untuk menghubungkan satu termistor ke komparator.

Jika yang perlu Anda ketahui adalah semuanya baik-baik saja; itu 3 chip, pekerjaan selesai. (74HC163, 74HC4051, pembanding, ditambah sesuatu seperti 555 untuk mencatatnya).

Seperti yang dikatakan Andy, MUX (misalnya 74HC4051) memiliki resistansi ON yang cukup rendah, sehingga setiap termistor terhubung ke satu input analog, dan satu-satunya resistor di sisi lain menyediakan pembagi tegangan. Jika termistor semuanya terhubung ke GND, resistor menuju ke 5V.

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Jika Anda perlu merekam / menampilkan yang tidak sesuai spesifikasi, Anda mulai menambahkan sirkuit seperti decoder baris 3-8 (satu IC lagi, 74HC138) untuk menggerakkan delapan LED; pihak-pihak yang bersalah akan bergiliran.

Jika Anda membutuhkan lebih dari itu, gunakan MCU dan perangkat lunak.

Brian Drummond
sumber
Sumber eksitasi (resistor) dapat berada di sisi "1" pada MUX (ohm MUX rendah) tetapi sebaliknya +1 telah mengalahkan saya.
Andy alias
@ Andyaka Itu sebabnya saya tidak peduli dengan skema! Plus, saya tidak dapat menemukan 74 (HCT) 4051, 74x163, 74x138 di editor sch online ... Saya akan mengisi detail itu tetapi jika Anda ingin mengisi lebih banyak, itu akan bernilai satu atau dua suara.
Brian Drummond
Anda sedang sibuk, Brian, jadi saya akan meninggalkannya bersamamu.
Andy alias
1
Oke, ide yang menarik. Ada sedikit masalah pada output, dalam hal jika satu termistor berada di luar jangkauan, misalnya, output secara harfiah hanya akan memberi tahu saya dalam 1/8-th waktu. Mungkin bukan masalah besar karena saya bisa memberi makan output dari win.comp. ke register geser dengan keluaran saluran terbuka. Saya perlu mencatatnya tetapi hal yang sama yang menusuk multiplexer mungkin bisa melakukannya juga. Pasti ide yang layak diikuti, izinkan saya mencoba untuk datang dengan skema yang lebih lengkap dan saya akan kembali kepada Anda di sini.
ultimA
Nah jika Anda clock pada 4 Hz dan konstanta waktu sistem termal Anda> 2 detik itu (a) OK dan (b) memberikan tingkat kedip yang agak menonjol (laju buzz, apa pun). Anda tahu karakteristik sistem, saya hanya bisa menebak.
Brian Drummond
13

Saya pikir jawaban non-SW Brian adalah yang terbaik tetapi inilah solusi yang murni analog. Gunakan sirkuit yang secara inheren memilih input tegangan tertinggi (dari beberapa) dan menempatkannya ke output. Lakukan rangkaian untuk tegangan terendah.

Pertimbangkan penyearah presisi: -

masukkan deskripsi gambar di sini

Ini menghasilkan tegangan output yang mengikuti tegangan input sepanjang rentang positifnya. Sekarang pertimbangkan apa yang terjadi ketika Anda memiliki dua input seperti ini: -

masukkan deskripsi gambar di sini

V1 dan V2 mana pun yang tertinggi akan memenangkan pertempuran untuk menggerakkan garis output. Langkah dan ulangi untuk 8 input kemudian lakukan hal yang sama dengan dioda terhubung terbalik dan Anda memiliki solusi yang menghasilkan dua tegangan output yang mewakili level tertinggi dan terendah dari beberapa sumber tegangan yang berbeda.

Saya tidak 100% tetapi saya pikir Anda dapat menggunakan kembali op-amp untuk tegangan terendah. Mungkin saya salah dalam hal ini?

Kemudian gunakan komparator pada kedua garis untuk menentukan apakah satu dari delapan mungkin di luar jangkauan.

Andy alias
sumber
Kami memiliki pertanyaan yang kira-kira sama beberapa waktu lalu, dan saya pikir solusi ini adalah permata tersembunyi.
Janka
@Janka mungkin Anda dapat menemukannya dan menautkannya? Saya ingin melihatnya.
Andy alias
+1 Saya suka ini. Mungkin 4 LM324 + kabel-atau LM393 dan Anda selesai. Ia dapat memfilter * & * $$ dari sana untuk mencegah pemicu palsu.
Spehro Pefhany
Saya memiliki kesan itu tidak lebih dari sebulan yang lalu dan memiliki kata magnitude di dalamnya, tetapi saya pikir saya salah: saya tidak dapat menemukannya.
Janka
Hai! Terima kasih atas jawaban Anda. Saya pikir meskipun ini sebenarnya meningkatkan biaya di setiap aspek. Secara naif membangun 8 jendela pembanding seperti pada pertanyaan awal membutuhkan 16 pembanding. Solusi yang diusulkan ini juga perlu 16 hanya untuk membangun min + max, kemudian tambahan 4 untuk perbandingan aktual ditambah array dioda. Ofc perbedaan dalam jumlah IC sebenarnya lebih kecil karena quad opamps, tetapi bagaimanapun itu bukan kemenangan.
ultimA
3

Saran untuk meningkatkan solusi multiplexed untuk digunakan sebagai sirkuit keselamatan: Siapkan salah satu input multiplexer untuk input yang dikenal di luar jendela aman (atau bahkan dua input, satu di bawah satu di atas). Periksa apakah ada respons "jendela luar" dari komparator ketika input yang relevan dipilih pada multiplexer.

Terbaik menggerakkan multiplexer dengan penghitung (sinkron adalah yang terbaik) yang memiliki resolusi satu bit lebih banyak dari yang Anda butuhkan (dan clock dua kali lebih cepat): Bit penghitung paling tidak signifikan menghasilkan sinyal pemicu yang hebat sehingga Anda dapat memuat status komparator ke dalam sebuah flipflop D yang dipicu tepi setelah memiliki banyak waktu untuk menyelesaikan - dan sinyal pemicu ini juga dapat dengan aman dilindungi oleh logika tergantung pada keadaan lawan untuk flipflop D yang berbeda (misalnya satu untuk setiap termistor, atau satu untuk termistor, satu untuk termistor dan satu untuk diri sendiri -test saluran yang saya sarankan di atas).

Agar lebih aman, duplikat seluruh rangkaian. Sementara termistor dan input terkait secara teoritis masih merupakan satu titik kegagalan, fakta bahwa Anda menggunakan komparator jendela harus mencegah pendek atau terbuka pada termokopel agar tidak salah dibaca sebagai OK yang salah (bias sesuai dengan itu).

pemeras dan prajurit
sumber
3

Berikut ini adalah IC komparator 6 x jendela dan di sini adalah IC komparator jendela Quad .
No 8, sayang.

Anda dapat memenuhi kebutuhan dengan komparator drain terbuka quad LM339 quad 4 x kamu.
Ini dapat dimiliki dalam
1,7mm x 1,7mm (3mm x 3mm termasuk bantalan) QFN,
atau 6,4 x 5mm TSSOP

Datasheet di sini

Anda juga perlu tegangan referensi jendela atas dan bawah (3 resistor) dan satu output pullup.

Russell McMahon
sumber
Halo. Ya, saya juga menyebutkan dalam pertanyaan awal bahwa adalah mungkin untuk menggunakan array, yang tak terbantahkan menurunkan jumlah IC. Saya kira pertanyaannya lebih tentang apakah mungkin untuk menurunkan jumlah komponen menggunakan arsitektur yang berbeda daripada hanya menggunakan perangkat integrasi yang lebih tinggi. Saya menerima jawaban Brian, karena hanya menggunakan 5-6 komponen fisik Anda dapat membangun sebuah sirkuit untuk 16 atau bahkan 32 termistor dengan solusi itu. Mungkin tidak untuk jumlah NTC yang rendah seperti <8, tetapi lebih dari itu dan solusi itu adalah pemenang yang jelas. Meskipun demikian, terima kasih (juga atas komentar Anda sebelumnya).
ultimA
2

Kenapa begitu rumit?

U2 + akan menjadi max (input) - drop dioda.

U1- akan berupa min (input) + drop dioda.

R3,4,5 menetapkan ambang batas. Jika terlalu rendah pada input apa pun, U1- turun di bawah ambang batas pada U1 +, U1out menjadi tinggi. Jika terlalu tinggi pada input apa pun, U2 + naik di atas ambang batas. U2out menjadi tinggi.

Tidak yakin apa yang ingin Anda lakukan ketika kedua kondisi tersebut terjadi, tetapi ingatkan drive transistor / FET / SCR.

Magoo
sumber
1

Anda dapat membeli IC komparator jendela untuk menghemat ruang papan. Misalnya, TPS3700 , LTC1042 , LMV7231 (hex), atau MAX969 (quad).

τεκ
sumber
-2
Saya kebanyakan mencoba mengoptimalkan ruang papan.
Saya merasa bodoh karena hanya melemparkan banyak pembanding pada masalah.

Solusi yang jelas adalah menggunakan mikrokontroler dengan setidaknya 8 input A / D. Sisanya adalah firmware.

Bahkan mikro yang lambat dapat mengimbangi 8 thermistor. Anda dapat dengan mudah membuat sistem yang merespons dalam milidetik, misalnya. Itu harusnya jauh lebih cepat daripada waktu respons dari termistor agar efektif secara instan.

Anda mengatakan bahwa urutan membaca A / D adalah "keluar dari pertanyaan", tetapi tidak memberikan pembenaran untuk persyaratan sewenang-wenang ini. Sebuah mikrokontroler kecil akan memakan ruang papan lebih sedikit daripada sekelompok pembanding. Karena mengoptimalkan ruang papan sebagian besar adalah tujuan Anda, ini adalah sesuatu yang perlu Anda jelajahi dengan serius.

Olin Lathrop
sumber
6
Ya, tidak, Anda salah. Tidak ada agama yang terlibat, hanya ada saat di mana solusi berbasis perangkat keras adalah persyaratan, titik. Saya tidak mengerti mengapa saya perlu membenarkan persyaratan saya, karena bahkan jika Anda berpikir persyaratannya tidak masuk akal, jawaban yang benar memegang nilai mengajar untuk semua orang. Tapi tentu saja, ada alasannya, yang saya berikan dalam sebuah edit di akhir pertanyaan.
ultimA
6
Membangun kasus keselamatan untuk sistem perangkat lunak (seperti yang dijelaskan oleh pertanyaan yang diedit mungkin diperlukan) bisa jauh lebih mahal daripada membangun sistem perangkat keras independen yang sederhana.
Brian Drummond
3
Apa pun yang Anda katakan tidak mengubah fakta jawaban Anda salah, kasar, dan tidak membantu
MCG
3
Berdentang hanya karena aku bisa. Solusi "Gunakan mikro", meskipun dalam banyak kasus benar-benar tidak relevan di sini. Bagaimanapun ini adalah forum elektronik dan memposting jawaban tentang bagaimana melakukannya dengan cara linear adalah jawaban yang lebih instruksional. Jika tanpa alasan lain selain menyoroti berapa jauh lebih murah dan lebih kecil itu akan menggunakan mikro.
Trevor_G