[C++] Inverted waarde omzetten

Pagina: 1
Acties:

  • Servowire
  • Registratie: September 2000
  • Laatst online: 22-08 11:33

Servowire

prutser:~#

Topicstarter
Ik heb een sensor via mijn game-port aangesloten (zie mijn andere topiq), maar de waardes die ik nu krijg moeten naar Celcius worden omgezet in weer een apart programma/functie.

Ik heb 3 eik waardes:

bij 100 graden is de waarde 19
bij 17 graden is de waarde 57
bij 6 graden is de waarde 80

Is dit een logoritmisch verband ofzo? :?
Hoe zou je dit in C++ kunnen omrekenen?

met papier mache kun je alles maken!!


Verwijderd

Heb je geen spessheet van die sensor? waarinstaat hoe je 't om moet rekenen?

  • Servowire
  • Registratie: September 2000
  • Laatst online: 22-08 11:33

Servowire

prutser:~#

Topicstarter
Verwijderd schreef op 26 December 2002 @ 20:02:
Heb je geen spessheet van die sensor? waarinstaat hoe je 't om moet rekenen?
Het is een NTC weerstand op een gameport, dus de waardie ik krijg is geen "temperatuur", maar kan het er wel van afleiden..

[ Voor 4% gewijzigd door Servowire op 26-12-2002 20:28 ]

met papier mache kun je alles maken!!


  • Aaargh!
  • Registratie: Januari 2000
  • Laatst online: 21-08 18:16

Aaargh!

Bow for me for I am prutser

de manier van weerstand meten die de gameport gebruikt is niet heel erg precies.

Er word gebruik gemaakt van een 555 timer en een condensatortje, de condensator word over de variabele externe weerstand opgeladen en de tijd die dit in beslag neemt word gemeten (hoe groter de weerstand hoe langer de oplaadtijd)

Je zou kunnen uitzoeken hoe de gelezen waarde in relatie staat met de tijd die nodig is voor het opladen en dan daarmee uitrekenen wat de weerstand was.

Je kan imho beter gebruik maken van een brug van wheatstone icm een ADC

[ Voor 17% gewijzigd door Aaargh! op 26-12-2002 22:18 ]

Those who do not understand Unix are condemned to reinvent it, poorly.


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 12:58

Reptile209

- gers -

Volgens de trendline van Excel zou je kunnen werken met
T=239,29e-0,0462c, met T je temperatuur in graden en c de waarde die je uitleest (Voor de liefhebber: R=0.9999, bijna precies dus, hoewel lastig te zeggen op 3 punten...)

Dat zou dan zoiets kunnen worden:
C++:
1
2
3
float NTCWaardeNaarGraden(int ntcWaarde) {
  return 239.29*exp(-0.0462*ntcWaarde);
}

Zo scherp als een voetbal!


  • Servowire
  • Registratie: September 2000
  • Laatst online: 22-08 11:33

Servowire

prutser:~#

Topicstarter
Reptile209 schreef op 26 december 2002 @ 22:37:
Volgens de trendline van Excel zou je kunnen werken met
T=239,29e-0,0462c, met T je temperatuur in graden en c de waarde die je uitleest (Voor de liefhebber: R=0.9999, bijna precies dus, hoewel lastig te zeggen op 3 punten...)

Dat zou dan zoiets kunnen worden:
C++:
1
2
3
float NTCWaardeNaarGraden(int ntcWaarde) {
  return 239.29*exp(-0.0462*ntcWaarde);
}
er komt hier een waarde uit die ver onder nul ligt.....

code:
1
Sensor 1: -1610612736

met papier mache kun je alles maken!!


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Je kunt er ook een tweede-machtsfunctie doorheen jassen. Dat zal wel iets beter zijn dan de trendline van Excel. Maar hoe nauwkeurig wil je het hebben. Als je het heel nauwkeurig wil doen, kun je misschien beter wat meer eikwaarden opmeten en tussen die eikwaarden een lineaire functie gebruiken.

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 12:58

Reptile209

- gers -

Servowire schreef op 27 December 2002 @ 12:54:
[...]


er komt hier een waarde uit die ver onder nul ligt.....

code:
1
Sensor 1: -1610612736
Probeer je 'm nu wel als float af te drukken? Ik heb nl zo het vermoeden dat de waarde die hier staat de longint of int weergave van een float-variabele is. De functie zoals ik 'm gaf geeft dus een float terug! :X
Tip: druk ook de waarde die op de sensor uitgelezen wordt eens af, en laat daar mijn formule op los. Dan weet je iig wat het "juiste" antwoord zou moeten zijn...

Zo scherp als een voetbal!

Pagina: 1