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.
![]() |
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.
Posting Komentar untuk "Cara Membaca Tegangan VCC ATtiny85 Tanpa ADC"