Hola que tal, trabajo por primera vez con arduino y he estado enrrollandome con hacer este problema y nada más no lo consigo. Tengo que controlar la energía suministrada a la celda peltier de manera proporcional al cambio de temperatura. Quiere decir que si en la caja se registra 8◦C la energía suministrada tiene que ser máxima, con el fin de bajar la temperatura, si en la caja se registra 2◦C la energía suministrada tiene que ser del 10%. Se cuenta con baterías de 12V.
También mostrar en una LCD la temperatura registrada en el sensor y con un botón cambiar a que muestre el porcentaje de la energía suministrada por la fuente y viceversa. Además de hacer uso de la comunicación serial.
Se hacer lo de la LCD y se que debo obtener el dato de la temperatura y convertirlo a digital, para despues evaluar con if dependiendo de que temperatura tenga.
Lo que no entiendo es la parte de suministrar energía, se que debo hacer uso de PWM, pero no me queda claro cómo hacerlo.
Les agradecería mucho su ayuda, adjunto el código que llevo:
#include <Wire.h>
#include<LiquidCrystal_I2C.h> // Libreria lcd
#define PWM 5 // Salida PWM
double volts = 0;
long temperatura; // temperatura
long milivolt; // milivolt
const int sensor=0; // variable sensor tipo const int y asignamos a pin analogico A0
//-----------------------------------------------------------
//Funcion Setup
//-----------------------------------------------------------
void setup()
{
Serial.begin(9600); // Llamamos la comunicación Serial con 9600 baudios
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
delay(2000);
pinMode(PWM, OUTPUT);
analogWrite(PWM, 1);
pinMode(2,OUTPUT); // Configuramos el pin 2 como salida
pinMode(3,OUTPUT); // Configuramos el pin 3 como salida
digitalWrite(2,LOW); // Inicializamos el pin 2 en cero
digitalWrite(3,LOW); // Inicializamos el pin 3 en cero
}
void loop()
{
voltaje = (analogRead(A1)*(5.0 / 1023.0); //Conversion voltaje
milivolt = (analogRead(sensor) * 5000L) / 1023; // calculamos los milivolt
temperatura = milivolt / 10; // Conversion temperatura
Serial.print("Temperatura: "); // imprimimos temperatura en el monitor serial
Serial.print(temperatura); // imprimimos el contenido de la variable temperatura
Serial.println(" Grados"); // imprimimos grados en el monitor serial
delay(1500); // esperamos 1.5 segundos
if(temperatura == 8 )
{ // pregunta si la temperatura esta mayor o igual que 25 grados y menor o igual que 34 grados
}
if(temperatura == 2)
{ // pregunta si la temperatura es mayor o igual a 35 grados centigrados
}
}
También mostrar en una LCD la temperatura registrada en el sensor y con un botón cambiar a que muestre el porcentaje de la energía suministrada por la fuente y viceversa. Además de hacer uso de la comunicación serial.
Se hacer lo de la LCD y se que debo obtener el dato de la temperatura y convertirlo a digital, para despues evaluar con if dependiendo de que temperatura tenga.
Lo que no entiendo es la parte de suministrar energía, se que debo hacer uso de PWM, pero no me queda claro cómo hacerlo.
Les agradecería mucho su ayuda, adjunto el código que llevo:
#include <Wire.h>
#include<LiquidCrystal_I2C.h> // Libreria lcd
#define PWM 5 // Salida PWM
double volts = 0;
long temperatura; // temperatura
long milivolt; // milivolt
const int sensor=0; // variable sensor tipo const int y asignamos a pin analogico A0
//-----------------------------------------------------------
//Funcion Setup
//-----------------------------------------------------------
void setup()
{
Serial.begin(9600); // Llamamos la comunicación Serial con 9600 baudios
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
delay(2000);
pinMode(PWM, OUTPUT);
analogWrite(PWM, 1);
pinMode(2,OUTPUT); // Configuramos el pin 2 como salida
pinMode(3,OUTPUT); // Configuramos el pin 3 como salida
digitalWrite(2,LOW); // Inicializamos el pin 2 en cero
digitalWrite(3,LOW); // Inicializamos el pin 3 en cero
}
void loop()
{
voltaje = (analogRead(A1)*(5.0 / 1023.0); //Conversion voltaje
milivolt = (analogRead(sensor) * 5000L) / 1023; // calculamos los milivolt
temperatura = milivolt / 10; // Conversion temperatura
Serial.print("Temperatura: "); // imprimimos temperatura en el monitor serial
Serial.print(temperatura); // imprimimos el contenido de la variable temperatura
Serial.println(" Grados"); // imprimimos grados en el monitor serial
delay(1500); // esperamos 1.5 segundos
if(temperatura == 8 )
{ // pregunta si la temperatura esta mayor o igual que 25 grados y menor o igual que 34 grados
}
if(temperatura == 2)
{ // pregunta si la temperatura es mayor o igual a 35 grados centigrados
}
}