miércoles, 25 de abril de 2012

Termómetro con LM35, y aviso visual+ventilador a 3 velocidades.


Hoy vamos a diseñar y programar un pequeño circuito que nos mida la temperatura.
En función de los valores obtenidos,tendremos el siguiente funcionamiento:


  • Si la temperatura es <25ºC el sistema se encuentra a la temperatura óptima.
  • Si la temperatura es >25ºC activaremos una señal luminosa.
  • Si la temperatura es >30ºC activaremos la señal luminosa y un ventilador al 60%.
  • Si la temperatura es >37ºC activaremos la señal luminosa y el ventilador casi a máxima potencia.

El componente empleado para realizar la medición es un sensor de temperatura LM35. Aquí podemos ver su patillaje:


Este es el esquema que he diseñado para la práctica:


Para alimentar el sensor LM35 podremos utilizar la misma fuente de Arduino, que nos suministra 5 voltios Vdc. En cambio para alimentar el ventilador de PC, le alimentaremos con una fuente adicional de 12 Vdc.
El diodo Led de alarma simplemente le pincharemos en la patilla 13 y GNd de Arduino, ya que lleva una resistencia interna de 330 ohmios.
    

Funcionamiento:


La temperatura es óptima

 La temperatura es >25ºC

La temperatura es >30


Vídeo Funcionamiento:





 Dentro del programa compilador en la seccion Tools>>Serial monitor, podremos visualizar la temperatura a través del puerto serie.



SKETCH:



//Lectura de temperatura mediante un sensor del tipo LM35, y aviso visual con un ventilador a 3 velocidades.
// el programa medirá la temperatura y en función de los valores, activara un led de alarma o activara un ventilador a varias velocidades

int pinTemperatura = 2;// daremos el nombre al pind e temperatura
int ledpin1 = 13;
int rele = 12;
int tempValor ; // La variable donde se almacena la temperatura
void setup()
{
  Serial.begin(9600); // Activamos el puerto serie para visulizar y definimos los pin 13 y 12 como salida
  pinMode(ledpin1, OUTPUT);
  pinMode(rele, OUTPUT);
}
void loop()
//bucle
{
  //mediante la siguiente encuacion transformaremos la lectura analógica en un valor de temperatura almacenado en la variable tempValor
  tempValor = ( 5.0 * analogRead(pinTemperatura) * 100.0) / 1024.0;
  // la funcion serial.print Impreme el valor en el puerto serie
  Serial.print("La Temperatura en este momento es de: (Celsius) = ");
  Serial.println(tempValor);
  // el delay es para medir la temperatura cada segundo
  delay (1000);
    int i= 0;
    analogWrite(rele,i);  // el ventilador estará apagado ya que i=0
  if(tempValor>25)// cuando la temperatura alcanza 25 grados se activa la alarma visual, ventilador apagado.
    {
    digitalWrite(ledpin1,HIGH);
    delay(500);
    digitalWrite(ledpin1,LOW);
      if(tempValor>30) // si la temperatura es mayor a 30 grados, se activa el ventilador al 60% aprox
      {
        int i = 150;
        analogWrite(rele,i);
            if(tempValor>37)// si la temperatura es mayor a 30 grados, se activa el ventilador al 85% aprox
              {
              int i = 215;
              analogWrite(rele,i);  //Recordemos que la funcion analogWrite toma valores entre 0 y 255.

    }
    }
  }

}

//Redfox





Sensor de Proximidad con Infrarrojos

Desarrollo del Sensor de proximidad mediante Arduino:

La Practica de hoy es un sensor de proximidad mediante Arduino y un emisor-receptor de rayos infrarrojos.
El uso que le podemos dar es muy amplio, desde el detector de proximidad hasta  un detector de barrera, alarma antirrobo...
Como sensor de aparcamiento no es muy recomendable pues si no esta el emisor y receptor en paralelo el campo de detección es muy pequeño.







En primer lugar he realizado el esquema de conexiones con los elementos necesarios.

Materiales y componentes utilizados:

·        1 Diodo emisor infrarrojo
·        1 Resistencia 330Ω
·        1 Resistencia de 1MΩ
·        1 Diodo receptor Infrarrojo
·        Arduino

Como podemos apreciar pare realizar esta practica con arduino necesitamos muy pocos componentes, básicamente es programación.

En primer lugar realizaremos el esquema del emisor y en segundo lugar realizaremos el esquema del receptor de infrarrojos.






Esquema de emisor

El circuito de emisor es muy sencillo, simplemente conectaremos el diodo emisor de infrarrojos con la resistencia en serie, y lo uniremos a GND y al Pin12 de nuestro Arduino que es el que he definido como salida.
La programación de salida del Pin 12 será un envío constante de pulsos (True) que encenderá (5V) el diodo emisor de infrarrojos.
Podemos dejarlo encendido constantemente para que envíe rayos infrarrojos  o crear un parpadeo mediante la función “delay”.



Esquema de receptor
El esquema de receptor también es muy sencillo. Realizaremos un pequeño divisor de tensión. Emplearemos una fuente de 5 voltios (podemos utilizar la fuente que nos proporciona arduino 5V y GND).



En la misma conectaremos 1 resistencia de 1MΩ y un diodo receptor de infrarrojos. Entre el Ánodo del receptor de IRD2 y la resistencia de 1MΩ, llevaremos una conexión a uno de los pines analógicos de Arduino. De los cuales he utilizado el Pin3 y lo he definido como entrada.


En el momento que el receptor IRD2 recibe, conduce y disminuye el voltaje en Pin3.

Alarma de proximidad
Como sistema de alarma, he conectado un diodo Led azul entre el Pin13 y GND. No es necesario conectar una resistencia en serie con el diodo led, ya que el pin 13 la tiene internamente. Si recibe se activará el diodo led azul y sino se mantendrá apagado.




Montaje en la Protoboard

Emisor receptor-recibe



(He enfrentado emisor-receptor para que lleguen los rayos infrarrojos directamente, el diodo led se enciende pues está recibiendo señal)







Emisor receptor-NO recibe

(Colocado un obstáculo metálico en medio, el receptor no recibe señal, por tanto el diodo led no parpadea.)










Se realizan mediciones de voltaje entre el Pin 3 y GND. En el momento que el receptor de infrarrojo no conduce, es decir el circuito de recepción esta abierto, la tensión es de 4,22 Voltios.
En el momento que el Receptor de infrarrojo recibe, se cierra el circuito, y  el voltaje en Pin 3 cae a 1,50 voltios.


Me despido dejando el código que he desarrollado, y unos links directos a los módulos que he utilizado.

-Arduino UNO R3

https://s.click.aliexpress.com/e/_oEmMcZg 




La programación empleada


Sketch:

//Sensor de aparcamiento con infrarrojo
 //variables para la entrada y control de led
  int analogInput = 3;     //definimos la variable de entrada analogica en el pin3
  int LEDpin1 = 13;      // definimos la variable de salida para el led de alarma
  int LEDpin2 = 12;     //definimos la variable de salida de  envio de pulso. Pin12

 
  int value = 0;         // variable para definir el valor

  int threshold = 512;         // el umbral que controla cuando se enciende el led, podemos regular la sensibilidad.

  void setup()
{

// declaracion del modo de los pines INPUT/OUTPUT
  pinMode(analogInput, INPUT);
  pinMode(LEDpin1, OUTPUT);
  pinMode(LEDpin2, OUTPUT);

}
void loop()    //bucle de programa
{
  digitalWrite(LEDpin2, HIGH);              // Activa Emisor IRda
  value = analogRead(analogInput);      // lee el valor de entrada analogico


// si el receptor IR recibe, disminuye el valor analógico de entrada por el pin 3.
if (value < threshold){
  digitalWrite(LEDpin1, HIGH);   //Activa Diodo led alarma(pin13)
  delay(100);
  digitalWrite(LEDpin1, LOW);    //Apaga Diodo led de alarma(pin13)
  delay(100);
  digitalWrite(LEDpin1, HIGH);   //Activa Diodo led de alarma(pin13)
  delay(100);
}
// si el receptor no recibe, aumenta la resistencia en el receptor IR y aumenta el valor analogico de entrada por el pin 3.
else {digitalWrite(LEDpin1, LOW);

}
}

lunes, 23 de abril de 2012

Control de un ventilador mediante BC547 y potenciómetro de 22kohmios.

Variación de velocidad del motor con un Potenciómetro
En esta segunda práctica controlaremos la velocidad de nuestro ventilador con un potenciómetro de 22kohmios.
Realizaremos una pequeña modificación de nuestro esquema anterior.




En este caso reduciremos el voltaje de la fuente que alimentará al ventilador a 6 voltios VDc, no vaya a ser que achicharremos nuestro Arduino.
El punto definido como Pin 0 irá conectado al pin analógico A0 de nuestro Arduino, que es el que recibirá las variaciones de voltaje, al mover el potenciómetro.
Nuestro Arduino tiene 6 entradas analógicas, que soporta un voltaje de 0 a 5 Vdc que convertidas a señales digitales tendríamos de 0 a 1024(10 bits). 



Sketch:



int motorPin = 9;
int potPin=0;
int potValue;
void setup()
{
pinMode(motorPin, OUTPUT);
}
void loop()
{
potValue = analogRead(potPin) / 4;
analogWrite(motorPin, potValue);
}

En este caso analogRead() lo dividiremos entre 4, ya que las funciones digitales  devuelven un valor comprendido entre 0 y 1024 (10 bits) y la función analogWrite () toma valores comprendidos entre 0 y 255 (8 bits). 





Control de un ventilador mediante BC547

Bucle On-Off con tiempo


En esta practica nuestro objetivo es controlar un ventilador de PC mediante nuestro amigo Arduino y un transistor BC547, las conexiones serán como se detallan en el siguiente esquema.
El funcionamiento será arrancar el motor durante 2000ms y apagarlo 1000ms, dentro de un mismo bucle.



El pin 9 lo conectaremos a la salida digital de Arduino.


A continuación te detallo el sketch utilizado para su funcionamiento:


          Sketch:



int motorPin = 9;   // definimos el pin 9
void setup()
{
pinMode(motorPin, OUTPUT);   // definimos motorPin como salida
}
void loop()
{
int onTime = 2000;
int offTime = 1000;
digitalWrite(motorPin, HIGH);
delay (onTime);
digitalWrite(motorPin, LOW);
delay (offTime);
}
 

Bucle Aceleración y frenado
Ahora crearemos un bucle en el cual el motor comenzará a acelerar poco a poco, hasta llegar a una velocidad máxima definida y luego frenara poco a poco.(mismo esquema).
Sketch:
int motorPin = 9;
void setup()
{
pinMode(motorPin, OUTPUT);
}
void loop() 
{
int delayTime = 50; 
          for(int i = 0; i < 256; i++)  // definimos hasta el máximo

{
analogWrite(motorPin, i);
delay(delayTime);
}
for(int i = 255; i >= 0; i--)
{
analogWrite(motorPin, i);
delay(delayTime);
}
}
Definiremos 255 ya que la función  analogWrite () toma   valores comprendidos entre 0 y 255 (8 bits).

Aquí vemos nuestro resultado:




¿Que es Arduino? Hagamos una pequeña introducción...


Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos disciplinares.
El hardware consiste en una placa con un microcontrolador Atmel AVR y una serie de puertos de entrada/salida. 
Los microcontroladores mas usados son los modelos Atmega168, Atmega328, Atmega1280, Atmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en placa.
Arduino puede tomar información del entorno a través de sus entradas analógicas y digitales, y controlar luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador.
Después de esta pequeña introducción, vamos a analizar las características del Arduino UNO que es el más utilizado. Yo personalmente trabajo con ellos, además del Arduino Mini y Nano.
Características Arduino UNO
Microcontrolador: ATmega328
Voltaje de Operación: 5V
Voltaje de entrada recomendado: 7-12V(a través del Jack de alimentación o el pin Vin de la placa)
Voltraje de entrada máximo: 6-20V
Pines Digitales I/O: 14 de los cuales 6 pueden funcionar como PWM
Pines Analógicos: 6
Corriente Dc para pines I/O: 40mA
Corriente DC para pin 3.3V: 50mA
Memoria Flash: 32kB (Atmega 328)
Sram: 2kB(Atmega 328)
EEPROM: 1Kb
Velocidad de Reloj: 16MHz.
Entradas y Salidas
Cada uno de los 14 pines digitales pueden ser utilizados como entradas o salidas. Tienen un voltaje de operación de 5 Voltios. Cada Pin proporciona un máximo de 40mA y poseen una resistencia pull-Up de 20-50Kohms.
Serial: 0(Rx) y 1(Tx). Son usados para recibir(Rx) y transmitir(TX) datos serie TTL. Estos pines están conectados al chip serie ATmega8U2 USB-to-TTL.
Interrupciones Externas: 2 y 3. Estos pines pueden ser configurados como trigger en interrupción en bajo valor. La función attachInterrupt() es la que nos permite realizarlo.
PWM: 3,5,6,9,10 y 11:Proporcionan una salida PWM de 8-bit con la función analogWrite().
SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK). Estos pines soportan comunicación SPI utilizando la librería SPI.
LED:13, cuando el pin se encuentra en valor alto el led se activa.
Entradas analógicas: etiquetadas como A0 hasta A5, cada una de ellas nos aporta una resolución de 10bits. Por defecto tienen una referencia a tierra de 5 voltios, pero se puede cambiar el rango usando el pin AREF y la función analogReference().
TWI/I2C: A4 o SDA pin y A5 o SCL pin. Soportan comunicación I2C usando la librería Wire.
AREF: voltaje de referencia para las entradas analógicas.

Estas son las características principales de la placa Arduino Uno, actualmente se encuentra en la Revisión3, ya que se han ido añadiendo distintas mejoras a nivel de hardware desde la primera versión.
Por último me despido con el esquemático de la placa...

sábado, 21 de abril de 2012

Inaguración!!



Bienvenido al Blog de Todoelectrodo:
En este Blog podrás encontrar cantidad de información relacionada con la electricidad y la electrónica.
Mi idea es ir añadiendo información poco a poco, en función de prácticas, prototipos y diseños creados por mí y en colaboración. 
El propósito es recopilar información y tener una base de datos del campo de la electricidad y la electrónica.
Por mucho que yo quiera no soy perfecto, así que cualquier sugerencia e información será bien recibida.