Rabu, 17 September 2014

Signal Generator (DDS AD9850) dan Frekuensi Meter dan Kontrol Frekuensi dari Serial Monitor

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 

15 komentar:

  1. 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??
    saya 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...

    BalasHapus
    Balasan
    1. @Andi Agustian: Sebenernya tinggal masukkan aja nilai frekuensi yg anda inginkan ke SendFrequency(x).
      x 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.

      Hapus
    2. Maaf rumusnya harusnya x=450000 + (y*(1550000)/120)

      Silahkan dicek lagi rumusnya biar gak salah :D

      Hapus
  2. Mas kalo buat di ad9950 apakah cara buatnya sama saja atau ada tambahan lain?

    BalasHapus
    Balasan
    1. Sy blum nyoba. Mungkin bisa dicek datasheetnya terlebih dahulu kemudian dibandingkan.

      Hapus
  3. apakah ada contoh menggunakan atmega 8535?

    BalasHapus
    Balasan
    1. Maaf, Saya belum nyoba. Dan gak punya modul 8535 hehe. Basicly sih secara algoritma sama. Tinggal disesuaikan bahasa pemrogramannya saja.

      Terimakasih sudah berkunjung dan komen.

      Hapus
  4. gan punya rangkaian lengkapnya dan bisa gak dishare rangkaiannya

    BalasHapus
    Balasan
    1. ini merupakan lanjutan dari postingan sebelumnya (https://muhammadpuji.blogspot.com/2014/09/signal-generator-dds-ad9850-dan.html)

      untuk rangkaian bisa disesuaikan dari datasheet DDS AD9850

      Hapus
  5. 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?

    BalasHapus
    Balasan
    1. square wave bisa dihubungin ke square wave pin (1 atau 2 tinggal dicoba saja)

      untuk 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

      Hapus
  6. permisi kenapa saya mengganti koding sebelumnya di bagian void setup mengalami error di bagian Sendfrequency ya?

    BalasHapus
    Balasan
    1. pada bagian ini yg diganti adalah pada bagian void loop() bukan void setup

      Hapus
  7. kenapa saya error dibagian sendfrequency nya ya gan setelah sya ganti void setup sebelumnya dengan yang ini?

    BalasHapus
    Balasan
    1. pada bagian ini yg diganti adalah pada bagian void loop() bukan void setup

      Hapus

Selamat berinovasi :D Salam berbagi..

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]: sudo apt install nmap 2. Cek ip address komputer (yg akses ke wifi yang sama): ip addr misal hasilnya 192....