top of page
ENTRADES ANALÒGIQUES
Sensor_Analogic.png
digital.gif

Els sensors analògics reben una tensió del dispositiu IoT (3.3V en el cas de l'ESP32), i retornen una tensió proporcional al valor de la magnitud que mesuren (temperatura, velocitat, ...) pel pin a que estan connectats. Aquest senyal és analògic, i pren diferents valors en el temps (entre 0 i 3.3V), a diferència del senyal digital que és binari: 0V (0) - 3.3V (1).

Però els microcontroladors són digitals, només funcionen amb 0 i 1. Per tant els valors dels sensors analògics s'han de convertir en senyals digitals abans de poder processar-los. Aixó es diu conversió analògic digital (ADC).

L'ESP32 té dos convertidors ADC que transformen les entrades analògiques en aproximacions digitals del seu valor. 

Entrades analògiques

Els pins ADC de l'ESP32 tenen una resolució de 12 bits. Aquests pins llegeixen tensió d'entrada entre 0 i 3,3 V, i després retornen un valor proporcional entre 0 (correspon a 0V) i 4095 (correspon a 3.3V).

2 ^ 12 = 4096 -> Esmicula els 3.3V en 4096 parts. Per tant la seva apreciació és de 0,8 mV

valor ADC = 

Tensió Analògica

3.3 V

x 4095

ESP32-ADC-Pins.png

Tot i què en teoria l'ESP32 té 15 pins ADC, només m'ha funcionat l'ADC1: els pins 32, 33, 34, 35, 36, 39.

La resta de pins fan que a la consola de Thonny es mostri el missatge: ValueError: invalid Pin for ADC

LLEGIM ELS VALORS D'UN POTENCIÒMETRE

El potenciòmetre és un comandament analògic. En girar el seu piu modifiquem el valor de la seva resistència i per tant, el de la tensió d'entrada pel pin a que està connectat (recordeu Ohm: V = I·R)

L'exemple utilitza un potenciòmetre connectat al pin 32 (i un LED connectat al pin 13)

pot_c.jpg
Pot1.PNG

Per llegir una entrada analògica cal:

  • ​Importar la classe ADC, a més de la classe Pin de la llibreria machine

  • ​Crear  un objecte ADC especificant el núm de pin

  • ​Llegir el valor del senyal analògic amb el mètode .read( )

Pot_C1.PNG
ThonnyFons.png

from machine import Pin, ADC      # importa les classes Pin i ADC de la llibreria machine

from time import sleep            # importa la classe sleep de la llibreria time per poder definir pauses

sensor = ADC (Pin (32))           # crea l'objecte ADC que he anomenat sensor al pin 32 

while True:

    print (sensor.read())         # mostra la lectura del senyal al pin del sensor

    sleep (0.01)                  # pausa de 0.01 s (100 ms)

PROPOSTES
bottom of page