Eines de l'usuari

Eines del lloc


tutorials:arduino:00_arduino_basic:15_analogiques

Entrades i Sortides analògiques

Les plaques electròniques, ja siguin Arduino, PLCs, … tenen dos tipus de entrades sortides.

1. Les digitals o l'estat es 0 o 1, LOW o HIGH. Serveixen per engegar o aturar carregues elèctriques.

2. Les analògiques que poden tenir diversos valors, per exemple, un byte de 0 a 255. En aquests cas la entrada o al sortida pot tenir qualsevol valor entre 0 i 255. Serveixen per mesurar. I per regular una sortida.

Les sortides donen un valor de 0 a 5V. En una proporció de 0 a 255(2⁸). (Es a dir 255=5V)

Les entrades mesuren un valor de 0 a 5V. En una proporció de 0 a 1023(2¹⁰). (Es a dir 1023=5V)

Exemple01 si la sortida es de 156, quants Volts tindrà la sortida?

Entrades analògiques

Les entrades analògiques mesuren un voltatge entre 0 i 5V, però el valor numèric que obtenim es un valor entre 0 i 1023 [(2¹⁰) 10 bits de definició]

Estan marcades al arduino amb els valors A0, A1, A2, A3, A4, A5, A6.

Per entendre el funcionament de les entrades analògique construirem un petit tester que mesurara la caiguda de tensió en resistències connectades en serie. Si posem 5 resistències iguals i alimentem amb 5V, tinguem un volt en cadascuna.

Exercici01: En compte posar totes les resistencies en seri posar dos en paral·lel i tornar a fer el calculs i les mesures.

Mesures Analògiques

L'ús o l'aplicació més comuna de les entrades analògiques es la mesura de magnituds físiques com ara la temperatura, la pressió, la llum, el pH, humitat…

LDR Light dependent Resistor. Una resistència que mesura varia en funció del llum que li arribi.

El muntatge el mateix que en el cas de les resistències serie, però substituirem l'ultima per el LDR.

Exercici01: Enviar el valor de la mesura(0-1023) pel port serie. I comprovar quin es el màxim(potem enllumenar-la amb el flash del mòbil) el mínim(tapar-la) amb el dit, mig llum ambient…

Exercici02: Si la llum baixa d'un cert nivell que engegui un LED d'advertència no hi prou llum per treballar.

Sortides analògiques

analogWrite(pin, valor) on valor es un numero entre 0 i 255.

Només tenen la funció de sortida analògica les que tenen el símbol ~ els (3, 5, 6, 9, 10, 11)

El programa més simple sense variables ni altre tipus d'automatització, només una sortida analògica(~) amb un valor de 0 a 255.

void setup () {
 pinMode(9,OUTPUT);
}
void loop(){
 analogWrite(9, 180);
}

El típic programa fading o dimmer(també hi es a fitxer/exemples/analog/fading)

int brillo = 0;
int variacio = 5;
int led = 9;


void setup () 
{
pinMode(led, OUTPUT); 
}

void loop ()
{
analogWrite(led, brillo);

// Incremente la variable brillo de 5 en 5 
brillo = brillo + variacio;

// brillo es 0 o 255 ha de pujar i baixar (inversió)
if (brillo == 0 || brillo == 255)
variacio = -variacio; //La variacio s'invirteix
delay (30); //Tiemps de increment en el brillo
}

PWM

Com aconsegueix la electrònica baixar i pujar la lluminositat del LED(fading)?

Amb la tècnica PWM(Pulse Width Modulation). Que permet convertir sortida digital amb analògica fàcilment. En realitat la tensió de la sortida es 0 o 5V com la digital, però amb una ona quadrada de freqüencia fixa(500Hz)(1/500=0,002s). El que canvia es el temps que està a 5V.

En realitat el LED s'engega i s'apaga cada 0,002s (2ms), però nosaltres no ho notem.

Igual que regulem el LED podem regular la velocitat d'un motor de corrent continu.

Exercici01: Un polsador puja la intensitat del LED, i altre polsador la baixa.

Exercici02: En compte de pujar i baixar el valor de la intensitat del LED amb polsadors, enviarem un byte pel port serie amb la intensitat que ha de tenir.

solucio_ex2.ino
int sortidaAnalogica=5;
void setup() {
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(8)==LOW) sortidaAnalogica=sortidaAnalogica+2;
if (digitalRead(9)==LOW) sortidaAnalogica=sortidaAnalogica-2;
 
 
if (Serial.available()>0){
  //sortidaAnalogica=Serial.read();
  sortidaAnalogica=Serial.parseInt();
}
 
if (sortidaAnalogica<0)sortidaAnalogica=0;
if (sortidaAnalogica>20)sortidaAnalogica=20;
analogWrite(10, sortidaAnalogica);
Serial.println(sortidaAnalogica, DEC);
delay(50);
}
provar amb el LED VERD i VERMELL veure les diferencies 

Exercic03:Fer una sortida PWM, però amb delays. El valor de la sortida el podeu enviar com a l'exercici anterior. Pot utilitzar-se qualsevol sortida, no necessàriament una amb ~.

NOTA:

void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);
  delayMicroseconds(100); // Approximately 10% duty cycle @ 1KHz
  digitalWrite(13, LOW);
  delayMicroseconds(1000 - 100);
}

Exercici04 el mateix però sense delay, amb la funcio millis() i comparacions.

tutorials/arduino/00_arduino_basic/15_analogiques.txt · Darrera modificació: 2018/12/19 12:30 per crevert