Wednesday 31 December 2014

Simulasi Thermometer Digital Berbasis ATmega16

Standard
Selamat malam sobat indoproteus, pada malam hari ini di penghujung tahun 2014, dan sekitar 20 menit lagi adalah detik detik pergantian tahun. Dan pada postingan kali ini saya ingin membagikan sedikit ilmu saya, yaitu Aplikasi pembacaan suhu ( Thermometer Digital ) ini, menggunakan sensor LM35 dan penampil LCD 16x2 yang akan di simulasikan pada Software Proteus.

Berikut ini adalah skema rangkaian tersebut


Menurut datasheet LM35, untuk kenaikan 1 derajat Celcius akan mengakibatkan perubahan 10mV terhadap output tegangannya. Dimana saat suhu 0° Celcius sensor ini mempunyai tegangan offset sebesar 0 V.

Disini saya akan melakukan pembacaan suhu dalam satuan derajat Celcius dengan range pengukuran 0°-100° Celcius. Sehingga tegangan output dari LM35 adalah 0-1V. Tegangan output tersebut sudah dapat dibaca oleh mikrokontroler melalui ADC tanpa diperlukan sebuah penguat tegangan. Aplikasi ini telah saya buat dalam bentuk real (sesungguhnya) dan juga saya simulasikan menggunakan Proteus. Schematic LM35 yang kemudian ditampilkan pada LCD dapat dilihat diatas.

Berikut ini adalah source code program dari Thermometer digital ini yang belum di compile.

/***************************************************************
Project        : Sistem Akuisisi Data Suhu Berbasis ATMEGA16
Version       : V0.1
Date            : 16/12/2014
Author        : Kelompok 4
University  : Universitas Muhammadiyah Tangerang

****************************************************************

ANGGOTA KELOMPOK 4  :   1.) Muhamad Andi Prasetyo
                                                   2.) Niko Faturohman
                                                   3.) Egi Hernanda
                                                   4.) Fajar Gilang Ramadhan
                                                   5.) Yanwar Irvandi  

****************************************************************

Video Simulasi : https://www.youtube.com/watch?v=zL5st0TCndo

****************************************************************

Chip type                                    : ATmega16
Program type                             : Application
AVR Core Clock frequency      : 12,000000 MHz
Memory model                          : Small
External RAM size                    : 0
Data Stack size                         : 256
****************************************************************/

int SUHU;
char temp[8];
float suhu_celcius;

#include <mega16.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>

// Fungsi Alfanumerik Pada LCD Modul
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm

#define ADC_VREF_TYPE 0x40

// Membaca hasil konversi AD
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay diperlukan untuk stabilisasi tegangan input ADC
delay_us(10);

// Mulai konversi AD
ADCSRA|=0x40;

// Tunggu konversi AD untuk menyelesaikan
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
// Inisialisasi Analog Comparator
ACSR=0x80;
SFIOR=0x00;

// Inisialisasi ADC
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// Inisialisasi LCD Modul
lcd_init(16);
lcd_clear();                                                    // Bersihkan layar LCD Display
lcd_gotoxy(1,0);                                          // Set cursor pada 1,0
lcd_putsf("Akuisisi Data");                       // Menampilkan Tulisan Akuisisi Data

lcd_gotoxy(0,1);                                         // Set cursor pada 0,1
lcd_putsf("Suhu Dengan LM35");           // Menampilkan Tulisan Suhu Dengan LM35
delay_ms(700);                                       // Delay selama 700 milli Detik

lcd_clear();                                             // Bersihkan layar LCD Display
lcd_gotoxy(2,0);                                   // Set cursor pada 2,0
lcd_putsf("Dan LCD 16x2");             // Menampilkan Tulisan Dan LCD 16x2

lcd_gotoxy(1,1);                                       // Set cursor pada 1,1
lcd_putsf("Dengan ATmega16");           // Menampilkan Tulisan Dengan ATmega16
delay_ms(700);                                     // Delay selama 700 milli Detik

lcd_clear();                                          // Bersihkan layar LCD Display
lcd_gotoxy(3,0);                                // Set cursor pada 3,0
lcd_putsf("Kelompok 4");               // Menampilkan Tulisan Kelompok 4

lcd_gotoxy(1,1);                                    // Set cursor pada 1,1
lcd_putsf("Teknik Elektro");                // Menampilkan Tulisan Teknik Elektro
delay_ms(700);                                   // Delay 700 milli detik

lcd_clear();                                        // Bersihkan layar LCD Display
lcd_gotoxy(3,0);                             // Set cursor pada 3,0
lcd_putsf("Universitas");              // Menampilkan Tulisan Universitas

lcd_gotoxy(3,1);                                      // Set cursor pada 3,1
lcd_putsf("Muhammadiyah");               // Menampilkan Tulisan Muhammadiyah
delay_ms(700);                                    // Delay 700 milli detik

lcd_clear();                                            // Bersihkan layar LCD Display
lcd_gotoxy(6,0);                                  // Set cursor pada 6,0
lcd_putsf("Kota");                             // Menampilkan Tulisan Kota

lcd_gotoxy(4,1);                                 // Set cursor pada 4,1
lcd_putsf("Tangerang");                   // Menampilkan Tulisan Tangerang
delay_ms(1300);                             // Delay 1,3 detik
while (1)
      {
      lcd_clear( );                                                       // Bersihkan layar LCD Display
    SUHU = read_adc(0);                                       // Baca ADC
    suhu_celcius = (float)SUHU*500/1023;        // Rumus mengubah ke derajat celcius  
   
    lcd_gotoxy(0,0);                                    // Set cursor pada 0,0
    lcd_putsf("Suhu Saat Ini:");                // Tampilkan Kata Suhu Saat Ini
    ftoa(suhu_celcius,1,temp);                 // Float to array
    lcd_gotoxy(0,1);                               // Set cursor pada 0,1
    lcd_puts(temp);
   
    lcd_gotoxy(5,1);                            // Set cursor pada 5,1
    lcd_putchar(0xdf);                       // Menampilkan karakter derajat
    lcd_putsf("C");                           // Tampilkan Karakter C (celcius)
    delay_ms(500);                         // Delay selama 500 milli second

      }
}


Disini saya mengcompile program tersebut dengan menggunakan software CodevisionAVR, yaitu software untuk membuat file hex yang akan di eksekusi oleh IC Atmega 16.

Langsung saja bagi anda yang ingin mensimulasikan
Silahkan klik gambar download dibawah ini.
   
Password File : www.indoproteus.blogspot.com

Semoga Bermanfaat.

Simulasi Line Follower Analog 2 Sensor

Standard
Halo, Salam robotika buat agan-agan semua, pada postingan perdana ini saya akan share simulasi Line follower analog 2 sensor. Line follower ini tidak menggunakan bahasa pemograman / mikrokontroller, karena line follower ini adalah rangkaian Analog yang hanya dengan menggunakan dua sensor infrared/photodioda tanpa driver motor dan rangkaian robot ini tidak menggunakan tampilan LCD Character, pasti sederhana sekali robotnya.

Berikut ini adalah salah satu robot line follower


Dan berikut ini adalah skema dari rangkaian line follower analog dengan 2 sensor


Namanya juga masih sederhana banget rangkaian ini jadi hasilnya pun kurang begitu smooth jika dijalankan pada arena, karena hanya memiliki dua sensor. namun hal ini bukanlah suatu masalah karena dari rangkaian yang sederhana ini kita bisa belajar bagaimana sensor bekerja dan respon kecepatan motor pada robot, apalagi untuk para pemula atau newbie yang sama sekali belum pernah membuat robot semacam ini.

Proses pembacaan sensor pada garis hitam dapat dilihat seperti gambar dibawah ini :

Langsung saja bagi anda yang ingin mensimulasikan
Silahkan klik gambar download dibawah ini.
   
Password File : www.indoproteus.blogspot.com

Semoga Bermanfaat.