Sida 1 av 1
Flera termistorer till arduino.
Postat: 7 april 2012, 18:06:11
av ochkl0620
Go middag!
Nu har jag en liten fråga till er som kan detta lite bättre.
Jag har en kod här som visar aktuellt värde på en display, med en termistor kopplad på A0.
Vad jag förstått så kan jag ha flera termistorer på A1,A2,A3 osv? Jag vill ha 3st inkopplade.
Så långt är jag med. Men jag vet inte riktigt hur jag ska göra i koden för att det ska funka.
Jag vill föresten ha en knapp som jag trycker på för att visa termistor 1,2och3 mätvärde.
Någon som kan ge lite vägledning?
Kod: Markera allt
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 241.13; // Convert Kelvin to Celcius
return Temp;
}
void setup() {
lcd.begin(16,2);
lcd.clear();
Serial.begin(9600);
}
void loop() {
Serial.println(int(Thermister(analogRead(0)))); // display Fahrenheit
lcd.setCursor(0, 0);
lcd.print(" THERMOMETER!");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(int(Thermister(analogRead(0))));
lcd.print(" degrees C");
delay(500);
lcd.clear();
}
Re: Flera termistorer till arduino.
Postat: 7 april 2012, 18:09:23
av Lennart Aspenryd
Arduino har väl 6 analoga ingångar, så det är första begränsningen.
Vilket värde du vill visa bestämmer du kanske enklast med just tre knappar som styr outputen!
Re: Flera termistorer till arduino.
Postat: 7 april 2012, 18:11:32
av Klas-Kenny
Jag har ingen koll alls på Arduino-programmering, men jag antar att om man byter ut 0an i analogRead(0) till 1 2 3 etc. vilket borde styra vilken analog kanal man läser av.
Edit: Detta är en stor anledning till att jag inte gillar Arduino.. Få personer lär sig programmera, de flesta bara kopierar andras kod eftersom att det finns så enormt mycket.
Re: Flera termistorer till arduino.
Postat: 7 april 2012, 19:32:03
av ElectricMan
Du måste reverse engineera koden och försöka förstå vad ungefär det är som händer.
Ett tips är att skriva kommentarer på varje rad så kan du enklare förstå koden.
Typ såhär:
Kod: Markera allt
void setup() {
lcd.begin(16,2); // starta LCD
lcd.clear(); // rensa LCD
Serial.begin(9600); // påbörja seriell-komm.
}
Läs på om detta:
http://arduino.cc/en/Reference/analogRead
Re: Flera termistorer till arduino.
Postat: 7 april 2012, 22:49:02
av Electricguy
Det räcker att du lägger till fler analogread rader. Tex. såhär:
OBS! Endast en ingång kommer att skickas ut seriellt eftersom den andra inte finns tillagd i Serial.print
Kod: Markera allt
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 274.13; // Convert Kelvin to Celcius
return Temp;
}
void setup() {
lcd.begin(16,2);
lcd.clear();
Serial.begin(9600);
}
void loop() {
Serial.println(int(Thermister(analogRead(1)))); // display Fahrenheit
lcd.setCursor(0, 0);
lcd.print(int(Thermister(analogRead(2))));
lcd.setCursor(0, 1);
lcd.print(int(Thermister(analogRead(1))));
lcd.print(" degrees C");
delay(500);
lcd.clear();
}
Valfi analog ingång kan användas. Nackdelen är att alla analoga in kommer att köras genom samma uträkning. Så antingen har man likadana sensorer eller så kalibrerar man analogt med en trimpot. Om man vill göra det enkelt för sig.
Re: Flera termistorer till arduino.
Postat: 7 april 2012, 23:42:59
av Electricguy
Insåg just att man inte alls behöver kalibrera sensorerna annat än att sätta ett lika stort pulldown motstånd som termistorns resistans.. (Jag mätte vid ca 20C)
Här är en uppdaterad kod för 2st sensorer. Som också printar ut värdena rätt snyggt på serieterminalen
OBS! Den är anpassad för LCD shieldet som DealExtreme säljer.
Kod: Markera allt
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 274.13; // Convert Kelvin to Celcius
return Temp;
}
void setup() {
lcd.begin(16,2);
lcd.clear();
Serial.begin(9600);
}
void loop() {
Serial.print(int(Thermister(analogRead(1) )));
Serial.println(" DEGREES C OUT");
Serial.println("");
Serial.print(int(Thermister(analogRead(2) )));
Serial.println(" DEGREES C IN");
lcd.setCursor(0, 0);
lcd.print(int(Thermister(analogRead(2))));
lcd.print(" degrees C IN");
lcd.setCursor(0, 1);
lcd.print(int(Thermister(analogRead(1))));
lcd.print(" degrees C OUT");
delay(500);
lcd.clear();
}
Re: Flera termistorer till arduino.
Postat: 9 april 2012, 00:58:02
av Mindmapper
Klas-Kenny skrev:
Edit: Detta är en stor anledning till att jag inte gillar Arduino.. Få personer lär sig programmera, de flesta bara kopierar andras kod eftersom att det finns så enormt mycket.
Kan inte anse att det är bättre när det inte finns kodexempel tillgängligt. Atmel har väl blivit så populär genom att det finns mycket användarstöd. Varför ska det finnas få som lär sig programmera Atmel pga av detta?
Re: Flera termistorer till arduino.
Postat: 9 april 2012, 01:04:30
av Klas-Kenny
Kodexempel är sin sak, färdiga program en annan.
Re: Flera termistorer till arduino.
Postat: 9 april 2012, 01:41:18
av ochkl0620
Jag tycker arduino är förbannat bra

Den har fått mig att ens våga försöka mig på kodning o så

Har lärt mig att modda lite kod nu till en början
Re: Flera termistorer till arduino.
Postat: 9 april 2012, 08:27:11
av Electricguy
Hahah ja utan Arduino vette fan om jag ens hade börjat med µC någon gång.
