Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/03/2015 #41


Así es, funciona como amplificador. Es una forma de calibrarlo para que tengas las lecturas más precisas.
Por eso en el microcontrolador sólo haces una operación, que es como un factor de calibración.

Estoy buscando mis apuntes de hace 10 años para tenerles una idea mas precisa.
04/03/2015 #42

Avatar de Dan2013

Aqui esta el esquema del circuito y el codigo completo.

Código HTML:
#include <LiquidCrystal.h>

LiquidCrystal milcd(12,11,5,4,3,2);

byte grado[8] = {
    B00010,
    B00101,
    B00010,
    B00000,
    B00000,
    B00000,
    B00000,
    B00000,
};

float temp;
int tmax = 20;

void setup() {
    analogReference(EXTERNAL);
    milcd.begin(16,2);
    milcd.createChar(0,grado);
    pinMode(7, INPUT);  //Boton 1
    pinMode(8, INPUT);  //Boton 2
    pinMode(10, OUTPUT);   //LED
}

void loop() {
    temp = float((analogRead(A1) * 1.31) / 10.23);   //Escalando a grados celcius
    
    milcd.setCursor(0,0);
    milcd.write("Tactual: ");
    
    milcd.print(temp);
    milcd.setCursor(14,0);
    milcd.print((char)0);
    milcd.write("C");
    
    if(digitalRead(7) == HIGH) {
        tmax++;
    }
    if(digitalRead(8) == HIGH) {
        tmax--;
        if(tmax < 0) {
            tmax = 0;
        }
    }
    
    if(temp >= tmax) {
    digitalWrite(10, HIGH);
    }
    else {
    digitalWrite(10, LOW);
    }
    
    milcd.setCursor(0,1);
    milcd.write("Tmax: ");
    milcd.print(tmax);
    milcd.print((char)0);
    milcd.write("C");
    
    delay(300);
    milcd.clear();
}
Recuerden, deben calcular el circuito de referencia y medir el voltaje, para cambiar la linea donde se calcula temp.

En mi circuito obtuve un voltaje de 1.31 de referencia.

Saludos.
04/07/2015 #43

Avatar de Dan2013

Problema con control de temperatura con Arduino
La cosa es que un teclado 4x3 acoge demasiados pines digitales y quisiera saber si habrá algun integrado como un registro de desplazamiento que sea de paralelo a serial para así usar el teclado en un solo pin.

Estoy usando un Arduino UNO y ya habia hecho un tema de un control de temperatura. Como pueden observar, estoy usando un LCD 16x2, 1 LED y 2 botones en los pines digitales, y como pueden observar no hay un espacio especifico para un teclado ya que necesita 7 pines, pero quisiera usarlo en un solo pin.

Ahora, la pregunta es ¿Puede hacerse esto?. Espero que me puedan ayudar. Saludos.
04/07/2015 #44


Podes probar así..

Lo lees con un AnalogRead de unos de los pines del arduino

El único problema es que no podes leer 2 pulsadores al mismo tiempo.. Pero debería de andar yo no lo probé.
Imágenes Adjuntas
Tipo de Archivo: gif 1pin+keymatrix.gif (6,0 KB (Kilobytes), 13 visitas)
04/07/2015 #45

Avatar de Dan2013

francolucio dijo: Ver Mensaje
Podes probar así..

Lo lees con un AnalogRead de unos de los pines del arduino

El único problema es que no podes leer 2 pulsadores al mismo tiempo.. Pero debería de andar yo no lo probé.
Ok eso ya lo he hecho, y como lo puedo apreciar tiene un problema potencial a cualquier minimo cambio de voltaje. Además de que utilizo una referencia de cerca de 1v en el pin AREF, lo que complica aun más las cosas. Saludos.
04/07/2015 #46
Moderador

Avatar de D@rkbytes

Usa un expansor como el PCF8574 o el PCA9554
Ambos funcionan por I2C (2 pines) y usando el pin de interrupción serían 3 pines a usar.

No uso Arduino, pero aquí puedes ver lo que te menciono. Teclado I2C con chip PCF8574 y Arduino
05/07/2015 #47

Avatar de Dan2013

Perfecto, aunque usa 3 pines pero es mejor que 7 pines. No tengo nociones de I2C pero investigare. Pero por si acaso me avisan si habra como les dije un registro de desplazamiento para hacer esto. Saludos
05/07/2015 #48


Algo así con 74hc165 podes conectar hasta 8 interruptores por CI

Así conectas varios de estos juntos
Imágenes Adjuntas
Tipo de Archivo: jpg IMG_20150705_122509.jpg (107,2 KB (Kilobytes), 17 visitas)
Tipo de Archivo: jpg IMG_20150705_122839.jpg (70,6 KB (Kilobytes), 8 visitas)
05/07/2015 #49

Avatar de Dan2013

francolucio dijo: Ver Mensaje
Algo así con 74hc165 podes conectar hasta 8 interruptores por CI

Así conectas varios de estos juntos
Es perfecto, esto es lo que buscaba. Gracias, con esto el proyecto será más compacto en cuanto al uso de pines del arduino

Saludos.
05/07/2015 #50


Consulta: ¿Por qué no cambias la forma de poner el LCD con un 74C595?
Así sólo usas 3 pines para el LCD también. Digo, no sé, no leí mucho el post, sólo vi el ultimo diagrama.
Hay librerías para usarlo así.
05/07/2015 #51

Avatar de Scooter

Hay adaptadores I²C para LCD bastante baratos
05/07/2015 #52

Avatar de Dan2013

Ok entiendo ese punto de cambiar el LCD a I2C para utilizar menos pines para este, pero tambien queria saber si se podia utilizar un sistema similar para la entrada de datos.

Tambien tengo una duda ¿Se pueden usar más de un dispositivo I2C en un mismo proyecto de arduino?

Saludos.
05/07/2015 #53


Dan2013 dijo: Ver Mensaje
Ok entiendo ese punto de cambiar el LCD a I2C para utilizar menos pines para este, pero tambien queria saber si se podia utilizar un sistema similar para la entrada de datos.

Tambien tengo una duda ¿Se pueden usar más de un dispositivo I2C en un mismo proyecto de arduino?

Saludos.
Totalmente el pcf8574 tenés tres pines para la dirección de datos

Te recomiendo que leas este post. Tiene lo que nesecitas y mas sobre conexiones para tu arduino
[Aporte] Pin Out Arduino y conexiones
02/08/2015 #54


Sobre el modulo I2C
Dan2013 dijo: Ver Mensaje
Ok entiendo ese punto de cambiar el LCD a I2C para utilizar menos pines para este, pero tambien queria saber si se podia utilizar un sistema similar para la entrada de datos.

Tambien tengo una duda ¿Se pueden usar más de un dispositivo I2C en un mismo proyecto de arduino?

Saludos.
Hola... Un modulo I2C no reemplaza a tu display, simplemente, te permite enviar datos en serie desde el Arduino hacia el I2C, y luego este, los decodifica hacia la matriz del LCD. Con este modulo, empleas sólo dos salidas del Arduino para manejar tu display, así, te quedaran mas entradas/salidas disponibles. Puedes utilizar varios módulos I2C en paralelo, sólo recuerda que deberás asignarle una dirección diferente a cada uno y bajar del portal de Arduino la librería para usar el I2C. Saludos.
22/09/2016 #55


Problema con control de temperatura con Arduino
Hola, gente. Os pido su ayuda. Soy nuevo en el mundo del arduino y necesito hacer un sistema que sense la temperatura del agua, ésta al estar por debajo de x temperatura encenderá un calentador (12V ) que la calentará.
Luego se apagará al alcanzar la temperatura ideal. Ejemplo; de 30° mínimo - 45° máximo. (esto debe ser de manera automática) y además se mostrará en una pantalla la temperatura en la que se encuentra el agua.

Uso el sensor DS18B20 sumergible.
Arduino uno
LCD 16x2

Quería que me ayuden en poder realizar la parte automática, ya que he visto un caso parecido con un ventilador de apago y encendido automático pero con un LM35.
Tengo entendido que éste usa la parte analógica del arduino.
Puede que el DS18B20 sólo pueda usarse en las entradas digitales del arduino.

Les dejaré la parte que tengo hasta hora, que sólo es el sensoramiento del agua y el muestreo en el LCD, (me faltaría el encendido y apagado automático del calentador)

Código PHP:
#include <OneWire.h>;
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(765432);

#define ONE_WIRE_BUS 9

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

float Celsius 0;
float Fahrenheit 0;

void setup() {
  
sensors.begin();
  
lcd.begin(204);
  
lcd.print("Kirito Hack";
}

void loop() {
  
sensors.requestTemperatures();

  
Celsius sensors.getTempCByIndex(0);
  
Fahrenheit sensors.toFahrenheit(Celsius);

  
lcd.setCursor(01);
  
lcd.print(Celsius);
  
lcd.print("Graditos");
  
lcd.setCursor(02);
  
lcd.print(Fahrenheit);
  
lcd.println("Fahrenheit");

  
delay(100);


22/09/2016 #56

Avatar de Nuyel

ok, dices que ya lees temperatura y tienes tu variable Celsius que lo almacena, lo siguiente es una condicional, utiliza esta variable como el argumento.

if(Celsius < 30) digitalWrite(Pin_calefactor, Encender); //Si la temperatura es menor lo enciendes
if(Celsius > 45) digitalWrite(Pin_calefactor, Apagar); //Si la temperatura es mayor lo apagas

El numero de pin y el estado lógico (HIGH o LOW) lo sabras tu ya que no publicas el diagram, recuerda también iniciar los pines en el setup mediante pinMode().
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.