Stap 12:.: temperatuur:. (TMP36 Precision temperatuursensor) - CIRC10
Wat We doen:
Wat is de volgende verschijnselen die we met onze Arduino zal meten? Temperatuur. Om dit te doen die we gebruik van een nogal ingewikkeld IC (integrated circuit maken zullen) verborgen in een pakket identiek aan onze P2N2222AG-transistors. Het heeft drie pinnen grond, signaal en + 5 volt en is gemakkelijk te gebruiken. Het output 10 millivolts per graad Celsius op de signaal-pin (om het meten van temperaturen onder het vriespunt er is een verschuiving van 500 mV bv. 25 graden C = 750 mV, 0 graden C = 500mV). Om dit uit de digitale waarde te converteren naar graden zullen wij gebruiken een aantal van de de Arduino wiskunde vaardigheden. Vervolgens weer te geven we gebruiken een aantal van de IDE vrij krachtige functies, het foutopsporingsvenster. Wij zullen de waarde uitgang via een seriële verbinding weer te geven op het scherm. Laten we naar het.
Een extra opmerking, dit circuit maakt gebruik van de Arduino IDE seriële monitor. U opent dit, eerst uploaden het programma klik op de knop die eruit als een vierkant met een antennes ziet.
De TMP36 Ddatasheet:
http://tinyurl.com/plbx38
(u kunt ook de fiche breadboard lay-out van de onderkant van deze stap)
De delen:
- CIRC-10 Breadboard blad
- 2 pin Header (x4)
- Temperatuursensor (TMP36) (x 1)
- Draad
Het Circuit en alles inpluggen In:
Een kleine Video van alles wordt aangesloten
The Code: - http://tinyurl.com/dfj8rs
/* --------------------------------------------- * | Arduino Experimentation Kit Example Code | * | CIRC-10 .: Temperature :. | * --------------------------------------------- * * A simple program to output the current temperature * to the IDE's debug window * For more details on this circuit: * http://tinyurl.com/c89tvd *///TMP36 Pin Variablesint temperaturePin = 0;//the analog pin the TMP36's //Vout pin is connected to //the resolution is //10 mV / degree centigrade //(500 mV offset) to make //negative temperatures an optionvoid setup(){ Serial.begin(9600); //Start the serial connection //with the copmuter //to view the result open the //serial monitor //last button beneath the file //bar (looks like a box with an //antenae)} void loop() // run over and over again{ float temperature = getVoltage(temperaturePin); //getting the voltage reading from the //temperature sensortemperature = (temperature - .5) * 100;//converting from 10 mv //per degree wit 500 mV offset to //degrees ((volatge - 500mV) times 100) Serial.println(temperature); //printing the result delay(1000); //waiting a second}/* * getVoltage() - returns the voltage on the analog input * defined by pin */float getVoltage(int pin){ return (analogRead(pin) * .004882814);//converting from a 0 //to 1024 digital range // to 0 to 5 volts //(each 1 reading equals ~ 5 millivolts}
Niet werkt?
- Niets lijkt te Happen - dit programma heeft geen uiterlijke indicatie dat het werkt. Om de resultaten te zien moet je de Arduino IDE seriële monitor openen.
- Wartaal wordt weergegeven - dit gebeurt omdat de seriële monitor is het ontvangen van gegevens met een andere snelheid dan verwacht. Om dit te verhelpen, klikt u op de pull-down box dat leest "*** baud" en verander het in "9600 baud".
- Temperatuur waarde is Unchanging. -Probeer de sensor met uw vingers om te Verwarm het knijpen omhoog of het indrukken van een zak ijs tegen het om af te koelen.
(instructies op vorige pagina)
Waardoor het beter:
Outputting spanning:
Dit is een simpele kwestie van het veranderen van één regel. Onze sensor output 10mv per graad Celsius dus om spanning we gewoon het resultaat van getVoltage() weergegeven.
verwijderen van de lijn temperatuur = (temperatuur -.5) * 100;
Outputten graden Fahrenheit:
Nogmaals is dit een eenvoudige wijziging waarvoor alleen wiskunde. Ga graden C---> graden F gebruiken we de formule.
(F = C * 1.8) + 32)
Voeg de regel
temperature = (((temperature - .5) * 100)*1.8) + 32; before Serial.println(temperature);
Meer informatieve uitvoer:
Laat een bericht aan de uitgang voor seriële te maken wat wordt weergegeven in de seriële Monitor informatiever toevoegen. Te doen dit eerst terug naar de origineel Wijzig code:
Serial.println(temperature); ----> Serial.print(temperature); Serial.println(" degrees centigrade");
De verandering naar de eerste regel betekent wanneer we volgende uitvoer verschijnt op dezelfde regel, dan we de informatieve tekst en een nieuwe lijn voegen.
Het wijzigen van de seriële snelheid:
Als u ooit wilt output van een heleboel gegevens over de seriële lijn tijd is van essentieel belang. We zijn momenteel uitzendt op 9600 baud maar veel hogere snelheden mogelijk. Deze wijziging van de regel wijzigen
Serial.begin(9600); ----> Serial.begin(115200);
Upload de schets zet de seriële monitor, wijzig de snelheid van 9600 baud 115200 baud in de trekkracht onderaan menu. U bent nu bezig data 12 keer sneller.