Digital Temperature with ATTiny85 & LM35

Baiklah, saya sudah punya display 7-segment mungil, lalu mau dibuat apa? Saya pun memutuskan membuat “digital temperature” sederhana. Kebetulan saya punya spare LM35 sisa ngoprek Ngepot84.

Sebenarnya sederhana, hanya saja kabelnya itu yang bikin tampak ruwet

Sebenarnya sederhana, hanya saja kabelnya itu yang bikin tampak ruwet

Hanya saja saya ingin proyek ini sesederhana mungkin, dalam arti tidak menggunakan Arduino yang relatif lebih mahal. Maklum, saya ingin proyek ini cuma mengukur suhu, tidak lebih. Toh display yang tersedia cuma 7-segment standard nan mungil yang tentu saja tidak bisa menampilkan info yang kompleks.

Ada 4 opsi microcontroller yang tersedia, yaitu: ATTiny85, ATTiny84, ATtiny2313 dan ATtiny4313. Karena pertimbangannya adalah kesederhanaan, maka pilihan jatuh pada ATTiny85 yang cuma punya 8 kaki dengan 5 I/O. Tentu saja 5 pin I/O kurang untuk men-drive 2 digit 7-segment. Syukurlah saya punya stock chip shift register 74HC595 untuk membantu ATTiny85 men-drive display 7-segment.

Cukup menggunakan ATTiny85

Cukup menggunakan ATTiny85

Walau pun sederhana, saya ingin hasil dari proyek ini baik terutama dalam hal display-nya. Oleh karena itu saya mengambil 2 buah shift register 74HC595 untuk ke-2 digit display. Dengan 2 buah IC shift register, saya tidak perlu menggunakan teknik scanning. Kedua shift register ini dirangkai cascading. Walau pun menggunakan 2 buah shift register, pemrogramannya mudah kok. Cukup panggil 2 kali fungsi shiftOut di antara pemicuan pin latch (lihat source code untuk detailnya).

2 digit 7-segment untuk display suhu ruangan

2 digit 7-segment untuk display suhu ruangan

Di bawah ini adalah skema dari Digital Temperature with ATTiny85 ini. Jangan terkecoh dengan ruwetnya kabel. Sebenarnya ini proyek sederhana dengan beberapa komponen saja. Anda bisa merangkaikannya di breadboard dalam waktu kurang dari 30 menit.

Cuma membutuhkan beberapa komponen

Cuma membutuhkan beberapa komponen


(Klik pada gambar untuk memperbesar gambar)

Jika ada waktu luang, rencananya akan saya buatkan PCB-nya supaya sirkuit ini permanen. Juga penggunaan baterai supaya bisa lebih portabel.

Tampilan Temperature Digital versi breadboard

Tampilan Temperature Digital versi breadboard

Di bawah ini adalah source code-nya. Seperti biasa proyek ini adalah open source hardware. Anda bisa menggunakan & mengembangkannya.

/*
Emanuel Setio Dewo, setio.dewo@gmail.com
13/11/2012

ATtiny85 + 7-segment
Digital Temperature with LM35
*/

byte pin_data = 0;
byte pin_latch = 1;
byte pin_clock = 2;
byte pin_sensor = 3;

byte seg[] = {
 0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01, 0x09
};

void setup() {
  pinMode(pin_data, OUTPUT);
  pinMode(pin_latch, OUTPUT);
  pinMode(pin_clock, OUTPUT);
  //analogReference(INTERNAL);
}

void loop() {
  read_sensor();
  //test_angka();
}

void read_sensor() {
    float temp_val = analogRead(pin_sensor);
    temp_val = temp_val * 5.0 * 100.0 / 1024.0;
    tulis((int)temp_val);
    delay(1000);
}

void tulis(int nilai) {
  digitalWrite(pin_latch, LOW);
  if (nilai <10) {
    shiftOut(pin_data, pin_clock, LSBFIRST, seg[nilai]);
    shiftOut(pin_data, pin_clock, LSBFIRST, 0xFF);
  }
  else {
    int puluhan = nilai / 10;
    int satuan = nilai % 10;
    shiftOut(pin_data, pin_clock, LSBFIRST, seg[satuan]);
    shiftOut(pin_data, pin_clock, LSBFIRST, seg[puluhan]);
  }
  digitalWrite(pin_latch, HIGH);
}

void test_angka() {
  for (int i=0; i<10; i++) {
    out7(seg[i]);
    delay(500);
  }
}
void out7(byte b) {
  digitalWrite(pin_latch, LOW);
  shiftOut(pin_data, pin_clock, LSBFIRST, b);
  shiftOut(pin_data, pin_clock, LSBFIRST, b);
  digitalWrite(pin_latch, HIGH);
}
Iklan

Tentang Emanuel Setio Dewo

Tumbuh, Berkembang, Berbuah...
Pos ini dipublikasikan di ATtiny, Catatan, Dewo, Elektronika dan tag , , , . Tandai permalink.

16 Balasan ke Digital Temperature with ATTiny85 & LM35

  1. elvinnio berkata:

    hiks..kabelnya ruwet…kalau aku yang bikin bisa kurang dari 30 menit ga ya?

  2. azhar berkata:

    mas klo attiny85 nya bisa ngga untuk project ini, http://bildr.org/2011/02/74hc595/
    saya msih bingung, ada skema ATTiny85 ngga?

  3. azhar berkata:

    iya mas, td baru kebaca dan liad,,, kecil banget soalnya…jd ngga keliatan…!!
    klo saya pake program bildr itu, sama aja kan mas,,, tinggal upload doang?
    apa perlu tambahan code nya…?untuk ngenalin ATTiny nya?

  4. azhar berkata:

    klo penyesuaian no. pin siah masih ngerti,,,
    tapi takudnya dia pake library atao apa gitu?
    baru megang arduino sebulan soalnya, pengen demen ngoprek kaya mas… hhe 😀

  5. azhar berkata:

    maaf mas, saya nanya lagi…?
    saya baca berkali” mas ngga pake arduino ya…?
    trs upload ke ATTiny85 nya pake apa?jd nambah bingung….?

  6. Ping balik: Say It with Light! | ♪ Emanuel Setio Dewo ♪

  7. choiron berkata:

    kalo tampilan nya tambah 1 digit dibelakang koma gimana mas caranya

  8. Jagad Satrio berkata:

    Mas, klo dijadikan 3 digit (XX,X) gmn?

Tinggalkan Balasan

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

Logo WordPress.com

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

Gambar Twitter

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

Foto Facebook

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

Foto Google+

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

Connecting to %s