Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Diseño digital
Microcontroladores y sistemas embebidos
Arduino y Raspberry Pi
Controlar la energía suministrada a una celda peltier
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="Scooter, post: 1356540, member: 65593"] Si buscas en el foro verás que son temas tratados muchas veces. Por otra parte, además de que un control proporcional nunca va a funcionar per se, no cuentas el resto de cosas, la conexión ni el tamaño de la caja ni nada de nada. ¿O es que solo te preocupa el programa? Respecto del programa haces una cosa pero en los comentarios dices otra. Mira la ayuda del if que lo explica. Tardarás un minuto o menos. Usa un poco menos el cortapega y un poco más el cerebro. El uso que haces de los tipos es como si un Arduino fuera un rizen 5700++. Un Arduino lleva una CPU pequeñita y hay que controlar los recursos. Aparte de que dilapidado además usas los que no son, no te va a funcionar nada de nada. Lee que son y para que se usan los tipos. Declaras long para cosas de 8 bits cuando int ya te sobra, puedes usar byte o Char. Alegremente multiplicas y divides sin mirar si dan decimales o no, te vas a quedar con todos los resultados a 0. Como creo que no entiendes los tipos, no vas a saber por qué pero es evidente. Resumidamente no cortapegues sin entender. Mira los apuntes de clase, lee la ayuda de Arduino Pista: lee la orden MAP. [CODE=cpp]#include <Wire.h> #include<LiquidCrystal_I2C.h> // Libreria lcd #define PWM 5 // Salida PWM double volts = 0; [B] ¿Por qué double, tanta precisión necesitas?[/B] long temperatura; // temperatura [B]¿Por qué long? ¿Hasta cuantos millones de grados llega la temperatura?¿No tiene decimales?¿Usas coma fija?[/B] long milivolt; // milivolt const int sensor=0; // variable sensor tipo const int y asignamos a pin analogico A0 [B] Puedes usar #define que no ocupa ram, no sé por qué PWM lo haces con define y sensor con const [/B] //----------------------------------------------------------- //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); [B] ¿1?Si es "analógico", 0 o 255 tiene sentido pero "1" no lo entiendo[/B] pinMode(2,OUTPUT); // Configuramos el pin 2 como salida [B]¿Si los demás pines están definidos por qué estos no?[/B] 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 [B]¿Cuando has definido esta variable? Va a dar error. ¿Por qué este pin no está definido y el otro si, que hay conectado en A1?[/B] milivolt = (analogRead(sensor) * 5000L) / 1023; // calculamos los milivolt [B]Va a dar cosas raras porque haces operaciones que dan resultados float con números enteros[/B] 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 ) [B] ¿Estás seguro de que mayor o igual se escribe "==""?[/B] { // pregunta si la temperatura esta mayor o igual que 25 grados y menor o igual que 34 grados } if(temperatura == 2) [B]¿Estás seguro de que mayor o igual se escribe ==? ¿Si conviertes la temperatura antes por qué ahora es 2 en lugar de 35, o es que antes no convertías nada?[/B] { // pregunta si la temperatura es mayor o igual a 35 grados centigrados } }[/CODE] Resumen. No uses retardos para nada. Usa timers e interrupciones. Mira cómo están hechas las librerías que usas. Hay verdaderos vidrios en las librerías de Arduino. La de motores paso a paso que era oficial era demencial 100%. Lo mismo hay alternativa o la han actualizado. La de LCD no la he analizado pero me han contado que no es una joya. Creo que inhibir interrupciones porque interfiere con mi control de fase que va por interrupciones. [/QUOTE]
Verificación
Responder
Diseño digital
Microcontroladores y sistemas embebidos
Arduino y Raspberry Pi
Controlar la energía suministrada a una celda peltier
Arriba