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

16 pemikiran pada “Digital Temperature with ATTiny85 & LM35

  1. 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?

  2. 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 😀

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

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 )

Foto Facebook

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

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.