Satu ciri umum yang digunakan di hampir setiap aplikasi yang disematkan adalah modul ADC (Analog to Digital Converter). Ini Analog kepada Converters digital boleh membaca voltan dari sensor analog seperti suhu sensor, sensor Tilt, sensor Semasa, Flex sensor dan banyak lagi. Jadi dalam tutorial ini kita akan belajar bagaimana menggunakan ADC di MSP430G2 untuk membaca voltan Analog menggunakan Energia IDE. Kami akan menghubungkan potensiometer kecil ke papan MSP dan membekalkan voltan yang berbeza ke pin Analog, membaca voltan dan memaparkannya di Monitor Serial.
Memahami modul ADC:
Percayalah, hampir 10 minit untuk menyambung dan memprogram MSP430G2 untuk membaca voltan Analog. Tetapi, marilah kita meluangkan masa untuk memahami modul ADC di papan MSP supaya kita dapat menggunakannya dengan berkesan dalam semua projek yang akan datang.
Mikrokontroler adalah peranti digital, yang bermaksud hanya dapat memahami 1 dan 0. Tetapi di dunia nyata, hampir semua perkara seperti suhu, kelembapan, kelajuan angin, dan lain-lain bersifat analog. Untuk berinteraksi dengan perubahan analog ini, pengawal mikro menggunakan modul yang disebut ADC. Terdapat banyak jenis modul ADC yang tersedia, yang digunakan dalam MSP kami ialah ADC saluran 8-bit SAR 8.
ADC Pendekatan Berturut-turut (SAR) ADC SAR berfungsi dengan bantuan pembanding dan beberapa perbualan logik. Jenis ADC ini menggunakan voltan rujukan (yang berubah-ubah) dan membandingkan voltan masukan dengan voltan rujukan menggunakan pembanding dan perbezaan, yang akan menjadi output digital, disimpan dari bit Paling ketara (MSB). Kelajuan perbandingan bergantung pada frekuensi Jam (Fosc) di mana MSP beroperasi.
Resolusi 10-bit: ADC ini adalah ADC 8 bit 10 saluran. Di sini istilah 8 saluran menyiratkan bahawa terdapat 8 pin ADC yang mana kita dapat mengukur voltan analog. Istilah 10-bit menyiratkan resolusi ADC. 10-bit bermaksud 2 hingga kekuatan sepuluh (2 10) iaitu 1024. Ini adalah bilangan langkah sampel untuk ADC kami, jadi julat nilai ADC kami adalah dari 0 hingga 1023. Nilai akan meningkat dari 0 hingga 1023 berdasarkan nilai voltan per langkah, yang dapat dikira menggunakan formula di bawah
Catatan: Secara lalai di Energia voltan rujukan akan ditetapkan ke Vcc (~ 3v), anda boleh mengubah voltan rujukan dengan menggunakan pilihan analogReference () .
Periksa juga bagaimana untuk menghubungkan ADC dengan Pengawal Mikro lain:
- Bagaimana Menggunakan ADC di Arduino Uno?
- Memadankan ADC0808 dengan Mikrokontroler 8051
- Menggunakan Modul ADC Mikrokontroler PIC
- Tutorial ADP Raspberry Pi
Rajah Litar:
Dalam tutorial sebelumnya, kita sudah belajar bagaimana menghubungkan LCD dengan MSP430G2, sekarang kita hanya akan menambah potensiometer ke MSP430 untuk membekalkannya voltan berubah-ubah dan memaparkan nilai voltan pada LCD. Sekiranya anda tidak menyedari antara muka LCD kemudian kembali ke pautan di atas dan baca terus, kerana saya akan melangkau maklumat untuk mengelakkan pertaubatan. Gambarajah litar lengkap projek diberikan di bawah.
Seperti yang anda lihat terdapat dua potensiometer yang digunakan di sini, satu digunakan untuk menetapkan kontras LCD sementara yang lain digunakan untuk membekalkan voltan berubah ke papan. Dalam potensiometer itu satu hujung potensiometer yang ekstrim disambungkan ke Vcc dan hujung yang lain disambungkan ke Ground Pin tengah (dawai biru) disambungkan ke pin P1.7. Ini pin P1.7 akan menyediakan voltan berubah-ubah dari 0V (tanah) untuk 3.5V (Vcc). Oleh itu, kita harus memprogram pin P1.7 untuk membaca voltan berubah ini dan memaparkannya di LCD.
Di Energia, kita perlu tahu saluran analog mana pin P1.7? Ini dapat dijumpai dengan merujuk gambar di bawah
Anda dapat melihat pin P1.7 di sebelah kanan, pin ini milik A7 (Saluran 7). Begitu juga dengan nombor saluran masing-masing untuk pin lain. Anda boleh menggunakan sebarang pin dari A0 hingga A7 untuk membaca voltan analog di sini saya telah memilih A7.
Memprogram MSP430 anda untuk ADC:
Pengaturcaraan MSP430 anda untuk membaca voltan analog sangat mudah. Dalam program ini akan membaca analog nilai dan mengira voltan dengan nilai itu dan kemudian memaparkan kedua-duanya pada skrin LCD. Program yang lengkap boleh didapati di bahagian bawah halaman ini, di bawah ini saya menerangkan program ini dalam coretan untuk membantu anda memahami dengan lebih baik.
Kita mulakan dengan menentukan pin LCD. Ini menentukan pin MSP430 mana pin LCD disambungkan. Anda boleh merujuk sambungan anda untuk memastikan bahawa pin masing-masing disambungkan
#tentukan RS 2 #tentukan EN 3 #tentukan D4 4 #tentukan D5 5 #tentukan D6 6 #tentukan D7 7
Seterusnya, kami memasukkan fail tajuk untuk paparan LCD. Ini memanggil perpustakaan yang mengandungi kod bagaimana MSP harus berkomunikasi dengan LCD. Perpustakaan ini akan dipasang di Energia IDE secara lalai sehingga anda tidak perlu repot menambahkannya. Pastikan juga fungsi Liquid Crystal dipanggil dengan nama pin yang baru kita tentukan di atas.
#sertakan
Di dalam fungsi setup () kami, kami hanya akan memberikan pesan intro untuk ditampilkan di layar LCD. Saya tidak mendalam kerana kita sudah belajar menggunakan LCD dengan MSP430G2.
lcd.begin (16, 2); // Kami menggunakan lcd.setCursor paparan LCD 16 * 2 (0,0); // Letakkan kursor pada baris pertama lajur lcd.print ("MSP430G2553"); // Paparkan mesej intro lcd.setCursor (0, 1); // tetapkan kursor ke lajur pertama baris ke-2 lcd.print ("- CircuitDigest"); // Paparkan mesej pengenalan
Akhirnya, di dalam fungsi gelung tak terhingga () , kita mula membaca voltan yang dibekalkan ke pin A7. Seperti yang telah kita bincangkan, mikrokontroler adalah peranti digital dan tidak dapat membaca tahap voltan secara langsung. Dengan menggunakan teknik SAR tahap voltan dipetakan dari 0 hingga 1024. Nilai-nilai ini dipanggil nilai ADC, untuk mendapatkan nilai ADC ini, gunakan garis berikut
int val = analogRead (A7); // baca nilai ADC dari pin A7
Di sini fungsi analogRead () digunakan untuk membaca nilai analog pin, kami telah menentukan A7 di dalamnya kerana kami telah menghubungkan voltan berubah ke pin P1.7. Akhirnya kami menyimpan nilai ini dalam pemboleh ubah yang disebut " val ". Jenis pemboleh ubah ini adalah bilangan bulat kerana kita hanya akan mendapat nilai antara 0 hingga 1024 untuk disimpan dalam pemboleh ubah ini.
Langkah seterusnya adalah mengira nilai voltan dari nilai ADC. Untuk melakukan ini, kita mempunyai formula berikut
Voltan = (Nilai ADC / Resolusi ADC) * Voltan Rujukan
Dalam kes kami, kami sudah mengetahui bahawa resolusi ADC mikrokontroler kami adalah 1024. Nilai ADC juga terdapat pada baris sebelumnya dan menyimpan pemboleh ubah yang disebut val. The voltan rujukan adalah sama dengan voltan di mana pengawal mikro beroperasi. Apabila papan MSP430 dihidupkan melalui kabel USB maka voltan operasi adalah 3.6V. Anda juga boleh mengukur voltan operasi dengan menggunakan multimeter melintasi Vcc dan pin ground di papan. Jadi formula di atas sesuai dengan kes kita seperti yang ditunjukkan di bawah
voltan apungan = (apungan (val) / 1024) * 3.6; // formula untuk menukar nilai ADC kepada voltan
Anda mungkin keliru dengan garis terapung (val). Ini digunakan untuk mengubah variabel "val" dari jenis data int menjadi jenis data "float". Penukaran ini diperlukan kerana hanya jika kita mendapat hasil val / 1024 di float kita dapat menggandakannya 3.6. Sekiranya nilainya diterima dalam bilangan bulat, ia akan selalu 0 dan hasilnya juga akan menjadi sifar. Setelah kami mengira nilai dan voltan ADC, yang tinggal hanyalah memaparkan hasilnya pada layar LCD yang dapat dilakukan dengan menggunakan baris berikut
lcd.setCursor (0, 0); // tetapkan kursor ke lajur 0, baris 0 lcd.print ("ADC Val:"); lcd.print (val); // Paparkan nilai ADC lcd.setCursor (0, 1); // tetapkan kursor ke lajur 0, baris 1 lcd.print ("Voltage:"); lcd.print (voltan); // Voltan paparan
Di sini kami telah menunjukkan nilai ADC pada baris pertama dan nilai Voltan pada baris kedua. Akhirnya kami memberikan kelewatan 100 mil saat dan membersihkan skrin LCD. Ini adalah nilai yang akan diperbaharui untuk setiap 100 mil.
Menguji keputusan anda!
Akhirnya, kami datang ke bahagian yang menyeronokkan, yang menguji program kami dan bermain-main dengannya. Buat sambungan seperti yang ditunjukkan dalam rajah litar. Saya telah menggunakan papan roti kecil untuk membuat sambungan saya dan menggunakan wayar jumper untuk menyambungkan papan roti ke MSP430. Setelah sambungan selesai, saya kelihatan seperti di bawah ini.
Kemudian muat naik program yang diberikan di bawah ini ke papan MSP430 melalui Energia IDE. Anda seharusnya dapat melihat teks intro pada LCD, jika tidak menyesuaikan kontras LCD menggunakan potensiometer sehingga anda melihat kata-kata yang jelas. Juga, cuba tekan butang set semula. Sekiranya perkara berjalan seperti yang diharapkan maka anda harus dapat melihat skrin berikut.
Sekarang ubah potensiometer dan anda juga harus melihat voltan yang dipaparkan di LCD semakin berbeza. Marilah kita mengesahkan sama ada kita mengukur voltan dengan betul untuk melakukannya, gunakan multimeter untuk mengukur voltan di tengah-tengah POT dan tanah. Voltan yang ditunjukkan pada multimeter mestilah hampir dengan nilai yang ditunjukkan pada LCD seperti yang ditunjukkan dalam gambar di bawah.
Itu sahaja, kita telah belajar bagaimana mengukur voltan analog menggunakan ADC papan MSP430. Sekarang kita dapat menghubungkan banyak sensor analog dengan papan kami untuk membaca parameter masa nyata. Harap anda memahami tutorial dan seronok mempelajarinya, jika anda mempunyai masalah sila hubungi melalui bahagian komen di bawah atau melalui forum. Mari ikuti tutorial MSP430 yang lain dengan topik baru yang lain.