Dalam proyek ini kami menggunakan konsep ADC (Analog to Digital Conversion) di ARDUINO UNO. Kita akan menggunakan sensor Hall Effect dan Arduino uno untuk mengukur kekuatan medan magnet. Sensor yang kami gunakan di sini adalah UGN3503U. Ini adalah sensor hall yang merasakan kekuatan medan magnet dan memberikan tegangan yang bervariasi pada keluaran yang sebanding dengan kekuatan medan. Sensor ini mengambil kekuatan medan dalam unit ' GAUSS '.
Jadi dengan sensor ini kita akan memiliki kekuatan medan sebagai tegangan yang bervariasi. Dengan menggunakan fitur ADC kita akan mengubah tegangan ini menjadi angka. Angka ini mewakili kekuatan medan dan ditampilkan pada LCD.
Arduino memiliki enam saluran ADC. Dalam salah satu atau semuanya dapat digunakan sebagai input untuk tegangan analog. UNO ADC memiliki resolusi 10 bit (jadi nilai integer dari (0- (2 ^ 10) 1023)). Ini berarti akan memetakan tegangan input antara 0 dan 5 volt menjadi nilai integer antara 0 dan 1023. Jadi untuk setiap (5/1024 = 4,9mV) per unit.
Dalam semua ini kita akan menghubungkan potensiometer atau pot ke saluran 'A0', dan kita akan menunjukkan hasil ADC dalam tampilan sederhana. Tampilan sederhana adalah unit tampilan 16x1 dan 16x2. Unit tampilan 16x1 akan memiliki 16 karakter dan berada dalam satu baris. 16x2 akan memiliki 32 karakter secara total 16in 1 st line dan 16 lain di 2 nd line. Di sini kita harus memahami bahwa di setiap karakter ada 5x10 = 50 piksel jadi untuk menampilkan satu karakter semua 50 piksel harus bekerja sama, tetapi kita tidak perlu khawatir tentang itu karena ada pengontrol lain (HD44780) di unit tampilan yang melakukan tugas mengontrol piksel (Anda dapat melihatnya di unit LCD, itu adalah mata hitam di bagian belakang).
Komponen Diperlukan
Perangkat keras: ARDUINO UNO, catu daya (5v), JHD_162ALCD (16x2LCD), kapasitor 100uF (2 buah), UGn3503U.
Perangkat lunak: Arduino IDE (Arduino nightly)
Diagram Sirkuit dan Penjelasannya
Gambar di atas menunjukkan diagram rangkaian pengukuran medan magnet menggunakan arduino uno.
Pada LCD 16x2 terdapat 16 pin seluruhnya jika ada lampu belakang, jika tidak ada lampu belakang akan ada 14 pin. Satu dapat memberi daya atau meninggalkan pin lampu belakang. Sekarang di 14 pin ada 8 data pin (7-14 atau D0-D7), 2 pin power supply (1 & 2 atau VSS & Vdd atau GND & + 5V), 3 rd pin untuk kontrol kontras (VEE-kontrol seberapa tebal karakter harus ditampilkan) dan 3 pin kontrol (RS & RW & E).
Pada rangkaian di atas, Anda dapat mengamati saya hanya mengambil dua pin kontrol, bit kontras dan READ / WRITE tidak sering digunakan sehingga dapat disingkat ke ground. Ini menempatkan LCD dalam kontras tertinggi dan mode baca. Kita hanya perlu mengontrol pin ENABLE dan RS untuk mengirim karakter dan data yang sesuai.
Koneksi yang dilakukan untuk LCD diberikan di bawah ini:
PIN1 atau VSS ke ground
PIN2 atau VDD atau VCC ke daya + 5v
PIN3 atau VEE ke ground (memberikan kontras maksimum yang terbaik untuk pemula)
PIN4 atau RS (Daftar Pilihan) ke PIN8 dari ARDUINO UNO
PIN5 atau RW (Baca / Tulis) ke ground (menempatkan LCD dalam mode baca memudahkan komunikasi untuk pengguna)
PIN6 atau E (Aktifkan) ke PIN9 dari ARDUINO UNO
PIN11 atau D4 ke PIN10 dari ARDUINO UNO
PIN12 atau D5 ke PIN11 dari ARDUINO UNO
PIN13 atau D6 ke PIN12 dari ARDUINO UNO
PIN14 atau D7 ke PIN13 dari ARDUINO UNO
ARDUINO IDE memungkinkan pengguna untuk menggunakan LCD dalam mode 4 bit. Jenis komunikasi ini memungkinkan pengguna untuk mengurangi penggunaan pin pada ARDUINO, tidak seperti yang lain ARDUINO tidak perlu diprogram secara terpisah untuk menggunakannya dalam mode 4 it karena secara default ARDUINO diatur untuk berkomunikasi dalam mode 4 bit. Di sirkuit Anda dapat melihat kami menggunakan komunikasi 4bit (D4-D7). Jadi dari pengamatan dari tabel diatas kita menghubungkan 6 pin LCD ke controller dimana 4 pin adalah pin data dan 2 pin untuk kontrol.
Kerja
Untuk menghubungkan LCD ke ARDUINO UNO, kita perlu mengetahui beberapa hal.
|
Pertama-tama saluran ADC UNO memiliki nilai referensi default 5V. Ini berarti kita dapat memberikan tegangan input maksimum 5V untuk konversi ADC di saluran input mana pun. Karena beberapa sensor memberikan tegangan dari 0-2.5V, dengan referensi 5V kami mendapatkan akurasi yang lebih rendah, jadi kami memiliki instruksi yang memungkinkan kami untuk mengubah nilai referensi ini. Jadi untuk mengubah nilai referensi yang kami miliki ("analogReference ();")
Sebagai default kami mendapatkan resolusi ADC papan maksimum yaitu 10 bit, resolusi ini dapat diubah dengan menggunakan instruksi (“analogReadResolution (bits);”). Perubahan resolusi ini dapat berguna untuk beberapa kasus.
Sekarang jika kondisi di atas diatur ke default, kita dapat membaca nilai dari ADC saluran '0' dengan langsung memanggil fungsi "analogRead (pin);", di sini "pin" mewakili pin tempat kita menghubungkan sinyal analog, dalam hal ini akan jadilah “A0”. Nilai dari ADC dapat diambil menjadi integer sebagai “int ADCVALUE = analogRead (A0); ", Dengan instruksi ini nilai setelah ADC disimpan dalam integer" ADCVALUE ".
SEKARANG mari kita bicara sedikit tentang LCD 16x2. Pertama kita perlu mengaktifkan file header ('#include
Kedua, kita perlu memberi tahu papan jenis LCD apa yang kita gunakan di sini. Karena kami memiliki begitu banyak jenis LCD (seperti 20x4, 16x2, 16x1 dll.). Di sini kita akan menghubungkan LCD 16x2 ke UNO sehingga kita mendapatkan 'lcd.begin (16, 2);'. Untuk 16x1 kita mendapatkan 'lcd.begin (16, 1);'.
Dalam instruksi ini kita akan memberi tahu papan di mana kita menghubungkan pin, Pin yang terhubung harus direpresentasikan dalam urutan sebagai "RS, En, D4, D5, D6, D7". Pin ini harus direpresentasikan dengan benar. Karena kami menghubungkan RS ke PIN0 dan seterusnya seperti yang ditunjukkan pada diagram sirkuit, Kami merepresentasikan nomor pin ke board sebagai "LiquidCrystal lcd (0, 1, 8, 9, 10, 11);".
Setelah di atas semua yang tersisa adalah mengirim data, data yang perlu ditampilkan di LCD harus ditulis “cd.print (" hello, world! ");”. Dengan perintah ini LCD menampilkan 'halo, dunia!'. Seperti yang Anda lihat, kami tidak perlu khawatir tentang hal ini lagi, kami hanya perlu menginisialisasi dan UNO akan siap untuk menampilkan data. Kami tidak perlu menulis loop program untuk mengirim data BYTE oleh BYTE di sini.
Setelah magnet didekatkan ke sensor, sensor mewakili tegangan pada keluaran yang proporsional dengan medan, nilai ini diambil oleh Uno dan ditampilkan dalam LCD. Pekerjaan proyek pengukuran medan magnet ini dijelaskan lebih lanjut melalui kode C di bawah ini.