[C] AVR/Arduino + ntc

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 20:56

Damic

Tijd voor Jasmijn thee

Topicstarter
Heb een ntc aan de arduino ingang gehangen met een kleine schakeling ertussen (µc ingang beveiliging), dit is ee ntest voor iets veel groters maar ben de schakeling in stukken aan het testen zodoende dat ik weet dat elk stuk werkt.
Afbeeldingslocatie: http://i63.photobucket.com/albums/h148/fragme_dmc/electronics/arduino/megacarsensorboard/ntc%20in%20problem.png
Het probleem is dat de berekende temperatuur kouder word naarmate de sensor warmer word, wat dus niet juist is.

Vermits ik met die extra weerstand er tussen zit zal ik die moeten meetellen of niet? De balans weerstand is dus in mijn geval 2k5 + 2k ?
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <math.h>

int ReadTemp = 0; // temp read out in Celsius/Fahrenheit/Kelvin
volatile int val;
volatile unsigned long TIME_LOOP = 0;

double Thermister(int RawADC)
{
  volatile double steinhart;
  steinhart = log(((4608000/RawADC) - 4500));
  // Assuming a 10k Thermistor. Calculation is actually: Resistance = (1024 * BalanceResistor/ADC) - BalanceResistor
  steinhart = 1 / (0.001129148 + (0.000234125 * steinhart) + (0.0000000876741 * pow(steinhart,3)));
  switch(ReadTemp)
  {
  case 0:
    return (steinhart - 273.15);            // Convert Kelvin to Celcius
  case 1:
    return (steinhart * 9.0)/ 5.0 - 241.15; // Convert Kelvin to Fahrenheit
  default:
    return steinhart; //Just Kelvin
  }
}


Owja dit krijg ik te zien in serial monitor:
232, 1.13Volt, 15.49C
232, 1.13Volt, 15.49C
232, 1.13Volt, 15.49C
232, 1.13Volt, 15.49C
232, 1.13Volt, 15.49C
....
Nee in mijn kamer is het geen 15°C eerder volgens de analoge thermometer 20°C, het zou dus kunnen dat de 10k ntc geen 10k ntc is.

[ Voor 17% gewijzigd door Damic op 30-10-2015 23:33 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
Als ik je formule in een sheet invul en de gemeten adc waarde laat toenemen, neemt de berekende temperatuur ook toe, dus er klopt iets niet in je meting, of je misschien overflowed er iets ergens.

Controleer eerst eens de term die je gebruikt als Rntc ( Die (4608000/RawADC) - 4500 in je code ) met behulp van de specsheet van je NTC. Daarna de A, B en C termen, ook met behulp van de specsheet.

Die serie weerstand hoef je trouwens niet mee te nemen als je ingang hoogomig genoeg is, aangezien daar in dat geval verwaarloosbaar weinig spanning over zal staan.

Je bent die arme 8 bitter ook wel aan het pesten met je logs en doubles trouwens, ben benieuwd (eigenlijk niet) hoe dat performed in de praktijk.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 20:56

Damic

Tijd voor Jasmijn thee

Topicstarter
Dank je voor het antwoord maar de waarde word bij warmere ntc juist lager ;)

Serie weerstand mag ik dus links laten liggen. Van de NTC heb ik eigenlijk niets van uitgebreide datasheets (VDO 801/1/1)

Performance: valt goed mee, µc is natuurlijk maar 1 iets aan't doen dus.

Led-maniak zei gisteren nog dat het beter was om een lookup tabel aan te maken, maar dan moet je wel de gegevens weten van de ntc |:( eens zien of ik geen andere meer gebruikte ntc vind.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
Als ik het goed zie gebruik je de term (4608000/RawADC) - 4500 als maat voor de weerstand van de NTC, maar hoe kom je daarbij? Moet je niet de spanning meten over de bekende weerstand R18 meten en zo de weerstand van de NTC bepalen? In dat geval zou de logica van je formule iig ook weer kloppen : bij een hogere temperatuur wordt de spanningsval over de bekende weerstand ook hoger en dus de uitkomst van je formule ook.

Als je een LUT wilt gebruiken heb je geoeg aan de sheet die je linked, daar staat een tabel in, maar je moet nog steeds de weerstand goed kunnen meten.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 20:56

Damic

Tijd voor Jasmijn thee

Topicstarter
Voor de mensen die een werkte ntc naar temp zoeken:
C:
1
2
3
4
5
6
float Thermistor(int RawADC) {
  float Temp; 
  Temp = log(10000*(1024.0 / RawADC - 1)); 
  Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * pow(Temp ,3)));
  return (Temp- 273.15);// Return the Temperature in °C
}
de 10000 is de 10k van de - naar de ingang van de arduino, maar dan moet je ntc tussen + en de ingang staan.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag