Paso 1: El código
02 de marzo de 2013
Basado en un proyecto de Arduino por DJ Mentzik.
Mejorado y modificado por WWC.
Reforzada por Vic Velcro.
Convertir de Arduino a la MSPEXP430FR5739 (FraunchPad) por Vic Velcro.
http://www.vicstricks.com/Forum/viewforum.php?f=16
Utilizar y modificar según sea necesario.
Muestra la temperatura actual de 8 promedio de muestra en C y F, máximo en C y mínima en C.
Para su HP44780 de alambre base pantalla LCD para su FraunchPad, conectar los siguientes pines:
LCD Pin 4 a pin digital 3 o P2_5
LCD Pin 6 a pin digital 4 o P2_6
LCD Pin 11 al pin digital 20 o P1_3
LCD Pin 12 al pin digital 15 o P1_2
LCD 13 de Pin a pin digital 14 o P1_1
LCD 14 de Pin a pin digital 13 o P1_0
Además, cable un pote de 10K a + 5V y GND, con su limpiador (salida) al pin de VO de la pantalla LCD (pin3) para ajustar el contraste de caracteres.
Para conducir la luz de fondo, alambre de una resistencia de 270 ohm de FraunchPad VCC con conector de pantalla LCD 15.
El sensor de temperatura es un LM335Z. La pierna (adj) no se utiliza para este proyecto. Coloque una hoja de datos si no está familiarizado con el dispositivo.
Pins en protoboard y cara plana es lejos de usted, la pierna izquierda está conectada a tierra y la pierna derecha es no utilizada.
La pierna de centro es conectada al pin A0 que también está marcado P1_5. Además, el pasador central conecta a una resistencia de 2.2K ohmios y luego
la pierna contraria de la resistencia va a VCC de la FraunchPad.
*/
#if defined(__MSP430FR5739__) / / FraunchPad! SÓLO!
#include "Energia.h"
#else // no good
Plataforma #error. Sólo FraunchPad.
#endif
#include < LiquidCrystal.h > / / incluye la biblioteca de controladores de LCD
int tempPin = A0; Declarar la entrada analógica a 0 (A0) de Junta de FraunchPad.
int i; variable para delinear la secuencia de iteración muestra
flotador de VCC = 3,63; tensión de la Junta de declarar
Float tempRAW; declarar variables
tempK del flotador; variable para mantener la temperatura de Kelvin (flotante de la precisión decimal
flotador tempC = 0; variable para mantener la temperatura Celsius (flotante de la precisión decimal)
flotador tempF = 0; variable para sostener temperatura Fahrenheit
flotador de muestras [8]; Matriz para 8 muestras para el cálculo de temperatura media
maxi de flotador = 0, mini = 100; Variables de temperatura máxima y mínima con valores iniciales. LM335 en configuración simple solo mide temperatura superior a 0.
LiquidCrystal lcd (P2_5, P2_6, P1_3, P1_2, P1_1, P1_0); inicializar la biblioteca con los números de los pines de interfaz
void setup()
{
Serial.Begin(9600); Abre el puerto serie, establece la tarifa de datos a 9600 bps
LCD.Begin (16, 2); Fijar número la pantalla del LCD de filas y columnas:
Serial.println(""); Línea en blanco para espacio en el monitor serial
Serial.println ("termómetro proyecto de Vic Velcro."); Imprimir texto a monitor Serial
Serial.Print ("libre para modificar y utilizar según sea necesario.");
Serial.println(""); Línea en blanco para espacio en el monitor serial
LCD.Clear();
lcd.setCursor (2, 0); Establecer LCD posición del cursor (columna, fila)
LCD.Print ("trucos de Vic"); Imprimir texto en LCD
lcd.setCursor (2, 1); Establecer LCD posición del cursor (columna, fila)
LCD.Print("Thermo-Meter"); Imprimir texto en LCD
Delay(10000); Retardo para leer texto
LCD.Clear();
lcd.setCursor (1, 0); Establecer LCD posición del cursor (columna, fila)
LCD.Print ("* en la Web *"); Imprimir texto en LCD
lcd.setCursor (1, 1); Establecer LCD posición del cursor (columna, fila)
LCD.Print("vicstricks.com"); Imprimir texto en LCD
Delay(10000); Retardo para leer texto
LCD.Clear(); borrar pantalla LCD / / borrar la pantalla
lcd.setCursor (1, 0); Establecer LCD posición del cursor (columna, fila)
LCD.Print ("temperatura media"); Imprimir texto en LCD
lcd.setCursor (1, 1); Establecer LCD posición del cursor (columna, fila)
LCD.Print ("aparece"); Imprimir texto en LCD
Delay(5000); Retardo para leer texto
LCD.Clear(); LCD Clear
}
void loop()
{
Serial.println(""); Línea en blanco para espacio en el monitor serial
Serial.Print ("LM335Z datos:"); Imprimir texto a monitor Serial
Serial.println(analogRead(tempPin)); Muestra en el monitor serial el valor muestreado antes de conversión a la verdadera lectura de la temperatura
Serial.println(""); Línea en blanco para espacio en el monitor serial
Inicio de cálculos para el lazo.
para (i = 0; i < = 7; i ++) {/ / obtiene 8 muestras de la temperatura
muestras [i] = analogRead(tempPin); matemáticas de conversión de la muestra y lectura temperatura Kelvin y tiendas el resultado a la matriz de las muestras el LM335.
5 v es voltios de la fuente normal del LM335. Cambiar el appropriatelly tener la medida correcta. Mi caso es de 3,63 voltios.
Si accionado del USB utiliza valor 3.6v.
La tensión es fundamental para una lectura precisa
Serial.println(samples[i]); Imprimir muestras [i] monitor serial
Nota de la LCD: línea 1 es la segunda fila, ya que cuenta comienza con
LCD.Clear(); borrar pantalla LCD / / borrar la pantalla
lcd.setCursor (0, 0); Establecer LCD posición del cursor (columna 0, fila 0)
LCD.Print ("lectura actual:"); Imprimir texto en LCD
lcd.setCursor (0, 1); Establecer LCD posición del cursor (columna 1, fila 1)
LCD.Print "(muestras crudas del); Imprimir texto en LCD
lcd.setCursor (12, 1); Establecer LCD posición del cursor (columna 12, fila 1)
LCD.Print(samples[i]); imprimir la iteración actual del crudo muestra a LCD
tempRAW = tempRAW + muestras [i]; calcular el promedio de las muestras crudo
Delay(800); esperar un poco
} // END of FOR loop
Serial.println(""); Línea en blanco para espacio en el monitor serial
Serial.println(""); Línea en blanco para espacio en el monitor serial
tempK = (((tempRAW/8.0)/1023)*VCC)*100); Fórmula de conversión para las muestras combinadas a un promedio de Kelvin
tempC = (tempK-273.15); Convertir de Kelvin a Celsius
tempF = (((tempK-273.15) * 1.8) + 32); Convertir Kelvin a Fahrenheit
if(tempC > Maxi) {maxi = tempC;} temperatura ambiente máxima actualización observado
if(tempC < mini) {mini = tempC;} actualización min temperatura observada
Serial.println ("nueva medida:");
Serial.Print ("temperatura media en grados Celsius es"); Imprimir texto a monitor Serial
Serial.println (tempC); //send los datos al ordenador / / enviar los datos a la computadora
Serial.Print ("temperatura media en grados Fahrenheit es"); Imprimir texto a monitor Serial
Serial.println (tempF); //send los datos al ordenador / / enviar los datos a la computadora
Serial.Print ("MAX Temperature en grados"); Imprimir texto a monitor Serial
Serial.println (maxi); //send los datos al ordenador / / enviar los datos a la computadora
Serial.Print ("MIN temperatura en Celcius es"); Imprimir texto a monitor Serial
Serial.println (mini); //send los datos al ordenador / / enviar los datos a la computadora
LCD.Clear(); Borrar la pantalla
lcd.setCursor (0, 0); Establecer LCD posición del cursor (columna 0, fila 0)
LCD.Print ("grados Celsius"); Imprimir texto en LCD
lcd.setCursor (12, 0); Establecer LCD posición del cursor (columna 12, línea 0)
LCD.Print(tempC);
lcd.setCursor (0, 1); Establecer LCD posición del cursor (columna 0, línea 1)
LCD.Print ("Fahrenheit"); Imprimir texto en LCD
lcd.setCursor (12, 1); Establecer LCD posición del cursor (columna 12, línea 1)
LCD.Print(tempF); Enviar los datos a la LCD
Delay(5000); Esperar después de la exhibición del temp a antes de la pantalla de LCD a partir del lazo otra vez.
tempRAW = 0; TempRAW set a 0 antes de repetir el bucle.
}