- Material yang dibutuhkan:
- Modul ADC 8-bit ADC0804 Saluran Tunggal:
- Diagram Sirkuit dan Penjelasan:
- Memprogram Raspberry Pi:
- Menampilkan nilai Sensor Fleksibel pada LCD menggunakan Raspberry Pi:
Raspberry Pi adalah papan berbasis prosesor arsitektur ARM yang dirancang untuk insinyur elektronik dan penghobi. PI adalah salah satu platform pengembangan proyek paling tepercaya saat ini. Dengan kecepatan prosesor yang lebih tinggi dan RAM 1 GB, PI dapat digunakan untuk banyak proyek profil tinggi seperti Pemrosesan gambar dan Internet of Things. Ada banyak hal keren yang dapat dilakukan dengan PI, tetapi satu fitur yang menyedihkan adalah PI tidak memiliki modul ADC bawaan.
Hanya saja, jika Raspberry Pi dapat dihubungkan dengan sensor, ia dapat mengetahui tentang parameter dunia nyata dan berinteraksi dengannya. Sebagian besar sensor di luar sana adalah sensor analog dan karenanya kita harus belajar menggunakan IC modul ADC eksternal dengan Raspberry Pi untuk menghubungkan sensor-sensor ini. Dalam proyek ini kita akan belajar bagaimana kita dapat Menghubungkan Sensor Flex dengan Raspberry Pi dan Menampilkan Nilainya di Layar LCD.
Material yang dibutuhkan:
- Raspberry Pi (Model Apa Pun)
- IC ADC0804
- Layar LCD 16 * 2
- Sensor Fleksibel
- Resistor dan kapasitor
- Breadboard atau papan kinerja.
Modul ADC 8-bit ADC0804 Saluran Tunggal:
Sebelum kita melangkah lebih jauh, mari kita pelajari tentang IC ADC0804 ini dan cara menggunakannya dengan raspberry pi. ADC0804 adalah IC 8-bit saluran tunggal, yang berarti dapat membaca satu nilai ADC dan memetakannya ke data digital 8-bit. Data digital 8 bit ini dapat dibaca oleh Raspberry Pi, sehingga nilainya menjadi 0-255 karena 2 ^ 8 adalah 256. Seperti terlihat pada pinout IC di bawah ini, pin DB0 ke DB7 digunakan untuk membaca digital tersebut. nilai-nilai.
Sekarang hal penting lainnya di sini adalah, ADC0804 beroperasi pada 5V sehingga memberikan keluaran dalam sinyal logika 5V. Dalam output 8 pin (mewakili 8 bit), setiap pin menyediakan output + 5V untuk mewakili logika '1'. Jadi masalahnya adalah logika PI adalah + 3.3v, jadi Anda tidak dapat memberikan logika + 5V ke pin GPIO + 3.3V dari PI. Jika Anda memberikan + 5V ke pin GPIO PI mana pun, papan akan rusak.
Jadi untuk menurunkan level logika dari + 5V, kita akan menggunakan rangkaian pembagi tegangan. Kami telah membahas Rangkaian Pembagi Tegangan sebelumnya melihat ke dalamnya untuk klarifikasi lebih lanjut. Yang akan kami lakukan adalah, kami menggunakan dua resistor untuk membagi logika + 5V menjadi logika 2 * 2.5V. Jadi setelah pembagian kita akan memberikan logika + 2.5v ke Raspberry Pi. Jadi, setiap kali logika '1' disajikan oleh ADC0804, kita akan melihat + 2.5V pada Pin PI GPIO, bukan + 5V. Pelajari lebih lanjut tentang ADC di sini: Pengantar ADC0804.
Berikut gambar Modul ADC menggunakan ADC0804 yang telah kami bangun di Perf Board:
Diagram Sirkuit dan Penjelasan:
Diagram rangkaian lengkap untuk menghubungkan Sensor Flex dengan Raspberry Pi ditunjukkan di bawah ini. Penjelasannya adalah sebagai berikut.
Ini raspberry pi sensor fleksibel sirkuit mungkin tampaknya menjadi sedikit rumit dengan banyak kabel, tetapi jika Anda melihat lebih dekat sebagian besar kabel yang langsung terhubung dari LCD dan 8-bit data pin ke pi Raspberry. Tabel berikut akan membantu Anda saat membuat dan memverifikasi koneksi.
Nama pin |
Nomor Pin Raspberry |
Nama Raspberry Pi GPIO |
LCD Vss |
Pin 4 |
Tanah |
LCD Vdd |
Pin 6 |
Vcc (+ 5V) |
LCD Vee |
Pin 4 |
Tanah |
LCD Rs |
Pin 38 |
GPIO 20 |
LCD RW |
Pin 39 |
Tanah |
LCD E |
Pin 40 |
GPIO 21 |
LCD D4 |
Pin 3 |
GPIO 2 |
LCD D5 |
Pin 5 |
GPIO 3 |
LCD D6 |
Pin 7 |
GPIO 4 |
LCD D7 |
Pin 11 |
GPIO 17 |
ADC0804 Vcc |
Pin 2 |
Vcc (+ 5V) |
ADC0804 B0 |
Pin 19 (melalui 5.1K) |
GPIO 10 |
ADC0804 B1 |
Pin 21 (melalui 5.1K) |
GPIO 9 |
ADC0804 B2 |
Pin 23 (melalui 5.1K) |
GPIO 11 |
ADC0804 B3 |
Pin 29 (melalui 5.1K) |
GPIO 5 |
ADC0804 B4 |
Pin 31 (melalui 5.1K) |
GPIO 6 |
ADC0804 B5 |
Pin 33 (melalui 5.1K) |
GPIO 13 |
ADC0804 B6 |
Pin 35 (melalui 5.1K) |
GPIO 19 |
ADC0804 B7 |
Pin 37 (melalui 5.1K) |
GPIO 26 |
ADC0804 WR / INTR |
Pin 15 |
GPIO 22 |
Anda dapat menggunakan gambar berikut untuk menentukan nomor pin sejak Raspberry.
Seperti semua modul ADC, IC ADC0804 juga membutuhkan sinyal clock untuk beroperasi, untungnya IC ini memiliki sumber clock internal, jadi kita tinggal menambahkan rangkaian RC ke pin CLK in dan CLK R seperti yang ditunjukkan pada rangkaian. Kami telah menggunakan nilai 10K dan 105pf, tetapi kami dapat menggunakan nilai apa pun yang mendekati seperti 1uf, 0.1uf, 0.01uf juga harus berfungsi.
Kemudian untuk menghubungkan sensor Flex kita telah menggunakan rangkaian pembagi potensial menggunakan resistor 100K. Karena sensor Flex dibengkokkan, resistansi yang melewatinya akan bervariasi dan begitu juga dengan potensi penurunan pada resistor. Penurunan ini diukur dengan IC ADC0804 dan data 8-bit dihasilkan sesuai dengan itu.
Periksa proyek lain yang terkait dengan Sensor Flex:
- Antarmuka Sensor Fleksibel dengan Mikrokontroler AVR
- Kontroler Game Angry Bird berbasis Arduino menggunakan Flex Sensor
- Kontrol Motor Servo dengan Sensor Fleksibel
- Menghasilkan Nada dengan Mengetuk Jari menggunakan Arduino
Memprogram Raspberry Pi:
Setelah kita selesai dengan koneksi, kita harus membaca status 8-bit ini menggunakan Raspberry Pi dan mengubahnya menjadi Desimal sehingga kita dapat memanfaatkannya. Program untuk melakukan hal yang sama dan menampilkan nilai yang dihasilkan pada layar LCD diberikan di akhir halaman ini. Selanjutnya kode tersebut dijelaskan menjadi jung-jung kecil di bawah ini.
Kami membutuhkan perpustakaan LCD untuk menghubungkan LCD dengan Pi. Untuk ini kami menggunakan pustaka yang dikembangkan oleh shubham yang akan membantu kami untuk antarmuka layar LCD 16 * 2 dengan Pi dalam mode empat kabel. Juga kita membutuhkan perpustakaan untuk memanfaatkan waktu dan pin GPIO Pi.
Catatan : lcd.py harus diunduh dari sini, dan ditempatkan di direktori yang sama di mana program ini disimpan. Baru setelah itu kode akan dikompilasi.
import lcd #Impor perpustakaan LCD oleh [email protected] waktu impor #Impor waktu impor RPi.GPIO sebagai GPIO #GPIO akan direferensikan sebagai GPIO saja
The definisi LCD pin ditugaskan untuk variabel seperti yang ditunjukkan di bawah ini. Perhatikan bahwa nomor ini adalah nomor pin GPIO dan bukan nomor pin sebenarnya. Anda dapat menggunakan tabel di atas untuk membandingkan nomor GPIO dengan nomor pin. Biner array akan menyertakan semua nomor pin data dan bit array akan menyimpan nilai yang dihasilkan dari semua pin GPIO.
#LCD definisi pin D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 biner = (10,9,11,5,6,13,19,26) # Susunan nomor pin terhubung ke DB0- Bit DB7 = #menghasilkan nilai data 8-bit
Sekarang, kita harus menentukan pin input dan output. Tujuh pin data akan menjadi pin input dan pin pemicu (RST dan INTR) akan menjadi pin output. Kita dapat membaca nilai data 8-bit dari pin masukan hanya jika kita memicu pin keluaran tinggi untuk waktu tertentu sesuai dengan lembar data. Karena kita telah menyatakan pin biner dalam binarys berbagai kita dapat menggunakan untuk loop untuk deklarasi seperti yang ditunjukkan di bawah ini.
untuk biner dalam biner: GPIO.setup (binary, GPIO.IN) #Semua pin biner adalah pin input #Trigger pin GPIO.setup (22, GPIO.OUT) #WR dan pin INTR adalah output
Sekarang menggunakan perintah perpustakaan LCD kita dapat menginisialisasi modul LCD dan menampilkan pesan intro kecil seperti yang ditunjukkan di bawah ini.
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) #Intro Message mylcd.Print ("Flex Sensor with") mylcd.setCursor (2,1) mylcd.Print ("Raspberry Pi ") time.sleep (2) mylcd.clear ()
Di dalam while loop yang tak terbatas, kita mulai membaca nilai biner yang mengubahnya menjadi desimal dan memperbarui hasilnya pada LCD. Seperti yang dikatakan sebelumnya sebelum kita membaca nilai ADC kita harus membuat pin pemicu menjadi tinggi untuk waktu tertentu untuk mengaktifkan konversi ADC. Ini dilakukan dengan menggunakan baris berikut.
GPIO.output (22, 1) #Turn ON Trigger time.sleep (0.1) GPIO.output (22, 0) #Turn OFF Trigger
Sekarang, kita harus membaca 8-data pin dan memperbarui hasilnya dalam bits array. Untuk melakukan ini kami menggunakan for loop untuk membandingkan setiap pin input dengan True dan False. Jika benar array bit masing-masing akan dibuat sebagai 1 lain itu akan dibuat sebagai 0. Ini semua data 8-bit akan dibuat 0 dan 1 masing-masing nilai dibaca.
#Baca pin input dan perbarui hasil dalam larik bit untuk i dalam range (8): if (GPIO.input (binarys) == True): bits = 1 if (GPIO.input (binarys) == False): bits = 0
Setelah kita memperbarui larik bits, kita harus mengubah larik ini menjadi nilai desimal. Ini tidak lain adalah konversi biner ke desimal. Untuk data biner 8-bit 2 ^ 8 adalah 256. Jadi kita akan mendapatkan data desimal dari 0 sampai 255. Dalam python, operator "**" digunakan untuk mencari pangkat dari nilai apapun. Karena bit dimulai dengan MSB, kita mengalikannya dengan 2 ^ (7-posisi). Dengan cara ini kita dapat mengubah semua nilai biner menjadi data desimal dan kemudian menampilkannya pada LCD
# hitung nilai desimal menggunakan larik bit untuk i dalam rentang (8): desimal = desimal + (bit * (2 ** (7-i)))
Setelah kita mengetahui nilai desimalnya, mudah untuk menghitung nilai tegangan. Kita tinggal mengalikannya dengan 19,63. Karena untuk 5VADC 8-bit setiap bit merupakan analogi 19,3 milli volt. Nilai tegangan yang dihasilkan adalah nilai tegangan yang muncul di pin Vin + dan Vin- pada IC ADC0804.
# hitung nilai tegangan Tegangan = desimal * 19.63 * 0.001 # satu unit adalah 19.3mV
Dengan menggunakan nilai tegangan kita dapat menentukan bagaimana sensor fleksibel telah dibengkokkan dan ke arah mana ia telah dibengkokkan. Pada baris di bawah ini saya baru saja membandingkan nilai tegangan baca dengan nilai tegangan yang telah ditentukan untuk menunjukkan posisi sensor Flex pada layar LCD.
#compare voltase dan status tampilan sensor mylcd.setCursor (1,1) if (Voltage> 3.8): mylcd.Print ("Bent Forward") elif (Voltage <3.5): mylcd.Print ("Bent Backward") lain: mylcd.Print ("Stabil")
Demikian pula Anda dapat menggunakan nilai tegangan untuk melakukan tugas apa pun yang Anda inginkan agar dilakukan oleh Raspberry Pi.
Menampilkan nilai Sensor Fleksibel pada LCD menggunakan Raspberry Pi:
Pengerjaan proyek ini sangat sederhana. Tetapi pastikan Anda telah mengunduh file header lcd.py dan telah meletakkannya di direktori yang sama di mana program Anda saat ini ada. Kemudian buat koneksi yang ditunjukkan dalam diagram sirkuit menggunakan papan tempat memotong roti atau papan kinerja dan jalankan program di bawah ini di Pi Anda dan Anda harus membuatnya berfungsi. Pengaturan Anda akan terlihat seperti ini di bawah ini.
Seperti yang ditunjukkan LCD akan menampilkan nilai Desimal, nilai tegangan dan posisi sensor. Cukup tekuk sensor ke depan atau ke belakang dan Anda harus dapat melihat tegangan dan nilai desimal semakin bervariasi, juga teks status akan ditampilkan. Anda dapat menghubungkan sensor apa pun dan melihat Tegangan di atasnya semakin bervariasi.
Kerja lengkap dari tutorial dapat ditemukan di video yang diberikan di bawah ini. Harap Anda memahami proyek tersebut dan menikmati membangun sesuatu yang serupa. Jika Anda ragu, tinggalkan di bagian komentar atau di forum dan saya akan mencoba sebaik mungkin untuk menjawabnya.