Hallo ik heb een controller met 8 AD ingangen (1 BYTE)
De sign. ingang op de AD is 0-5 volt
die 0-5volt kan ik dus verdelen over 255 stappen (is 1 BYTE)
Nu wilik een temp. sensor van 0-100 graden op de AD in aansluiten
en dan zoversterken dat 0 graden is 0volt en 100 graden is 5 volt.die 0-100 graden moet nu verdeelt worden over die ene BYTE zo dat ik de formule krijg
sensor=ADinGang x (100/255)dus als de AD ingang bijv. 2,5 volt is moet dit overeen komen met 50 graden celsius
2,5 volt op de AD ingang is een halve BYTE ongeveer 127
dus sensor = 127 x (100/255)=49,8 graden
Oke dat werkt dus wel .
Maar nu wat ik eigelijk wil
ik wil het graag nauwkeuriger. nu gaat het met 0,39 graad omhoog.Kan het beter
ik zit met die 255 stappen
Is het zo te programmeren dat het nauwkeuriger kan.
Of is hier voor een betere oplossing
het moet wel op de AD ingang aangeboden worden
want ik wil er ook schakelpunten in maken.
Ik hoop dat iemand mij op een idee helpt of verder helpt

Je kan b.v. een lm75 proberen das een 10bit (een van de verschillende instellingen) I2C temperatuur censoren. Nou kan je er 127 van achterelkaar plakken als je zou willen. Dan heb je geen 8AD's nodig. Ik denk niet dat je een hogere resolutie kan krijgen. 8bit = 8bit, de resolutie blijft 255 stappen meer niet.

[edit]
Schakelpunten?
hoe bedoel je?

Op 21 juli 2005 20:07:23 schreef Captnoord:
Je kan b.v. een lm75 proberen das een 10bit (een van de verschillende instellingen

LM75? dat is toch zo'n sensor met een nauwkeurigheid van 1.5 tot 2 graden, wat heb je dan aan die 10 bit ?

je zou het bereik kunnen verkleinen als dat mogelijk is, bijvoorbeeld 0-25,5 graden en dan het signaal versterken.
Anders heb je een andere, nauwkeuriger AD nodig, of een sensor die meteen digitaal uitstuurd, een spi of I2C, geen gedonder met calibratie en versterkers/externe componenten.
Ik gebruik vaak een TC77 of DS1621.

Op 22 juli 2005 04:56:34 schreef gradtje:
je zou het bereik kunnen verkleinen als dat mogelijk is, bijvoorbeeld 0-25,5 graden en dan het signaal versterken.
Anders heb je een andere, nauwkeuriger AD nodig, of een sensor die meteen digitaal uitstuurd, een spi of I2C, geen gedonder met calibratie en versterkers/externe componenten.
Ik gebruik vaak een TC77 of DS1621.

Ja intressant heb de datasheet bekeken van de TC77 en dat is wel wat voormij.(zie het voor het eerst)
heb jij toevallig een basic progr. voorbeeldje voor de TC77
bij voorbaat dank..

Ik heb het in assembler geschreven, maar ik denk dat je het deel dat de tc77 uitleest wel in de basic kunt plakken, maar dat zul je zelf even moeten doen dan.

Op 21 juli 2005 20:00:25 schreef Hans Broersen:
ik wil het graag nauwkeuriger. nu gaat het met 0,39 graad omhoog.Kan het beter. ik zit met die 255 stappen
Is het zo te programmeren dat het nauwkeuriger kan.

Om ff terug te komen op een niet IC vorm van temperatuur meten.
- Diep middelen, op die manier kan je er bit bij krijgen (mits er genoeg ruis aan de ingang is)
bv. je telt 256 AD waarden op, en deelt het daarna door 32.
- Dual slope methode,en andere laad-ontlaad methoden, heb je wel iets van een timer nodig intern. Deze methode schijnt 10bit naukeurigheid wel te halen.

En om resolutie en nauwkeurigheid niet te verwarren : vergeet niet te curve-fitten want een NTC heeft geen linear gedrag.
Bekijk de fouten die de NTC heeft, 25oC resistance , BetaCurve hebben meetstal wel een Procentje fout.
Bekijk de IngangsImpedantie van de AD-converter,zelfopwarming van de NTC,refspanning etc...

Dus om een beetje naukeurig te kunnen meten kan een 1 of 2 punts calibratie geen kwaad.

Op 24 juli 2005 10:41:07 schreef gradtje:
Ik heb het in assembler geschreven, maar ik denk dat je het deel dat de tc77 uitleest wel in de basic kunt plakken, maar dat zul je zelf even moeten doen dan.

Ja graag als ik maar een klein opzetje heb
dan borduur ik zelf wel weer verder

Op 24 juli 2005 11:42:56 schreef FrostByte:
[...]

Om ff terug te komen op een niet IC vorm van temperatuur meten.
- Diep middelen, op die manier kan je er bit bij krijgen (mits er genoeg ruis aan de ingang is)
bv. je telt 256 AD waarden op, en deelt het daarna door 32.
- Dual slope methode,en andere laad-ontlaad methoden, heb je wel iets van een timer nodig intern. Deze methode schijnt 10bit naukeurigheid wel te halen.

Om eerlijk te zijn snap ik niet wat je bedoelt
toch zou ik het heel graag willen weten om een AD ingang naar 10 bit te krijgen

Ik weet niet wat voor programmeertaal je gebruikt Asm,C,Basic,

maar middelen ziet er simpelweg zo uit

Psuedo progje :


int  ADsom       // Som van een aantal AD waarden
int  myADresult  // 10bits Eindresultaat 
byte ADvalue     // 8bits AD converter resultaat
byte aantal      // tellertje

subroutine MeetADwaarde()
{ ADsom  = ADsom + ADvalue
  aantal = aantal + 1
}

main()
{ if ( aantal == 255 )
  { myADresult = ADsom / 64
    ADsom  = 0
    aantal = 0
  }
)

Als je deelt door 32 heb je een 11bits resultaat,
delen door 16 een 12bits resultaat , delen door 1 een 16bits resultaat.

Deze methode heeft wel wat ruis nodig aan de AD ingang, de ADwaarde moet namelijk een beetje twijfelen tussen twee ad-waarden.
--
Voor de dual-slope methode moet je al aardig wat veranderen in je schakeling. Ik kan je het beste even verwijzen naar internet voor deze oplossing.

Hee Bedankt

Ik gebruik Basic en de microcontroller is een 68HC11
maar het voorbeeld is toch niet compleet ..Of wel ??
het voorbeeld kan ik wel omzetten in het basic maar dan zie ik de werking nog niet
maar ik zal het internet nog raadplegen over de Dual slope methode .
ik word steeds wijzer
Bedankt

Hoe wil je in godsnaam 10 bit resolutie krijgen met een 8-bit interface, zonder in te boeten wat bereik betreft ?

[Bericht gewijzigd door Wim P. op ]

Op 24 juli 2005 19:07:44 schreef Wim P.:

Hoe wil je in godsnaam 10 bit resolutie krijgen met een 8-bit interface, zonder in te boeten wat bereik betreft ?

Door meerdere keren te samplen en hiervan het gemiddelde te nemen. Hierdoor wordt het geheel trager, maar de resolutie wordt hoger.

Op 24 juli 2005 19:15:19 schreef Thomas:
[...]
Door meerdere keren te sampelen en hiervan het gemiddelde te nemen. Hierdoor wordt het geheel trager, maar de resolutie wordt hoger.

Dat is waar maar dat geeft een statistisch resultaat en geen echt empirisch meer.

Op 24 juli 2005 19:07:44 schreef Wim P.:

Hoe wil je in godsnaam 10 bit resolutie krijgen met een 8-bit interface, zonder in te boeten wat bereik betreft ?

Ja in het voorbeeld is optrekken naar 16 bits erg overdreven. Deze truuk werkt ook het beste bij 12bits AD converters omdat de waarde daar meer ruist. je krijgt dus bijna nooit de zelfde AD waarde van je AD-converter maar het schommelt een paar counts rondt de echte waarde. Door te middelen filter je de ruis eruit en krijg je een stabiele waarde.

Voorwaarde is dat de ruis wel Gaussische is.

Voor Hans is dit een erg simple methode omdat hij niets aan zijn hardware hoeft te veranderen, hij moet alleen een paar routines toevoegen in zijn code.

Mooier is nog om de routine als een lopend gemiddelde op te zetten.

...en zijn datatypes aanpassen naar meer-dan-8-bit.