Masalah akurasi DDS pada frekuensi yang sangat rendah

8

Pertama kalinya dalam hidup saya, saya menggunakan ini Chip DDS (AD9850) untuk membuat gelombang sinus pada freq yang diinginkan, di mana saya upload kode tabel dan freq diinginkan. perintah melalui dengan micro-controller. Jadi pengetahuan saya saat ini sangat terbatas.

Masalahnya tampaknya baik-baik saja sejauh ini tetapi masalahnya adalah pada frekuensi yang sangat rendah. Pada 1Hz dan bahkan 0,5Hz tampaknya baik-baik saja. Tapi saya juga perlu turun ke 0.1Hz.

Ini adalah output DDS ketika saya mengirim angka 0,1 ke DDS melalui pengontrol mikro:

masukkan deskripsi gambar di sini

Dalam kode saya, saya mengirim perintah dari PC ke mikro sebagai string dan mengubahnya menjadi dua kali lipat. Tetapi untuk kesederhanaan dan untuk memverifikasi saya menggunakan kode ini , dan untuk 0,1 Hz saya mengatur sendFrequency (0,1) dalam loop.

Tetapi seperti yang Anda lihat, waktunya sekitar 11,5 detik, bukan 10 detik untuk perintah 0,1 Hz.

Saya harap saya bisa menjelaskan masalah ini dengan baik. Apakah ada cara untuk mengkalibrasi atau menyempurnakan ini sehingga saya akan mendapatkan hasil yang lebih akurat? Atau saya harus hidup dengan akurasi? Btw di mana dalam lembar data orang bisa merujuk pada ketidakpastian relatif seperti itu?

floppy380
sumber
1
jadi, apa kata kontrol yang Anda kirim ke chip DDS, dan apa jam referensi yang Anda gunakan untuk chip DDS? Apa yang Anda harapkan terjadi, dan seberapa jauh ini 11,5 dari itu? Kami membutuhkan lebih banyak pengetahuan tentang sistem Anda!
Marcus Müller
@ MarcusMüller Saya menggunakan kode ini softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html hanya sedikit dimodifikasi tetapi intinya sama. Saya tidak bisa menyimpulkan berapa jam yang digunakan dari kode. Saya memberikan kode dan chip apa lagi yang Anda butuhkan, biarkan saya berikan.
floppy380
Anda memasang chip ke jam referensi. Anda benar-benar satu-satunya di dunia ini yang dapat memberi tahu kami apa itu jam referensi; sirkuit ada di depan Anda, bukan kita!
Marcus Müller
Oh saya melihat saya pikir itu diperbaiki atau diubah oleh kode. Saya akan mengukur dan kembali.
floppy380
Ini adalah modul ini telecnatron.com/modules/ad9850/index.html sehingga tampaknya 125MHz
floppy380

Jawaban:

9

Ini bukan hal yang akurat - resolusi itu.

Bagian depan lembar data menentukan resolusi tuning 0,0291Hz dengan jam 125MHz.

0.0291125×106232 Hz (karena akumulator fase adalah 32 bit)

Jadi itu sekitar 30% dari frekuensi output yang Anda inginkan. Itu berasal dari hasil menambahkan LSB dari kata tuning ke akumulator fase pada 125MHz- untuk frekuensi clock yang diberikan, itu melekat pada chip dan jumlah bit yang mereka pilih untuk akumulator fase dan kata tuning.

Anda dapat mencoba mengurangi frekuensi clock - minimum adalah 1MHz sehingga Anda harus dapat meningkatkan resolusi lebih dari dua urutan besarnya, menjadi sekitar +/- 0,23% pada 0,1Hz.

0.23×1031×106232 Resolusi Hz dengan clock 1MHz

Sayangnya, hal-hal lain harus berubah untuk kinerja yang optimal (terutama filter keluaran- yang biasanya merupakan filter LC elips urutan ke-7 pada modul-modul ini).

Jika Anda tidak perlu pergi ke atas, katakanlah, 1Hz, Anda cukup menambahkan filter RC dengan cutoff, katakanlah, 100Hz ke output yang ada dan itu akan dapat diterima untuk banyak tujuan.

Spehro Pefhany
sumber
1
Tidak ada yang membagi 125MHz dari apa yang bisa saya lihat (selain DDS itu sendiri, tentu saja). Anda harus melepas osilator dan menggantinya dengan modul frekuensi yang berbeda (lebih rendah). Atau nonaktifkan dan terapkan jam eksternal (ini mungkin memiliki input aktifkan..Anda dapat mencarinya). Ini perubahan perangkat keras.
Spehro Pefhany
1
Memang, tentu saja, tetapi mereka tidak memasukkan bit yang cukup di sana untuk aplikasi Anda. Jika mereka telah menambahkan 8 bit lagi ke kata tune dan akumulator fase Anda akan senang (dan orang-orang yang tidak membutuhkan frekuensi rendah seperti itu harus membayar sedikit lebih banyak dan mengirim lebih banyak bit untuk menyetel DDS sehingga mereka tidak akan berbahagialah).
Spehro Pefhany
1
Benar. Tapi itu mengakomodasi serendah jam 1MHz sehingga semua tidak hilang, bahkan untuk aplikasi Anda. Filter output modul (induktor dan kapasitor dan resistor) tidak akan sesuai meskipun demikian output akan cenderung berisik dengan frekuensi clock yang jauh lebih rendah.
Spehro Pefhany
1
Tidak ada hubungannya dengan pin. Tetapi modul clock dan filter output dirancang untuk 125MHz tetap.
Spehro Pefhany
1
@SpehroPefhany - FG bangku ujung bawah dapat dan memang menggunakan chip DDS premade. Selain itu, IC seperti AD9106 dapat melakukan gaya gelombang acak A / FG (fixed-rate). (Yang lebih tinggi memang akan menggunakan FPGA + RAM dan DAC yang terpisah, tetapi mereka masih merupakan hal mendasar yang sama di hati, hanya menggulung implementasi mereka sendiri :)
ThreePhaseEel
7

Apa yang Anda cari pada lembar data adalah resolusi penyetelan frekuensi. Untuk chip ini adalah 0,0291 Hz untuk input clock referensi 125 MHz. Frekuensi Anda akan dibulatkan ke kelipatan angka ini. Nomor ini didasarkan pada frekuensi input clock dari chip.

Misalnya, 0,1 Hz akan dibulatkan menjadi 0,0873 Hz (0,0291 * 3). Periode untuk 0,0873 Hz adalah 11,5 detik yang Anda lihat.

Frekuensi clock input yang lebih rendah akan memberikan akurasi yang lebih tinggi pada frekuensi yang lebih rendah. Jadi jika Anda menginginkan akurasi yang lebih baik pada frekuensi yang lebih rendah maka turunkan frekuensi clock.

Pangus
sumber
Bagaimana Anda menghitung output rounded freq.? Sebagai contoh jika saya mengirim 0,5 ke chip dapatkah Anda menunjukkan formula apa yang digunakan dan apa hasilnya? Sehingga saya dapat memprediksi untuk masing
floppy380
Ini membulatkan ke kelipatan 0,0291. Untuk menemukan kelipatan terdekat, bagi 0,5 dengan 0,0291, bulatkan ke seluruh bilangan terdekat dan kalikan dengan 0,0291. 0,5 / 0,0291 = 17,18 yang kita bulatkan menjadi 17. Kemudian 17 * 0,0291 = 0,4947. Jadi jika Anda memasukkan 0,5 Hz, Anda akan benar-benar melihat 0,4947 Hz
Pangus
Oh bagus aku bahkan bisa merencanakan kesalahan versus freq. sekarang-
floppy380
@ ChrisStratton Ups. ya kamu benar Saya mengedit jawaban saya. Terima kasih
Pangus
1
Anda dapat melakukan modulasi frekuensi dan modulasi amplitudo tetapi saya tidak berpikir Anda dapat mengubah tabel pencarian pada chip. Jika Anda tertarik untuk membuat bentuk gelombang sewenang-wenang maka mungkin ada baiknya mencari chip yang berbeda atau mendapatkan DAC dan mencoba membuat DDS Anda sendiri
Pangus