Tata letak sinyal PCB campuran untuk PSoC

16

Saya mengembangkan PCB untuk aplikasi penginderaan analog. Ini menggunakan ADC internal pada PSoC3. Seperti biasa, aplikasi ini sangat terbatas ruang (11mm x 21mm), jadi saya harus membuat beberapa kompromi dalam tata letak PCB yang tidak akan saya lakukan pada PCB yang lebih besar.

PSoC PCB

Papan disediakan oleh regulator 6v, dan berisi dua regulator linier 5v. Sebuah MCP1702 untuk penyediaan digital, dan MIC5205 untuk penyediaan analog. Dewan merasakan lima sensor efek A1324 Hall. Setiap sinyal output efek Hall difilter oleh filter RC 100nF + 1k. Satu sensor ada di PCB itu sendiri (kanan bawah). 4 colokan lainnya ke konektor 6-pin di sebelah kanan.

Chip bertindak sebagai budak SPI, tetapi sampel ADC selalu diambil di antara transaksi SPI, sehingga SPI tidak boleh mengganggu sinyal analog.

Sayangnya, saya masih melihat suara (sekitar 1,5 LSB pada 12-bit) pada sinyal analog, dan saya bertanya-tanya apakah ada sesuatu yang bisa saya lakukan secara berbeda dalam tata letak untuk memperbaikinya.

Tata Letak PSoC

Silakan buka gambar di tab baru untuk melihatnya dalam resolusi yang lebih tinggi.


Ditambahkan:

Desain PCB lain yang saya lakukan menggunakan MCP3208 , dan suplai dual 5v yang sama, sensor yang sama, dan filter RC yang sama tidak menghasilkan noise yang terlihat pada 12 bit.

ADC pada PSoC3 adalah jenis delta sigma. Versi PSoC ini terbatas pada 12 bit, tetapi nomor bagian lain memiliki 16-bit ADC (walaupun dengan laju sampel yang lebih rendah).

Saya sangat peduli dengan kebisingan, dan ingin mendorongnya sedikit lebih jauh ke arah 12 ENOB. Alasannya bukan akurasi, tetapi pengukuran kecepatan. Saat ini tingkat kebisingan ini membuat mustahil untuk melakukan kontrol posisi dan kecepatan yang akurat pada robot.


Ditambahkan:

Skema. Maaf agak sempit, tapi Anda bisa saja membaca nilainya.

Skema PSoC

Rocketmagnet
sumber
1
Juga, BERHENTI MENGGUNAKAN NET-LABEL! Sirkuit Anda tidak cukup kompleks untuk membutuhkannya, dan dengan tidak benar-benar menunjukkan koneksi, Anda membuatnya jauh lebih sulit untuk melacak koneksi. Sekali lagi, tujuan skematis adalah untuk membuat fungsi dan fungsionalitas yang diinginkan dari rangkaian terlihat secara visual . Anda kemudian membiarkan komputer menerjemahkan representasi visual ke tata letak fisik sebenarnya dari perangkat (yang merupakan sesuatu yang sangat baik di komputer).
Connor Wolf
1
@ Rocketagnet - Mereka tentu sangat membantu untuk orang yang menggambar sirkuit . Mereka benar-benar menjijikkan bagi orang lain .
Connor Wolf
1
Juga, jika Anda mengalami masalah dengan kebutuhan untuk merutekan kabel karena kendala ruang, Anda sangat perlu melihat ke fungsi penukar pin di Altium. Pada dasarnya, Anda dapat menentukan pin yang secara fungsional-swappable dalam definisi komponen (yaitu berbagai pin IO), dan kemudian ketika Anda merutekan PCB, Anda dapat menjalankan jejak ke salah satu pin yang akan bekerja, bukan hanya satu. Anda tentukan dalam skema. Kemudian, Anda dapat menyinkronkan perutean yang Anda pilih dalam PCB ke skema.
Connor Wolf
1
@FakeName, sementara menghubungkan dengan label mungkin membuat lebih sulit untuk mengikuti rangkaian, menggambar ulang setiap simbol untuk membuat skema murni & bersih dengan garis lurus yang bagus dapat dengan mudah melipatgandakan waktu untuk melakukan entri skematik. Saya ingin melihat skema yang sempurna, saya tidak yakin itu realistis untuk meminta satu.
The Photon
1
@Rocketmagnet, Memiliki area PCB yang sangat kecil tidak berarti Anda tidak dapat menggambar skematis Anda pada kertas ukuran-D.
The Photon

Jawaban:

13

Anda akan selalu memiliki noise pada ADC, terutama tipe SA (Successive Approximation) pada die mikrokontroler. Sigma-delta berkinerja lebih baik untuk noise Gaussian, karena mereka mengintegrasikannya. Jangan berharap 12 ENOB dari 12-bit ADC.

Kebisingan pengontrol adalah alasan mengapa sebagian besar mikrokontroler tidak memberikan Anda resolusi yang lebih tinggi dari 10 bit, dan AVR menawarkan kemungkinan untuk menghentikan mikrokontroler selama akuisisi ADC, yang akan mengkonfirmasi bahwa setidaknya sebagian kebisingan berasal dari pengontrol .

Tetapi pertanyaannya adalah: apakah Anda peduli? 1,5 bit noise pada ADC 12-bit masih membuat Anda lebih dari 10 bit, atau lebih baik dari 0,1%. Seberapa akurat sensor Hall Anda? Komponen lain di sirkuit?

sunting
Anda tampaknya menggunakan osilator internal PSoC, karena saya tidak melihat kristal pada skema. Ini terlihat OK: Anda memiliki decoupling yang tepat. Terlepas dari jam internal, satu-satunya bagian kecepatan tinggi di sirkuit tampaknya adalah SPI, tetapi Anda mengatakan bahwa ini akan diam selama pengukuran. Sisa papan adalah DC atau mungkin relatif sering rendah seperti sensor efek Hall. Dan itu adalah Damn Small ™, yang juga membantu: jejak yang lebih pendek akan mengurangi kebisingan. Tentu saja saya dapat melakukan nitpick tentang MCP1702, yang akan saya putar 90 ° CCW sehingga kapasitor keluaran dapat ditempatkan lebih dekat ke pin, tetapi itu tidak akan menyelesaikan masalah.

Saya hanya melihat satu perubahan pada tata letak yang dapat meningkatkan rasio S / N Anda:

masukkan deskripsi gambar di sini

Dalam datasheet split, pesawat ground analog dan digital disarankan untuk "Kinerja Analog Optimal" (halaman 10).

Untuk sisanya: ini adalah papan kecil seperti yang saya katakan, itu berarti jejak pendek dan decoupling dalam beberapa mm. Jadi saya ingin melihat sumber kebisingan lagi. Tersangka utama adalah jam PSoC. PSoC dapat menjalankan tegangan suplai yang sangat rendah, dan itu akan mengurangi kebisingannya. Tentu saja itu akan banyak membantu jika VDDA harus diturunkan juga, tapi saya tidak membaca di datasheet bahwa VDDA seharusnya tidak lebih tinggi dari VDDD.

Selanjutnya, ADC. Pada halaman 55 dari datasheet dikatakan 66 dB SINAD, itu 11 bit, dekat dengan yang Anda dapatkan sekarang. Datasheet A1324 memberi kita noise 7 mVpp pada tegangan diam 2,5 V. Itu juga jauh lebih kecil dari rasio 72 dB S / N yang bisa diberikan oleh 12-bit. Anda dapat meningkatkan ini sedikit dengan pemfilteran ekstra.

Anda menyebutkan kinerja MCP3208 yang lebih baik, tapi itu ADC jauh dari mikrokontroler, dan itu mungkin menjelaskan bagaimana SA ADC dapat melakukan lebih baik daripada sigma-delta dengan resolusi yang sama.

Jadi, opsi yang saya lihat: menurunkan tegangan catu daya digital dan membagi alasan analog dan digital.

stevenvh
sumber
Itu adalah ide yang sangat menarik tentang menurunkan tegangan suplai digital PSoC. VDDA tentunya bisa lebih tinggi dari VDDD.
Rocketmagnet
Jadi, apakah Anda pikir saya harus memutuskan sambungan VSSA dari panel termal? Saya sebenarnya telah memposting ini sebagai pertanyaan yang sama sekali baru .
Rocketmagnet
2

Saya setuju dengan yang di atas. Suara 1,5LSB cukup masuk akal. http://www.cypress.com/?docID=39346 menunjukkan SINAD minimum 66 dB dalam mode 12 bit, menyarankan ENOB = 10.7.

Saya tahu ini bukan jawaban langsung untuk pertanyaan Anda, tetapi saya akan menafsirkan pertanyaan itu sebagai "bagaimana cara saya memperbaiki masalah saya dengan kontrol kecepatan?" dan bukan "Bagaimana saya mendapatkan lebih dari 10,5 ENOB?".

Bagaimana Anda membedakan? Apakah Anda memiliki waktu luang yang cukup untuk melakukan sesuatu yang lebih halus daripada perbedaan utama dua poin? Mungkin mengerjakan sesuatu 5 sampel lebar, dioptimalkan di Matlab?

Juga, ini mungkin terdengar sedikit lucu, tetapi kecepatan suara semakin buruk saat Anda mencicipi lebih cepat

1L.SBΔt

Bukan untuk menghina, tetapi juga melirik cepat untuk memastikan tidak ada yang konyol terjadi dalam kontrol kecepatan Anda, seperti masalah dengan konversi antara bilangan bulat yang ditandatangani dan tidak ditandatangani, dan pastikan bilangan bulat Anda cukup lebar untuk menghindari kesalahan melimpah saat Anda membedakan . Persamaan kontrol saya sendiri sering menjadi cukup rumit sehingga saya terkadang secara eksplisit melakukan setiap operasi.

Terakhir, meskipun mungkin paling mungkin, apakah Anda kehilangan bit efektif dari atas dengan tidak memperbesar skala penuh? Jika demikian, Anda dapat memperkuat atau mungkin memberikan Vref yang lebih kecil.

Scott Seidman
sumber
Kami menghitung posisi dan kecepatan menggunakan Alpha Beta Filter . Saya mengerti bahwa noise kecepatan meningkat ketika laju sampel meningkat jika dilakukan secara naif. Saya yakin kebisingan kecepatan bukan karena kesalahan tanda. Dan kita sudah hampir dalam skala penuh, jadi tidak ada lagi amplifikasi yang bisa saya lakukan tanpa risiko mengenai bagian atas atau bawah rentang.
Rocketmagnet
Apakah Anda mengatakan bahwa tidak ada perbaikan yang dapat saya lakukan pada tata letak?
Rocketmagnet
Belum bisa melihat apa-apa. Bagaimana Anda memperkuat sensor aula? Apakah Anda benar-benar melihat output filter AB dan mengontrol persamaan sebagai pemeriksaan nyata? Mengintip kebisingan pada belitan regulator Anda? Mungkin menyulitkan untuk melakukan anggaran kebisingan formal untuk seluruh sistem
Scott Seidman
1
Tapi! Keuntungan lain dari mode diferensial adalah memungkinkan saya meningkatkan sample rate 4x, jadi saya bisa melakukan oversampling. Ini harus sedikit mengurangi kebisingan.
Rocketmagnet
1
Mungkin topi pintas pada Vref (tidak yakin bagaimana melakukan itu, ada di datasheet). Selain itu, saya pikir Anda sangat dekat dengan, jika tidak, ENOB ideal untuk PSOC 3 ADC pada 12 bit, sehingga Anda telah melakukan sebaik yang Anda bisa!
Scott Seidman