Sirkuit bekerja di papan tempat memotong roti tetapi tidak PCB

9

Saya memiliki sirkuit yang cukup sederhana yang bekerja dengan sempurna di papan tempat memotong roti, tetapi saya mengalami banyak masalah mentransfernya ke PCB. Saya melihat perilaku yang sangat aneh yang berada di luar pengalaman saya saat ini, jadi saya berharap untuk mendapatkan saran.

Rangkaian ini menerapkan sensor gerak wifi, meskipun masalah yang saya alami terjadi sebelum saya sampai ke bagian RF, atau bahkan bagian UC diagram diagram: masukkan deskripsi gambar di sini

Saya telah melingkari bagian yang mengalami masalah.

R3 adalah resistor pull-down, yang diperlukan b / c AMN42121 mendorong output TINGGI ketika gerakan terdeteksi, tetapi membiarkannya menggantung tanpa gerakan, jadi pull-down diperlukan.

Saya menggunakan C1 untuk memperlancar transisi antara gerakan dan tidak ada gerakan. C1 membuat tingkat output pergi ke RENDAH perlahan dan lancar, sehingga "tidak ada gerakan" dicapai setelah beberapa detik tidak ada gerakan.

Inverter apakah ada gangguan eksternal b / c attiny yang dipicu oleh tingkat RENDAH, jadi saya perlu membalikkan logika. Sangat disayangkan bahwa saya harus menggunakan paket DIP besar untuk satu inverter, tetapi saya tidak dapat menemukan yang lain.

Saya telah membuat PCB dua sisi untuk sirkuit ini, yang terlihat seperti ini: masukkan deskripsi gambar di sini

Sekali lagi, saya hanya mengumpulkan area yang dilingkari sejauh ini.

Setelah menyolder S1, R3 dan C1, saya mendapatkan sinyal berikut dari output sensor: masukkan deskripsi gambar di sini

Inilah yang ingin saya lihat, jadi semuanya baik-baik saja sampai saat ini.

Selanjutnya saya disolder dalam soket untuk IC2 dan dicolokkan ke inverter. Di sinilah misteri dimulai. Pada awalnya semuanya baik-baik saja, tetapi setelah beberapa saat mengacaukan papan, sirkuit tiba-tiba berhenti bekerja. Ketika saya menempatkan probe pada output sensor, alih-alih sinyal bagus yang kami lihat di atas, saya melihat variasi pada dua contoh berikut:

Contoh 1: masukkan deskripsi gambar di sini

Contoh 2: masukkan deskripsi gambar di sini

Perhatikan bahwa tidak seperti contoh pertama, sinyal dalam contoh kedua tidak dihasilkan oleh gerakan - yang melihat bentuk gigi hanya muncul dengan sendirinya tanpa tindakan apa pun dari saya.

Setelah banyak pengujian, saya dapat menetapkan yang berikut:

  1. Mencabut inverter dari soket membuat sensor berfungsi dengan baik lagi.
  2. Memotong daya ke inverter sambil membiarkannya terpasang membuat sensor bekerja.
  3. Menggunakan inverter yang berbeda tidak berpengaruh.
  4. Menyirami papan dengan penghapus fluks atau aseton dan menggosok dengan kuas terkadang membuat sensor bekerja kembali, tetapi sangat singkat. Pada satu titik saya bisa membuat sinyal terlihat seperti ini dengan menggosok dengan sikat gigi secara agresif: masukkan deskripsi gambar di sini

Perhatikan bahwa bahkan dalam gambar terakhir ini sinyalnya tidak kembali ke level RENDAH. Efeknya hilang hampir segera setelah saya berhenti menyikat.

Sejauh ini ini menunjukkan beberapa cacat solder, kecuali bahwa saya benar-benar tidak dapat melihat masalahnya. Saya telah memeriksa papan dengan hati-hati dengan pembesaran yang kuat dan menguji semua tempat yang bisa saya pikirkan untuk kesinambungan - semuanya memeriksa. Ini adalah closeup pekerjaan solder pada soket IC dan sensornya: masukkan deskripsi gambar di sini

Sekarang saya kehabisan ide, jadi saran apa pun akan sangat dihargai. Terima kasih.

EDIT:

Saya baru saja menemukan sesuatu yang menarik. Pemeriksaan lebih dekat dari contoh # 2 (sinyal bentuk gigi gergaji) mengungkapkan bahwa kemiringan ke bawah adalah segmen dari kurva pelepasan C1 yang diharapkan. Ketika level tegangan mendekati ambang inverter dan menghabiskan terlalu banyak waktu di sana, inverter sepertinya menjadi bingung! Ini menghasilkan sedikit derau kebisingan dan kemudian melakukan sesuatu untuk menendang input kembali ke HIGH, atau cukup bergaul dalam kondisi bising "tak tentu" tanpa batas waktu hingga output sensor menjadi HIGH lagi b / c gerakan (Contoh # 1).

Untuk menguji teori ini, saya mengganti C1 dengan tutup yang 10 kali lebih kecil, sehingga membuat kurva debit lebih curam dan "voila!" - inverter tidak lagi bingung dan rangkaiannya bekerja!

Tentu saja, ini mengalahkan tujuan C1, karena sekarang tidak memberikan penundaan sebanyak yang saya inginkan. Saya tidak yakin mengapa saya tidak memiliki masalah dengan inverter di papan tempat memotong roti, tetapi ini menunjukkan bahwa mungkin ada perbaikan yang sangat mudah yang dapat mengatasi masalah ini. Saya membaca bahwa papan tempat memotong roti memiliki kapasitansi "liar" yang besar, jadi mungkin saya hanya perlu menambahkan beberapa kapasitor secara strategis di suatu tempat? Ada ide?

EDIT 2: Memberikan tampilan atas karena beberapa komentator memintanya: masukkan deskripsi gambar di sini

Val Blant
sumber
Pisang suci, sambungan soldernya tampak mengerikan . Anda sangat membutuhkan fluks di sana.
Connor Wolf
@Connor Wolf: Apakah Anda mengacu pada pin IC yang tidak terhubung ke apa pun? Itu hampir tidak disolder sama sekali, tapi saya tidak melihat alasan untuk menyoldernya. Atau apakah Anda berbicara tentang sambungan solder lainnya?
Val Blant
Mengapa Anda menggunakan inverter sama sekali? Hubungkan output sensor ke PB2 dengan resistor seri 220-470 ohm, dan Anda OK untuk pergi. Anda dapat menambahkan resistor pull down, tetapi 10Meg terlalu tinggi. Ubah dengan 10k. Anda juga tidak perlu menghubungkan C1. Anda dapat melakukan pemfilteran dalam perangkat lunak dengan rutin penundaan sederhana. Selain itu, C1 mungkin menambahkan beban ke sensor sehingga ketika IC inverter terhubung, bebannya terlalu banyak sehingga sensor tidak bisa mengemudi, mungkin?
abdullah kahraman
Saya telah memeriksa sekarang dan sensor dapat memberikan output maksimum 100uA! Inverter membutuhkan sekitar 1mA arus input! Jadi, resistor pull-down di atas yang saya sarankan, yang 10k, terlalu banyak. Gantilah dengan 330k atau 470k
abdullah kahraman
@abdullah kahraman: Saya minta maaf - Saya tidak mengerti ide Anda. INT0 pada attiny dipicu pada transisi ke RENDAH, jadi "tidak ada gerakan" harus diwakili oleh input TINGGI. Apakah itu tidak benar? Bisakah Anda jelaskan ide Anda lebih terinci?
Val Blant

Jawaban:

7

EDIT - karena salah tafsir saya tentang rangkaian, saya mengedit jawaban untuk fokus pada output sensor - apakah Anda menggunakan output analog untuk dimasukkan ke inverter - jika Anda mungkin, Anda harus mencoba pemicu Schmitt seperti 74HC14

Andy alias
sumber
1
@ ValBlant Saya bukan ahli tentang Bung ATtiny - jika Anda telah menetapkan itu harus polaritas daripada itu - apa tingkat sinyal input ke inverter - bisa Anda tetapi tidak menerapkan tingkat logika yang tepat - mungkin Anda juga perlu inverter pemicu schmidtt seperti 74HC14?
Andy alias
1
Mungkin jika Anda melepas tutupnya dan melihat seperti apa bentuknya kemudian, jika perlu Anda dapat melakukan sesuatu dalam kode ATtiny yang membuat sirkuit tetap hidup di antara transien? Apakah Anda memasang decoupler 10n pada inverter seperti yang disarankan oleh seseorang sebelumnya?
Andy alias
1
Saya pikir Anda akan membutuhkan pemicu Schmitt Bung - mereka dapat menangani analog lambat naik kali dan jatuh kali - itulah yang mereka dimaksudkan untuk dilakukan. Mungkin sirkuit asli Anda berfungsi karena kebetulan meskipun selalu ada alasan bagus !!
Andy alias
1
@ValBlant Perhatikan spesifikasi "waktu naik dan turun input" pada lembar data TC74HC04 - yang menentukan sinyal input paling lambat yang direkomendasikan (waktu naik / turun 500ns pada Vcc = 4,5V). Ini adalah spesifikasi yang mudah untuk dilewatkan, terutama karena lembar data Toshiba tidak secara eksplisit menetapkannya sebagai maksimum.
Chris Johnson
1
Menggunakan inverter dengan pemicu Schmitt memecahkan masalah saya.
Val Blant
11

Tanpa mempelajari sirkuit Anda dengan sangat rinci, hal yang jelas adalah Anda tidak memiliki kapasitor decoupling.

Solder satu melintasi pin daya setiap chip.

Juga, komentar 'scrubbing Anda membuatnya berfungsi' menunjukkan bahwa Anda memiliki sambungan kering atau koneksi intermiten di suatu tempat. Periksa semua solder Anda dengan hati-hati.

Mengenai chip DIL yang berlebihan, Anda bisa saja menggunakan transistor, dan memasukkan waktu tunda dalam perangkat lunak.

Buzby
sumber
ok, baru saja membaca tentang apa kapasitor decoupling. Saya terkejut bahwa saya perlu sesuatu seperti itu untuk menyalakan inverter, yang bukan perangkat kecepatan tinggi, tapi saya pasti akan mencobanya. Sebagian besar sumber menyarankan tutup 0,1uF keramik pada pin daya IC. Saya tidak memiliki tutup keramik di kisaran itu, tapi saya punya beberapa elektrolitik. Apakah itu akan berhasil, atau apakah saya benar-benar membutuhkan keramik untuk ini?
Val Blant
Berkenaan dengan inverter, saya sebenarnya mulai dengan transistor pada awalnya, tetapi kemudian menyadari bahwa inverter transistor menarik terlalu banyak daya ketika terbuka. Rangkaian saya harus berfungsi sekitar 60uA (saat tidak mentransmisikan), yang saya tidak dapat capai dengan transistor, tetapi IC inverter sepertinya melakukan pekerjaan itu.
Val Blant
Baru saja mencoba 0.1uF dan 1uF electrolytics sebagai decoupling cap tanpa perubahan sama sekali. Namun, saya menemukan sesuatu yang menarik yang saya pikir bisa menjadi petunjuk. Saya akan memperbarui posting utama dengan info baru.
Val Blant
3

Perhatian utama Anda tampaknya mengurangi konsumsi daya.

AMN42121 mengkonsumsi sekitar 50uA terus menerus. The 74HC04 mengkonsumsi sekitar 20uA terus menerus. ATTINY85 mengkonsumsi sekitar 300uA sebentar-sebentar, ketika bangun. Radio akan menggunakan milliamp ketika mentransmisikan.

Seberapa sering sensor akan dipicu? Sudahkah Anda melakukan perhitungan daya untuk memperkirakan masa pakai baterai?

Saya sarankan Anda membuang invertor dan kapasitor 'melambat', menghubungkan sensor langsung ke MCU dengan pulldown 10K sesuai lembar data sensor, dan menulis logika waktu tunda di MCU.

[EDIT] Meskipun ada yang salah, saya senang melihat Anda menguji sirkuit Anda satu per satu. Ini jauh lebih mudah daripada mencoba menemukan proyek yang selesai.

Buzby
sumber
1
Saya tidak melihat perlunya inverter juga. AVR memiliki PCI-Pin Change Interrupts selain INT0 / 1. PCI mendeteksi perubahan status pin apakah TINGGI atau RENDAH. Anda dapat memicu itu dan kemudian menambahkan kode debouncing.
lyndon
Saya pikir 74HC04 mengkonsumsi lebih banyak dari itu.
abdullah kahraman
Melakukan perhitungan masa pakai baterai yang terperinci dan beberapa analisis algoritma dari kode di UC saya menunjukkan bahwa kalian benar - saya tidak menang sama sekali dengan menggunakan inverter alih-alih interupsi Pin Change. Apakah saya harus melakukannya lagi, saya akan melakukan seperti yang Anda sarankan. Namun, masa pakai baterai saya dengan rangkaian saat ini akan menjadi 270 hari dalam kasus terburuk, jadi saya pikir saya akan meninggalkan desain apa adanya, menggunakan pemicu Schmitt pada inverter saya dan beralih ke proyek berikutnya. Terima kasih semua!
Val Blant