Taula de continguts:

El pin Arduino AREF: 6 passos
El pin Arduino AREF: 6 passos

Vídeo: El pin Arduino AREF: 6 passos

Vídeo: El pin Arduino AREF: 6 passos
Vídeo: 6 Аналоговый аналог ARDUINO. 2024, Desembre
Anonim
El pin AREF d'Arduino
El pin AREF d'Arduino

En aquest tutorial veurem com podeu mesurar tensions més petites amb una major precisió mitjançant els pins d'entrada analògics del vostre Arduino o placa compatible junt amb el pin AREF. Tanmateix, primer farem una revisió per posar-vos al dia. Llegiu aquesta publicació completament abans de treballar per primera vegada amb AREF.

Pas 1: revisió

Revisió
Revisió

Recordeu que podeu utilitzar la funció Arduino analogRead () per mesurar la tensió d’un corrent elèctric procedent de sensors i així successivament mitjançant un dels pins d’entrada analògics. El valor retornat de analogRead () estaria entre zero i 1023, amb zero representant zero volts i 1023 representant la tensió de funcionament de la placa Arduino en ús.

I quan diem la tensió de funcionament: aquesta és la tensió disponible per a l’Arduino després dels circuits d’alimentació. Per exemple, si teniu una placa Arduino Uno típica i l'executeu des de la presa USB, és cert, hi ha 5V disponibles a la placa des de la presa USB de l'ordinador o del concentrador, però el voltatge es redueix lleugerament a mesura que el corrent es roda al voltant del al microcontrolador, o bé la font USB no està a l’alçada.

Això es pot demostrar fàcilment connectant un Arduino Uno a USB i posant un multímetre per mesurar la tensió a través dels pins de 5V i GND. Algunes taules tornaran a 4,8 V, d’altres més altes però per sota dels 5V. Per tant, si necessiteu precisió, alimenteu la placa des d’una font d’alimentació externa mitjançant la presa de corrent continu o el pin Vin, com ara 9 V CC. Aleshores, després d’això passa pel circuit del regulador de potència, tindreu un bonic 5V, per exemple la imatge.

Això és important, ja que la precisió de qualsevol valor analogRead () es veurà afectada per la manca de 5 V. Si no teniu cap opció, podeu fer servir algunes matemàtiques al vostre esbós per compensar la caiguda de tensió. Per exemple, si el vostre voltatge és de 4,8 V, el rang analogRead () de 0 ~ 1023 es relacionarà amb 0 ~ 4,8 V i no de 0 ~ 5 V. Pot semblar trivial, però, si utilitzeu un sensor que retorna un valor com a tensió (per exemple, el sensor de temperatura TMP36), el valor calculat serà incorrecte. Per motius de precisió, utilitzeu una font d'alimentació externa.

Pas 2: per què AnalogRead () retorna un valor entre 0 i 1023?

Per què AnalogRead () retorna un valor entre 0 i 1023?
Per què AnalogRead () retorna un valor entre 0 i 1023?

Això es deu a la resolució de l'ADC. La resolució (per a aquest article) és el grau en què es pot representar numèricament alguna cosa. Com més gran sigui la resolució, més precisió es pot representar amb alguna cosa. Mesurem la resolució en termes del nombre de bits de resolució.

Per exemple, una resolució d'1 bit només permetria dos valors (dos a la potència d'un): zero i un. Una resolució de 2 bits permetria quatre (dos a la potència de dos) valors: zero, un, dos i tres. Si intentéssim mesurar un rang de cinc volts amb una resolució de dos bits i el voltatge mesurat fos de quatre volts, el nostre ADC retornaria un valor numèric de 3, ja que quatre volts cauen entre 3,75 i 5V. És més fàcil imaginar-ho amb la imatge.

Així doncs, amb el nostre exemple ADC amb resolució de 2 bits, només pot representar la tensió amb quatre possibles valors resultants. Si la tensió d'entrada cau entre 0 i 1,25, l'ADC retorna el número 0; si el voltatge cau entre 1,25 i 2,5, l'ADC retorna un valor numèric d'1. Amb el rang ADC del nostre Arduino de 0 a 1023 (tenim 1024 valors possibles) o 2 fins a la potència de 10. Per tant, els nostres Arduinos tenen un ADC amb una resolució de 10 bits.

Pas 3: Què és AREF?

Per resumir una història llarga, quan el vostre Arduino fa una lectura analògica, compara el voltatge mesurat al pin analògic que s’utilitza amb el que es coneix com a voltatge de referència. En un ús analògic normal de lectura, el voltatge de referència és el voltatge de funcionament de la placa.

Per a les plaques Arduino més populars com les plaques Uno, Mega, Duemilanove i Leonardo / Yún, la tensió de funcionament és de 5V. Si teniu una placa Arduino Due, el voltatge de funcionament és de 3,3 V. Si teniu alguna cosa més, consulteu la pàgina del producte Arduino o pregunteu al proveïdor del tauler.

Per tant, si teniu un voltatge de referència de 5V, cada unitat retornada per analogRead () es valora en 0,00488 V. (Es calcula dividint 1024 en 5V). I si volem mesurar tensions entre 0 i 2 o 0 i 4,6? Com sabria l’ADC quin és el 100% del nostre rang de tensió?

I aquí rau la raó del pin AREF. AREF significa referència analògica. Ens permet alimentar l'Arduino amb una tensió de referència d'una font d'alimentació externa. Per exemple, si volem mesurar tensions amb un rang màxim de 3,3 V, alimentaríem un bonic 3,3 V al pin AREF, potser a partir d’un regulador de voltatge IC.

Llavors, cada pas de l'ADC representaria al voltant de 3,22 milivolts (divideix 1024 en 3,3). Tingueu en compte que el voltatge de referència més baix que podeu tenir és d’1,1V. Hi ha dues formes d’AREF: interna i externa, així que comprovem-les.

Pas 4: AREF extern

Un AREF extern és on subministreu un voltatge de referència extern a la placa Arduino. Això pot provenir d’una font d’alimentació regulada o, si necessiteu 3,3 V, podeu obtenir-lo des del pin de 3,3 V de l’Arduino. Si feu servir una font d’alimentació externa, assegureu-vos de connectar el GND al pin GND de l’Arduino. O si utilitzeu la font de 3,3 V d’Arduno: només cal que executeu un pont des del pin de 3,3 V al pin AREF.

Per activar l'AREF extern, utilitzeu el següent a la configuració nul·la ():

analogReference (EXTERN); // utilitzeu AREF per a la tensió de referència

Això estableix la tensió de referència a qualsevol que hàgiu connectat al pin AREF (que, per descomptat, tindrà una tensió entre 1,1 V i el voltatge de funcionament de la placa. Nota molt important) quan utilitzeu una referència de tensió externa, heu d’establir la referència analògica a EXTERN abans d’utilitzar analogRead (). D’aquesta manera, s’evitarà un curtcircuit del voltatge de referència intern actiu i del pin AREF, que poden danyar el microcontrolador de la placa. Si cal per a la vostra aplicació, podeu tornar a la tensió de funcionament de la placa per a AREF (és a dir, tornar a la normalitat) amb el següent

analogReference (DEFAULT);

Ara per demostrar AREF extern a la feina. Utilitzant un AREF de 3,3 V, l’esbós següent mesura el voltatge d’A0 i mostra el percentatge de l’AREF total i el voltatge calculat:

#include "LiquidCrystal.h"

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

int analoginput = 0; // el nostre pin analògic

int analogamount = 0; // emmagatzema el percentatge flotant del valor entrant = 0; // s’utilitza per emmagatzemar el nostre valor percentual de tensió flotant = 0; // s’utilitza per emmagatzemar el valor de la tensió

configuració nul·la ()

{lcd.begin (16, 2); analogReference (EXTERN); // utilitzeu AREF per a la tensió de referència}

bucle buit ()

{lcd.clear (); analogamount = analogRead (analoginput); percentatge = (quantitat analògica / 1024,00) * 100; voltatge = quantitat analògica * 3,222; // en milivolts lcd.setCursor (0, 0); lcd.print ("% d'AREF:"); lcd.print (percentatge, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (voltatge, 2); retard (250); }

Els resultats de l'esbós anterior es mostren al vídeo.

Pas 5: AREF intern

Els microcontroladors de les nostres plaques Arduino també poden generar una tensió de referència interna d’1,1 V i ho podem utilitzar per al treball AREF. Simplement utilitzeu la línia:

analogReference (INTERN);

Per a les mega taules Arduino, utilitzeu:

analogReference (INTERNAL1V1);

a la configuració nul·la () i ja no. Si teniu un Arduino Mega, també hi ha disponible una tensió de referència de 2,56 V que s’activa amb:

analogReference (INTERNAL2V56);

Finalment, abans de decidir-vos pels resultats del vostre pin AREF, calibreu sempre les lectures amb un multímetre bo conegut.

Conclusió

La funció AREF us proporciona més flexibilitat en mesurar senyals analògics.

Aquest article us el proporciona pmdway.com: tot per a fabricants i aficionats a l'electrònica, amb lliurament gratuït a tot el món.

Recomanat: