Daftar Isi:
- Langkah 1: Revisi
- Langkah 2: Mengapa AnalogRead() Mengembalikan Nilai Antara 0 dan 1023?
- Langkah 3: Jadi Apa itu AREF?
- Langkah 4: AREF Eksternal
- Langkah 5: AREF internal
Video: Pin Arduino AREF: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Dalam tutorial ini kita akan melihat bagaimana Anda dapat mengukur tegangan yang lebih kecil dengan akurasi yang lebih besar menggunakan pin input analog pada Arduino Anda atau papan yang kompatibel bersama dengan pin AREF. Namun pertama-tama kami akan melakukan beberapa revisi untuk mempercepat Anda. Silakan baca posting ini sepenuhnya sebelum bekerja dengan AREF pertama kali.
Langkah 1: Revisi
Anda mungkin ingat bahwa Anda dapat menggunakan fungsi Arduino analogRead() untuk mengukur tegangan arus listrik dari sensor dan sebagainya menggunakan salah satu pin input analog. Nilai yang dikembalikan dari analogRead() akan berada di antara nol hingga 1023, dengan nol mewakili nol volt dan 1023 mewakili tegangan operasi papan Arduino yang digunakan.
Dan ketika kita mengatakan tegangan operasi – ini adalah tegangan yang tersedia untuk Arduino setelah rangkaian catu daya. Misalnya, jika Anda memiliki papan Arduino Uno biasa dan menjalankannya dari soket USB – tentu saja, ada 5V yang tersedia untuk papan dari soket USB di komputer atau hub Anda – tetapi tegangannya sedikit berkurang saat arus berputar di sekitar sirkuit ke mikrokontroler – atau sumber USB tidak siap.
Ini dapat dengan mudah ditunjukkan dengan menghubungkan Arduino Uno ke USB dan meletakkan set multimeter untuk mengukur tegangan pada pin 5V dan GND. Beberapa papan akan kembali serendah 4,8 V, beberapa lebih tinggi tetapi masih di bawah 5V. Jadi, jika Anda menginginkan akurasi, berikan daya pada papan Anda dari catu daya eksternal melalui soket DC atau pin Vin – seperti 9V DC. Kemudian setelah itu melewati rangkaian power regulator anda akan mendapatkan tegangan 5V yang bagus, misal gambar.
Ini penting karena keakuratan nilai analogRead() akan dipengaruhi oleh tidak adanya 5 V yang sebenarnya. Jika Anda tidak memiliki opsi apa pun, Anda dapat menggunakan beberapa matematika dalam sketsa Anda untuk mengkompensasi penurunan tegangan. Misalnya, jika tegangan Anda 4,8V – rentang analogRead() 0~1023 akan berhubungan dengan 0~4,8V dan bukan 0~5V. Ini mungkin terdengar sepele, namun jika Anda menggunakan sensor yang mengembalikan nilai sebagai tegangan (misalnya sensor suhu TMP36) – nilai yang dihitung akan salah. Jadi untuk kepentingan akurasi, gunakan catu daya eksternal.
Langkah 2: Mengapa AnalogRead() Mengembalikan Nilai Antara 0 dan 1023?
Ini karena resolusi ADC. Resolusi (untuk artikel ini) adalah sejauh mana sesuatu dapat direpresentasikan secara numerik. Semakin tinggi resolusinya, semakin besar akurasi yang dapat digunakan untuk merepresentasikan sesuatu. Kami mengukur resolusi dalam hal jumlah bit resolusi.
Misalnya, resolusi 1-bit hanya akan mengizinkan dua (dua pangkat satu) nilai – nol dan satu. Resolusi 2-bit akan memungkinkan empat (dua pangkat dua) nilai – nol, satu, dua dan tiga. Jika kami mencoba mengukur rentang lima volt dengan resolusi dua bit, dan voltase terukur adalah empat volt, ADC kami akan mengembalikan nilai numerik 3 – karena empat volt turun antara 3,75 dan 5V. Lebih mudah membayangkan ini dengan gambar.
Jadi dengan contoh ADC kami dengan resolusi 2-bit, itu hanya dapat mewakili tegangan dengan empat kemungkinan nilai yang dihasilkan. Jika tegangan input turun antara 0 dan 1,25, ADC mengembalikan angka 0; jika tegangan turun antara 1,25 dan 2,5, ADC mengembalikan nilai numerik 1. Dan seterusnya. Dengan rentang ADC Arduino kami dari 0~1023 – kami memiliki 1024 kemungkinan nilai – atau 2 pangkat 10. Jadi Arduino kami memiliki ADC dengan resolusi 10-bit.
Langkah 3: Jadi Apa itu AREF?
Singkatnya, ketika Arduino Anda mengambil pembacaan analog, ia membandingkan tegangan yang diukur pada pin analog yang digunakan dengan apa yang dikenal sebagai tegangan referensi. Dalam penggunaan analogRead normal, tegangan referensi adalah tegangan operasi papan.
Untuk papan Arduino yang lebih populer seperti papan Uno, Mega, Duemilanove dan Leonardo/Yún, tegangan operasi 5V. Jika Anda memiliki papan Arduino Due, tegangan operasinya adalah 3.3V. Jika Anda memiliki sesuatu yang lain – periksa halaman produk Arduino atau tanyakan kepada pemasok papan Anda.
Jadi jika Anda memiliki tegangan referensi 5V, setiap unit yang dikembalikan oleh analogRead() bernilai 0,00488 V. (Ini dihitung dengan membagi 1024 menjadi 5V). Bagaimana jika kita ingin mengukur tegangan antara 0 dan 2, atau 0 dan 4,6? Bagaimana ADC tahu berapa 100% dari rentang tegangan kita?
Dan disitulah letak alasan pin AREF. AREF berarti Referensi Analog. Hal ini memungkinkan kita untuk memberi makan Arduino tegangan referensi dari catu daya eksternal. Misalnya, jika kita ingin mengukur tegangan dengan jangkauan maksimum 3.3V, kita akan memasukkan 3.3V halus yang bagus ke dalam pin AREF – mungkin dari IC pengatur tegangan.
Kemudian setiap langkah ADC akan mewakili sekitar 3,22 milivolt (bagi 1024 menjadi 3,3). Perhatikan bahwa tegangan referensi terendah yang dapat Anda miliki adalah 1.1V. Ada dua bentuk AREF – internal dan eksternal, jadi mari kita periksa.
Langkah 4: AREF Eksternal
AREF eksternal adalah tempat Anda memasok tegangan referensi eksternal ke papan Arduino. Ini bisa berasal dari catu daya yang diatur, atau jika Anda membutuhkan 3.3V, Anda bisa mendapatkannya dari pin 3.3V Arduino. Jika Anda menggunakan catu daya eksternal, pastikan untuk menghubungkan GND ke pin GND Arduino. Atau jika Anda menggunakan sumber 3.3V Arduno – jalankan saja jumper dari pin 3.3V ke pin AREF.
Untuk mengaktifkan AREF eksternal, gunakan yang berikut ini di void setup():
analogReferensi(EKSTERNAL); // gunakan AREF untuk tegangan referensi
Ini menetapkan tegangan referensi ke apa pun yang telah Anda sambungkan ke pin AREF – yang tentu saja akan memiliki tegangan antara 1.1V dan tegangan operasi papan. Catatan yang sangat penting – saat menggunakan referensi tegangan eksternal, Anda harus menyetel referensi analog ke EKSTERNAL sebelum menggunakan analogRead(). Ini akan mencegah Anda dari korslet tegangan referensi internal aktif dan pin AREF, yang dapat merusak mikrokontroler di papan. Jika perlu untuk aplikasi Anda, Anda dapat kembali ke tegangan operasi papan untuk AREF (yaitu – kembali normal) dengan berikut ini
analogReference(DEFAULT);
Sekarang untuk mendemonstrasikan AREF eksternal sedang bekerja. Menggunakan AREF 3.3V, sketsa berikut mengukur tegangan dari A0 dan menampilkan persentase total AREF dan tegangan yang dihitung:
#sertakan "LiquidCrystal.h"
LiquidCrystal lcd (8, 9, 4, 5, 6, 7);
int masukan analog = 0; // pin analog kita
int jumlah analog = 0; // menyimpan persentase float nilai masuk = 0; // digunakan untuk menyimpan nilai persentase tegangan float =0; // digunakan untuk menyimpan nilai tegangan
batalkan pengaturan()
{ lcd.begin(16, 2); analogReferensi(EKSTERNAL); // gunakan AREF untuk tegangan referensi }
lingkaran kosong()
{ lcd.clear(); analogamount=analogRead(masukan analog); persentase=(jumlah analog/1024.00)*100; tegangan=jumlah analog*3.222; // dalam milivolt lcd.setCursor(0, 0); lcd.print("% dari AREF: "); lcd.print(persentase, 2); lcd.setCursor(0, 1); lcd.print("A0 (mV): "); lcd.println(tegangan, 2); penundaan (250); }
Hasil sketsa di atas ditampilkan dalam video.
Langkah 5: AREF internal
Mikrokontroler pada papan Arduino kami juga dapat menghasilkan tegangan referensi internal 1.1V dan kami dapat menggunakan ini untuk pekerjaan AREF. Cukup gunakan baris:
analogReferensi(INTERNAL);
Untuk papan Arduino Mega, gunakan:
analogReferensi(INTERNAL1V1);
di void setup() dan Anda tidak aktif. Jika Anda memiliki Arduino Mega, tersedia juga tegangan referensi 2.56V yang diaktifkan dengan:
analogReference(INTERNAL2V56);
Terakhir – sebelum menentukan hasil dari pin AREF Anda, selalu kalibrasikan pembacaan terhadap multimeter yang dikenal baik.
Kesimpulan
Fungsi AREF memberi Anda lebih banyak fleksibilitas dengan mengukur sinyal analog.
Posting ini dipersembahkan oleh pmdway.com - semuanya untuk pembuat dan penggemar elektronik, dengan pengiriman gratis ke seluruh dunia.
Direkomendasikan:
Konektor ICSP untuk Arduino Nano Tanpa Solder Pin Header Tapi Pogo Pin: 7 Langkah
Konektor ICSP untuk Arduino Nano Tanpa Solder Pin Header Tapi Pogo Pin: Buat konektor ICSP untuk Arduino Nano tanpa solder pin header di papan tetapi Pogo Pin. Parts3×2 Pin Socket x1 - APitch 2.54mm Dupont Line Wire Female Pin Connector Perumahan Terminal x6 - BP75-E2 (Kepala Kerucut 1.3mm) Uji Musim Semi Probe Pogo Pin
Detektor Logam Pin Pointer Arduino DIY: 3 Langkah
Detektor Logam Penunjuk Pin Arduino DIY: Detektor logam tradisional dapat menemukan item yang terkubur dan memberi Anda lokasi kasar objek di bawah tanah Pinpointer memungkinkan Anda untuk menentukan lokasi objek, membuat lubang yang lebih kecil saat menggali, dan mengekstrak item . Juga, bisa
4 Digit 7 Segmen Menampilkan 14 Pin Dengan Arduino: 3 Langkah
Tampilan 4 Digit 7 Segmen 14 Pin Dengan Arduino: Selalu merupakan ide yang baik untuk menguji apakah suatu perangkat berfungsi dengan baik atau tidak jika komponen tersebut memiliki jumlah pin yang sangat banyak. Dalam proyek ini, saya telah menguji tampilan 4 digit 7 segmen 14 pin saya. Semua 7 segmen akan menampilkan 0 hingga 9 secara bersamaan
Lego Arduino Nano Tanpa Perumahan Pin Header: 3 Langkah
Lego Arduino Nano Tanpa Header Pins Housing: Saya membutuhkan housing untuk Arduino Nano saya yang tidak memiliki pin header yang disolder. Saya ingin itu bagus dan kecil
Soket ISP 6 Pin hingga 8 Pin: 4 Langkah
ISP 6 Pin to 8 Pin Socket: Alasan utama saya membangun proyek ini adalah untuk memprogram ATTiny45, yang memiliki koneksi 8 pin, sedangkan USBtinyISP saya (dari Ladyada) hanya memiliki koneksi 10 pin dan 6 pin. Setelah mengintip di internet selama sekitar 3-4 minggu, saya tidak menemukan apa pun