Kategori: Litar mikropengawal
Bilangan pandangan: 18998
Komen pada artikel: 0

Menyambung sensor analog ke Arduino, membaca sensor

 

Sensor digunakan untuk mengukur kuantiti, keadaan persekitaran, dan tindak balas kepada perubahan dalam negeri dan jawatan. Pada output mereka, terdapat kedua-dua isyarat digital yang terdiri daripada satu dan nol, dan analog yang terdiri daripada jumlah tegasan yang tak terhingga dalam selang tertentu.


Mengenai sensor

Oleh itu, sensor dibahagikan kepada dua kumpulan:

1. Digital.

2. Analog.

Untuk membaca nilai digital, kedua-dua input digital dan analog mikropengawal boleh digunakan, dalam kes kami Avr di papan Arduino. Sensor analog mesti dihubungkan melalui penukar analog-ke-digital (ADC). ATMEGA328, ia dipasang di kebanyakan papan ARDUINO (lebih lanjut mengenai ini terdapat artikel di laman web ini), mengandungi dalam litarnya yang terbina dalam ADC. Sebanyak 6 input analog tersedia untuk dipilih.

Jika ini tidak mencukupi untuk anda, anda boleh menggunakan tambahan ADC luaran untuk menyambung kepada input digital, tetapi ini akan merumitkan kod dan menambah jumlahnya, kerana penambahan algoritma pemprosesan dan kawalan ADC. Topik pengubah analog-ke-digital cukup lebar sehingga anda dapat membuat artikel atau siklus yang terpisah tentangnya. Lebih mudah menggunakan papan dengan sebilangan besar mereka atau multiplexer. Mari lihat cara menyambung sensor analog ke Arduino.

Menyambung sensor analog ke Arduino, membaca bacaan sensor

Skim umum sensor analog dan sambungan mereka

Sensor itu juga boleh menjadi potensiometer konvensional. Malah, ia adalah sensor kedudukan rintangan, atas prinsip ini, mereka mengawal tahap cecair, sudut kecenderungan, pembukaan sesuatu. Ia boleh disambungkan ke arduino dalam dua cara.

Skim umum sensor analog dan sambungan mereka

Litar di atas membolehkan anda membaca nilai dari 0 hingga 1023, kerana fakta bahawa semua voltan jatuh pada potensiometer. Prinsip pembahagi voltan berfungsi di sini, di mana-mana kedudukan enjin, voltan diedarkan secara linear pada permukaan lapisan rintangan atau pada skala logaritmik (bergantung pada potensiometer) yang sebahagian daripada voltan yang kekal di antara keluaran slider (gelongsor kontak) dan tanah (gnd) mendapat input. Di papan roti, sambungan ini kelihatan seperti ini:

Rangka pendawaian untuk sensor analog

Pilihan kedua disambungkan mengikut litar divider resistif klasik, di sini voltan di titik rintangan maksimum potensiometer bergantung kepada rintangan perintang atas (dalam Rajah R2).

Pembahagi Resistif Klasik

Secara umumnya, pembahagi rintangan adalah sangat penting bukan sahaja dalam bidang kerja dengan mikrokontroler, tetapi juga dalam bidang elektronik secara umum. Di bawah ini anda melihat skim umum, serta nisbah yang dikira untuk menentukan nilai voltan pada lengan bawah.

Skim dan hubungan reka bentuk untuk menentukan nilai voltan pada lengan bawah

Sambungan sedemikian adalah ciri bukan sahaja untuk potensiometer, tetapi untuk semua sensor analog, kerana kebanyakannya bekerja pada prinsip perubahan rintangan (konduktivitas) di bawah pengaruh sumber luaran - suhu, cahaya, radiasi pelbagai jenis, dan sebagainya.

Berikut adalah gambarajah sambungan yang paling mudah termistor, pada dasarnya, termometer boleh dibuat atas dasarnya. Tetapi ketepatan bacaannya bergantung kepada ketepatan jadual penukaran rintangan terhadap suhu, kestabilan sumber kuasa dan pekali perubahan rintangan (termasuk perintang lengan atas) di bawah pengaruh suhu yang sama. Ini dapat diminimumkan dengan memilih rintangan optimum, kuasa dan arus operasi mereka.

Rajah gambarajah yang paling mudah untuk termistor

Dengan cara yang sama, anda boleh menyambung photodiod, phototransistors sebagai sensor cahaya. Photoelectronics telah menemui aplikasi dalam sensor yang menentukan jarak dan kehadiran objek, salah satu yang akan kami pertimbangkan kemudian.

Photoresistor

Angka ini menunjukkan sambungan photoresistor ke arduino.

Skema sambungan photoresistor ke arduino

Bahagian perisian

Sebelum saya bercakap tentang menghubungkan sensor tertentu, saya memutuskan untuk mempertimbangkan perisian untuk memprosesnya. Semua isyarat analog dibaca dari port yang sama menggunakan arahan analogRead ().Perlu diingat bahawa Arduino UNO dan model lain dengan 168 dan 328 atmega mempunyai 10-bit ADC. Ini bermakna bahawa mikrokontroler melihat isyarat masukan sebagai nombor dari 0 hingga 1023 - sejumlah 1024 nilai. Jika anda menganggap bahawa voltan bekalan adalah 5 volt, maka kepekaan input:

5/1024 = 0.0048 V atau 4.8 mV

Iaitu, dengan nilai 0 pada input, voltan adalah 0, dan dengan nilai 10 pada input - 48 mV.

Dalam sesetengah kes, untuk menukar nilai-nilai ke tahap yang dikehendaki (sebagai contoh, untuk menghantar kepada output PWM), 1024 dibahagikan dengan nombor, dan hasil daripada pembahagian, maksimum yang diperlukan harus diperolehi. Fungsi peta (sumber, rendah, tinggi, tinggi, tinggi, rendah) berfungsi lebih jelas, di mana:

  • nombor rendah sebelum penukaran oleh fungsi;

  • vch - atas;

  • VCh - bilangan yang lebih rendah selepas diproses oleh fungsi (pada output);

  • VHV - atas.

Aplikasi praktikal untuk menukar fungsi kepada nilai input untuk penghantaran ke PWM (nilai maksimum ialah 255, untuk menukar data dari ADC kepada output PWM, 1024 dibahagikan dengan 4):

Pilihan 1 - bahagian.

int x;

x = analogRead (pot) / 4;

// nombor dari 0 hingga 1023 akan diterima

// bahagikannya dengan 4, kita mendapat integer dari 0 hingga 255 analogWrite (led, x);

Pilihan 2 - fungsi MAP - membuka lebih banyak peluang, tetapi lebih banyak lagi pada masa itu.

kekosongan gelung ()

{int val = analogRead (0);

val = map (val, 0, 1023, 0, 255);

analogWrite (dipimpin, val); }

Atau lebih pendek:

analogWrite (diterajui, peta (val, 0, 1023, 0, 255))

Tidak semua sensor mempunyai 5 volt pada output, iaitu. nombor 1024 tidak selalu mudah untuk membahagikan untuk mendapatkan 256 yang sama untuk PWM (atau yang lain). Ini boleh menjadi 2 dan 2.5 volt dan nilai-nilai lain, apabila isyarat maksimum akan, sebagai contoh, 500.


Sensor analog popular

Pandangan umum sensor untuk arduino dan sambungannya ditunjukkan di bawah:

Bagaimana hendak menyambung sensor analog

Biasanya terdapat tiga output, mungkin ada keempat - digital, tetapi ini adalah ciri.

Penjelasan mengenai penetapan output sensor analog:

  • G - tolak kuasa, bas biasa, tanah. Boleh ditetapkan sebagai GND, "-";

  • Kuasa V - ditambah. Boleh dilambangkan sebagai Vcc, Vtg, "+";

  • S - isyarat keluaran, notasi mungkin - Keluar, SGN, Vout, tanda.

Pemula untuk mempelajari cara membaca nilai-nilai sensor memilih projek-projek semua jenis termometer. Sensor tersebut berada dalam reka bentuk digital, contohnya DS18B20, dan analog - semuanya adalah jenis mikrosirkuit seperti LM35, TMP35, TMP36 dan lain-lain. Berikut adalah contoh reka bentuk modular seperti sensor di papan.

Sensor Analog pada TMP36

Ketepatan sensor adalah dari 0.5 hingga 2 darjah. Dibina pada cip TMP36, seperti kebanyakan analognya, nilai keluarannya adalah 10 mV / ° C. Pada 0 °, isyarat keluaran adalah 0 V, dan kemudian 10 mV setiap 1 darjah ditambah. Iaitu, pada 25.5 darjah, voltan adalah 0.255 V, penyimpangan adalah mungkin dalam kesilapan dan pemanasan sendiri kristal IC (sehingga 0.1 ° C).


Bergantung pada mikrosirkuit yang digunakan, julat pengukuran dan voltan keluaran mungkin berbeza, lihat jadual.

Julat suhu dan tegasan output sensor

Walau bagaimanapun, untuk termometer yang berkualiti tinggi, anda tidak boleh hanya membaca nilai-nilai dan memaparkannya pada penunjuk LCD atau port bersiri untuk komunikasi dengan PC, untuk kestabilan isyarat keluaran keseluruhan sistem secara keseluruhan, anda perlu rata-rata nilai dari sensor, analog dan digital, dalam had tertentu, sementara tanpa merosakkan kelajuan dan ketepatan mereka (ada had kepada segala-galanya). Ini disebabkan oleh kehadiran bunyi bising, gangguan, hubungan yang tidak stabil (untuk sensor rintangan berdasarkan potensiometer, lihat perenjuran sensor peringkat air atau bahan api di dalam tangki kereta).

Kod untuk bekerja dengan kebanyakan sensor agak besar, jadi saya tidak akan memberikan mereka semua, mereka boleh dengan mudah dijumpai di rangkaian dengan permintaan "sensor + nama Arduino".

Sensor seterusnya yang jurutera robotik arduino sering digunakan ialah sensor garis. Ia berdasarkan pada peranti fotografi, jenis phototransistor.

Sensor talian

Dengan bantuan mereka, robot yang bergerak sepanjang garis (digunakan dalam pengeluaran automatik untuk menyampaikan bahagian) menentukan kehadiran jalur putih atau hitam. Di sebelah kanan angka, dua peranti yang serupa dengan LED dapat dilihat. Salah satunya adalah LED, ia boleh memancarkan spektrum yang tidak kelihatan, dan yang kedua adalah phototransistor.

Cahaya dicerminkan dari permukaan jika gelap - phototransistor tidak menerima aliran yang dicerminkan, tetapi jika cahaya menerima dan ia terbuka. Algoritma yang anda masukkan ke dalam proses mikrokontroler adalah isyarat dan menentukan ketepatan dan arah gerakan dan membetulkannya. Tetikus optik, yang mana anda paling mungkin memegang di tangan anda semasa membaca garis-garis ini, juga disusun.

Saya akan menambah sensor yang berdekatan - sensor jarak dari Sharp, juga digunakan dalam robotik, serta dalam keadaan memantau kedudukan objek dalam ruang (dengan kesilapan TX yang sama).

Sensor jarak jauh

Ia berfungsi dengan prinsip yang sama. Perpustakaan dan contoh lakaran dan projek dengan mereka tersedia dalam jumlah besar di laman web yang khusus untuk Arduino.


Kesimpulannya

Penggunaan sensor analog sangat mudah, dan dengan bahasa pengaturcaraan Arduino yang mudah dipelajari, anda dengan cepat mempelajari peranti mudah. Pendekatan ini mempunyai kelemahan yang ketara berbanding rakan sejawat digital. Ini disebabkan variasi parameter yang luas, ini menyebabkan masalah apabila menggantikan sensor. Anda mungkin perlu mengedit kod sumber program.

Benar, peranti analog individu menggabungkan sumber voltan rujukan dan penstabil semasa, yang mempunyai kesan positif terhadap produk akhir dan kebolehulangan peranti dalam pengeluaran besar-besaran. Semua masalah boleh dielakkan dengan menggunakan peranti digital.

Litar digital sedemikian mengurangkan keperluan untuk menyesuaikan dan menyesuaikan litar selepas pemasangan. Ini memberi anda peluang untuk memasang beberapa peranti yang sama pada kod sumber yang sama, butiran yang akan memberi isyarat yang sama, dengan sensor rintangan ini jarang berlaku.

Lihat juga di laman web kami:Menyambungkan peranti luaran ke Arduino

Lihat juga di i.electricianexp.com:

  • Apakah perbezaan antara sensor analog dan digital
  • Mengukur suhu dan kelembapan pada Arduino - pilihan cara
  • Bagaimana penukaran isyarat analog kepada digital
  • Sensor yang paling popular untuk Arduino
  • Bagaimana sensor talian diatur dan berfungsi

  •