Cara Membaca Tegangan VCC ATtiny85 Tanpa ADC

Posted on

Tegangan VCC ATtiny85

Tanpa ADC?

Cara Membaca Tegangan VCC ATtiny85 Tanpa Terhubung ke ADC – Hari 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 kita gunakan library SoftwareSerial.h.

Rangkaian

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

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

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 K Saya Ngerti. Semoga bermanfaat.