Desain canggih perangkat sederhana

Salam untuk pembaca! Hari ini saya akan menceritakan sebuah kisah aneh yang membuat saya berpikir tentang masalah yang muncul ketika komponen pilihan yang salah (tidak optimal) untuk implementasi produk elektronik apa pun. Dan juga tentang kesederhanaan yang tampak menggunakan contoh perangkat "satu hari".
Mari kita sepakat bahwa ceritanya fiktif, kebetulan apa pun adalah acak ... atau tidak acak.
Suatu ketika Seryozha, programmer menoleh kepada saya dengan permintaan untuk membuat perangkat di mobilnya yang mengemulasi penekanan berurutan dari 2 tombol virtual ketika menekan satu mobil fisik di sirkuit kontrol kontrol jelajah (Ford Focus 2). Skema unit kontrol standar adalah sebagai berikut:



Di sisi kontrol, ini adalah input tombol-tekan klasik menggunakan ADC. dan jadi tugas perangkat, ketika Anda menekan tombol perangkat keras, secara berurutan tekan tombol ON dan SET + untuk waktu ~ 0,2 detik. Untuk kemudahan integrasi perangkat, diputuskan untuk menyalakannya dari resistor atas pembagi. Tegangan pada terminal koneksi adalah 4,6 V tanpa rangkaian tombol yang terhubung. Karena perangkat itu direncanakan dibuat pada malam hari, saya membuat diagram tanpa perhitungan awal dari apa yang ada di meja perakitan. Solusi "di dahi":



Serezha menulis firmware, dan perangkat bekerja dengan sempurna untuk mobil. Pada saat mereka ingin mengemas papan ke rumah saklar kolom kemudi, seseorang dari belakang kantor berteriak: "Apakah itu sangat rumit? Setengah dari detail dapat dibuang, dan memang STM8 hanya cocok untuk tugas seperti itu. " Dan itu dimulai ... Penulis ide itu secara sukarela menyolder tata letak "dari 3 bagian" (tampaknya mengantisipasi kemenangan mudah). Saya (dipandu oleh artikel saya sendiri tentang kecemburuan profesional ) memutuskan untuk tidak mengganggu penerbangan spesialis muda, tetapi hanya terhubung pada tahap ketika semua orang menyadari bahwa mukjizat tidak terjadi.

Skema yang diusulkan oleh kolega saya sangat sederhana, tetapi hanya berhasil di atas meja:



Kesalahan terlihat bahkan pada pandangan pertama, namun, saya memutuskan untuk membuat rangkaian bekerja secara khusus pada STM8S001J3 MK.

Untuk memahami cara mengulang sirkuit, kami akan melakukan beberapa pengukuran. Resistansi resistor atas di pembagi ADC ~ 130 Ohm, dan tegangan tanpa beban adalah 4,6 V.

Maka diagram simpul tombol memiliki bentuk:



  • ketika tombol dilepaskan, arus dalam rangkaian adalah 2 mA, tegangan pada input ADC adalah 4,33 V;
  • ketika tombol ON ditekan, 3,7 mA, tegangan pada input ADC adalah 4,11 V;
  • dengan tombol SET ditekan + 18,4 mA, tegangan pada input ADC adalah 2,2 V.

Pada saat yang sama, kisaran tegangan operasi dari STM8S001J3 MK adalah 2.95-5.5 V. Ternyata upaya untuk menekan tombol SET + menyebabkan penurunan tegangan di bawah minimum dan MK disetel ulang.

Pada titik ini, saya mengusulkan untuk mengalihkan perhatian dan mendiskusikan apa MK yang ideal untuk tugas ini dan mengapa mereka tidak memilihnya. Biasanya untuk kerajinan seperti itu gunakan apa yang pengembang tahu cara bekerja dan apa yang ada. Sebagai contoh, microchip memiliki pengontrol PIC10F200 atau ATtiny10 dalam paket SOT23-6 dengan kisaran tegangan 2 (1,8) - 5,5 V. Microcircuits ini tidak memerlukan regulator tegangan (seperti STM32L031), tetapi mereka tidak akan memulai kembali ketika tombol SET + ditekan. (seperti STM8S001J3). Dalam harness hanya akan ada 2 resistor dan kapasitor. Keindahan, tetapi rentang pengendali STMicro dengan rentang daya ini tidak. Pembaca yang penuh perhatian akan mencatat dengan benar bahwa dalam kerangka tugas seperti itu, hampir semua pengontrol dapat dikuasai, tetapi tidak adanya lingkungan pemrograman yang akrab dan alat debugging menentukan pilihan.
Kembali ke skema. Untuk mengatasi masalah dengan reset controller, kita membutuhkan energi untuk menyalakan controller saat tombol SET + ditekan. Untuk memperkirakan jumlah energi ini, perlu untuk mengukur konsumsi saat ini (atau lihat dokumentasi):



Hampir 500 μA yang terbaik. Ini banyak, tetapi untuk memperjelas saya akan memberikan perhitungan. Untuk menyimpan energi, kita memerlukan dioda (VD1) dan kapasitor (C1):



Drop pada VD1 adalah masing-masing 0,2 V, ketika tombol C1 dilepaskan, itu akan dibebankan ke 4,33 - 0,2 = 4,13 V. Ketika Anda menekan tombol SET +, tegangan pada Vin turun menjadi 2,2 V, VD1 menutup dan MK didukung oleh debit C1.



(Terima kasih kepada VT100 dan DenisHW untuk memperbaiki kesalahan )
Dalam ungkapan ini, energi yang disimpan dalam kapasitor di sebelah kiri (ketika dilepaskan dari 4,13 ke 3,1 V), di sebelah kanan, energi yang dihabiskan oleh pengontrol untuk waktu t = 0,2 s. Kemudian kapasitansi kapasitor:



100 uF untuk tugas ini bisa ditoleransi, tetapi cobalah untuk menidurkan pengontrol sambil menekan tombol.

Untuk melakukan ini, STM8 memiliki Mode Berhenti Aktif:



Dengan menonaktifkan MVR dan Flash, dimungkinkan untuk mendapatkan arus konsumsi ~ 40 μA (ini jauh lebih tinggi dari arus yang dinyatakan, tetapi saat ini cocok untuk tugas ini), dan berkat AWU (unit bangun otomatis), Anda dapat dengan mudah mengatur bangun setelah 256 ms setelah tidur. Dalam hal ini, untuk memastikan pengoperasian controller, kapasitor dengan kapasitas hanya 10 μF diperlukan, tetapi karena setelah menjepit kaki, diperlukan beberapa saat sebelum MK tertidur, kapasitas yang diperlukan dan cukup adalah 47 μF.

Tampaknya semua masalah telah diselesaikan, tetapi ada satu TETAPI lagi. Arus ketika tombol SET ditekan + 18,4 mA kurang dari batas arus untuk output, tetapi tegangan nol logis akan berada di wilayah 0,7 V. Hal ini akan menyebabkan penurunan arus melalui resistor dan akan memerlukan perhitungan ulang resistensi atau penggunaan transistor eksternal sesuai dengan skema dengan saluran terbuka. Saya memilih opsi kedua sebagai perilaku yang lebih mudah diprediksi. Skema terakhir berupa:



Dalam formulir ini, telah berhasil diperoleh dan beroperasi hingga hari ini.

Alih-alih sebuah kesimpulan

Dalam artikel ini saya ingin menarik perhatian pada masalah bagaimana pengembang dihukum karena pendekatan yang terlalu dangkal atau sembrono untuk mengembangkan perangkat sederhana (sekilas pandang). Di sisi lain, saya ingin menunjukkan bagaimana pilihan yang tidak optimal dari basis elemen utama (dalam hal ini, MK) mempersulit proses pengembangan dan produk itu sendiri mengingat dua alasan utama:

  1. Kebutuhan untuk menyesuaikan pilihan solusi teknis dengan keterampilan programmer.
  2. Ketidakmampuan untuk memahami berbagai komponen yang mungkin cocok untuk tugas tersebut, untuk memilih "yang paling banyak" dari mereka. Faktor-faktor ini, paling sering, menjelaskan fakta bahwa banyak perangkat (rumah tangga, komersial, khusus) berfungsi dengan baik, tetapi tidak dibuat seperti yang Anda inginkan.

Source: https://habr.com/ru/post/id432574/


All Articles