Stap 1: De CODE
02 maart 2013
Gebaseerd op een Arduino project door DJ Mentzik.
Verbeterd en aangepast door WWC.
Verder versterkt door Vic Velcro.
Van Arduino omgezet in MSPEXP430FR5739 (FraunchPad) door Vic Velcro.
http://www.vicstricks.com/forum/viewforum.php?f=16
Gebruiken en wijzig waar nodig.
Huidige temperatuur van 8 monster gemiddelde in C en F, weergegeven Max in C en Min in C.
Om de draad van uw HP44780 gebaseerde LCD-scherm om uw FraunchPad, sluit de volgende pinnen:
LCD Pin 4 digitale pin 3 of P2_5
LCD Pin 6 digitale pin 4 of P2_6
LCD Pin 11 tot en met digital pin 20 of P1_3
LCD Pin 12 tot digitale pin 15 of P1_2
LCD Pin 13 tot digitale pin 14 of P1_1
LCD Pin 14 tot digitale pin 13 of P1_0
Bovendien, draad een 10K pot aan + 5V en GND, met het wisser (output) tot en met LCD-scherm van VO pin (pin3) aan te passen contrast van tekens.
Om te rijden de achtergrondverlichting, draad een 270 ohm weerstand van FraunchPad VCC tot LCD pin 15.
De temperatuursensor is een LM335Z. Het been (adj) wordt niet gebruikt voor dit project. Zoek een gegevensblad als u niet bekend bent met het apparaat.
Terwijl pinnen in breadboard zijn en platte kant is van u af, het linkerbeen is geaard en het rechterbeen is ongebruikte.
De centrale poot is verbonden met pin A0 die ook P1_5 is gemarkeerd. Bovendien verbindt het centrum pin met een weerstand van 2,2 k ohm en vervolgens
het tegenovergestelde beentje van de weerstand gaat naar VCC van de FraunchPad.
*/
#if defined(__MSP430FR5739__) / / FraunchPad! ALLEEN!
#include "Energia.h"
#else // no good
niet-ondersteund Platform #error. Alleen FraunchPad.
#endif
#include < LiquidCrystal.h > / / omvatten de LCD-stuurprogrammabibliotheek
int tempPin = A0; De analoge ingang 0 (A0) worden van FraunchPad bestuur te verklaren.
int i; variabele af te bakenen monster iteratie volgorde
zweven VCC = 3,63; verklaren van de spanning van de Raad van bestuur
float tempRAW; variabelen declareren
float tempK; variabele voor het houden van Kelvin temp (zwevend voor decimale precisie
zweven tempC = 0; variabele voor het houden van Celsius temp (zwevend voor decimale precisie)
zweven tempF = 0; variabele voor Fahrenheit temp te houden
float monsters [8]; Matrix te houden van 8 monsters voor gemiddelde temp berekening
float maxi = 0, mini = 100; Max/Min temperatuur variabelen met de beginwaarden. LM335 in eenvoudige opstelling meet slechts Temp boven 0.
LiquidCrystal lcd (P2_5, P2_6, P1_3, P1_2, P1_1, P1_0); initialiseren van de bibliotheek met de nummers van de pennen van de interface
VOID Setup
{
Serial.begin(9600); Seriële poort wordt geopend, wordt gegevenssnelheid ingesteld op 9600 bps
LCD.begin (16, 2); De LCD's aantal kolommen en rijen instellen:
Serial.println(""); Lege regel voor de regelafstand in de seriële monitor
Serial.println ("Thermo-Meter project door Vic Velcro."); Print tekst op seriële monitor
Serial.Print ("gratis gebruik zo nodig te wijzigen.");
Serial.println(""); Lege regel voor de regelafstand in de seriële monitor
LCD.Clear();
lcd.setCursor (2, 0); Instellen van de positie van de cursor van de LCD (kolom, rij)
LCD.Print ("Vic's trucs"); Print tekst op LCD-
lcd.setCursor (2, 1); Instellen van de positie van de cursor van de LCD (kolom, rij)
LCD.Print("Thermo-meter"); Print tekst op LCD-
delay(10000); Vertraging om tekst te lezen
LCD.Clear();
lcd.setCursor (1, 0); Instellen van de positie van de cursor van de LCD (kolom, rij)
LCD.Print ("* On The Web *"); Print tekst op LCD-
lcd.setCursor (1, 1); Instellen van de positie van de cursor van de LCD (kolom, rij)
LCD.Print("vicstricks.com"); Print tekst op LCD-
delay(10000); Vertraging om tekst te lezen
LCD.Clear(); duidelijk LCD-scherm / / Schakel het weergeven
lcd.setCursor (1, 0); Instellen van de positie van de cursor van de LCD (kolom, rij)
LCD.Print ("gemiddelde Temp"); Print tekst op LCD-
lcd.setCursor (1, 1); Instellen van de positie van de cursor van de LCD (kolom, rij)
LCD.Print ("weergegeven"); Print tekst op LCD-
delay(5000); Vertraging om tekst te lezen
LCD.Clear(); Clear LCD
}
void loop
{
Serial.println(""); Lege regel voor de regelafstand in de seriële monitor
Serial.Print ("LM335Z ruwe gegevens:"); Print tekst op seriële monitor
Serial.println(analogRead(tempPin)); De bemonsterde waarde vóór omzetting naar echte temperatuur lezing weergegeven op seriële monitor
Serial.println(""); Lege regel voor de regelafstand in de seriële monitor
Begin van berekeningen FOR-lus.
voor (ik = 0; ik < = 7; i ++) {/ / krijgt 8 monsters van temperatuur
monsters [i] = analogRead(tempPin); de wiskunde van de conversie van LM335 monster leesbaar temperatuur Kelvin en winkels resultaat aan monsters array.
5V is normale levering volt van de LM335. Appropriatelly dat de correcte meting wijzigen Mijn geval is 3.63 volt.
Als gevoed vanuit USB gebruikt u waarde 3.6V.
De spanning is van cruciaal belang voor nauwkeurige metingen
Serial.println(samples[i]); Afdrukken van monsters [i] op seriële monitor
LCD Opmerking: lijn 1 is de tweede rij, aangezien tellen met begint
LCD.Clear(); duidelijk LCD-scherm / / Schakel het weergeven
lcd.setCursor (0, 0); Instellen van de positie van de cursor van de LCD (kolom 0, rij 0)
LCD.Print ("huidige lezing:"); Print tekst op LCD-
lcd.setCursor (0, 1); Instellen van de positie van de cursor van de LCD (kolom 1, rij 1)
LCD.Print ("RAW monsters"); Print tekst op LCD-
lcd.setCursor (12, 1); Instellen van de positie van de cursor van de LCD (kolom 12, rij 1)
LCD.Print(samples[i]); Print huidige RAW monster iteratie op LCD-
tempRAW = tempRAW + monsters [i]; voor ruwe monsters gemiddelde berekenen
delay(800); een beetje wachten
} // END of FOR loop
Serial.println(""); Lege regel voor de regelafstand in de seriële monitor
Serial.println(""); Lege regel voor de regelafstand in de seriële monitor
tempK = (((tempRAW/8.0)/1023)*VCC)*100); Conversieformule gecombineerde monsters gemiddeld Kelvin
tempC = (tempK-273.15); Converteren van Kelvin naar Celsius
tempF = (((tempK-273.15) * 1.8) + 32); Converteren van Kelvin naar Fahrenheit
if(tempC > Maxi) {maxi = tempC;} Update max temperatuur waargenomen
if(tempC < mini) {mini = tempC;} Update min temperatuur waargenomen
Serial.println ("nieuwe meting:");
Serial.Print ("gemiddelde temperatuur in Celsius is"); Print tekst op seriële monitor
Serial.println (tempC), //send de gegevens naar de computer / / de gegevens naar de computer verzenden
Serial.Print ("gemiddelde temperatuur in Fahrenheit"); Print tekst op seriële monitor
Serial.println (tempF), //send de gegevens naar de computer / / de gegevens naar de computer verzenden
Serial.Print ("MAX Temperature in Celsius is"); Print tekst op seriële monitor
Serial.println (maxi); //send de gegevens naar de computer / / de gegevens naar de computer verzenden
Serial.Print ("MIN temperatuur in Celsius is"); Print tekst op seriële monitor
Serial.println (mini); //send de gegevens naar de computer / / de gegevens naar de computer verzenden
LCD.Clear(); Schakel het weergeven
lcd.setCursor (0, 0); Instellen van de positie van de cursor van de LCD (kolom 0, rij 0)
LCD.Print ("Celsius"); Print tekst op LCD-
lcd.setCursor (12, 0); Instellen van de positie van de cursor van de LCD (kolom 12, regel 0)
LCD.Print(tempC);
lcd.setCursor (0, 1); Instellen van de positie van de cursor van de LCD (kolom 0, lijn 1)
LCD.Print ("Fahrenheit"); Print tekst op LCD-
lcd.setCursor (12, 1); Instellen van de positie van de cursor van de LCD (kolom 12, lijn 1)
LCD.Print(tempF); Stuur de gegevens naar het LCD-scherm
delay(5000); Wacht na temp display LCD scherm befor de lus opnieuw beginnen.
tempRAW = 0; TempRAW ingesteld op 0 voordat de lus herhaald.
}