- ADC0804 dan Raspberry Pi:
- Komponen yang Diperlukan:
- Penjelasan Litar:
- Penjelasan Pengaturcaraan:
- Bekerja:
Raspberry Pi adalah papan berasaskan pemproses seni bina ARM yang direka untuk jurutera elektronik dan penggemar hobi. PI adalah salah satu platform pembangunan projek yang paling dipercayai di luar sana sekarang. Dengan kelajuan pemproses yang lebih tinggi dan RAM 1 GB, PI dapat digunakan untuk banyak projek berprofil tinggi seperti pemprosesan Imej dan Internet Perkara.
Untuk melakukan projek berprofil tinggi, seseorang perlu memahami fungsi asas PI. Kami akan merangkumi semua fungsi asas Raspberry Pi dalam tutorial ini. Dalam setiap tutorial kita akan membincangkan salah satu fungsi PI. Menjelang Siri Tutorial Raspberry Pi ini, anda akan dapat membuat projek berprofil tinggi sendiri. Baca tutorial di bawah:
- Bermula dengan Raspberry Pi
- Konfigurasi Pi Raspberry
- LED Berkelip
- Memadankan Butang Raspberry Pi
- Generasi Raspberry Pi PWM
- Mengawal Motor DC menggunakan Raspberry Pi
- Kawalan Motor Stepper dengan Raspberry Pi
- Daftar Antarmuka Shift dengan Raspberry Pi
Dalam tutorial ini, kita akan Interface cip ADC (Analog ke Digital Conversion) ke Raspberry Pi. Kami tahu semua parameter analog, bermaksud terdapat perbezaan yang berterusan sepanjang masa. Katakan untuk suhu bilik, suhu bilik berbeza dengan masa yang berterusan. Suhu ini dibekalkan dengan nombor perpuluhan. Tetapi dalam dunia digital, tidak ada nombor perpuluhan, jadi kita perlu menukar nilai Analog ke nilai Digital. Proses penukaran ini dilakukan dengan teknik ADC. Ketahui lebih lanjut mengenai ADC di sini: Pengenalan kepada ADC0804
ADC0804 dan Raspberry Pi:
Pengawal biasa mempunyai saluran ADC tetapi untuk PI tidak ada saluran ADC yang disediakan secara dalaman. Oleh itu, jika kita mahu menghubungkan antara sensor analog, kita memerlukan unit penukaran ADC. Oleh itu, untuk tujuan tersebut kita akan pergi ke Interface ADC0804 dengan Raspberry Pi.
ADC0804 adalah cip yang direka untuk menukar isyarat analog menjadi data digital 8 bit. Cip ini adalah salah satu siri ADC yang popular. Ini adalah unit penukaran 8bit, jadi kami mempunyai nilai atau 0 hingga 255 nilai. Dengan voltan pengukuran maksimum 5V, kita akan mempunyai perubahan untuk setiap 19.5mV. Berikut adalah Pinout ADC0804:
Satu lagi perkara penting di sini ialah, ADC0804 beroperasi pada 5V dan dengan itu memberikan output dalam isyarat logik 5V. Dalam output 8 pin (mewakili 8 bit), setiap pin memberikan output + 5V untuk mewakili logik'1 '. Jadi masalahnya ialah logik PI adalah + 3.3v, jadi anda tidak dapat memberikan logik + 5V ke pin GPIO + 3.3V PI. Sekiranya anda memberi + 5V kepada mana-mana pin GPIO PI, papan akan rosak.
Jadi untuk turun ke tahap logik dari + 5V, kita akan menggunakan litar pembahagi voltan. Kami telah membincangkan Voltage Divider Circuit sebelum ini untuk memperjelasnya. Apa yang akan kami lakukan ialah, kami menggunakan dua perintang untuk membahagikan logik + 5V menjadi logik 2 * 2.5V. Oleh itu, selepas pembahagian, kami akan memberikan logik + 2.5v kepada PI. Jadi, setiap kali logik '1' dikemukakan oleh ADC0804 kita akan melihat + 2.5V di PI GPIO Pin, bukannya + 5V.
Ketahui lebih lanjut mengenai GPIO Pin Raspberry Pi di sini dan ikuti tutorial kami sebelumnya.
Komponen yang Diperlukan:
Di sini kita menggunakan Raspberry Pi 2 Model B dengan OS Raspbian Jessie. Semua keperluan asas Perkakasan dan Perisian dibincangkan sebelumnya, anda boleh mencarinya dalam Pengenalan Raspberry Pi, selain daripada yang kami perlukan:
- Pin penyambung
- Resistor 220Ω atau 1KΩ (17 keping)
- Periuk 10K
- Kapasitor 0.1µF (2 keping)
- ADC0804 IC
- Papan Roti
Penjelasan Litar:
Ia berfungsi pada voltan bekalan + 5v dan dapat mengukur julat voltan berubah dalam julat 0-5V.
The sambungan untuk antara muka ADC0804 untuk Raspberry PI, ditunjukkan dalam rajah litar di atas.
ADC selalu mempunyai banyak bunyi, kebisingan ini dapat mempengaruhi prestasi, jadi kami menggunakan kapasitor 0.1uF untuk Penapisan Kebisingan. Tanpa ini akan terdapat banyak turun naik pada output.
Cip ini berfungsi pada jam pengayun RC (Resistor-Capacitor). Seperti yang ditunjukkan dalam rajah litar, C2 dan R20 membentuk Jam. Perkara penting yang perlu diingat di sini ialah kapasitor C2 boleh ditukar menjadi nilai yang lebih rendah untuk kadar penukaran ADC yang lebih tinggi. Tetapi dengan kelajuan yang lebih tinggi akan ada penurunan ketepatan. Oleh itu, jika aplikasi memerlukan ketepatan yang lebih tinggi, pilih kapasitor dengan nilai yang lebih tinggi dan untuk kelajuan yang lebih tinggi pilih kapasitor dengan nilai yang lebih rendah.
Penjelasan Pengaturcaraan:
Setelah semuanya disambungkan mengikut rajah litar, kita dapat menghidupkan PI untuk menulis program dalam PYHTON.
Kami akan membincangkan beberapa arahan yang akan kami gunakan dalam program PYHTON, Kami akan mengimport fail GPIO dari perpustakaan, fungsi di bawah ini membolehkan kita memprogram pin GPIO PI. Kami juga mengganti nama menjadi "GPIO" menjadi "IO", jadi dalam program setiap kali kami ingin merujuk pada pin GPIO, kami akan menggunakan kata 'IO'.
import RPi.GPIO sebagai IO
Kadang-kadang, apabila pin GPIO, yang cuba kita gunakan, mungkin melakukan beberapa fungsi lain. Sekiranya demikian, kami akan menerima amaran semasa menjalankan program. Perintah di bawah ini memberitahu PI untuk mengabaikan amaran dan meneruskan program.
Peringatan IO (Salah)
Kita boleh merujuk pin GPIO PI, sama ada dengan nombor pin di papan atau dengan nombor fungsinya. Seperti 'PIN 29' di papan adalah 'GPIO5'. Oleh itu, kami katakan di sini sama ada kami akan mewakili pin di sini dengan '29' atau '5'.
IO.setmode (IO.BCM)
Kami menetapkan 8 pin sebagai pin input. Kami akan mengesan 8 bit data ADC dengan pin ini.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Sekiranya keadaan di pendakap benar, pernyataan di dalam gelung akan dilaksanakan sekali. Oleh itu, jika pin GPIO 19 naik tinggi, maka pernyataan di dalam gelung IF akan dilaksanakan sekali. Sekiranya pin GPIO 19 tidak naik tinggi, maka pernyataan di dalam gelung IF tidak akan dilaksanakan.
jika (IO.input (19) == Betul):
Perintah di bawah digunakan sebagai loop selamanya, dengan perintah ini pernyataan di dalam gelung ini akan dilaksanakan secara berterusan.
Semasa 1:
Penjelasan lebih lanjut mengenai Program diberikan dalam Bahagian Kod di Bawah.
Bekerja:
Setelah menulis program dan melaksanakannya, anda akan melihat '0'di skrin. '0' bermaksud 0 volt pada input.
Sekiranya kita menyesuaikan periuk 10K yang disambungkan ke cip, kita akan melihat perubahan nilai pada skrin. Nilai di skrin terus bergulir secara berterusan, ini adalah nilai digital yang dibaca oleh PI.
Katakan jika kita mendapat pot ke titik tengah, kita mempunyai + 2.5V pada input ADC0804. Oleh itu, kita melihat 128 di skrin seperti gambar di bawah.
Untuk nilai analog + 5V, kita akan mempunyai 255.
Oleh itu, dengan mengubah periuk kita mengubah voltan dari 0 hingga + 5V pada input ADC0804. Dengan nilai baca PI ini dari 0-255. Nilai dicetak di skrin.
Oleh itu, kami mempunyai Interfaced ADC0804 ke Raspberry Pi.