Komunikasi I2C sensor suhu DS1621 dengan AVR ATMega8535

Posted: June 15, 2009 in AVR Project

DS1621 merupakan salah satu sensor suhu yang menggunakan komunikasi I2C dalam pembacaannya. sensor produksi Dallas Semiconductor ini cukup bagus karena bisa membaca antara range -55 sampai 125 C. Resolusi yang digunakan dalam project ini sebesar 0,5 C. Sensor ini kebanyakan digunakan untuk pengukuran suhu permukaan object, misalkan suhu heatsink dan sebagainya.

sensor DS1621

project ini dibuat berbasis uC AVR ATMega8535 dengan tampilan LCD 16×2 dan menggunakan bahasa C CodevisionAVR sebagai kompilernya. PORTA.0 di set sebagai pin SDA dan PORTA.1 di set sebagai pin SCL.

berikut ini adalah potongan sourcecode dari project sensor suhu ds1621 :

Harga Source Code Micro = Rp. 150.000                                                                                            silakan email ke songolikur@gmail.com

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.3 Professional
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 5/8/2009
Author  : GreenBlack
Company : LakoV
Comments:

Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 11.059200 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8535.h>
#include <delay.h>
#include <stdio.h>

#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm

// Declare your global variables here
unsigned char lcd_buffer[33];

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=0x00;
DDRA=0x00;

// Port B 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
PORTB=0x00;
DDRB=0x00;

// Port C 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
PORTC=0x00;
DDRC=0x00;

// Port D 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
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

lcd_init(16);

lcd_gotoxy(0,0);
lcd_putsf("== TERMOMETER ==");

while (1)
      {
     // Place your code here
        lcd_gotoxy(0,1);
	t0=ds1621_temperature_10;
	suhu=t0/10;
	sprintf("  Temp: %-d.%-d%cC ",suhu,abs(t0%10),0xDF); //0xDF adalah karakter derajat
	lcd_puts(lcd_buffer);
	delay_ms(100);
      };
}
Comments
  1. pengembara says:

    bagus mas postingannya…teruslah berkarya…

  2. Jackson says:

    Mas, dapat CodeVision AVR aslinya dimana… kalo boleh sih aku minta…

  3. Ricki says:

    mas yg versi memakai sensor lm35dz sourcenya memakai CodeVision AVR ada gak mas terima kasih

  4. insan says:

    mas saya minta donk skematik dan source code c nya,,,,,yang pake lm35
    tolong nya mas…makasih

  5. tomi says:

    blh tny bl IC DS1621 dmn y?yg cepat kirim na soal na cari2 d indo ky na g ada..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s