Antarmuka Mikrokontroler dengan Sensor Suhu LM35 Menggunakan Proteus

Tujuan Praktikum
- Memahami cara mensimulasikan rangkaian sensor LM35 dengan mikrokontroler di Proteus.
- Mempelajari teknik membaca data analog dari sensor LM35 secara virtual.
- Mengkalibrasi dan memprogram simulasi untuk menampilkan suhu dalam Celcius di Virtual Terminal.
Dasar Teori
LM35 adalah sensor yang digunakan untuk mengukur suhu lingkungan sekitarnya dan paling banyak dipakai karena harganya yang murah.Sensor ini menghasilkan output dalam bentuk sinyal listrik, di mana sinyal tersebut sebanding dengan suhu yang terdeteksi.LM35 memiliki sensitivitas yang lebih tinggi dibandingkan dengan perangkat pengukur suhu lainnya .LM35 merupakan IC dengan 3 pin yang digunakan untuk mendeteksi suhu. Bentuk fisik LM35 dapat dilihat pada gambar di bawah ini.

Sensor LM35 adalah sensor suhu analog yang memberikan tegangan keluaran yang proporsional terhadap suhu dalam derajat Celcius.
- Setiap kenaikan suhu 1°C, tegangan keluarannya meningkat sebesar 10mV.
- Rumus konversi tegangan ke suhu:

Alat dan Bahan
- Software Proteus 8 (atau versi lebih baru).
- Library komponen virtual:
- Mikrokontroler Arduino UNO (atau ATMega328).
- Sensor suhu LM35 (atau gunakan DC Voltage Source sebagai pengganti).
- Virtual Terminal (untuk serial monitor).
- Kode program Arduino IDE (file .hex).
Langkah Kerja
- Merancang Rangkaian di Proteus
- Buka Proteus dan buat schematic baru.
- Tambahkan Komponen:
- Cari dan tambahkan:
- Arduino UNO (atau ATMega328 + CRYSTAL + komponen pendukung).
- LM35 (jika tidak ada, gunakan DC Voltage Source dari kategori “Generator Mode”).
- VIRTUAL TERMINAL (kategori “Virtual Instruments”).
- Cari dan tambahkan:
- Rangkaian Simulasi:

- LM35/Voltage Source:
- Pin VCC → +5V.
- Pin OUT → Pin Analog A0 Arduino.
- Pin GND → GND.
- Virtual Terminal:
- Pin RX → Pin TX Arduino (untuk komunikasi serial).
- Pin GND → GND.
- LM35/Voltage Source:
- Pemrograman dan Simulasi
- Buat Kode Program di Arduino IDE:
const int sensorPin = A0;
void setup() {
Serial.begin(9600); // Inisialisasi serial
}
void loop() {
int rawValue = analogRead(sensorPin);
float voltage = rawValue * (5.0 / 1023.0);
float temperature = voltage * 100; // Konversi ke Celcius
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000);
}-
Generate File .hex:
- Di Arduino IDE: Sketch > Export Compiled Binary.
- File .hex akan tersimpan di folder project.
- Tambahkan Program ke Arduino di Proteus:
- Klik kanan Arduino UNO > Edit Properties.
- Pada Program File, pilih file .hex yang telah dibuat.
- Set Clock Frequency ke 16MHz.
- Simulasi:

- Klik Play (ikon segitiga) di Proteus.
- Buka Virtual Terminal untuk melihat output suhu.

- Kalibrasi Simulasi
- Jika Menggunakan Voltage Source sebagai LM35:
- Ubah nilai tegangan pada Voltage Source sesuai skala LM35 (10mV = 1°C).
- Contoh: Untuk mensimulasikan 25°C, set tegangan ke 0.25V.
- Verifikasi apakah Virtual Terminal menampilkan suhu sesuai.
- Ubah nilai tegangan pada Voltage Source sesuai skala LM35 (10mV = 1°C).
- Jika Ada Discrepancy:
- Adjust kode program dengan faktor koreksi:
float temperature = (voltage * 100) + koreksi; // Sesuaikan nilai koreksi
Output yang Diharapkan
- Virtual Terminal menampilkan data suhu secara real-time.
Contoh:
Suhu: 25.00 °C Suhu: 25.50 °C
- Hasil simulasi sesuai dengan tegangan yang diinput (terkalibrasi).
Pin LM35 dan Rumus Konversi
LM35 kemasan TO-92 dilihat dari sisi datar, kaki dari kiri ke kanan: +Vs (4–30 V), Vout, dan GND. Karena keluarannya 10 mV/°C:
T (°C) = Vout (mV) ÷ 10, atau T = Vout (V) × 100.
Dengan ADC 10-bit Arduino Uno dan referensi 5 V, satu langkah ADC = 5 / 1023 ≈ 4,9 mV ≈ 0,49 °C.
Meningkatkan Resolusi dengan Referensi Internal 1,1 V
Karena tegangan LM35 hanya sekitar 0,2–0,5 V untuk suhu ruang, referensi 5 V membuang sebagian besar rentang ADC. Arduino Uno memiliki referensi internal 1,1 V yang membuat resolusi menjadi sekitar 0,1 °C (rentang ukur hingga 110 °C):
void setup() {
Serial.begin(9600);
analogReference(INTERNAL); // referensi 1,1 V (Arduino Uno)
}
void loop() {
int raw = analogRead(A0);
float suhu = raw * 1.1 / 1023.0 * 100.0;
Serial.print("Suhu: ");
Serial.print(suhu, 1);
Serial.println(" °C");
delay(1000);
}Menstabilkan Pembacaan dengan Rata-rata
Pada rangkaian nyata, pembacaan bisa naik-turun karena derau. Ambil beberapa sampel lalu rata-ratakan:
float bacaSuhu() {
long total = 0;
for (int i = 0; i < 10; i++) {
total += analogRead(A0);
delay(5);
}
float rata = total / 10.0;
return rata * 5.0 / 1023.0 * 100.0;
}Pengembangan: Kipas Otomatis dengan Histeresis
Tambahkan LED atau motor DC (melalui transistor) di pin 8 sebagai “kipas”. Gunakan dua ambang agar kipas tidak hidup-mati terus saat suhu berada tepat di batas:
const int kipasPin = 8;
bool kipasNyala = false;
void setup() {
Serial.begin(9600);
pinMode(kipasPin, OUTPUT);
}
void loop() {
float suhu = analogRead(A0) * 5.0 / 1023.0 * 100.0;
if (suhu >= 32.0) kipasNyala = true; // nyala di atas 32 °C
if (suhu <= 30.0) kipasNyala = false; // mati di bawah 30 °C
digitalWrite(kipasPin, kipasNyala);
Serial.println(suhu);
delay(500);
}Di Proteus, ubah suhu pada komponen LM35 (atau nilai DC Voltage Source) untuk menguji kedua ambang.
Simulasi vs Rangkaian Nyata
- Derau dan kabel panjang: tidak muncul di simulasi; di rangkaian nyata, tambahkan kapasitor 100 nF dekat LM35 dan gunakan kabel pendek.
- Tegangan referensi: simulasi memakai 5,00 V tepat, sedangkan USB laptop bisa 4,7–5,1 V sehingga hasil bergeser. Referensi internal 1,1 V lebih stabil.
- Waktu respons: LM35 fisik butuh waktu untuk mengikuti perubahan suhu; di simulasi perubahan langsung terjadi.
Evaluasi
- Kriteria Penilaian:
- Kebenaran rangkaian simulasi (30%).
- Keberhasilan menampilkan data di Virtual Terminal (30%).
- Akurasi kalibrasi (30%).
- Dokumentasi simulasi (10%).
- Pertanyaan Diskusi:
- Mengapa dalam simulasi Proteus perlu menggunakan Virtual Terminal?
- Apa perbedaan pembacaan sensor LM35 fisik vs. simulasi?
- Bagaimana cara mensimulasikan lingkungan suhu ekstrem di Proteus?
Referensi
Catatan:
- Jika LM35 tidak tersedia di Proteus, gunakan DC Voltage Source dan hitung tegangan sesuai rumus 10mV/°C.
- Pastikan Virtual Terminal di Proteus diset ke baud rate 9600.
Baca juga: Ingin Jadi Ahli IoT & Otomasi? Semua Bisa Dimulai dari Arduino! untuk memahami roadmap lengkap belajar Arduino dari dasar hingga proyek IoT.






