Salah satu fitur umum yang digunakan di hampir setiap aplikasi tertanam adalah modul ADC (Analog to Digital Converter). Ini Analog ke Converter digital dapat membaca tegangan dari sensor analog seperti sensor suhu, sensor Tilt, sensor sekarang, Flex sensor dan banyak lagi. Jadi dalam tutorial ini kita akan belajar bagaimana menggunakan ADC di MSP430G2 untuk membaca tegangan analog menggunakan Energia IDE. Kami akan menghubungkan potensiometer kecil ke papan MSP dan memberikan tegangan yang bervariasi ke pin Analog, membaca tegangan dan menampilkannya di Monitor Serial.
Memahami modul ADC:
Percayalah, hampir tidak perlu 10 menit untuk menghubungkan dan memprogram MSP430G2 untuk membaca tegangan Analog. Namun, mari kita luangkan waktu untuk memahami modul ADC di papan MSP sehingga kita dapat menggunakannya secara efektif di semua proyek mendatang.
Mikrokontroler adalah perangkat digital, artinya hanya dapat memahami 1 dan 0. Tetapi di dunia nyata, hampir semua hal seperti suhu, kelembaban, kecepatan angin, dll. Bersifat analog. Untuk berinteraksi dengan perubahan analog tersebut, mikrokontroler menggunakan modul yang disebut ADC. Ada banyak jenis modul ADC yang tersedia, yang digunakan dalam MSP kami adalah ADC SAR 8 channel 10-bit.
Successive Approximation (SAR) ADC: SAR ADC bekerja dengan bantuan pembanding dan beberapa percakapan logika. Jenis ADC ini menggunakan tegangan referensi (yang variabel) dan membandingkan tegangan masukan dengan tegangan referensi menggunakan komparator dan perbedaan, yang akan menjadi keluaran digital, disimpan dari bit paling signifikan (MSB). Kecepatan perbandingan bergantung pada frekuensi Jam (Fosc) tempat MSP beroperasi.
Resolusi 10-bit: ADC ini adalah ADC 8 saluran 10 bit. Di sini istilah 8 saluran menyiratkan bahwa ada 8 pin ADC yang dapat digunakan untuk mengukur tegangan analog. Istilah 10-bit menyiratkan resolusi ADC. 10-bit artinya 2 pangkat sepuluh (2 10) yaitu 1024. Ini adalah jumlah sample langkah untuk ADC kita, jadi range nilai ADC kita akan dari 0 sampai 1023. Nilainya akan meningkat dari 0 sampai 1023 berdasarkan nilai tegangan per langkah, yang dapat dihitung menggunakan rumus di bawah ini
Catatan: Secara default di Energia, tegangan referensi akan disetel ke Vcc (~ 3v), Anda dapat memvariasikan tegangan referensi dengan menggunakan opsi analogReference () .
Juga periksa cara menghubungkan ADC dengan Mikrokontroler lain:
- Bagaimana cara menggunakan ADC di Arduino Uno?
- Menghubungkan ADC0808 dengan Mikrokontroler 8051
- Menggunakan Modul ADC Mikrokontroler PIC
- Tutorial ADC Raspberry Pi
Diagram Sirkuit:
Dalam tutorial kami sebelumnya, kami telah mempelajari cara menghubungkan LCD dengan MSP430G2, sekarang kami hanya akan menambahkan potensiometer ke MSP430 untuk mensuplai tegangan variabel dan menampilkan nilai tegangan pada LCD. Jika Anda tidak mengetahui adanya antarmuka LCD kemudian kembali ke tautan di atas dan membacanya, karena saya akan melewatkan informasi untuk menghindari pertobatan. Diagram rangkaian lengkap proyek diberikan di bawah ini.
Seperti yang Anda lihat, ada dua potensiometer yang digunakan di sini, satu digunakan untuk mengatur kontras LCD sementara yang lainnya digunakan untuk memasok tegangan variabel ke papan. Dalam potensiometer itu satu ujung ekstrim dari potensiometer terhubung ke Vcc dan ujung lainnya terhubung ke Ground. Pin tengah (kabel biru) dihubungkan ke pin P1.7. Ini P1.7 pin akan memberikan tegangan variabel dari 0V (ground) ke 3.5V (Vcc). Jadi kita harus memprogram pin P1.7 untuk membaca tegangan variabel ini dan menampilkannya di LCD.
Di Energia, kita perlu tahu di saluran analog mana pin P1.7 berada? Ini dapat ditemukan dengan mengacu pada gambar di bawah ini
Anda bisa melihat pin P1.7 di sisi kanan, pin ini milik A7 (Channel 7). Demikian pula, kami juga dapat menemukan nomor saluran masing-masing untuk pin lain. Anda dapat menggunakan pin apa pun dari A0 hingga A7 untuk membaca tegangan analog di sini saya telah memilih A7.
Memprogram MSP430 Anda untuk ADC:
Memprogram MSP430 Anda untuk membaca tegangan analog sangat sederhana. Dalam program ini akan membaca nilai analog dan menghitung tegangan dengan nilai tersebut dan kemudian menampilkan keduanya pada layar LCD. Program lengkap dapat ditemukan di bagian bawah halaman ini, lebih jauh di bawah ini saya menjelaskan program dalam potongan untuk membantu Anda lebih memahami.
Kami mulai dengan menentukan pin LCD. Ini menentukan pin MSP430 mana yang menghubungkan pin LCD. Anda dapat merujuk koneksi Anda untuk memastikan bahwa pin terhubung masing-masing
# Tentukan RS 2 # Tentukan EN 3 # Tentukan D4 4 # Tentukan D5 5 # Tentukan D6 6 # Tentukan D7 7
Selanjutnya, kami menyertakan file header untuk tampilan LCD. Ini memanggil perpustakaan yang berisi kode tentang bagaimana MSP harus berkomunikasi dengan LCD. Library ini akan diinstal di Energia IDE secara default sehingga Anda tidak perlu repot menambahkannya. Pastikan juga fungsi Liquid Crystal dipanggil dengan nama pin yang baru saja kita tentukan di atas.
#include
Di dalam fungsi setup () kami, kami hanya akan memberikan pesan intro untuk ditampilkan di layar LCD. Saya tidak membahasnya secara mendalam karena kita telah mempelajari cara menggunakan LCD dengan MSP430G2.
lcd.begin (16, 2); // Kami menggunakan layar LCD 16 * 2 lcd.setCursor (0,0); // Letakkan kursor di baris ke-1 kolom ke-1 lcd.print ("MSP430G2553"); // Tampilkan pesan intro lcd.setCursor (0, 1); // setel kursor ke kolom ke-1 baris ke-2 lcd.print ("- CircuitDigest"); // Tampilkan pesan intro
Akhirnya, di dalam fungsi infinite loop () kami, kami mulai membaca tegangan yang disuplai ke pin A7. Seperti yang telah kita bahas, mikrokontroler adalah perangkat digital dan tidak dapat membaca level tegangan secara langsung. Menggunakan teknik SAR level tegangan dipetakan dari 0 hingga 1024. Nilai-nilai ini disebut nilai ADC, untuk mendapatkan nilai ADC ini cukup gunakan baris berikut
int val = analogRead (A7); // baca nilai ADC dari pin A7
Di sini fungsi analogRead () digunakan untuk membaca nilai analog dari pin, kami telah menentukan A7 di dalamnya karena kami telah menghubungkan tegangan variabel ke pin P1.7. Akhirnya kami menyimpan nilai ini dalam variabel yang disebut " val ". Jenis variabel ini adalah integer karena kita hanya akan mendapatkan nilai mulai dari 0 hingga 1024 untuk disimpan di variabel ini.
Langkah selanjutnya adalah menghitung nilai tegangan dari nilai ADC. Untuk melakukan ini, kami memiliki rumus berikut
Tegangan = (Nilai ADC / Resolusi ADC) * Tegangan Referensi
Dalam kasus kami, kami sudah tahu bahwa resolusi ADC mikrokontroler kami adalah 1024. Nilai ADC juga ditemukan di baris sebelumnya dan menyimpan variabel yang disebut val. The tegangan referensi adalah sama dengan tegangan di mana mikrokontroler beroperasi. Ketika papan MSP430 diberi daya melalui kabel USB maka tegangan operasinya adalah 3.6V. Anda juga dapat mengukur tegangan operasi dengan menggunakan multimeter di Vcc dan pin arde di papan. Jadi rumus di atas cocok dengan kasus kami seperti yang ditunjukkan di bawah ini
tegangan float = (float (val) / 1024) * 3,6; // rumus untuk mengubah nilai ADC menjadi tegangan
Anda mungkin bingung dengan garis float (val). Ini digunakan untuk mengubah variabel "val" dari tipe data int menjadi tipe data "float". Konversi ini diperlukan karena hanya jika kita mendapatkan hasil val / 1024 dalam float kita bisa mengalikannya dengan 3,6. Jika nilai yang diterima dalam integer akan selalu 0 dan hasilnya juga akan nol. Setelah kita menghitung nilai ADC dan voltase, yang tersisa hanyalah menampilkan hasilnya pada layar LCD yang dapat dilakukan dengan menggunakan baris berikut
lcd.setCursor (0, 0); // setel kursor ke kolom 0, baris 0 lcd.print ("ADC Val:"); lcd.print (val); // Menampilkan nilai ADC lcd.setCursor (0, 1); // setel kursor ke kolom 0, baris 1 lcd.print ("Voltage:"); lcd.print (voltase); // Tegangan tampilan
Di sini kami telah menampilkan nilai ADC di baris pertama dan nilai Tegangan di baris kedua. Akhirnya kami memberikan jeda 100 mil detik dan layar LCD jelas. Ini adalah nilai yang akan diperbarui untuk setiap 100 juta.
Menguji hasil Anda!
Akhirnya, kita sampai pada bagian yang menyenangkan, yaitu menguji program kita dan bermain-main dengannya. Buat saja koneksi seperti yang ditunjukkan pada diagram sirkuit. Saya telah menggunakan papan tempat memotong roti kecil untuk membuat koneksi dan menggunakan kabel jumper untuk menghubungkan papan tempat memotong roti ke MSP430. Setelah koneksi selesai, saya terlihat seperti ini di bawah ini.
Kemudian unggah program yang diberikan di bawah ini ke papan MSP430 melalui Energia IDE. Anda seharusnya dapat melihat teks intro pada LCD, jika tidak mengatur kontras LCD menggunakan potensiometer hingga Anda melihat kata-kata yang jelas. Selain itu, coba tekan tombol reset. Jika semuanya bekerja seperti yang diharapkan maka Anda harus dapat melihat layar berikut.
Sekarang variasikan potensiometer dan Anda juga harus melihat tegangan yang ditampilkan di LCD semakin bervariasi. Mari kita verifikasi jika kita mengukur tegangan dengan benar untuk melakukan itu, gunakan multimeter untuk mengukur tegangan di pusat POT dan tanah. Tegangan yang ditampilkan pada multimeter harus mendekati nilai yang ditampilkan pada LCD seperti terlihat pada gambar di bawah ini.
Itu saja, kami telah belajar bagaimana mengukur tegangan analog menggunakan ADC dari papan MSP430. Sekarang kita dapat menghubungkan banyak sensor analog dengan papan kita untuk membaca parameter waktu nyata. Semoga Anda memahami tutorial dan menikmati mempelajarinya, jika Anda memiliki masalah, silakan hubungi bagian komentar di bawah atau melalui forum. Mari ikuti tutorial lain MSP430 dengan topik baru lainnya.