15-03-2019, 10:31 AM
(Última modificación: 15-03-2019, 10:45 AM por Smitter.
Razón: -añadir nota-
)
Buenos días a tod@s:
Estoy con mi primer proyecto con arduino, intentando aprender poco a poco. Es complicado memorizar tantas cosas nuevas, pero con consultas a la web voy haciendo funcionar algo, pero desde ayer estoy atascado.
Quiero controlar la temperatura de una placa mediante un sensor LM35, con estos objetivos:
Probablemente sea alguna tontería, pero por más cambios y pruebas que hago en el código, no doy con lo que pasa.
Este es el código último que estoy usando:
Las conexiones son estas:
Añadir que aún no lo he montado. Estoy usando Tinkercad Circuits como simulador para probarlo físicamente una vez funcione, y si todo va bien hacer luego el montaje definitivo.
Supongo que tendré varias cosas que arreglar. Como dije, es mi primer programa, así que cualquier consejo es bienvenido.
Estoy con mi primer proyecto con arduino, intentando aprender poco a poco. Es complicado memorizar tantas cosas nuevas, pero con consultas a la web voy haciendo funcionar algo, pero desde ayer estoy atascado.
Quiero controlar la temperatura de una placa mediante un sensor LM35, con estos objetivos:
- Ver la temperatura actual por el monitor serie.
- Almacenar la temperatura máxima alcanzada durante todo el tiempo de lectura.
- A través de leds, controlar visualmente el funcionamiento y el rango actual de temperatura (esto para una vez calibrada la media utilizarlo sin ordenador)
Probablemente sea alguna tontería, pero por más cambios y pruebas que hago en el código, no doy con lo que pasa.
Este es el código último que estoy usando:
Código:
// Script para leer temperatura utilizando un LM35
// Declaracion de variables
float tempC;
float tempCmax;
int tempPin = 0; // Definimos la entrada en pin A0
const int ledV = 0; // Defino el led verde en el pin 0
const int ledA = 1; // Defino el led amarillo en el pin 1
const int ledR = 2; // Defino el led rojo en el pin 2
void setup()
{
// Abre puerto serial y lo configura a 9600 bps
Serial.begin(9600);
pinMode(ledV , OUTPUT); //defino pin0 como salida
pinMode(ledA , OUTPUT); // defino pin1 como salida
pinMode(ledR , OUTPUT); //defino pin2 como salida
}
void loop()
{
// Lee el valor desde el sensor
tempC = analogRead(tempPin);
// Convierte el valor a temperatura
tempC = (5.0 * tempC * 100.0)/1024.0;
// Almacena la temperatura máxima
if(tempC>tempCmax)
{
tempCmax=tempC
; }
// Envia el dato al puerto serial
Serial.print(tempC);
Serial.print(" grados Celsius\n");
Serial.print (tempCmax);
Serial.print (" temperatura máxima alcanzada\n");
digitalWrite(ledV , HIGH); // Enciendo el led verde
if(tempC>30) // Si la temperatura es superior a 30
{
digitalWrite(ledA , HIGH); // Enciendo el led amarillo
}
if(tempC>50) // Si la temperatura es superior a 50
{
digitalWrite(ledR , HIGH); // Enciendo el led rojo
}
// Espera cinco segundo para repetir el loop
delay(5000);
//Apago todos los leds
digitalWrite(ledV , LOW);
digitalWrite(ledA , LOW);
digitalWrite(ledR , LOW);
}
Añadir que aún no lo he montado. Estoy usando Tinkercad Circuits como simulador para probarlo físicamente una vez funcione, y si todo va bien hacer luego el montaje definitivo.
Supongo que tendré varias cosas que arreglar. Como dije, es mi primer programa, así que cualquier consejo es bienvenido.
Prusa Steel MK2 - Electrónica OVM20 con drivers DRV8825 (muerta en acto de servicio) - Hotend E3D Lite V6 - de nuevo, electrónica OVM20 lite con drivers DRV8825