Ini adalah posting lanjutan dari Signal Signal Generator DDS A9850 dan Frekuensi Meter . Dengan Saya tambahkan bagian untuk dapat merubah frekuensi secara serial melalui serial monitor pada Arduino sehingga frekuensi dapat diatur lebih fleksibel tanpa bolak balik upload program.
Berikut definisi variable yang perlu ditambahkan pada source code sebelumnya:
float buff_data;
String buff_string = "";
char buff_char;
Berikut modifikasi souce code (pengganti) yang berada pada bagian void loop(). Sedangkan yang lain masih tetap sama dengan source code sebelumnya.
void loop()
{
//lcd.clear();
//cek perintah serial
while(Serial.available()) {
buff_char = Serial.read();
buff_string.concat(buff_char); //menggabungkan variabel buff_char ke variable buff_string
}
//merubah tipe data string ke float (tipe data float = double)
char buf[buff_string.length()];
buff_string.toCharArray(buf,buff_string.length()+1);
float buff_data=atof(buf); //buff_data akan nol pada loop berikutnya jika tidak ada perintah
//(karena buff_string dikosongkan "" diakhir loop)
//cek jika ada permintaan perubahan frekuensi
if (buff_data>0) sendFrequency(buff_data);
Serial.print(freq_cek);
Serial.print(" ");
Serial.println(freq_satuan);
lcd.setCursor(0,0);
lcd.print("Freq DDS AD9850");
lcd.setCursor(0,1);
lcd.print("Freq= ");
lcd.print(freq_cek);
lcd.print(" ");
lcd.print(freq_satuan);
//delay(500);
buff_string="";
}
Berikut adalah screenshot hasil modifikasi dengan source code di atas:
Contoh Hasil pada Serial Monitor |
Beberapa referensi utama:
http://www.instructables.com/id/Arduino-Timer-Interrupts/?ALLSTEPS
http://www.ad7c.com/projects/ad9850-dds-vfo/
http://letsmakerobots.com/content/how-convert-strings-double
http://stackoverflow.com/questions/5697047/convert-serial-read-into-a-useable-string-using-arduino
mau tanya dong... kalau kita mau mengatur keluaran frekuensi ad9850 dari 450 KHz sampai 2 MHz itu codingnya seperti apa ya??? kalau semisalkan di modif dari postingan anda.. apa yang harus dimodif??
BalasHapussaya sedang mengerjakan tugas akhir yang salah satu alatnya membuat pembangkit frekuensi yang dapat diatur keluaran frekuensinya..
pengaturannya menggunakan interface (saya pakai visual basic)..
apakah bisa mensingkronkan pengaturan dari interface dengan output dari ad9850???
jadi pengaturannya menggunakan skala 0 = 450 KHz dan 120 = 2 MHz... jadi skala pengaturannya 0 - 120...
mohon pencerahannya bila berkenan..
terima kasih sebelumnya...
alamat email saya andiagustian05@gmail.com...saya ingin bertanya - tanya lagi tentang ad 9850 jika anda berkenan...
@Andi Agustian: Sebenernya tinggal masukkan aja nilai frekuensi yg anda inginkan ke SendFrequency(x).
Hapusx adalah nilai frekuensi yg anda inginkan. Kalo untuk skala 0 s/d 120 itu tinggal dibuat rumus aja x=450 + (y*2000/120). Dengan y adalah nilai skala (0 s/d 120). Rumus tsb di tempatkan pada coding visual basic dan hasil perhitungan x dikirim dari vb ke mikro.
Kalo anda menggunakan komunikasi serial, di postingan tentang vb sdh Sy pernah Sy posting tentang komunikasi serial menggunakan vb .net tinggal ditambahkan rumus diatas dan dimodifikasi interfacenya.
Maaf rumusnya harusnya x=450000 + (y*(1550000)/120)
HapusSilahkan dicek lagi rumusnya biar gak salah :D
Mas kalo buat di ad9950 apakah cara buatnya sama saja atau ada tambahan lain?
BalasHapusSy blum nyoba. Mungkin bisa dicek datasheetnya terlebih dahulu kemudian dibandingkan.
Hapusapakah ada contoh menggunakan atmega 8535?
BalasHapusMaaf, Saya belum nyoba. Dan gak punya modul 8535 hehe. Basicly sih secara algoritma sama. Tinggal disesuaikan bahasa pemrogramannya saja.
HapusTerimakasih sudah berkunjung dan komen.
gan punya rangkaian lengkapnya dan bisa gak dishare rangkaiannya
BalasHapusini merupakan lanjutan dari postingan sebelumnya (https://muhammadpuji.blogspot.com/2014/09/signal-generator-dds-ad9850-dan.html)
Hapusuntuk rangkaian bisa disesuaikan dari datasheet DDS AD9850
GAN UNTUK MENGAMBIL DATA SINUS NYA GIMANA YA? ADA DATA KYK EXCEL GITU NAIK TURUN? DAN KALAU SAYA MAU OUTPUT GEL KOTAK BERARTI T1 NYA SAYA HUBUNGIN DENGAN SQUARE WAVE PIN 1/2 BEBAS YA?
BalasHapussquare wave bisa dihubungin ke square wave pin (1 atau 2 tinggal dicoba saja)
Hapusuntuk ngambil datanya bisa dikirim melalui serial, kemudian dicopy dari serial monitor dan di paste ke excel dan diplot. Atau bisa juga membuat program di desktop misal pakai python untuk menerima data dari serial kemudian langsung diplot.
kalau tidak salah arduino IDE jg bisa langsung plot data
hasil plot excel ada di link berikut:
https://muhammadpuji.blogspot.com/2014/09/signal-generator-dds-ad9850-dan.html
permisi kenapa saya mengganti koding sebelumnya di bagian void setup mengalami error di bagian Sendfrequency ya?
BalasHapuspada bagian ini yg diganti adalah pada bagian void loop() bukan void setup
Hapuskenapa saya error dibagian sendfrequency nya ya gan setelah sya ganti void setup sebelumnya dengan yang ini?
BalasHapuspada bagian ini yg diganti adalah pada bagian void loop() bukan void setup
Hapus