SINAU PROGRAMMING
SINAU PROGRAMMING
  • Home
  • Source Code
  • Social
  • CONTROL
    • Internet of Think (IoT)
    • ESP
      • NodeMcu
      • Lora
      • WeMos
      • Esp 32 Dev
      • Node 32s
    • Arduino
    • Raspberry
    • Proteus
  • MATLAB
    • MATLAB PROJECT
    • PLC
      • Omron
      • Mitsubishi
      • Siemens
      • Schneider
      • ArduinoPLC
    • Arduino
    • Basic & Doc
  • Contact Us

 

 Audio Spectrum Analyzer Arduino


Apa itu Spectrum Analyzer

Spectrum Analyzer Adalah alat ini berfungsi sebagai sebuah alat ukur yang digunakan untuk mengetahui jumlah distribusi energi dari suatu spektrum frekuensi yang dihasilkan oleh sinyal listrik. Dengan mengetahui distribusi energi sepanjang spektrum frekuensi, maka akan diperoleh informasi yang lainnya seperti :

  1. Lebar bidang frekuensi (bandwidth),
  2. Efek berbagai jenis modulasi,
  3. Pembangkitan sinyal yang  palsu

Apa kegunaan Spectrum Analyzer

Spectrum Analyzer juga sangat bermanfaat dalam perencanaan dan pengujian rangkaian frekuensi radio. Kebutuhan akan penggunaan alat ukur Spectrum Analyzer di Indonesia masih cukup tinggi, terutama pada perusahaan-perusahaan yang bergerak dibidang jasa telekomunikasi seperti:

  1. Operator selular
  2. Operator satelit
  3. Lembaga penelitian/laboratorium elektronika dan telekomunikasi
  4. Balai pengujian perangkat telekomunikasi
  5. Lembaga pemerintah yang mempunyai wewenang untuk memonitor penggunaan frekuensi seperti Postel (Pos Telekomunikasi) dan DisHub (Dinas Perhubungan).

Disamping itu harga Spectrum Analyzer masih cukup mahal berkisar antara tiga ratus jutaan sampai dengan satu miliar rupiah, sehingga ini menjadi salah satu masalah bagi perusahaan yang memerlukan banyak alat ukur Spectrum Analyzer. Tujuan dari pembuatan sistem perangkat lunak client server untuk alat ukur Spectrum Analyzer ini adalah untuk meningkatkan daya saing alat ukur, dengan cara memberi nilai tambah pada alat ukur tersebut. Cara yang digunakan adalah dengan menambah perangkat lunak agar Spectrum Analyzer tersebut bisa digunakan oleh banyak pengguna (operator) pada waktu yang bersamaan sekaligus dapat mengatur parameter yang berbeda-beda, sehingga secara logika sistem perangkat lunak ini dapat menduplikasikan jumlah alat ukur tersebut. Spectrum Analyzer memiliki fungsi utama untuk mengukur sinyal transmisi,

Pada kesempatan kali ini mari bahas tentang Audio Spectrum Analyzer berfungsi sebagai indikator frekuensi sinyal dari suara yang bisa di gunakan pada amplifier.

SEBELUMNYA jangan lupa library FFT untuk arduino Disini. dan untuk library lcd atau liquid crystal bisa dicari sendiri di mbah google


#include <LiquidCrystal.h>
#include <fix_fft.h>

#define DEBUG 0
#define L_IN 1 // Audio input A0 Arduino
#define R_IN 0 // Audio input A1 Arduino

const int Yres = 8;
const int gain = 3;
float peaks[64];
char im[64], data[64];
char Rim[64], Rdata[64];
char data_avgs[64];
int debugLoop;
int i;
int load;

LiquidCrystal lcd(11, 10, 7, 6, 5, 4); // pins to LCD

// Custom CHARACTERS
byte v1[8] = {
  B00000, B00000, B00000, B00000, B00000, B00000, B00000, B11111
};
byte v2[8] = {
  B00000, B00000, B00000, B00000, B00000, B00000, B00000, B11111
};
byte v3[8] = {
  B00000, B00000, B00000, B00000, B00000, B11111, B11111, B11111
};
byte v4[8] = {
  B00000, B00000, B00000, B00000, B11111, B11111, B11111, B11111
};
byte v5[8] = {
  B00000, B00000, B00000, B11111, B11111, B11111, B11111, B11111
};
byte v6[8] = {
  B00000, B00000, B11111, B11111, B11111, B11111, B11111, B11111
};
byte v7[8] = {
  B00000, B11111, B11111, B11111, B11111, B11111, B11111, B11111
};
byte v8[8] = {
  B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111
};

void setup() {

  if (DEBUG) {
    Serial.begin(9600); // hardware serial
    Serial.print("Debug ON");
    Serial.println("");
  }

  lcd.begin(16, 2);
  lcd.clear();
  lcd.createChar(1, v1);
  lcd.createChar(2, v2);
  lcd.createChar(3, v3);
  lcd.createChar(4, v4);
  lcd.createChar(5, v5);
  lcd.createChar(6, v6);
  lcd.createChar(7, v7);
  lcd.createChar(8, v8);

  for (i=0;i<80;i++)
  {
    for (load = 0; load < i / 5; load++)
    {
      lcd.setCursor(load, 1);
      lcd.write(5);
    }
    if (load < 1)
    {
      lcd.setCursor(0, 1);
      lcd.write(5);
    }

    lcd.setCursor(load + 1, 1);
    lcd.write((i - i / 5 * 5) + 1);
    for (load = load + 2; load < 16; load++)
    {
      lcd.setCursor(load, 1);
      lcd.write(9);
    }
    lcd.setCursor(0, 0);
    lcd.print("LOADING.........");
    delay(50);
  }
  lcd.clear();
  delay(500);
}

void loop() {

  for (int i = 0; i < 64; i++) {    // 64 bins = 32 bins of usable spectrum data
    data[i]  = ((analogRead(L_IN) / 4 ) - 128);  // chose how to interpret the data from analog in
    im[i]  = 0;   // imaginary component
    Rdata[i] = ((analogRead(R_IN) / 4 ) - 128);  // chose how to interpret the data from analog in
    Rim[i] = 0;   // imaginary component
  }

  fix_fft(data, im, 6, 0);   // Send Left channel normalized analog values through fft
  fix_fft(Rdata, Rim, 6, 0); // Send Right channel normalized analog values through fft

  // At this stage, we have two arrays of [0-31] frequency bins deep [32-63] duplicate

  // calculate the absolute values of bins in the array - only want positive values
  for (int i = 0; i < 32; i++) {
    data[i] = sqrt(data[i]  *  data[i] +  im[i] *  im[i]);
    Rdata[i] = sqrt(Rdata[i] * Rdata[i] + Rim[i] * Rim[i]);

    // COPY the Right low-band (0-15) into the Left high-band (16-31) for display ease
    if (i < 16) {
      data_avgs[i] = data[i];
    }
    else {
      data_avgs[i] = Rdata[i - 16];
    }

    // Remap values to physical display constraints... that is, 8 display custom character indexes + "_"
    data_avgs[i] = constrain(data_avgs[i], 0, 9 - gain);     //data samples * range (0-9) = 9
    data_avgs[i] = map(data_avgs[i], 0, 9 - gain, 0, Yres);  // remap averaged values
  }

  Two16_LCD();
  decay(1);
}

void Two16_LCD() {
  lcd.setCursor(0, 0);
  lcd.print("L"); // Channel ID replaces bin #0 due to hum & noise
  lcd.setCursor(0, 1);
  lcd.print("R"); // ditto

  for (int x = 1; x < 16; x++) {  // init 0 to show lowest band overloaded with hum
    int y = x + 16; // second display line
    if (data_avgs[x] > peaks[x]) peaks[x] = data_avgs[x];
    if (data_avgs[y] > peaks[y]) peaks[y] = data_avgs[y];

    lcd.setCursor(x, 0); // draw first (top) row Left
    if (peaks[x] == 0) {
      lcd.print("_");  // less LCD artifacts than " "
    }
    else {
      lcd.write(peaks[x]);
    }

    lcd.setCursor(x, 1); // draw second (bottom) row Right
    if (peaks[y] == 0) {
      lcd.print("_");
    }
    else {
      lcd.write(peaks[y]);
    }
  }

  debugLoop++;
  if (DEBUG && (debugLoop > 99)) {
    Serial.print( "Free RAM = " );
    Serial.println( freeRam(), DEC);
    Serial.println( millis(), DEC);
    debugLoop = 0;
  }
}


int freeRam () {
  extern int __heap_start, *__brkval;
  int v;
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}


void decay(int decayrate) {
  int DecayTest = 1;
  // reduce the values of the last peaks by 1
  if (DecayTest == decayrate) {
    for (int x = 0; x < 32; x++) {
      peaks[x] = peaks[x] - 1;  // subtract 1 from each column peaks
      DecayTest = 0;
    }
  }

  DecayTest++;
}

            Software Proteus adalah sebuah software yang digunakan untuk mendesain PCB yang juga dilengkapi dengan simulasi PSpice pada level skematik sebelum rangkaian skematik di-upgrade ke PCB untuk memastikan PCB dapat berfungsi dengan semestinya. Proteus mengkombinasikan program ISIS untuk membuat skematik desain rangkaian dengan program ARES untuk membuat layout PCB dari skematik yang dibuat.

            Proteus sangat berguna untuk desain rangkaian mikrokontroler. Proteus juga berguna untuk belajar elektronika seperti dasar-dasar elektronika sampai pada aplikasi mikrokontroler seperti microcontroller arduino maupun simin AVR.

            Pada kesempatan kali ini kita akan belajar bagaimana cara menerapkan microcontroller arduino pada software proteus agar temen temen yang belum punya arduino bisa menerapkannya pada software proteus.

            Langkah yang pertama yaitu kita harus memasukkan library arduino pada software proteus. Langkah – langkah nya sebagai berikut :

1.silahkan download library arduino https://drive.google.com/file/d/0B_nMlNEIeTaxVlQ0dmFERmc0Rms/view 

2.setelah mendownload library arduino maka akan mendapatkan file dalam bentuk rar , kemudian extrak file tersebut.

3. silahkan copy file tersebut ke folder library computer atau PC anda. Biasanya folder ada di C://programfile(86)/Labcenterelektronik/proteus 7/8 professional/library.

4.Setelah itu, silahkan buka proteus anda. Lalu klik pick devices dan ketikkan arduino.

5.klik OK. Dan arduino siap digunakan pada software proteus.


            Sekian tutorial kali ini next kita akan bahas mengenai bagaimana cara memasukkan file hex arduino pada proteus. 

Langsung saja klik link dibawah ini 👇👇👇

https://www.sinauprogramming.com/2020/10/cara-memasukkan-file-hex-arduino-ke.html 

 

 

 

 


Newer Posts Older Posts Home





POPULAR POSTS

  • Skema Power Supply Switching SMPS
  • Proteus 8.5 Full Version Professional
  • Tutorial ILI9341 TFT SPI LCD touch Screen
  • Pulse Oxymetry (SPO2) + Raspberry Pi
  • Serial Communication UART Raspberry Pico (SoftSerial)
  • Artificial Neural Network for Identification MATLAB
  • Menampilkan Text Pada LCD 16x2 I2C Arduino

ABOUT ME

cobabaru

Sinau Programming

SUBSCRIBE & FOLLOW

Training


Contact Form

Name

Email *

Message *

Categories

  • alkes 1
  • Android 4
  • Arduino 35
  • Basic & Doc 12
  • centrifuge 1
  • ESP32 8
  • Internet of Things (IoT) 23
  • LCD TFT SPI 2
  • MATLAB 6
  • Metode kendali 1
  • Modul Charger 1
  • Nextion 4
  • NodeMcu 8
  • oled 1
  • Pattern Recognition 2
  • Pemrograman 2
  • Perbaikan 1
  • PID 2
  • PLC HMI VTSCADA ARDUINO 3
  • PRIVACY POLICY 1
  • Proteus 11
  • Python 1
  • raspberry 5
  • Teknik Elektromedik 2
  • Thingsboard 1
  • Video 5
  • Wemos 4

sinau_programming

Sinau Programming Distributed by Sinau Programming