Gunakan MimeTex/LaTex untuk menulis simbol dan persamaan matematika.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 28, 2024, 06:54:51 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 112
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 147
Total: 147

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

bingung Akuisisi Data Suhu...

Dimulai oleh wijana, April 21, 2009, 09:17:14 AM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

wijana

Hello friends..

saya Wijana N., sy lg ngerjain Tugas Akhir tentang Monitoring temperatur wireless 2.4 GHz
saya sedang bingung nih..soalnya kan butuh mikrokontroler untuk ngolah data dari ADC yang dihubungin ma sensor LM35DZ..jenis mikrokontrollernya AT89S51 (DT-51 Versi 3.3 MinSys) ADC(I2C ADDA dari Innovativeelectronics).sedangkan saya masih bingung untuk programming mikro-nya.. ada yg bisa bantu tlg sediain pemrogramannya pk bhs ap aj dh..yang penting bs ngeluarin data dari mikro..soalnya TA sy ini lebih fokus pada wireless-nya.bukan pada mikro-nya..waktu sidang bentar lagi,saya butuh bantuan para maestro mikrokontroler dari seantero dunia untuk bantu TA sy ini..pleaaasee..

Sebelumnya Terima Kasih banyak pada seluruh master - master elektronik di forum ini..
saya hanyalah orang awam yang tidak tau apa2...hehe.

erik hardianto

gw jg lg TA tp ga ngerti jg ttg mikro, tp kemaren nyoba2 terusssss ampe gila.. kalo mang pake ADC mending pake ATmega.. uda ada internal ADC.. jd ga usa pake rangkaiian lain.. tp atmega lbh mahal,

wijana

@Erik
emg bener..klo pk AT89S52 qd pk ADC external..ne aj pk I2C ADDA.tp kemaren2 sy bersyukur dpt ATMEGA16 dr dosen (dikasih pinjam..lumayan)..sy udh coba pk BASCOM AVR untuk programmingnya..tp gagal lg..mgkn sy salah d dowloadernya kali ya..mw nanya klo qt pk Downloader STK 200,,itu caranya gmn ya?pk RS232 bs ga?

insan sains

Dah lama gak ngoprek micon nie.

Jadi perlu pemanasan dulu. Menurut saya lebih enak dan murah pake ATMEGA yang sudah build in ADCnya. Memang dari segi harga, uC ATMEGA lebih mahal 10-15 ribu. Tapi coba bandingkan jika harus membeli kit ADC, rata-rata 80-120 ribuan.

Dulu saya pernah bikin, tapi komunikasi sensor-uC-PC. Kalo temen saya di Bandung pernah bikin, persis sama kayak idenya Wijana.

Btw.. coba aja share programnya. Nanti dianalasi, apakah programnya sudah bener tau belum.
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

erik hardianto

Kutip dari: wijana pada Mei 09, 2009, 07:12:12 PM
@Erik
emg bener..klo pk AT89S52 qd pk ADC external..ne aj pk I2C ADDA.tp kemaren2 sy bersyukur dpt ATMEGA16 dr dosen (dikasih pinjam..lumayan)..sy udh coba pk BASCOM AVR untuk programmingnya..tp gagal lg..mgkn sy salah d dowloadernya kali ya..mw nanya klo qt pk Downloader STK 200,,itu caranya gmn ya?pk RS232 bs ga?
saya ga tau merk yg saya pake, kalo ga praktek bingung jelasinnya, tp cuma 3 ampe 4 langkah, mudah de pokonya, kayanya kalo pake rs-232 ga tau bisa apa ga,
1. munkin ya, krek dr bascomnya uda abis, ato cm buat yg gratis, kmaren jg begitu,
2. coba progrm yg sederhana dulu. kalo yahud berarti gada masalah sama tu bascom
3. coba2 aja de, hehehe, saya juga lg bingung ne 2 minggu lg ngumpul alat TA, ngomong2 punya cth progrm bahasa C buat LCD ga?

insan sains

Btw.. nie ada hasil keisengan saya pas nyoba-nyoba sensor.
Program ini untuk membaca data dari sensor suhu, kemudian mentransfernya ke komputer melalui port serial. Kalo media transfer diganti menjadi wireless, maka tinggal disesuaikan saja dengan modul wirelessnya. Data digital hasil konversi ADC-nya bisa langsung dimasukin ke modul transmitternya. Gudlak...  :D

/*
SENSUHU.C
Author        : Insan Sains
Last Modified : 11 Juni 2008
Application   : SENSOR SUHU
Chip uC         : ATMega 8535
Clock Source  : 4 MHz
Compiler      : GCC (Gnu Linux)
--------------------------------------------------------------------
Modul yang digunakan      : DT Combo AVR-51 (Innovative Electronics)
Port input yang digunakan : PORT C (pin 0)
Deskripsi                 :
Program ini digunakan untuk membaca suhu realtime menggunakan
sensor suhu LM35. Sensor suhu ini mempunyai output yang linear
sebesar 10 mV/derajat_celcius.
Rumus yang digunakan :
# Hasil Konversi ADC = (Vin * 1024) / Vref
# Hasil Konversi per-satu LSB = Vref / (2^n - 1) = 4.9 mV (pembulatan)
*/


/* INISIALISASI UNIT YANG DIGUNAKAN */
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>

/* DEFINISI VARIABLE GLOBAL */
#define F_CPU 4000000UL
#define ADC_VREF_TYPE 0x00

/* FUNCTION DAN PROCEDURE YANG DIGUNAKAN */
void delay_ms(unsigned int ms) {
   while (ms) {
      _delay_ms(1);
      ms--;
   }
}


/* PEMBACA INPUT ADC */
unsigned int read_adc (unsigned char adc_input) {
   unsigned char adc_low, adc_high, data_adc;

   ADMUX=adc_input|ADC_VREF_TYPE;
   
   // Mulai konversi ADC
   ADCSRA|=0x40;

   // Tunggu hingga konversi selesai
   while ((ADCSRA & 0x10) == 0);

   // Clear Flag ADIF
   ADCSRA |= 0x10;

   // Hasil konversi ADC adalah 16 bit
   // 8 bit di ADCL & 8 bit di ADCH
   // xxxx xxxx | xxxx xxxx
   //   ADCH    ADCL
   // Tapi karena untuk sensor suhu, tidak mungkin
   // mencapai 16 bit, paling tinggi 100 derajat = 0d205 = 0xCD
   // Jadi cukup di pakai yang ADCL saja.
   // Tapi ingat syarat-nya ADCL & ADCH harus tetap dibaca
   // supaya si mikro-nya meng-clear flag data sudah dibaca
   // selama ke-dua data tsb tidak dibaca, mikro tidak dapat
   // lagi mengkonversi
.

   adc_low=ADCL;
   adc_high=ADCH;

   //data_adc = adc_high;
   //data_adc = <<=8;
   //data_adc |= adc_low;
   //return data_adc;


   return adc_low;
}


/* PROGRAM UTAMA */
void main(void) {
   /* Inisialisasi USART
   Format Frame : 8 data, 1 stop, No Parity
   USART Receiver = Enable
   USART Transmitter = Enable
   USART Mode = Asynchronous
   */

   UCSRA=0x00;
   UCSRB=0x18;
   UCSRC=0x86;

   /* Tentukan Baud Rate
   USART Baud Rate = 9600 bps
   Untuk Clock Kristal 4 MHz
   Note : Walaupun Baud Rate di uC di set ke 9600 bps
   tapi baud rate di komputer harus 19200 bps
   belum ada penjelasan teknis mengenai hal ini
   yang jelas ketika menggunakan sistem operasi Linux
   hal ini harus diperhatikan.
   */

   UBRRH=0x00;
   UBRRL=0x19;

   /* Inisialisasi port
        PORT A (pin 0) sebagai input
   */

   DDRA=0xFE;
   PORTA=0xFE;

   /* Inisialiasi variable yang digunakan */
   unsigned char temp_str[10];
   unsigned char *usart_str;
   unsigned char adc_input=0x00;
   unsigned int hasil;

   /* Inisialisasi ADC */   
   ADMUX=ADC_VREF_TYPE;
   ADCSRA=0x87;
   SFIOR&=0xEF;

   /* ITOA = integer to Array
   perintah untuk mengubah angka ke huruf (dalam bentuk array)
   serial uC hanya menerima & mengirim karakter (bukan angka)
   */   
   /* Looping selamanya */

   int i;
   while(1) {

      hasil = read_adc(adc_input);
      // hasilADC * 4,887 / 10
      // 4,887 mV (besar tegangan untuk setiap LSB
      // 10 mV per derajat Celcius (setiap kenaikan suhu thd tegangan)

      unsigned long int bil_bulat, bil_desimal;

      bil_bulat = hasil * 49 / 100;
      bil_desimal = (hasil * 49) - (bil_bulat * 100);

      itoa(bil_bulat,usart_str,10);
      itoa(bil_desimal,temp_str,10);
      usart_str = strcat(usart_str,".");
      usart_str = strcat(usart_str,temp_str);

      //Kirim via USART
      for (i=0; i<=strlen(usart_str)-1; i++) {
         UDR=usart_str;
         loop_until_bit_is_set(UCSRA,UDRE);
      }

      //menunggu kesiapan USART!
      UDR=0x0A;

      //Beri waktu tunda, untuk melihat hasil pembacaan
      delay_ms(10000);      
   }
}
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

erik hardianto

mas insan, kalo prog, LCD punya ga???? jd lcd lgsng nyala aja.... tq

insan sains



Konfigurasi pin LCD dan uC nya bisa macem-macem. Saya ambil kayak gini, sbg contoh :

  [pin LCD] <-->  [pin uC]
   1 (Gnd) <--> 11 (Gnd)
   2 (+5V) <--> 10 (Vcc)
   4 (RS) <--> 22 (PC0)
   5 (RD) <--> 23 (PC1)
   6 (EN) <--> 24 (PC2)
  11 (D4) <--> 26 (PC4)
  12 (D5) <--> 27 (PC5)
  13 (D6) <--> 28 (PC6)
  14 (D7) <--> 29 (PC7)

Kalo pake program Code Vision gampang. Coz sudah ada unit dan fungsi tersendiri yang bisa langsung dipake. Namanya lcd.h

Contoh programnya :

#include
#asm
   .equ __lcd_port=0x15
#endasm

#include


void main(void)
{
       // inisialisasi LCD
       lcd_init(16);

        // menampilkan pada baris 0 dari kolom 0
        lcd_gotoxy(0,0);   
        lcd_puts("Forum");   

        // menampilkan pada baris 1 dari kolom 0
        lcd_gotoxy(0,1);     
        lcd_puts("Sains");

       // agar nampak dan terus ditampilkan
       while(1);
}

Secara teori sih begitu. Saya lupa lagi. Soalnya jarang pake LCD, biasanya langsung dikomunikasikan ke PC.
Dicobain ya...!!!
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

insan sains

Karena ada topik khusus untuk menampikan karakter pada LCD, maka pembahasan mengenai hal tersebut difokuskan saja.

Topik yang dimaksud ada di sini
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

the win

#9
saya pernah buat alat akuisisi data suhu buat latihan dan percobaan sederhana dengan mikrokonroler atmega 8535 dan lm 35 mnggunakan compiler bascom avr, bisa