Showing posts with label Simulasi Elektronik. Show all posts
Showing posts with label Simulasi Elektronik. Show all posts

Thursday, 4 December 2014

Antarmuka Serial Port VB 2010 (Komunikasi Serial Arduino - VB 2010)

Seperti halnya mikrokontroller yang memiliki port UART, arduino dapat melakukan komunikasi dengan device lain secara serial. Kali ini untuk interface yang digunakan ialah aplikasi yang dibuat menggunakan VB2010 . Sebagai contohnya dapat di lajutkan kelangkah berikut.

1. Aplikasi Monitoring
Buat desain formnya (misal seperti ini)


Untuk penamaan components nya adalah : ComboBox_COM, ComboBox_BAUD, Button_Connect, Button_Disconnect, TextBox_DataSend, Button_Send, TextBox_DataReceive.
Jangan lupa juga tambahkan serial port.


ok, lanjut ke codenya :


Imports System.IO.Ports
Imports System.Threading
Public Class Form1
    Dim WithEvents sp As New SerialPort
    Private Sub GetSerialPortNames()
        For Each sport As String In My.Computer.Ports.SerialPortNames
            ComboBox_COM.Items.Add(sport)
        Next
    End Sub
    Sub ShowString(ByVal myString As String)
        TextBox_DataReceive.AppendText(myString)
        TextBox_DataReceive.Select(TextBox_DataReceive.TextLength, 0)
        TextBox_DataReceive.ScrollToCaret()
    End Sub

    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myDelegate As New myMethodDelegate(AddressOf ShowString)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim BaudRates() As String = {"300", "1200", "2400", "4800", "9600", "14400", "19200", "28800", "38400", "57600", "115200"}

        ComboBox_BAUD.Items.AddRange(BaudRates)
        ComboBox_BAUD.SelectedIndex = 4
       
        Try
            GetSerialPortNames()
            ComboBox_COM.SelectedIndex = 0
        Catch
            MsgBox("No ports connected.")
        End Try
    End Sub

    Private Sub Button_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Connect.Click
        Try
            sp.BaudRate = ComboBox_BAUD.SelectedItem.ToString
            sp.PortName = ComboBox_COM.SelectedItem.ToString
            sp.Open()
            If sp.IsOpen Then
                Button_Connect.Enabled = False
                ComboBox_COM.Enabled = False
                ComboBox_BAUD.Enabled = False
                Button_Disconnect.Enabled = True
            End If
        Catch
            sp.Close()
        End Try
    End Sub

    Private Sub Button_Disconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Disconnect.Click
        Try
            sp.Close()
            Button_Connect.Enabled = True
            Button_Disconnect.Enabled = False
            ComboBox_COM.Enabled = True
            ComboBox_BAUD.Enabled = True
            Exit Sub
        Catch
            MessageBox.Show("Some kind of problem.")
        End Try
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If sp.IsOpen() Then
            MessageBox.Show("Disconnect before closing")
            e.Cancel = True
        End If
    End Sub
    Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived
        Dim str As String = sp.ReadExisting()
        Invoke(myDelegate, str)
    End Sub

  
    Private Sub Button_Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Send.Click
        Dim data As String
        data = TextBox_DataSend.Text
        If sp.IsOpen() Then
            'sp.WriteLine(data)
            sp.Write(TextBox_DataSend.Text)
            TextBox_DataSend.Text = ""
        End If
    End Sub
End Class




2. Arduino code
Berikut untuk arduino codenya, silahkan di upload ke arduino (butuh LM35) atau via simulasi ISIS Proteus..

float temp;
int dataPin = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  temp = analogRead(dataPin);
  temp = temp * 0.48828125; //(SUPPLY_VOLTAGE x 1000 / 1024) / 10
  Serial.print(temp);
  Serial.println();
  delay(1000);
}


3. Running program
Setelah semuanya beres, mari kita jalankan aplikasi monitoringnya. Karena untuk arduinonya saya menggunakan simulasi, maka diperlukan konektor (virtual serial port)yang akan digunakan untuk menghubungkan Proteus ISIS dengan Aplikasi monitoring. Pilih COM port yang digunakan (virtual dan proteus), disini saya memakai COM 2. kemudian pilih tombol connect. Setelah terhubung, jalankan simulasi arduino yang ada di Proteus ISIS.
Hasilnya kurang lebih seperti ini :


Baca selengkapnya

Monday, 25 August 2014

Simulasi Arduino dengan Proteus ISIS

Walau agak ketinggalan semoga informasi ini sangat membantu. Ok langsung aja, Proteus ISIS merupakan aplikasi simulasi yang sudah sangat tenar di dunia elektronika (menurut saya). Aplikasi ini sngat membantu dalam proses eksperiment yang setidaknya dapat meminimalisir kerusakan hardware dan ribetnya proses ujicoba. Dengan adanya revolusi board AVR yang telah membuat mikrokontroller jenis ini dikenal dimana-mana (arduino -red) maka disediakan pula library board Arduino untuk simulasi di Proteus ISIS. Untuk Versi proteus berapa saja  yang dapat menambahkan library ini saya kurang begitu tahu. Namun untuk proteus yang saya gunakan adalah versi 7.8 SP2


Menambahkan Library Arduino ke Proteus ISIS:
  1. Silahkan download file librarynya di (dropbox) atau (google drive)
  2. copy-kan ARDUINO.LIB dan ARDUINO.IDX ke folder 'library' di direktori instal Proteus ISIS.
  3. selesai.. library sudah ter install

Mendesain Skema di Proteus ISIS:
  • Pilih component mode kemudian pilih pick
  • untuk mencari coba ketikkan "ARDUINO"
  • untuk percobaan silahkan hubungkan pin 13 dengan ground (percobaan blink)


Menulis program Arduino
  • Jalankan Arduino IDE
  • Buka sample program yang memanfaankan pin 13 , misal blink (File => examples => basics => blink)
  • Setting Arduino IDE agar file hasil compile nya (.hex) terlihat  (file => preferences => cheklist pada compilation)
  • kembali ke program dan klik tombol verify.
  • sekarang dapat diketahui letak hasil  compilenya (.hex)

Melakukan Simulasi di Proteus ISIS
  • Masukkan file hasil compile tadi ke arduino proteus (double klik arduinonya kemudian isikan letak file hex nya)
  • pilih OK dan jalankan simulasinya. (led akan blink sesuai dengan program)

Baca selengkapnya

Friday, 1 February 2013

Real Time Clock DS1307 Application


Real Time Clock merupakan suatu chip (IC) yang memiliki fungsi sebagai penyimpan waktu dan tanggal. DS 1307 merupakan real-time clock (RTC) menggunakan jalur data parallel yang dapat menyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100. Secara otomatis bulan dan tanggal akandisesuaikan untuk bulan yang kurang dari 31 hari termasuk untuk tahun yang akan datang. Operasi jam baik 24 jam atau 12 jam dengan format indikator AM/PM. DS1307 memiliki built-in powersense circuit dapat mendeteksi kegagalan daya (power filure), dan secara otomatis berpindah ke suplai cadangan.

Komunikasi dengan RTC DS1307 adalah serial dengan 1 kabel (I2C), dimulai ketika terjadi perubahan kondisi SDA “1” ke “0” dengan kondisi SCL “1” dan berakhir saat kondisi SDA berubah dari “0” ke “1” dengan SCL “1”. Kemudian untuk menuliskan perintah dengan mengirimkan data “11010000”, sedangkan perintah untuk membaca memori adalah “11010001”.

Dalam penggunaannya DS1307 harus menggunakan beberapa komponen tambahan (yang biasanya dipaket dalam bentuk modul) seperti resistor sebagai pull up pada jalur SDA dan SCL, kristal, dan batterai 3V.Untuk modul DS1307 mungkin akan saya posting(bila sempat, hehehe)

Salah satu aplikasi dari DS1307 ialah sebagai jam digital dengan menggabungkannya ke sistem mikrokontroler. berikut merupakan simulasi dari penggunaan DS1307 pada jam digital:



Bagian program yang utama dari sistem ini ialah pada pengaturan komunikasi antara mikrokontroler dengan DS1307 yang digunakan untuk membaca dan menulis data dari/ke mikrokontroler atau DS1307.


Dim Weekday As Byte
Getdatetime:
   I2cstart
   I2cwbyte Ds1307w
   I2cwbyte 0
   I2cstart
   I2cwbyte Ds1307r
   I2crbyte _sec , Ack
   I2crbyte _min , Ack
   I2crbyte _hour , Ack
   I2crbyte Weekday , Ack
   I2crbyte _day , Ack
   I2crbyte _month , Ack
   I2crbyte _year , Nack
   I2cstop
   _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
   _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
   Return

Setdate:
   _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
   I2cstart
   I2cwbyte Ds1307w
   I2cwbyte 4

   I2cwbyte _day
   I2cwbyte _month
   I2cwbyte _year
   I2cstop
  Return

Settime:
   _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
   I2cstart
   I2cwbyte Ds1307w
   I2cwbyte 0

   I2cwbyte _sec
   I2cwbyte _min
   I2cwbyte _hour
   I2cstop
  Return


Sub program Getdatetime digunakan untuk membaca data berupa detik, menit, jam , hari, tanggal, bulan, dan tahun. sementara itu, untuk sub program setdate digunakan untuk menulis data tanggal, bulan ,tahun dengan alamat datanya adalah 4 dan sub program settime digunakan untuk menulis detik, menit, dan jam dengan alamat datanya adalah 0.

Untuk selengkapnya (simulasi) dapat dilihat pada file ini. semoga bermanfaat.

Baca selengkapnya

Thursday, 25 October 2012

Seven segment counter up/down dengan mikrokontroler avr


Seven segment adalah penampil yang terdiri atas 7 bagian segment yang digunakan untuk menampilkan angka atau beberapa huruf.  Secara umum device ini digunakan untuk menampilkan suatu angka atau huruf yang didapat dari proses pengaturan/pemberian masukan digital pada pin-pinnya. Kali ini saya akan sharing mengenai salah satu aplikasi dari seven segment display yaitu counter Up/Down yang memungkinkan untuk proses increment dan decrement dari suatu nilai.

Seven segment yang digunakan ialah berjenis CA (Common Anoda) dengan penggeraknya (driver) menggunakan IC decoder BCD to 7segment  yaitu IC 74ls47.  Dengan menggunakan IC ini maka kita hanya perlu memberikan masukan biner 4 digit yang kemudian akan dikonversi ke tampilan seven segment.




Source Code (Bascom AVR):


$regfile = "m16def.dat"
$crystal = 12000000

Config Portc = Output
Config Porta = Output
Config Pind.6 = Input
Config Pind.7 = Input

Dim C As Integer
Dim A As Integer

Tambah Alias Pind.6
Kurang Alias Pind.7
Set Tambah
Set Kurang

Portc = 1
Porta = 1

C = 0
A = 0

Do
Portc = C
Porta = A

If Tambah = 0 Then
Bitwait Tambah , Set

Incr C
   If C = 10 Then
   C = 0
   Incr A
      If A = 10 Then
      A = 0
      End If
   End If
End If

If Kurang = 0 Then
Bitwait Kurang , Set

   If C = 0 Then
   C = 10
    Decr C
    If A = 0 Then
    A = 10
    Decr A
    Else
    Decr A
    End If

   Else
   Decr C
   End If
End If

Waitms 200
Loop



Untuk simulasinya (Proteus) dapat di unduh pada link berikut:
Google Drive || Mediafire 



Baca selengkapnya

Thursday, 18 October 2012

Komunikasi serial Proteus - Visual Basic

Visual basic adalah aplikasi yang salah satu kegunaanya digunakan untuk membuat program interface. Program interface yang dibuat dapat berupa progra monitoring ataupun program controlling. agar dapat digunakan untuk mengolah data dari proteus, maka digunakan aplikasi tambahan yaitu VSPE (Virtual Serial Port Emulator).VSPE berfungsi sebagai port serial yang dimana port tersebut dibangun secara virtual.

1. Download VSPE (Virtual Serial Port Emulator).
2. Pengaturan VSPE:
     -  Buat perangkat baru. Klik  icon create new device atau pilih device => create

   

      - Pilih Device Type = connector kemudian klik next.


     - Pilih port yang akan di virtualisasi kemudian klik finish.


     - VSPE sudah bisa digunakan.....


2. Buat simulasi di proteus. untuk mengirim/menerima  data serial maka digunakanlah componen COMPIM.  Port RX mikrokontroler dihubungkan ke pin RX COMPIM. Port TX mikrokontroler dihubungkan ke pin TX COMPIM.



3. Atur COMPIM nya sesuai dengan port serial yang telah dibuat dengan VSPE.


4. Selesai sudah.... sekarang rangkaian simulasi proteus anda telah dapat berkomunikasi dengan aplikasi  serial (hyperterminal / VB)

Sebagai contoh percobaan, saya menyediakan file-file berikut... semoga bermanfaat..


Baca selengkapnya

Monday, 15 October 2012

LM35 Application

LM 35 adalah sensor suhu yang prinsip kerjanya ialah mengkonversi perubahan suhu yang berada disekitarnya menjadi perubahan tegangan. Sensor ini memiliki 3 buah pin yaitu Vin, Ground dan Vout. Tegangan kerja yang dibutuhkan LM35 ialah 4-20V.  Hasil Vout yang diperoleh ialah linear dangan +10mV setiap kenaikan  per  1 derajat celcius.


Salah satu aplikasi dari sensor LM35 ialah digunakan sebagai thermometer digital. Tentunya dengan dipadukan sistem pendukung (mikrokontroler). berikut ini adalah  simulasi sensor LM35 menggunakan ISIS proteus.


 Program (BASCOM AVR):


 $regfile = "m8def.dat"
 $crystal = 12000000

 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1
 Config Lcdpin = Pin , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5
 Config Lcd = 16 * 2

 Deflcdchar 0 , 14 , 14 , 14 , 32 , 32 , 32 , 32 , 32   'karakter derajat

 Dim Adc_data As Word , Konversi_adc As Single 

 Dim Adc_string As String * 10
 

 Cursor Off

 Config Adc = Single , Prescaler = Auto , Reference = Avcc
 Start Adc

 Locate 1 , 1
 Lcd "  DIGITAL LCD "
 Locate 2 , 1
 Lcd "  THERMOMETER "
 Waitms 700

 Cls

 Do
 Adc_data = Getadc(0)
 Konversi_adc = Adc_data
 Konversi_adc = Konversi_adc / 1024
 Konversi_adc = Konversi_adc * 497                          'kalibrasi
 
 Locate 1 , 1
 Lcd "SUHU:"
 Locate 1 , 7
 Lcd Fusing(konversi_adc , " #.##") ; " "
 Locate 1 , 13
 Lcd Chr(0) ; "C"

 Waitms 100
 Loop
 End




Untuk melakukan kalibrasi maka dapat kita ubah nilai perhitungan pada :


Konversi_adc = Konversi_adc * 497                    



Nilai 497 dapat disesuaikan untuk mencapai nilai yang pas dengan instrumen kalibrator (termometer).



Baca selengkapnya