Cuprins:

Pinul Arduino AREF: 6 pași
Pinul Arduino AREF: 6 pași

Video: Pinul Arduino AREF: 6 pași

Video: Pinul Arduino AREF: 6 pași
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Iulie
Anonim
Pinul Arduino AREF
Pinul Arduino AREF

În acest tutorial vom analiza modul în care puteți măsura tensiuni mai mici cu o precizie mai mare utilizând pinii de intrare analogici de pe Arduino sau placa compatibilă împreună cu pinul AREF. Cu toate acestea, mai întâi vom face o revizuire pentru a vă pune la curent. Vă rugăm să citiți în totalitate această postare înainte de a lucra prima dată cu AREF.

Pasul 1: Revizuirea

Revizuire!
Revizuire!

Vă puteți aminti că puteți utiliza funcția Arduino analogRead () pentru a măsura tensiunea unui curent electric de la senzori și așa mai departe folosind unul dintre pinii de intrare analogici. Valoarea returnată de la analogRead () ar fi între zero și 1023, zero reprezentând zero volți și 1023 reprezentând tensiunea de funcționare a plăcii Arduino în uz.

Și când spunem tensiunea de funcționare - aceasta este tensiunea disponibilă pentru Arduino după circuitul de alimentare. De exemplu, dacă aveți o placă tipică Arduino Uno și o rulați de la priza USB - sigur, există 5V disponibile pe placă de la priza USB de pe computer sau hub - dar tensiunea este redusă ușor pe măsură ce curentul se învârte în jurul circuit la microcontroler - sau sursa USB pur și simplu nu este la zero.

Acest lucru poate fi ușor demonstrat prin conectarea unui Arduino Uno la USB și prin punerea unui multimetru setat pentru a măsura tensiunea pe pinii 5V și GND. Unele plăci vor reveni până la 4,8 V, altele mai mari, dar încă sub 5V. Deci, dacă aveți nevoie de precizie, alimentați placa de la o sursă de alimentare externă prin priza DC sau pinul Vin - cum ar fi 9V DC. Apoi, după ce trece prin circuitul regulatorului de putere, veți avea un 5V frumos, de exemplu imaginea.

Acest lucru este important deoarece acuratețea oricăror valori analogRead () va fi afectată de faptul că nu aveți un adevărat 5 V. Dacă nu aveți nicio opțiune, puteți utiliza unele matematici în schița dvs. pentru a compensa scăderea tensiunii. De exemplu, dacă tensiunea dvs. este de 4,8V - intervalul analogRead () de la 0 ~ 1023 se va referi la 0 ~ 4,8V și nu la 0 ~ 5V. Acest lucru poate suna banal, totuși, dacă utilizați un senzor care returnează o valoare ca tensiune (de exemplu, senzorul de temperatură TMP36) - valoarea calculată va fi greșită. Deci, din motive de precizie, utilizați o sursă de alimentare externă.

Pasul 2: De ce AnalogRead () returnează o valoare între 0 și 1023?

De ce AnalogRead () returnează o valoare între 0 și 1023?
De ce AnalogRead () returnează o valoare între 0 și 1023?

Acest lucru se datorează rezoluției ADC. Rezoluția (pentru acest articol) este gradul în care ceva poate fi reprezentat numeric. Cu cât rezoluția este mai mare, cu atât este mai mare precizia cu care poate fi reprezentat ceva. Măsurăm rezoluția în termenii numărului de biți de rezoluție.

De exemplu, o rezoluție de 1 bit ar permite doar două valori (două la puterea unuia) - zero și una. O rezoluție de 2 biți ar permite patru (două la puterea a două) valori - zero, una, două și trei. Dacă am încerca să măsurăm o gamă de cinci volți cu o rezoluție de doi biți, iar tensiunea măsurată să fie de patru volți, ADC-ul nostru ar returna o valoare numerică de 3 - întrucât patru volți se încadrează între 3,75 și 5V. Este mai ușor să vă imaginați acest lucru cu imaginea.

Deci, cu exemplul nostru ADC cu rezoluție pe 2 biți, poate reprezenta tensiunea doar cu patru valori posibile rezultate. Dacă tensiunea de intrare scade între 0 și 1,25, ADC returnează 0 numeric; dacă tensiunea scade între 1,25 și 2,5, ADC returnează o valoare numerică 1. Și așa mai departe. Cu gama ADC Arduino de 0 ~ 1023 - avem 1024 de valori posibile - sau 2 până la puterea de 10. Arduino-urile noastre au un ADC cu o rezoluție de 10 biți.

Pasul 3: Ce este AREF?

Pentru a scurta o poveste lungă, atunci când Arduino face o citire analogică, compară tensiunea măsurată la pinul analog utilizat cu ceea ce este cunoscut sub numele de tensiune de referință. În utilizarea analogică normală, tensiunea de referință este tensiunea de funcționare a plăcii.

Pentru plăcile Arduino mai populare, cum ar fi plăcile Uno, Mega, Duemilanove și Leonardo / Yún, tensiunea de funcționare de 5V. Dacă aveți o placă Arduino Due, tensiunea de funcționare este de 3,3V. Dacă aveți altceva - verificați pagina produsului Arduino sau întrebați furnizorul de bord.

Deci, dacă aveți o tensiune de referință de 5V, fiecare unitate returnată de analogRead () este evaluată la 0,00488 V. (Aceasta se calculează împărțind 1024 în 5V). Ce se întâmplă dacă vrem să măsurăm tensiunile între 0 și 2 sau 0 și 4.6? Cum ar ști ADC care este 100% din gama noastră de tensiune?

Și aici stă motivul pinului AREF. AREF înseamnă referință analogică. Ne permite să alimentăm Arduino o tensiune de referință de la o sursă de alimentare externă. De exemplu, dacă dorim să măsurăm tensiunile cu un interval maxim de 3,3V, am introduce un 3,3V neted în pinul AREF - poate de la un regulator de tensiune IC.

Apoi fiecare pas al ADC ar reprezenta în jur de 3,22 milivolți (împarte 1024 în 3.3). Rețineți că cea mai mică tensiune de referință pe care o puteți avea este de 1,1V. Există două forme de AREF - intern și extern, așa că să le verificăm.

Pasul 4: AREF extern

Un AREF extern este locul în care furnizați o tensiune de referință externă către placa Arduino. Acest lucru poate proveni dintr-o sursă de alimentare reglementată sau, dacă aveți nevoie de 3,3 V, îl puteți obține de la pinul Arduino de 3,3 V. Dacă utilizați o sursă de alimentare externă, asigurați-vă că conectați GND la pinul GND al Arduino. Sau dacă utilizați sursa de 3,3 V a Arduno - rulați doar un jumper de la pinul de 3,3 V la pinul AREF.

Pentru a activa AREF-ul extern, utilizați următoarele în configurarea nulă ():

analogReference (EXTERN); // utilizați AREF pentru tensiunea de referință

Aceasta setează tensiunea de referință la orice ați conectat la pinul AREF - care, desigur, va avea o tensiune între 1.1V și tensiunea de funcționare a plăcii. Notă foarte importantă - atunci când utilizați o referință de tensiune externă, trebuie să setați referința analogică la EXTERN înainte de a utiliza analogRead (). Acest lucru vă va împiedica să scurtcircuitați tensiunea de referință internă activă și pinul AREF, care pot deteriora microcontrolerul de pe placă. Dacă este necesar pentru aplicația dvs., puteți reveni la tensiunea de funcționare a plăcii pentru AREF (adică - la normal) cu următoarele

analogReference (DEFAULT);

Acum, pentru a demonstra AREF extern la locul de muncă. Folosind un AREF de 3,3V, următoarea schiță măsoară tensiunea de la A0 și afișează procentul din AREF total și tensiunea calculată:

#include „LiquidCrystal.h”

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int analoginput = 0; // pinul nostru analogic

int analogamount = 0; // stochează procentul float al valorii primite = 0; // folosit pentru a stoca valoarea procentuală a tensiunii plutitoare = 0; // folosit pentru a stoca valoarea tensiunii

configurare nulă ()

{lcd.begin (16, 2); analogReference (EXTERN); // utilizați AREF pentru tensiunea de referință}

bucla nulă ()

{lcd.clear (); analogamount = analogRead (analoginput); procent = (cantitate analogică / 1024,00) * 100; tensiune = cantitate analogică * 3,222; // în milivolți lcd.setCursor (0, 0); lcd.print ("% din AREF:"); lcd.print (procent, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (tensiune, 2); întârziere (250); }

Rezultatele schitei de mai sus sunt prezentate în videoclip.

Pasul 5: AREF intern

Microcontrolerele de pe plăcile noastre Arduino pot genera, de asemenea, o tensiune de referință internă de 1,1V și o putem folosi pentru munca AREF. Pur și simplu utilizați linia:

analogReference (INTERN);

Pentru plăcile Arduino Mega, utilizați:

analogReference (INTERNAL1V1);

în configurarea nulă () și sunteți oprit. Dacă aveți un Arduino Mega, există și o tensiune de referință de 2,56V disponibilă, care este activată cu:

analogReference (INTERNAL2V56);

În cele din urmă - înainte de a stabili rezultatele de la pinul dvs. AREF, calibrați întotdeauna citirile cu un multimetru bun cunoscut.

Concluzie

Funcția AREF vă oferă mai multă flexibilitate la măsurarea semnalelor analogice.

Această postare ți-a fost adusă de pmdway.com - totul pentru producătorii și pasionații de electronice, cu livrare gratuită în toată lumea.

Recomandat: