Kamis, 18 Agustus 2011

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan BASCOM AVR

Setelah pada tulisan sebelumnya memuat tentang Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR, yang menjelaskan secara singkat penjelasan tentang ADC internal yang dimiliki oleh mikrokontroler ATMEGA 8535.

Dalam tulisan kali ini akan dibahas sama seperti tulisan sebelumya yaitu Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR hanya saja menggunakan bahasa basic dengan compiler Bascom AVR

Untuk simulasi, silahkan buat rangkaian minum plus LCD di proteus, seperti dibawah ini.


Lalu buka Bascom AVR,
Ketikkan program seperti berikut:

$regfile = "8535def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2
Cls

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

Dim Dataadc As Word
Cursor Off
Do

Dataadc = Getadc(0)
Locate 1 , 1
Lcd "Data ADC:"
Locate 2 , 1
Lcd Dataadc
Loop

Compile, dan downloadkan ke rangkaian proteus yang telah dibuat dan jalankan program


Semoga bermanfaat

12 komentar:

  1. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  2. mau tanya??
    qo scrip ini setelah di compile ada yang error yah??
    mohon bantuannya

    $regfile = “m8535.dat”
    $crystal = 8000000


    Dim Data7 As Byte
    Dim Koma7 As Byte
    Dim Dataadc As Word
    Dim Suhu As Single
    Dim S10 As String * 10
    Dim S2a As String * 2
    Dim S2b As String * 2
    Dim Panjang As Byte


    Config Adc = Single , Prescaler = Auto
    Start Adc


    Config Porta.0 = Output
    Config Porta.5 = Output
    Config Porta.6 = Output
    Buzzer Alias Porta.0
    Enlo Alias Porta.5
    Enhi Alias Porta.6
    Config Portc = Output
    Buzzer = 1

    Enlo = 1
    Enhi = 1

    Do
    Dataadc = Getadc(7)

    ‘Proses kalibrasi data suhu:
    Suhu = Dataadc / 10.23
    Suhu = Suhu * 5.03
    S10 = Fusing(suhu , “#.##”)
    Panjang = Len(s10)
    Panjang = Panjang – 3
    S2a = Left(s10 , Panjang)
    S2b = Right(s10 , 2)
    Data7 = Val(s2a)
    Koma7 = Val(s2b)


    Portc = Makebcd(koma7)
    Enlo = 0
    nop
    nop
    Enlo = 1


    Portc = Makebcd(data7)
    Enhi = 0
    nop
    nop
    Enhi = 1

    Waitms 200
    Loop

    BalasHapus
  3. untuk mas aghoy:

    maaf telat bales, saya jarang buka komentar

    itu deklarasi mikrokontroler yg digunakan salah,
    program mas aghoy : $regfile = “m8535.dat”
    harusnya $regfile = “8535def.dat”
    untuk melihat file reg mikro pada bascom bisa buka folder instalasinya,misal "C:\Program Files\MCS Electronics\BASCOM-AVR-DEMO\

    terus pada program deklarasi I/O
    pada program mas aghoy:
    Config Porta.0 = Output
    Config Porta.5 = Output
    Config Porta.6 = Output

    harusnya gini aja

    Config Porta = Output

    Sudah saya coba dan gak ada error
    semoga bermanfaat

    BalasHapus
  4. kalo ngedrive pin gmna ya gan,?

    misal pina.0 = switch dan pinb.0 = led, gmna tuh.?
    trus apa bedanya configurasi pin dan port...

    terima kasih sebelumnya gan.

    BalasHapus
  5. mas kalau adc pada atmega menggunakan mode free running ada contoh listing programnya ga

    BalasHapus
  6. Config Adc = Single , Prescaler = Auto
    Start Adc

    maksud ini apa ya?

    BalasHapus
  7. mas mau tanya nich, saya dapet tugas suruh bikin billing sampe 1000 dan setiap 20 alarm bunyi, minta pencerahan nya ya mas

    BalasHapus
  8. mas mau tanya nich, saya dapet tugas suruh bikin billing sampe 1000 dan setiap 20 alarm bunyi, minta pencerahan nya ya mas

    BalasHapus
  9. maw tanya

    kenapa klo saya kasih wait di atmega8535 pake bascom avr
    tp malah gak ada waktu tunggu nya??

    trus bisa wait itu berdasarkan variabel seperti selama Te hasil rumus saya di bawah... "wait te" bisa gak???

    makasih sebelumnya

    $regfile = "m8535.dat"
    $crystal = 4000000
    $sim
    '$lib "lcd4.lbx" ' use the alternative library
    $baud = 19200

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

    Config Lcd = 16 * 2


    Config Porta = Input
    Config Portd = Output
    Config Portb = Output

    Config Adc = Single , Prescaler = Auto

    Dim W As Word , Channel As Byte
    Dim A As Single
    Dim R As Single
    Dim Iref As Single
    Dim T As Single
    Dim Tms As Single
    Dim Itot As Single
    Dim I As Single
    Dim Te As Single
    Dim Huruf As String * 16

    Cls
    Portd.1 = 1
    Portd.0 = 0
    Portd.7 = 0
    Wait 5

    Start Adc
    Declare Sub Hidup1
    Declare Sub Hidup2

    Channel = 0
    R = 1

    Do
    Gosub Hitung
    If A > Iref Then

    Gosub Hitung1

    Do

    Portd.1 = 0
    Wait 5

    If A > Iref Then
    Call Hidup1
    Waitms Te
    Call Hidup2

    End If


    Gosub Hitung

    Loop Until A <= Iref
    Else
    'mematikan relay...
    Do
    Portd.1 = 1

    Gosub Hitung
    Loop Until A > Iref
    End If


    Loop

    Hitung:
    W = Getadc(channel)
    A = W * 5
    A = A / R
    A = A / 1024
    A = A * 6
    A = A * 4.2

    Iref = 2.5
    Tms = 2.6

    Return

    Hitung1:
    T = Tms * 0.14 '0.07

    Itot = A / Iref
    '1.13
    Itot = Itot ^ 0.02 '1.003

    Itot = Itot - 1

    T = T / Itot '0.003

    Te = Round(t)
    Return

    End

    '-------------------------------------------------------------------------------
    Sub Hidup1
    Portd.0 = 1
    Waitms 500
    End Sub

    '-------------------------------------------------------------------------------

    Sub Hidup2
    Portd.6 = 1
    Waitms 500
    End Sub

    BalasHapus
  10. mas, ada file program minimum sistem atmega8535 dengan lcd gak mas ? yg sesuai dengan listing program di atas ?

    BalasHapus
  11. mas untuk adc dengan beberapa input dmn kl menggunakan bascom. mohon pencerahannya..

    BalasHapus

Silahkan tinggalkan komentar...