Generator Gelombang Arbitrer Arduino Due – Multi-Frekuensi, Kompatibel Linux/Windows
Komponen dan Perlengkapan
Tentang Proyek Ini
Ini adalah proyek dua bagian: papan Arduino Due itu sendiri, dan antarmuka pengguna (GUI) kontroler untuk digunakan di PC Anda, meskipun papan Arduino juga dapat digunakan sendiri dengan potensiometer, saklar, dan LED.
Tidak diperlukan rangkaian, meskipun rangkaian perlindungan output opsional ditawarkan yang seharusnya melindungi papan Arduino dari terhubung secara tidak sengaja output ke tegangan hingga plus dan minus 30V atau lebih. (mungkin lebih)
Dengan menggunakan antarmuka pengguna kontroler di PC, gelombang arbitrer dapat digambar, diedit, disimpan, dibuka, dan diunggah ke Arduino Due, secara otomatis terhubung melalui port USB. File bantuan yang komprehensif disertakan.
Fitur gelombang “beringkat” memungkinkan sejumlah langkah tajam (satu sampel) dalam gelombang untuk dihasilkan dengan mudah jika diinginkan. Selain itu, output dapat diubah menjadi gelombang sinus atau segitiga / gerigi.
Selain itu, gelombang persegi dihasilkan secara bersamaan yang dapat disinkronkan atau sepenuhnya independen. Gelombang dapat dikontrol oleh frekuensi atau periode. Siklus kerja dapat diatur dari hampir 0% hingga 100%. Atau lebar pulsa dapat diatur konstan. (dalam batas periode, tentunya)
Pengaturan baru dapat langsung diketik melalui keyboard PC atau keypad program. Atau, menekan “MODE” memungkinkan penyesuaian geser.
Mode Exact tersedia untuk gelombang analog, yang menghindari “langkah frekuensi” yang biasanya terkait dengan generator gelombang sintesis digital langsung (DDS). Ini memungkinkan frekuensi yang lebih presisi dengan mengizinkan akses ke frekuensi di antara “langkah frekuensi” karena output bukan pembagian dari frekuensi jam Arduino saat Mode Exact aktif.
Fitur sweep frekuensi (log) untuk salah satu atau kedua gelombang disertakan, dan ada juga timer dengan output Arduino positif atau negatif.
Spesifikasi
Gelombang Analog:
- Resolusi 12 bit dengan hingga 4096 titik jalan.
- Rentang frekuensi: 0.05mHz (20.000 detik) hingga 100kHz.
- Laju sampel: (di atas 1kHz menggunakan DMA) Hingga 1.6MHz.
- Laju sampel: (hingga 1kHz) 400kHz.
- Laju sampel dalam Mode Exact: (frekuensi apa pun) 400kHz.
- Lebar pulsa minimum: (setengah siklus gelombang)
- Pada siklus kerja 0%: 350 nanodetiks (perkiraan) pada frekuensi apa pun.
- Pada siklus kerja 0.01%: Hingga 2,5 - 25 mikrodetik. (perkiraan)
- - jika frekuensi di atas 1kHz DAN Mode Exact atau Sync aktif,
- - sebaliknya 350 nanodetiks.
Gelombang Persegi:
- Rentang frekuensi: 0.05mHz (20.000 detik) hingga 42MHz.
- Lebar pulsa minimum:
- Disinkronkan: [Frekuensi: 0.05mHz (20.000 detik) hingga 100kHz]
- Pada siklus kerja 0%: 48 nanodetik pada frekuensi apa pun.
- Pada siklus kerja 0.01%: 2,5 - 25 mikrodetik. (perkiraan)
- Tidak Disinkronkan: [0.093mHz (10.737 detik) hingga 42MHz]
- 12nS dari 1,3kHz hingga 42MHz. (Menggunakan PWM)
- 24nS dari 650Hz hingga 1.299,99kHz. (Menggunakan PWM)
- 48nS dari 325Hz hingga 649,99999Hz. (Menggunakan PWM)
- 96nS dari 163Hz hingga 324,99999Hz. (Menggunakan PWM)
- Di bawah 163Hz: (Menggunakan interrupt)
- Pada siklus kerja 0%: 96 nanodetik.
- Pada siklus kerja 0.01%: 5 mikrodetik.
Instalasi
Program GUI untuk PC Anda bersifat “portabel” jadi tidak memerlukan instalasi.
Untuk pengguna Windows, cukup ekstrak file .zip ke folder pilihan Anda dan buat pintasan ke file .exe. Catatan: File “DueAWGController-Win64.zip” ditujukan untuk sistem 64 bit, tetapi file 32.zip seringkali bekerja lebih andal karena memiliki Java yang disematkan.
Untuk pengguna Linux, ekstrak file DueAWGController-LinuxXX.zip ke folder, lalu double-klik file DueAWGControllerLinux atau tambahkan ke menu sistem.
Anda mungkin perlu menginstal OpenJDK 8 (Java 8) untuk Debian, Ubuntu, dll: Pada baris perintah (di Terminal), ketik: sudo apt-get install openjdk-8-jre (Versi yang lebih baru mungkin tidak berfungsi.)
Anda mungkin juga perlu mendapatkan izin untuk mengakses USB sebelum dapat terhubung ke Arduino. Ketik: sudo usermod -a -G dialout $USER
Serta disertakan dua file “arm” untuk Raspberry Pi dll, tetapi belum diuji. Beri tahu saya jika mereka bekerja.
Sketsa Arduino tidak memerlukan library khusus, jadi Anda hanya memerlukan Arduino IDE yang diinstal pada PC Anda untuk tujuan mengunggah sketsa ke Due. Asalkan PC Anda telah mengenali Arduino Due, (yang pasti telah dilakukan jika sketsa diunggah) program GUI seharusnya otomatis menemukan dan terhubung ke Arduino saat memulai, jadi tidak perlu mengatur port COM. Namun, pemilihan port COM manual diaktifkan jika pemilihan otomatis gagal.
Ada beberapa file gelombang contoh di folder Arbitrary Waves (hanya untuk kesenangan) untuk membantu Anda memulai. Selain program GUI, generator gelombang Arduino juga dapat dikontrol oleh serial monitor Arduino yang diatur ke 115200 baud. Ketik ? untuk bantuan.
Atau jika Anda lebih suka menggunakan potensiometer, saklar, dan LED untuk kontrol, awal sketsa Arduino mencantumkan koneksi pin.
Koneksi pin output gelombang juga dicantumkan di sana, atau cukup hubungkan pin Arduino 3 dan 7 bersama dengan kawat penghubung, atau jika Anda sangat hati-hati gunakan resistor nilai rendah (47 - 100 ohm). Ambil output gelombang persegi dari pin 7 dan output analog dari DAC0.
Kode
PENTING: Jangan klik tombol “Download as zip”.
Untuk mengunduh file, klik “Read More” di bawah. CATATAN: Klik “Download as zip” hanya akan mengunduh file readme.
Sumber: GitHub – ArduinoDueArbitraryWaveformGeneratorAndController
Skematik
Rangkaian ini dapat diabaikan sepenuhnya, tetapi jika digunakan seharusnya melindungi Arduino dari terhubung secara tidak sengaja output ke tegangan hingga setidaknya plus dan minus 25V tanpa meningkatkan waktu naik dan turun secara signifikan. D2 dan D3 perlu menjadi dioda pemulihan cepat arus tinggi - saya menemukan bahwa dioda schottky terlalu lambat. Fuse (F1 dan F2) dapat berupa polyfuse.