Lompat ke konten Lompat ke sidebar Lompat ke footer

Cara Membaca Tegangan VCC ATtiny85 Tanpa ADC

Cara Membaca Tegangan VCC ATtiny85 Tanpa ADC

Cara Membaca Tegangan VCC ATtiny85 Tanpa Terhubung ke ADC - Hari ini saya mencoba implementasikan ADC untuk membaca tegangan VCC sebuah ATtiny85. Ini tidak membutuhkan sebuah kabel atau kawat yang terhubung antara pin ADC dan pin VCC, melainkan membaca menggunakan register internal didalam chip.

read vcc arduino attiny using register internal without adc pin, baca tegangan tanpa terhubung ke pin ADC
Serial Monitor Membaca Tegangan Sumber ATtiny85

Tegangan VCC yang dibaca oleh ATtiny85 akan dikirim ke komputer melalui komunikasi serial dan ditampilkan pada Serial monitor Arduino.

ATtiny85 secara default tidak memiliki pin Tx Rx. Untuk dapat mengakali ini kita gunakan library SoftwareSerial.h.

A. Rangkaian

Pada percobaan ini, saya gunakan 2 rangkaian. Rangkaian pertama adalah Arduino sebagai ISP yang terhubung ke ATtiny85. Ini digunakan untuk memprogram ATtiny85. Baca disini.

Rangkaian yang kedua adalah, rangkaian ATtiny85 terhubung ke FT232. ini digunakan untuk menerima data ATtiny dan akan diteruskan ke komputer. Baca disini.

B. Program

Untuk program membaca tegangan VCC menggunakan ADC internal, silahakan gunakan progam berikut:

#include "SoftwareSerial.h"

int Rx = 3;
int Tx = 4;

SoftwareSerial mySerial(Rx, Tx);

void setup() {
  pinMode(Rx, INPUT);
  pinMode(Tx, OUTPUT);
  mySerial.begin(9600);

}

void loop() {
  float supply = readVcc() / 1000.0;
  mySerial.print ("VCC: ");
  mySerial.println (supply);
  delay(100);
}

long readVcc() {
  long result;
  // Read 1.1V reference against AVcc
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
  ADMUX = _BV(MUX5) | _BV(MUX0);
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
  ADMUX = _BV(MUX3) | _BV(MUX2);
#else
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#endif
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA, ADSC));
  result = ADCL;
  result |= ADCH << 8;
  result = 1126400L / result; // Calculate Vcc (in mV); 1126400 = 1.1*1024*1000
  return result;
}

Setelah di upload, buka serial monitor. Pastikan:

  • Anda memilih port FT232 FDTI
  • Atur kecepatan baudrade pada serial monitor  pada 9600.

Anda akan melihat respon dari ATTiny85 berupa tegangan yang terbaca diserial Monitor Arduino IDE. Jika anda tidak menerima respon tersebut, periksa kembali rangkaiannya. Terima kasih telah mengunjungi website Arduino32. Semoga bermanfaat.

Prof. Apis
Prof. Apis Hello Greetings all. I created this website to document the knowledge that I have learned. Also to help all friends. Suggestions and criticisms are very welcome to make this website better. Thank you

Posting Komentar untuk "Cara Membaca Tegangan VCC ATtiny85 Tanpa ADC"