Saya mengendalikan kipas PC PWM 4-pin dari PIC16F684 dengan kecepatan kipas yang didorong dari pembacaan ADC dari sensor proximity. Ini semua berfungsi ok.
Awalnya saya tidak berencana untuk menggunakan output tachometer dari kipas, tetapi karena sudah tersedia, saya telah memantaunya dengan cakupan saya hanya untuk melihat bahwa pemetaan saya antara kedekatan dan kecepatan kipas berfungsi.
Sekarang, apa yang saya perhatikan adalah bahwa ketika PWM menjalankan kipas pada 100%, sinyal tach (yang merupakan saluran terbuka ditarik melalui resistor 10K) bagus dan bersih:
Namun, ketika saya menjalankan kurang dari 100%, sangat bising:
Memperbesar kebisingan itu:
Saya menduga itu dipengaruhi oleh sinyal PWM tapi saya ingin memahami mengapa dan bagaimana sehingga saya bisa membersihkannya jika perlu di masa depan. Sungguh saya tertarik pada apa yang harus Anda lakukan ketika Anda melihat suara seperti ini, bagaimana Anda menemukan penyebabnya dan bagaimana Anda "memperbaikinya". Ruang lingkup berhasil memicu ok jadi saya bertanya-tanya apakah saya hanya memberi makan ke pin interupsi eksternal pada PIC (RA2), yang merupakan input Schmitt Trigger dengan tingkat CMOS, maka saya tidak akan "melihat" suara dan saya misalnya bisa gema sinyal bersih dari pin lain untuk memudar LED atau sesuatu.
Jadi bisakah seseorang menjelaskan secara umum bagaimana cara mengenali dan memperbaiki sinyal yang bising? Atau jika itu terlalu luas mungkin hanya masalah khusus ini? Juga jika ada yang salah dengan sirkuit saya, akan lebih baik untuk mengetahui juga. Dalam skema di bawah ini, sinyal yang saya tampilkan adalah input TACH di sebelah kiri rangkaian:
PEMBARUAN
Setelah saran yang bermanfaat dari @MichaelKaras dan @techydude, saya telah mengesampingkan Q2 sebagai sumber masalah dengan menghapusnya dari sirkuit sepenuhnya dan menghubungkan kipas secara langsung. Tidak ada efek signifikan pada kebisingan.
Jadi saya kemudian mengkodekan interupsi eksternal pada RA2 untuk menggemakan sinyal "dibersihkan" dari pin cadangan (RA1 dalam kasus ini), yang banyak membantu tetapi masih berkedip-kedip karena gangguan palsu. (Jadi saya akan mengatur interupsi untuk menjebak tepi naik kemudian beralih ke tepi jatuh ketika dipicu dan sebaliknya, pengaturan / reset RA1 sesuai).
Tapi, setelah juga menambahkan kapasitor 100nF di R3 (sebagai bagian dari saran @ techydude), saya sekarang mendapatkan output yang jauh lebih stabil. Tangkapan layar di bawah ini adalah sinyal TACH setelah dibersihkan melalui input RA2 Terpicu Schmitt dan re-output pada RA1:
Jawaban:
Tentang skema Anda:
Semuanya tampak baik-baik saja, Anda dapat meningkatkan R2 hingga 10k atau bahkan 100k, kapasitansi PALING sangat kecil, FAN akan memiliki lebih banyak inersia pemintalan daripada penundaan mematikan di PALING, mungkin bahkan dengan 1M. Dengan begitu, lokasi 100R Anda tidak relevan dan Anda tidak menyia-nyiakan mA. Jika Anda tidak pernah memegang de uC dalam pengaturan ulang, secara teknis bahkan tidak diperlukan sama sekali, karena UC Anda akan aktif menariknya tinggi atau rendah.
Untuk sinyal PWM, Anda bisa melihat apakah datasheet memungkinkan pull-up eksternal ke 12V, meskipun saya ragu itu akan membuat banyak perbedaan.
Tentang kebisingan:
EDIT: Saya salah membaca plot Anda untuk kHz, yang bodoh jika Anda memikirkannya, di mana itu Hz. Beberapa kisah saya akan sedikit berubah (seperti pembicaraan tentang kebutuhan MHz untuk pekerjaan digital), tetapi gagasan umum tetap ada.
Saya akan meninggalkan seluruh pos apa adanya, tetapi untuk sinyal 100Hz dengan 30kHz noise, sebagai pengganti 100kHz dengan> 5MHz noise (juga tidak benar-benar masuk akal, bukan?), Anda dapat meningkatkan resistor yang berinteraksi dengan kapasitor dengan faktor 10, dan juga meningkatkan kapasitor dengan faktor 50 hingga 100. Itu akan memberi Anda faktor 1000 frekuensi penyaringan yang lebih rendah dalam semua contoh. Tetapi tidak apa-apa untuk hanya meningkatkan kapasitor dengan faktor 10 hingga 20, untuk tepi yang lebih tajam atau respons yang lebih cepat pada sinyal yang Anda minati, karena 30kHz sangat jauh dari 100Hz.
Jadi anggap posting ini ditulis untuk frekuensi tinggi dan kurangi idenya, membuatnya lebih mudah untuk diimplementasikan juga! (Terutama penolakan digital di 3.)
Akhir dari Edit
Karena Anda menggunakan kasus penggunaan yang bagus untuk bekerja melalui metode pengurangan kebisingan, saya akan mencoba membuatnya yang sesuai dengan situasi Anda.
Bagi siapa pun yang membaca, perhatikan:
Ini hanya tentang noise pada sinyal digital
Dalam sinyal digital Anda dapat membuat asumsi bahwa hanya ada dua tegangan yang Anda minati "hidup" dan "mati". Apa pun di antara itu tidak ada gunanya dan milik kebisingan atau salah. Dalam sinyal analog, Anda perlu tahu tentang setiap level tegangan dan Anda perlu melakukan beberapa penyaringan aktual dengan banyak C, L, dll.
Masalah dalam sinyal Anda adalah bahwa noise negatif meningkat pada level tinggi dan noise positif pada level rendah saling berdekatan, jadi pemicu standar yang sederhana, bahkan dengan level yang dapat disesuaikan tidak dapat sepenuhnya menjamin Anda bahwa Anda tidak akan pernah mendapatkan bingung.
Pilihan Anda:
1. Ubah Bias:
Yang positif memiliki lonjakan negatif yang sangat rendah, itu karena pull-up Anda tidak dapat menang dari kebisingan. Hal termudah yang dapat Anda coba adalah mengurangi resistensi itu. Ada risiko ini hanya akan meningkatkan paku pada sinyal mati juga, sehingga mungkin tidak selalu berhasil. Tetapi sangat mungkin bahwa itu akan memberi Anda ruang kepala di antara paku untuk membuat histeresis sederhana.
2. Ubah Level Tegangan
Anda dapat dengan mudah, jika kipas memungkinkannya, ubah Tacho ke level tegangan yang lebih tinggi dan tambahkan kondisi antara:
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Sekarang mungkin ada cukup ruang antara lonjakan tinggi dan rendah untuk memastikan PALING selalu aktif, bahkan ketika ada lonjakan negatif dan selalu mati, bahkan jika ada lonjakan positif. Mungkin diperlukan beberapa dioda, zener, atau resistor untuk mendapatkan set-point dalam situasi baru, tetapi jika lonjakan pada sinyal negatif tetap seperti itu, mereka seharusnya tidak memicu MOSFET, selama Anda tidak ganti dengan yang memiliki ambang gerbang di bawah 2V.
3. Tambahkan "lambat" Histeresis:
Ini adalah trik yang biasa digunakan ketika Anda tahu sinyal noise runcing setidaknya dari urutan besarnya lebih besar dari sinyal yang Anda minati. Ini akan sedikit menunda sinyal, sehingga tidak dapat digunakan dalam situasi di mana saat yang tepat dari perubahan on / off adalah penting.
Tetapi untuk sinyal di mana Anda hanya ingin mengetahui bentuk atau frekuensinya, ini adalah metode yang sangat kuat. Ini pada dasarnya mulai memicu ketika ada tegangan melintasi ambang batas, tetapi hanya menyelesaikan tindakan itu ketika tetap di sana. Ada banyak cara untuk membangunnya.
Anda dapat melakukannya di pengontrol (yang termudah dalam jumlah komponen): Anda dapat memicu pada sisi, lalu sampel beberapa nilai lebih pada kecepatan yang cukup untuk melihat tinggi di antara lonjakan kebisingan, tetapi tidak bingung tentang kehilangan seluruh periode rendah. Kemudian Anda membuat penilaian yang telah ditentukan berdasarkan pengetahuan tentang sinyal dan kebisingan Anda. Misalnya, jika Anda dapat mengambil sampel pada 10MHz, Anda dapat menangkap 50 sampel dan memastikan bahwa frekuensi tertinggi 100kHz tidak akan diabaikan jika Anda menggunakan aturan mayoritas. Yaitu: setidaknya 25 harus rendah agar benar-benar rendah. Paku Anda hanya sangat tipis dan paling sering itu adalah sinyal asli, sehingga bisa bekerja, tetapi jumlah mayoritas dapat disesuaikan. Ini akan bekerja dengan 1MHz dan 6 atau 7 sampel juga, tetapi itu akan menjadi kurang dari mayoritas sebenarnya, jadi mungkin ada beberapa risiko lagi di sana.
Anda juga dapat melakukannya secara eksternal: Tapi ini sudah JAUH lebih rumit daripada menambahkan filter sederhana, terutama ketika Anda melihat hasilnya dengan UC dengan beberapa histeresis di inputnya. Tapi itu menyenangkan untuk dipikirkan, jadi mari kita:
mensimulasikan rangkaian ini
U1 adalah Op-Amp atau Comperator yang cocok. Comperator adalah switcher yang lebih baik, seringkali dengan swing yang lebih baik, tetapi untuk sub-MHz sebuah OpAmp dengan swing rail / rail yang baik akan mudah dilakukan.
Sementara jenis histeresis ini dapat dibangun dengan setidaknya satu resistor lebih sedikit, yang ini lebih mudah untuk dijelaskan dan karenanya lebih mudah untuk dimodifikasi.
Pertama-tama bayangkan tanpa kapasitor:
Pertama, lihat bahwa pembagi resistor dipengaruhi oleh output U1, itu akan menariknya sedikit lebih rendah dari yang lebih tinggi melalui resistensi nyata 20kOhm. Katakanlah pada input positif U1 adalah tegangan 1.1V dibulatkan ke bawah ketika outputnya 0, dan 3.9V dibulatkan ke atas ketika outputnya 5V.
Jika Input awal Tacho kondisi mapan tinggi, output U1 akan rendah, karena sifat pembalik input ke Tacho. Jadi input negatif akan, lagi karena resistor pull-up ekstra, sekitar 2.3V. Karena input positif hanya 1.1V input perlu turun ke bawah 2.2V untuk membuat input negatif melihat tegangan lebih rendah dan membuat output terbalik.
Ketika output terbalik, input negatif akan melihat 3.6V (karena pada saat ini sinyal input 2.2V, output U1 adalah 5V, jadi bagian tengahnya, yang dibuat oleh resistor 10k adalah sekitar 3.6V), tetapi positif input akan beralih dari 1.1V ke 3.9V, jadi negatifnya masih di bawah input positif dan output akan tetap 5V.
Jika sinyal sekarang dengan cepat "batal" dan membalik kembali, output U1 akan cepat kembali lagi, tetapi kemudian lonjakan harus turun di bawah 2.2V, jadi itu lebih baik daripada tidak sama sekali.
Jika sinyal bergerak lebih jauh ke 0, situasi stabil hanya akan menjadi lebih kuat, input negatif akan turun menjadi 2.5V (karena kami menganggap tacho FAN cukup kuat dari pull-down) dan positif akan beristirahat di sekitar 3,9 V.
Sekarang sinyalnya perlu naik di atas 2.7V agar output terbalik. Sangat mungkin 95% paku Anda akan diabaikan.
Menambahkan kapasitor:
Dengan kapasitor, sinyal yang masuk perlu memasok energi yang cukup untuk waktu yang cukup untuk mengisi atau melepaskan kapasitor. Efeknya sudah menjadi filter RC. Setiap lonjakan yang cepat turun dan kemudian pulih tidak akan dapat melepaskan kapasitor.
Nilai C tentu saja tergantung pada sinyal sumber dan sinyal noise. Saya telah memarkirkan 510pF untuk sumber sinyal 100kHz vs durasi lonjakan 1us paling banyak, tapi saya tidak benar-benar melakukan banyak matematika, itu hanya firasat berbasis waktu RC bahwa ini mungkin dekat dengan apa yang akan bekerja.
4. Saring Kebisingan
Ini agak seperti hanya memfilter sinyal analog. Anda dapat menggunakan jaringan RC sederhana, seperti yang dibahas di bagian sebelumnya:
mensimulasikan rangkaian ini
Karena lonjakan noise berada pada atau kurang dari 1us, mereka tidak dapat membuat perubahan tegangan yang sangat signifikan pada kapasitor, karena waktu-RC-nya adalah 5us. Ini berarti bahwa energi dalam paku rata hingga rata. Karena Anda melihat puncak tinggi dan penurunan rendah pada paku itu bahkan mungkin rata-rata akan sangat dekat dengan 0V dan 5V, tetapi itu hanya dapat dikatakan dengan gambar yang lebih baik, atau hanya percobaan. Karena Anda memasukkannya ke pin UC, waktu-RC mungkin akan cukup untuk melihatnya sebagai tinggi atau rendah. Ini akan memberikan distorsi kecil karena pengisian lebih lambat daripada pemakaian, yang disebabkan oleh pull-up resistor. Beberapa penyesuaian nilai dapat menghasilkan hasil yang dapat diabaikan.
Jika itu tidak cukup, Anda dapat menambahkan beberapa komponen lagi, tetapi Anda sangat cepat berlebihan ketika kebisingan dominan Anda setidaknya 10 kali "lebih cepat" dari sinyal Anda.
Anda dapat menambahkan induktor 4.7uH secara seri dengan resistor untuk menghaluskan beberapa sisi frekuensi tinggi, bahkan mungkin 10uH.
Tapi jujur, dalam kasus "memberi makan ke UC" satu-satunya alasan untuk bereksperimen dengan L dalam sinyal jenis Anda adalah untuk menemukan keseimbangan di mana R besar, C kecil dan L hanya membantu memperlancar beberapa sisi, sehingga R2 / R1 akan cukup kecil untuk mengabaikan perbedaan waktu naik dan turun. seperti R1 dari 33k, C 150pF dan seri L dengan R1 dari 56uH. Atau mungkin manik ferit sebagai pengganti induktor, sedikit tergantung pada ketajaman paku Anda.
Tapi sudah terlalu memikirkannya, kataku.
sumber
Kebisingan seperti ini dari fan tacho adalah hal biasa, karena sirkuit (yang biasanya mencakup sensor Hall Effect) pada fan yang menghasilkan output tacho sendiri sedang dinyalakan / dimatikan di freq PWM Anda (ketika output PWM Anda berada pada hal lain dari 100% -On), bukan hanya pasokan ke motor itu sendiri. Tentu mereka akan memiliki beberapa kapasitansi untuk memperlancar pasokan ke sirkuit itu, tetapi mengingat, katakanlah, catu daya kipas 12V, selama ada cukup kapasitansi untuk mempertahankan beberapa volt antara periode PWM minimum, itu cukup untuk mendorong Hall- Sensor efek & tarik-keluar output tacho (jika kipas menyertakan pull-up sendiri pada output tacho), untuk memberikan sinyal output yang dapat dipulihkan. Ya, penggemar berantakan ketika Anda PWM pasokan mereka. Beberapa penggemar menawarkan input kecepatan PWM yang terpisah dengan pasokan + 12V mereka.
PWM Anda tampaknya sekitar 27kHz. Jadi hal yang baik dalam situasi khusus ini adalah bahwa output tacho Anda @ output 100% tampaknya sekitar 800Hz, yang merupakan <1/30 frekuensi PWM Anda, jadi menyaring output tacho ini untuk menghilangkan sebagian besar kebisingan PWM adalah mudah & layak dilakukan. Terlambat di sini jadi saya CBF akan bekerja melalui calcs, tetapi karena itu open-drain & itu tegangan suplai pull-up Anda (di kipas) yang dianiaya oleh PWM, tutup antara tacho & + 12V rail (bukan PWM output dari sirkuit drive fan Anda) mungkin akan menjadi pilihan yang lebih baik daripada tutup pada tacho ke ground. Coba keduanya & lihat. Mulailah dengan penutup keramik 100n dengan tegangan yang sesuai & lihat tampilannya.
Dengan input Schmigger pada PIC, Anda bahkan mungkin dapat pergi tanpa melakukan penyaringan dari output tacho ini sebelum memasukkannya ke dalam PIC Anda, tetapi Anda memiliki diferensial freq yang akan dengan mudah memungkinkan Anda untuk pergi jauh ke arah membersihkannya naik.
Satu kemungkinan masalah dengan penanganan sinyal tacho dari kipas: jika kipas menariknya hingga +12 dengan 10k secara internal (ada yang melakukannya, ada yang tidak) & Anda juga menarik sinyal tacho ke Anda + 5V rail, maka Anda benar-benar menariknya! Ada berbagai konfigurasi rangkaian untuk mengatasinya, tergantung pada tegangan suplai kipas, seberapa kuat tarikannya, dll. Cobalah untuk mengukurnya dengan multimeter Anda & beri tahu kami.
sumber
Sumber kebisingan yang mungkin pada sinyal TACH mungkin karena FET IRF150 tidak menjadi impedansi ON yang cukup rendah. Ini bisa jadi karena FET RdsON cukup tinggi atau FET tidak sepenuhnya ON pada tegangan drive gate yang disediakan.
Saat arus FAN aktif dan nonaktif dengan sinyal PWM akan ada penurunan pada resistansi FET yang menyebabkan referensi "GND" kipas menabrak ke atas dan ke bawah dan menerjemahkan suara yang terlihat pada sinyal TACH.
Anda dapat memeriksa ini untuk melihat apakah efek yang saya jelaskan adalah kasus dengan meletakkan lingkup GND pada saluran FET dan kemudian melihat sinyal TACH. Sinyal akan terlihat jauh lebih bersih.
Solusinya adalah dengan memilih FET dengan RdsON yang jauh lebih rendah ketika disertakan dengan drive gerbang yang disediakan sistem Anda.
Gagasan lain yang mungkin adalah dengan menggunakan P-FET untuk mengganti + 12V lead kipas bukannya lead GND.
Perhatikan bahwa pengaturan gate resistor yang Anda gunakan menyebabkan Anda kehilangan beberapa drive gate potensial. Pindahkan resistor 1K ke sisi 100ohm lainnya.
sumber
Ini terdengar seperti pekerjaan untuk filter low-pass. Anda perlu menyimpan sinyal yang berguna dengan f 1 sekitar 1 kHz dan menghapus sinyal yang menyinggung dengan f 2 dekat 25 kHz. Frekuensi cut-off dapat dipilih sebagai rata - rata geometri dari f 1 dan f 2 (suboptimal tetapi sederhana):
f c = sqrt (1 * 25) = 5 kHz.
Dengan asumsi RC-filter sederhana akan cukup, dan Anda sudah memiliki hambatan di sirkuit TACH (R 3 = 10 kOhm), nilai kapasitor yang sesuai harus dihitung agar sesuai dengan costant 5 kHz :
C = 1 / (2 * pi * fc * R) = 1 / (6.28 * 5000 * 10000) = 3.2 * 10 -9 F.
Jadi yang perlu Anda lakukan adalah menyolder kapasitor 3nF antara garis TACH dan tanah. Ini akan melemahkan noise frekuensi tinggi dengan faktor 20 atau lebih, yang seharusnya cukup untuk aplikasi Anda.
sumber