EDUBSICA
4 E.S.O.
EDUBSICA. LA TARJETA
Esquema de la placa y sus componentes.
Pulsador
LEDs
E/S digitales
Conexin para
motores
PuenteH(ControlMotores)
Potencimetro
10K
Transistor NPN
TIP121 5A
LDR
+5V / GND
E/S analgicos
Circuitos de la Placa
El montaje en la placa de Arduino est conectada al pin2 y el pin7 queda libre con
un conector hembra para utilizarlo como entrada digital o como salida digital.
El montaje sobre la placa Arduino estn conectados en los pines: pin3, pin4 y pin5.
En la placa Arduino la
salida analgica (PWM)
est en el pin D6. El
funcionamiento prctico
de la seal PWM es que
activa y desactiva el
transistor (corte-saturacin) en perodos de tiempo que podemos
controlar. Est activacin y desactivacin, controlada por el
programa que tenemos en la placa Arduino, hace que la tensin
aplicada en el motor dc vari y podamos controlar la velocidad de
giro del motor.
El montaje en la placa Arduino tiene una conexin en el pin A0, para un
potencimetro de 10K y una resistencia de 100 ohmios.
En el pin A1 tiene una LDR en serie con una resistencia de 470 ohmios.
CAPTULO 1
ELECTRNICA ANALGICA
Aprenders
RESISTENCIAS
Montaje inicial
A comprobar con el
polmetro la
resistemcia, la cada
de tensin y la
corriente en un circuito
Ne c e s i t a s :
Placa arduino con
edubasica
PLaca protoboard
2 cables para
cableado en
protoboard
2 resistencias del valor
que quieras
Paso 1
Este es el nico paso que
realizars en este
ejercicio. Conecta los dos
cables tal y como muestra
la figura en el pulsador o
interruptor
/*
Conectaremos un conductor entre 5v y el pin 7 digital
*/
void setup() {
// Pin 3 tiene el led verde
pinMode(3, OUTPUT);
// Pin 7 comprobar si le entran o no 5 V
pinMode(7, INPUT);
}
Resultado
void loop() {
digitalWrite(3,digitalRead(7));
}
Ejercicio
Realiza el esquema elctrico equivalente al montaje que has realizado.
CADA DE
TENSIN
CORRIENTE
R1
R2
R3
Todas
Resistencias en serie
Resistencias en paralelo
Ejercicios
Rellena los valores de la siguiente tabla con tu montaje de 3
resistencias en serie. Usa el polmetro para medir los valores.
VALOR
NOMINAL
CADA DE
TENSIN
CORRIENTE
R1
R2
R3
Todas
CADA DE
TENSIN
CORRIENTE
R1
R2
Ejercicio
Calcula y compara los datos de las tres tablas de
manera terica usando la Ley de Ohm
R3
Todas
/*
Detectamos la variacion en la LDR
*/
int luz;
void setup() {
// Pin 3 tiene el led verde
pinMode(3, OUTPUT);
Serial.begin(9600);
}
void loop() {
luz= map(analogRead(1), 917, 1024, 0, 255);
analogWrite(3,luz);
//escribimos el valor obtenido por la resistencia para poder ajustarlo
mejor
Serial.print("valor analogico leido=");
Serial.println(analogRead(1));
delay (1000);
Ejercicio
La funcin map del programa asigna un valor mximo y un valor
mnimo a un rango dado.
As la funcin tal y como se plantea establece la transformacin del
rango .917 a 1024 a un valor entre 0 y 255.
917 es el valor mnimo que he obtenido de la resistencia y 1024 el
mximo, como el led verde podemos hacerlo brillar pasndole un
valor de entre 0 y 255, la solucin ha sido mapear el rango 917, 1024 a
0, 255 para en caso de obtener 917 de la resistencia el led verde se
apague.
Mira los valores de salida que te ofrece tu montaje y ajstalo
adecuadamente.
10
Diodos
Aprenders
El funcionamiento de
un diodo
La identificacin de
sus terminales
Su simbologa
Ne c e s i t a s :
Placa Arduino con
EduBsica
Placa protoboard
2 cables para
cableado en
protoboard y una
pinza de pruebas
Diodos
1 diodo led
1 resistencia de 200
Ohm (aprox.)
Pregunta 1 de 4
diferencia.
En el caso especfico de un diodo led la diferencia de potencial a
superar es de 07V a partir de ah conduce y por tanto se ilumina.
A. La A
B. La B
C. La C
D. La D
Tensin de ruptura
Tensin umbral
Comprobar
respuesta
12
13
14
Aprenders
Condensadores
El funcionamiento de
un condensador
Su simbologa
Ne c e s i t a s :
Placa arduino con
Edubsica
Placa protoboard
3 cables para
cableado en
protoboard
1 diodo led
1 resistencia de 1K
Ohm (aprox)
1 condensador de
1000 uF (aprox)
Condensadores
Dos conductores cualesquiera separados por un
aislante constituye un condensador . En casi
todas las aplicaciones prcticas cada conductor
se encuentra inicialmente descargado y al
conectarlos a una batera, mediante transferencia
de carga de la batera a los conductores, van
adquiriendo una cierta carga (dicho proceso se
denomina carga del condensador). En todo
15
Ejercicio
void loop() {
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(100);
}
16
17
TRANSISTORES
Aprenders
1. Las aplicaciones de
un transistor
2. Sus modos de
funcionamiento
3. Cmo conectarlo
4. A realizar circuitos
amplificadores
Ne c e s i t a r s
1. Arduino
2. EduBsica
3. Resistencias
Transistores
Ciertos dispositivos tecnolgicos necesitan una
corriente elctrica mayor que la que proporciona la
placa EduBsica y para conseguir una mayor
corriente se utiliza el transistor.
El transistor es sin duda el componente
electrnico ms importante. Est formado por 3
capas de material semiconductor, cada una con un
terminal para poder conectarlo a los circuitos. Los
materiales semiconductores se pueden comportar
como aislantes o conductores segn la energa que
reciban, de ah su versatilidad en el campo de la
electrnica. Los 3 terminales de los transistores son:
Colector: Entrada de corriente
Base: Entrada de corriente. Regula el
funcionamiento.
Emisor: Salida de corriente
18
APLICACIN PRCTICA I
Anota en la misma las tensiones en la resistencia de colector que has
medido en cada uno de los puntos y calcula mediante la ley de ohm las
corrientes de base y de colector que les corresponde en cada caso.
Una vez obtenidos todos los valores llevarlos a una grfica y trazar la
curva caracterstica IC = f(IB).
0,05 0,1
0,15 0,2
0,25 0,3
0,35 0,4
0,45 0,5
19
APLICACIN PRCTICA II
VBE
VCE
VRB
VRC
IC
IB
Luz mxima
grfica:
20
CAPTULO 2
ELECTRNICA DIGITAL
Aprenders
LGEBRA DE BOOLE
Conocers las
propiedades del
lgebra de Boole
Obtener la 1 forma
cannica de una
tabla de verdad
Operar con
variables binarias.
Ne c e s i t a r s
Placa Arduino
Conceptos
Seal Analgica
Infinitos valores
22
Pregunta 1 de 6
Reloj de agujas
A. Analgico
B. Digital
Comprobar
respuesta
23
lgebras
Ejercicio
Todo lo que expresamos en lenguaje comn puede ser expresador
en lenguaje algebraico. Rellena la siguiente tabla
LENGUAJE COMN
LENGUAJE ALGEBRAICO
Un nmero cualquiera.
n+7
f-q
a^2
(b+c)/2
24
Ejercicio
Indica el nombre de cada elemento del circuito y qu corresponde a
cada uno (1/0)
NOMBRE
ESTADO
1
2
3
4
5
6
7
8
9
25
Montaje Inicial
Vamos a simular dos entradas lgicas con dos pulsadores, (pueden ser
conmutadores). En este ejemplo usaremos la funcin AND, de manera
que segn el estado de las 2 entradas obtendremos una seal de salida
(0 / 1) conforme a la tabla de verdad de la operacin.
Si te animas puedes montar el circuito t mismo en una protoboard
siguiendo este esquema:
26
- Ejercicio -
- Cdigo /*
Boole
Funcin AND con 2 variables
*/
27
Aprenders
Im
Forma cannica
Funciones
Plantear una tabla
de verdad segn los
estados de
diferentes sensores
(variables de
entrada).
Necesitars
Arduino
EduBsica
Servo
leds
ldr
pulsadores/
conmutadores
Funciones Lgicas
Uno de los aspectos que hacen tan interesantes
los circuitos digitales es que nos permiten
automatizar tareas o concentrar el
funcionamiento de otros circuitos electrnicos,
en un nico o varios chips.
Esto permite tener dispositivos de control para la
tarea especfica que se nos pueda imaginar, desde
28
Formas Cannicas
Tabla de Verdad:
Ejemplo
VARIABLES
ENTRADA
A
Funcin Cannica:
M(FC1) = * B + A *
Puertas Lgicas:
Necesitamos:
2 puertas NOT
2 puertas AND
1 puerta OR
29
FUNCIN
SALIDA
EJERCICIO
/*
Implementacin de Funcin lgica
*/
30
Aprenders
Alarma de vivienda
Necesitars
Arduino
EduBsica
Pulsador
protoboard
Cables para
protoboard
Alarma en vivienda
Gracias a la lgica programable, podemos
programar alarmas muy complejas y mucho ms
eficientes que las alarmas convencionales. Las
alarmas convencionales usan finales de carrera y
en definitiva interruptores que activan una
alarma.
En nuestro caso vamos a dotar a la alarma de
cierta lgica que nos proporcione mejores y ms
31
cmodos resultados.
Las posibilidades son ilimitadas y depende de tu
imaginacin .
En esta prctica y slo como ejemplo vamos a
suponer algunas cosas que si bien no tienen por
que ajustarse a la realidad si que sirven como
ejemplo para mostrar y dar a entender las
posibilidades de la alarma.
Suponemos:
delay(1000);
33
CAPTULO 3
CONTROL Y ROBTICA
Aprenders
Sensor de Distancia
El funcionamiento
de los emisores/
receptores de
infrarrojos.
Las aplicaciones de
medir distancias en
los sistemas
electrnicos y de
control.
A parametrizar
datos de entradas
de los sensores
Necesitars
EduBsica
Sensor Sharp
2Y0A21
Leds
Resistencias
Sharp GP2D12(infrarrojos)
Vamos a utilizar un sensor de infrarrojos
Sharp GP2D12, que nos permitir calcular
distancias a objetos.
Este sensor tiene un emisor y receptor de
infrarrojos. El receptor, dependiendo de la
distancia ofrece una salida de voltaje inversa (a
mayor voltaje, menor distancia).
Para calcular la distancia en centmetros a un
objeto, podemos usar un ajuste de mnimos
cuadrados. La relacin entre distancia <->voltaje
no es lineal, sino que sigue una hiprbola.
35
EJEMPLO
36
CDIGO
El cdigo se basa, por un lado en ir continuamente haciendo medidas
de distancia desde el sensor Sharp, despus hay que hacer la
conversin que antes hemos visto para pasar la entrada analgica a
centmetros, y por ltimo hacemos la comparacin con el valor que se
nos ha pedido (20 cm) para encender o no el led del pin 5
void setup(){
pinMode(led, OUTPUT);
}
37
38
Aprenders
ServoMotores
Qu es un
servomotor y qu
tipos hay.
Las aplicaciones en
el mundo de la
automtica y el
control por
ordenador de este
tipo de motores.
Control de motores
Necesitars
Servo
Arduino
EduBsica
Libreras y Uso
Arduino incluye una librera con
funciones para mover de una
manera sencilla un servo, lo
primero es introducir un include
con la librera al principio, luego
creamos el objeto (que ser el
nombre que usaremos en todo el
programa para cada servo que
queramos controlar) .
Por ltimo, asociamos el servo al
pin al que lo hemos conectado.
#include <Servo.h>
Servo myservo; // crea un objeto tipo servo para controlar el servo
int pos = 0;
// variable para almacenar la posicin del servo
void setup(){
myservo.attach(9); // asocia el servo al pin 9
}
void loop()
{
pos=0;
//A la derecha
myservo.write(pos); //damos la orden con los grados
delay(50);
// esperamos que el servo llegue a la posicin
pos=90;
//Centrado
myservo.write(pos); //damos la orden con los grados
delay(50);
pos=180;
//A la izquierda
myservo.write(pos); //damos la orden con los grados
delay(50);
}
Si queremos mejorar un poco el cdigo anterior, podemos utilizar un
for, que nos permite realizar una secuencia de acciones varias veces.
Utilizamos una variable como contador, en este caso es la misma
posicin (pos) , que se ir incrementando en 90 grados en cada
iteracin del bucle. En nuestro ejemplo se ejecuta 3 veces:
for (pos=0; pos<=180; pos+=90) {
myservo.write(pos); //orden con los grados en cada iteracin
Podemos utilizar
los pines
analgicos como
e/s digitales, del
pin 14 al 19.
Conexin del
servo al pin
analgico 5, pero
declarado como
digital en el 19
40
Tacmetro
Aprenders
A medir las
revoluciones por
minuto de un
elemento rotativo de
bajas revoluciones.
Como puede ser un
aerogenerador o un
tiovivo.
Necesitars
Arduino
Protoboard
Imn ligero y de
pequeo tamao
(similar a los que se
adhieren en las
neveras)
El tacmetro
RelReed.
Resistencia
10KOhm.
Cable para
protoboardoard.
Maqueta de
aerogenerador,
elctrico bien mediante una una placa solar o bien mediante una
pila en cada caso.
Montaje
Se ubica el rel Reed sobre la parte superior y el imn se pega a una
de las palas del aerogenerador, de forma que cuando pase la pala
por la parte superior del aerogenerador el imn y el rel queden
enfrentados de forma que el campo magntico del imn permita
cerrar los contactos del rel Reed, segn se aprecia en la imagen.
Las conexiones elctricas se realizarn con el apoyo de la placa protoboard segn el esquema que se adjunta. Se conecta la resistencia en
configuracin pull-down, es decir, cuando el imn est enfrentado al rel ste se cierra (ON) y conecta la entrada digital a +5 V. En
ausencia de imn el rel permanece abierto (OFF) y la entrada digital quedar conectada a masa (GND) a travs de la resistencia de 10K.
El programa, una vez configurados el pin 2 como entrada digital y la
comunicacin serie para poder monitorizar la salida, realiza de
forma cclica una lectura del puerto de entrada. Mediante una
Detalle del
conexionado
43
Programa:
El programa, una vez configurados el pin 2 como entrada digital y
la comunicacin serie para poder monitorizar la salida, realiza de
forma cclica una lectura del puerto de entrada. Mediante una
sentencia condicional comprueba si el estado ha cambiado. En el
caso de que el cambio sea a un nivel alto (HIGH) incrementa en
una unidad la variable que cuenta las vueltas. Con la instruccin
millis() se puede calcular el tiempo que trascurre en dar una vuelta
completa (tiempo_una_rev), por lo que mediante un sencillo
clculo podremos conocer la velocidad del rotor en revoluciones
por minuto (rpm).
Ejercicio:
Aadir el cdigo necesario al programa para que mientras el rel
est conectado (ON) el LED unido al pin 13 de la placa Arduino
permanezca encendido y se apague cuando los bornes del rel estn
desconectados a modo de intermitencia.
void loop() {
// Lee el estado del rele
estadoRele = digitalRead(releReedPin);
// Compara el estado del rele con el estado previo
if (estadoRele != ultimoEstadoRele) {
// Si el estado ha cambiado incrementa el contador
if (estadoRele == HIGH)
{
vueltas++;
tiempo_ahora =millis();
tiempo_una_rev = tiempo_ahora - tiempo_anterior;
rpm = 60000 / tiempo_una_rev; // 1 minuto = 60000 ms
Serial.println("Rele ON");
Serial.print("vuelta ");
Serial.println(vueltas);
Serial.print("Tiempo por revolucion: ");
Serial.println(tiempo_una_rev);
Serial.print("Revoluciones por minuto: ");
Serial.println(rpm);
}
else {
// Si el estado actual es LOW pasa de ON a OFF
Serial.println("Rele OFF");
tiempo_anterior = tiempo_ahora;
}
}
// Guarda el estado actual como ultimo estado
ultimoEstadoRele = estadoRele;
}
44
CAPTULO 4
INSTALACIONES
Aprenders
La casa inteligente
Programar Arduino
para controlar una
casa inteligente
Ne c e s i t a r s
Placa Arduino
Los sensores que
puedas encontrar
Cables
Mucha imaginacin
Cartn corrugado,
pegamento y tijeras
para hacer una
maqueta
La casa inteligente
Como has podido comprobar con las prcticas
anteriores Arduino es una controladora muy fcil
de programar y seguro que se te han ocurrido ya
algunas aplicaciones para la que podras
utilizarla. En esta prctica vas a tener la
oportunidad de comprobar su potencial,
implementando una casa inteligente. Cuando
termines est prctica dejar de sorprenderte
46
USO
ACCIN
LDR
Nos informar si en el
exterior es de da o de
noche
Detector humedad
ELEMENTO
SUSTITUTO
PIN
CONDICIONES
LDR
Potencimetro
analgico 1
Detector de
presencia (PIR)
Activa la alarma
Termostato (T)
interruptor
digital 3
Termostato
Detecta la temperatura
interior de la casa
Activa o desactiva la
caldera de la
calefaccin
Motobomba
(MB)
led rojo
digital 1
47
digital 2
Si pulsado se
enciende
motobomba
Detector
presencia (PIR)
Este lo tengo en
el taller y no
tengo que
sustituirlo
digital 4
Si es de noche ( =>
LDR > 900) y
detector activo
disparo la alarma
Luces exteriores
(LE)
2 led amarillos
digital 5
Alarma (A)
Buzzer
digital 6
Caldera (C)
Led verde
digital 7
Motor
persianas (MP)
motor CC
digital 8
Sensor
humedad (SH)
Pulsador verde
48
void loop() {
//programamos logica LDR
if (analogRead(1)> 900) { //indica que es de noche
if (persiana_subida){//La persiana est subida y por tanto la
bajamos
digitalWrite(MP,HIGH); //Baja persianas
delay(5000); //suponemos que las persianas tardan en bajar 5
segundos
digitalWrite(MP,LOW);//para motor persianas
persiana_subida=false; //para saber que la persiana esta abajo
}
digitalWrite(LE, HIGH); //enciende luces exteriores
}
else {
if(! persiana_subida){//La periana esta bajada y por tanto la
subimos
digitalWrite(MP,HIGH); //Sube persianas
delay(5000); //suponemos que las persianas tardan en bajar 5
segundos
digitalWrite(MP,LOW);//para motor persianas
persiana_subida=true;//para saber que la persiana esta arriba
}
digitalWrite(LE,LOW);//apagamos luces
}
//programamos logica detector humedad
if (digitalRead(SH)==1) {//Hay humedad
digitalWrite(MB, HIGH);//arranca la motobomba
}
else {
digitalWrite(MB, LOW);//para la motobomba
}
49