Depok Instruments

We Present Technologies As Arts

AVR “Membaca Input ADC dan Ditampilkan di Komputer”

Materi kali ini adalah membaca input tegangan analog (0-5V) pada PORTA.0 dari ATmega8535(L) (bisa pula untuk IC ATmega16(L), ATmega32(L), ATmega163(L), ATmega323(L)) kemudian mengirimkan data tersebut ke serial komputer (DB9) untuk dibaca. Rangkaian yang diperlukan seperti yang terlihat pada gambar berikut.

Untuk memudahkan pembelajaran, sebaiknya menggunakan modul kami, DI-Smart AVR System, sebagai media praktik. Adapun langkah-langkah dalam pembuatan sistemnya adalah sebagai berikut:

  1. Modul yang dibutuhkan DI-Smart AVR System, DI-Smart Extension Board, dan DI-Cable Serial. (Merangkai komponen-komponen sesuai dengan gambar skematik rangkaian).
  2. Hubungkan adaptor DC pada JACK-DC. Tetapkan tegangan adaptor pada kisaran 9 s/d 12 VDC. Pastikan kutub positif berada pada bagian dalam. (Jika anda menyusun dari awal, maka pastikan sistem mendapatkan tegangan 5V [VCC = 5V]).
  3. Hubungkan DI-Smart Extension Board dengan PORTA DI-Smart AVR System.
  4. Hubungkan input analog dengan salah satu terminal pada DI-Smart Extension Board (pada contoh digunakan terminal PORTA.0).
  5. Hubungkan DI-Cable Serial dengan port serial dari DI-Smart AVR System dan komputer.
  6. Atur jumper JP1 pada posisi “RXD SERIAL PORT”.
  7. Atur jumper JP2 pada posisi “TXD SERIAL PORT”.
  8. Aktifkan program Hyper Terminal pada PC/LAPTOP, baudrate = 9600 bps.
  9. Unduh skrip program berikut (menggunakan BASCOM atau yang CVAVR):

PROGRAM BASCOM:

$regfile = “m8535.dat” ‘Lokasi source code BASCOM untuk chip ATmega8535
$crystal = 4000000 ‘Sesuai dengan xtal0 = crystal yang digunakan pada rangkaian = 4MHz
‘Jika anda menggunakan DI-Smart AVR System, maka crystal = 11059200 = 11.0592MHz
$baud = 9600            ‘penge-set-an baudrate, dan yang digunakan adalah 9600 bps

‘inisialisasi ADC:
Config Adc = Single , Prescaler = Auto
Start Adc
Dim Data_adc As Word    ‘memesan variable Data_adc bertipe word

Do

‘Data adc pada kanal-0 (PORTA.0) disimpan dalam variabel Data_adc
Data_adc = Getadc(0)

‘Kirim Data_adc ke serial port,
‘chr(13) meletakkan kursor pada posisi paling kiri tampilan
Print Data_adc ; Chr(13);

Waitms 500     ‘Tunda selama 500ms (0.5 detik)

Loop
End

PROGRAM CVAVR:

/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.5 Evaluation
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :
Version :
Date    : 20/01/2011
Author  : Freeware, for evaluation and non-commercial use only
Company :
Comments:

Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External RAM size   : 0
Data Stack size     : 128
*****************************************************/

#include <mega8535.h>

// Standard Input/Output functions
#include <stdio.h>

#include <delay.h>

#define ADC_VREF_TYPE 0×00

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0×40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0×10)==0);
ADCSRA|=0×10;
return ADCW;
}

// Declare your global variables here
unsigned int dataadc;

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0×00;
DDRA=0xff;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0×00;
UCSRB=0×08;
UCSRC=0×86;
UBRRH=0×00;
UBRRL=0×33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;

// ADC initialization
// ADC Clock frequency: 921,600 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0×83;
SFIOR&=0xEF;

while (1)
{
// Place your code here
dataadc=read_adc(0);
printf(“%d\r\n”,dataadc);
delay_ms(500);

};
}

*Modul Depok Instruments yang Memudahkan Pembelajaran:

About these ads

Maret 10, 2010 - Posted by | 2.5 AVR [II] | , , , ,

11 Komentar »

  1. ada yang versi bahasa c nya gk?

    Komentar oleh ahmad huzaimi | Agustus 21, 2010 | Balas

    • Terima kasih atas pertanyaannya. Untuk versi bahasa C akan segera kami hadirkan.

      Salam,
      Depok Instruments Support Team

      Komentar oleh depokinstruments | September 27, 2010 | Balas

  2. mas kalo inputan sensor negative rangkaian Vref nya gmn? thx

    Komentar oleh uciha abe | Mei 26, 2011 | Balas

    • Untuk inputan negatif, perlu ada rangkaian pengkondisinya terlebih dahulu, agar menjadi dalam range ADC-nya.

      Semoga bermanfaat.

      Trims,
      Depok Instruments Support

      Komentar oleh depokinstruments | Juni 8, 2011 | Balas

  3. Klau pembacaan ingin sy tampilkan di LCD juga, apa cukup dengan menambahkan listing untuk menampilkan adc di LCD?

    Komentar oleh Arul | Juli 28, 2011 | Balas

  4. sy sudah copas listing program di atas tapi sewaktu sy compile perintah printf tidak dikenali, bgmn jalan kluarnya? Thx

    Komentar oleh Arul | Agustus 5, 2011 | Balas

  5. Kereen.,.., ayo share lagii,.,.

    Komentar oleh bagus sn | Februari 29, 2012 | Balas

  6. sinput adc yang mau saya buat yaitu sampai 6,4V, jd apa yang harus di set mas?

    Komentar oleh nopriadi | Juni 3, 2012 | Balas

    • Harus ada rangkaian pengkondisi sinyal menggunakan op-amp.

      Salam,
      Depok Instruments Support

      Komentar oleh depokinstruments | Juni 7, 2012 | Balas

  7. Mas, saya mau pake 8chanel port A sebagai masukan analog.Agar keluaran adc dalam satu paket saya buat program seperti ini :

    $regfile = “8535def.dat”
    $crystal = 11059200
    $baud = 9600
    Config Adc = Single , Prescaler = Auto
    Start Adc

    Dim Data_adc0 As Word
    Dim Data_adc1 As Word
    Dim Data_adc2 As Word
    Dim Data_adc3 As Word
    Dim Data_adc4 As Word
    Dim Data_adc5 As Word
    Dim Data_adc6 As Word
    Dim Data_adc7 As Word

    Do
    Data_adc0 = Getadc(0)
    Data_adc1 = Getadc(1)
    Data_adc2 = Getadc(2)
    Data_adc3 = Getadc(3)
    Data_adc4 = Getadc(4)
    Data_adc5 = Getadc(5)
    Data_adc6 = Getadc(6)
    Data_adc7 = Getadc(7)
    Print “*” ; Data_adc0 ; “#” ; Data_adc1 ; “#” ; Data_adc2 ; “#” ; Data_adc3 ; “#” ; Data_adc4 ; “#” ; Data_adc5 ; “#” ; Data_adc6 ; “#” ; Data_adc7 ; “&”
    Waitms 100
    Loop
    End
    Maksud saya agar keluarannya *ADC1#ADC2#….#ADC8&.Saya simulasi benar tapi dihyperterminal keluarannya kadang langsung lengkap kadang hanya sebagian dulu.saya pake vb-pun kadang “*” tidak muncul.apanya yg salah y mas?Makasih…
    (Saya pake SISMIN ATMEGA8535 dari depok instrument)

    Komentar oleh herman | Juni 25, 2012 | Balas


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 58 pengikut lainnya.

%d bloggers like this: