Hy Leute, habe die Suchfunktion schon verwendet, aber nichts passendes gefunden. Folgendes Problem habe ich. bzw. Frage. Ich suche einen Temperatursensor der zwischen ca. -10C und +60C mit ner genauigkeit um die 1C mist. Ich dachte an den DS1820 doch dieser braucht ja eine Wartezeit von 600us wenn ich mich recht erinnere. Ich wollte aber einen haben, den ich anspreche und er mir direkt den Wert liefert. Desweitern sollte er gut mit Bascom ansprechbar sein. und zu guter letzt. sollte man auch 2 davon am Atmel anschließen können. (Das sollte aber eher das kleinere Problem sein.) Danke schonmal im Vorraus Bis denne JungS!
Auslesen kannst du den DS1820 ja sofort, nur ist der Wert den du ausgelesen hast dann halt schon "alt".
>Ich dachte an den DS1820 doch dieser braucht ja eine Wartezeit von 600us >wenn ich mich recht erinnere. Was sollte sich innerhalb von 600us an der Temperatur schon ändern. In der Zeit merkst du nicht mal ob du dir grad die Flossen verbrannt hast.
DS18B20: Bei 9 Bit Auflösung, was für 1°C Genauigkeit ausreicht, sind es knapp 100ms, bei voller Auflösung 750ms. Was nicht heisst, dass der DS in 100ms auf die Temperatur reagiert, das ist nur die Messzeit. Wenn der Sensor tatsächlich im Bereich unter 1s reagieren soll, sollte man sich erst einmal Gedanken um Kontakt und Wärmekapazität des Sensors machen.
Also wie lange dauert denn die Abfrage an den Ds1820 um mir Temperatur zu geben? Versteh ich das richtig, das der DS1820 nur selbständig 600ms braucht um seinen Wert neu zu regenerieren oder brauche ich so lange mit dem uC den Wert auszulesen. Ganz genau möchte ich wissen, wie lange ich von Startzeile des Auslesens brauche, bis zur Ausgabe. Vielen Dank hoffe, man konnte mir folgen
Der Sensor besitzt in diesem Zusammenhang 2 Kommandos: Mit dem einen wird die Messung gestartet, mit dem anderen das Ergebnis ausgelesen. Dazwischen müssen für volle Auflösung 750ms liegen. Die Übertragungszeit für die Kommandos liegt grob bei 1-5ms, je nach Länge.
gibt es nicht einen schnelleren, der kein start und stop benötigt sondern direkt den wert per read auslesen kann..
Was hindert dich daran das Ding kontinuierlich zu starten, also so etwa jede Sekunde? Stört dich die Tatsache dass die Temperatur dann veraltet ist? Hast du so schnelle Temperaturwechsel? Ich würd das so machen: Interrupt Routine die jede Sekunde oder so anspringt, den aktuellen Wert in ein Register schreibt und dann eine neue Messung initiiert. Wenn du dann einmal in deinem Hauptprogramm den Wert brauchst, musst du nur das / die Register auslesen, das geht in kürzester Zeit.
> Ganz genau möchte ich wissen, wie lange ich von Startzeile des Auslesens brauche, bis zur Ausgabe Der DS18B20 im TO92-Gehäuse ist ein langsamer Sensoren. Dass die 12-Bit-Conversion bis zu 750ms dauert, ist in dem Zusammenhang zweirangig. Das ist immer noch rasend schnell im Vergleich zu der Geschwindigkeit, mit der der Sensor eine Temperatur richtig erfasst: er ist zu dick in Plastik eingepackt, um für schnelle Messungen brauchbar zu sein. Wenn man den Sensor zwischen die Fingerspitzen presst, dauert es 5-7 Sekunden, bis er die Temperatur weitgehend erkannt hat. Und danach Minuten, bis er wieder Raumtemperatur sieht. Vergleich: - Ein TSIC306 im SOP8-Gehäuse (auch ein kalibierter digitaler Sensor, ungefähr gleicher Preis, etwas genauer) schafft es in etwa 2-3 Sekunden. Für die Auswertung liefert er ca 10 Werte pro Sekunde. Gibt es auch in einem leicht abgewandelten TO92-Gehäuse, habe ich aber noch nicht getestet. - Ein KTY11-5 (PTC) im TO92-mini-Gehäuse erkennt die Temperatur in etwa 2 Sekunden. Auswertung nahezu belibig schnell ("sofort") mit ADC. Das ist aber ein nicht kalibierter analoger Sensor. - Ein Thermoelement Typ K (offen) mit MAX6674 erkennt die neue Temperatur in ca einer Sekunde. Die Conversion dauert 180ms, liefert also ca 5 Werte pro Sekunde. Analog, aber einigermassen genau auch ohne Kalibration (typischerweise 1-2 Grad Fehler).
Wie schnell aendert sich die Temperatur am Messpunkt und wie schnell muss der Temperaturwert bekannt sein ? Soll ein schnelles Regelsystem gebaut werden ? Was geschieht bei einer Verzoegerung ? Wie gross ist die thermische Masse ? Und die Leitfaehigkeit ?
>gibt es nicht einen schnelleren, der kein start und stop benötigt >sondern direkt den wert per read auslesen kann.. Bei Temperaturänderungen folgt die Temperatur des Sensors der Temperatur des Mediums, in dem er sich befindet, nie instantan. Die Wärme muss schließlich erst von der Oberfläche des Sensors zum Chip im Inneren durch Wärmeleitung wandern. Die Strecke ist zwar klein, aber endlich groß. So entsteht, wenn es wärmer oder kälter wird, immer eine mehr oder weniger große Verzögerung zwischen der Temperatur des Mediums um den Sensor und dem ausgegebenen Messwert (und wenn die Temperatur gleich bleibt, ist eine Verzögerung irrelevant!). Das gilt für alle Temperatursensoren. Einen DS1820 viel öfter als ungefähr einmal pro Sekunde auszulesen, macht aus diesem Grund wenig Sinn.
> Das gilt für alle Temperatursensoren Wobei die thermische Zeitkonstante von Sensoren, die per Kontakt mit dem Medium messen, gewaltig unterschiedlich ausfällt: Ein dünnes Thermoelement (z.B. D=0.025mm) kann eine thermische Zeitkonstante von 0.002 sec haben. d.h. in 0.002 Sekunde ist ein beliebiger Temperatursprung zu 63,2% korrekt erfasst, bei Messung in Wasser. Das kann man schon "instantan" nennen. Beispiel: http://www.omega.com/ppt/pptsc.asp?ref=IRCO_CHAL_P13R_P10R
Hy, danke schonmal für die vielen Infos... Es geht mir eigentlich nicht darum, wie schnell er den "aktuellen" wert erfasst sondern das er mir einen zurückgibt... Es soll soetwas wie ein Boardcomputer werden. Ich wollte eine Schaltung bauen, in der die Einspritzdauer berechnet wird und mit der letzten addiert wird und so weiter und zum schluss bzw. immer wieder auf einem display eine durschnitswert der Einspritzungdauer anzeigt. Dazu wird der Timer gestartet immer wieder überprüft ob noch ein signal anliegt. wenn nicht, wird der Timer gestoppt, mit dem letzten wert addiert die dauer die der Timer festhält liegt zwischen 1,5ms und 9ms. Danach hat er ca. 2ms Pause bis die nächste Einspritzung erfolgt und genau in dieser zeit muss der Wert der Temperatur ausgelesen werden und das Display die ausgabe für Einspritzungsdauer und temperatur übertragen werden. Vielen Dank Jungs
Welche Temperatur wird gemessen ? Eine Gastemperatur ? Eine Fluessigkeit ? Der Motorblock ? Falls es eine Gastemperatur gemessen werden soll, die Temperatur eines dynamischen Gases in einer Waermekraftmaschine, so ist das wertloser Aufwand, denn die Gasgleichungen sind bekannt. Adiabatische Kompression... alles bekannt. Temperaturen waehrend der Explosion kann man so eh nicht messen, so ganz nebenbei.
> genau in dieser zeit muss der Wert der Temperatur ausgelesen werden
Wieso genau in dieser Zeit? Das Messen der Einschaltdauer belastet den
Microcontroller, wenn man es mit Timer und Interrupts macht (z.B. Input
Capture), mit beispielsweise 5us per Messung. Damit ist die CPU zu
0,001% ausgelastet - man hat also noch reichlich Leistung frei,
jederzeit was anderes zu machen. Die 1-Wire-Kommunikation kann man
problemlos nebenher laufen lassen.
Oh mann, wollt Ihr ihn nicht verstehen ? Er meint dass die Messabfrage 750 mS CPU Zeit verheizt. Vermutlich will er einfach nur Raumtemperatur messen (-10 - 60 °C). Also: Nimm den angesprochenen Sensor, das haut alles locker hin. Tss, immer diese IT-Einmal-mit-der-Kirche-ums-Dorf-Denker... Ein Wunder dass da nicht mehr verhungern, so ein Einkaufszettel kann echt komplex sein :-)
> Nimm den angesprochenen Sensor, das haut alles locker hin. Ich habs jetzt nicht nachgeschaut, aber wenn man für den DS1820 über 2ms zum auslesen benötigt, haut das bei ihm nicht hin, da er ja nur 2ms Zeit hat. Wie schon angesprochen würde ich mir da aber auch überlegen das Programm grundsätzlich umzubauen (Interrupt gesteuert?). Hast du nicht vielleicht noch ein Hardware I2C Bus an deinem µC? Da könntest du doch einefach einen LM75 nehmen und die Kommunikation mit dem Sensor läuft im Hintergrund ab (über Interrupts).
> Da könntest du doch einefach einen LM75 nehmen und die Kommunikation mit dem Sensor läuft im Hintergrund ab (über Interrupts). Wenn er lernen würde, mit Interrupts zu programmieren (was doch wohl eine Selbstverständlichkeit ist), gilt das Gleiche für 1-Wire und DS18B20. Es dauert zwar inklusive Conversion rund 750ms, den 1-Wire-Sensor mit 12bit auszulesen. Aber in diesen 750ms muss man den Microcontroller nur jeweils ein paar us lang am Stück und ohne Unterbrechung mit 1-Wire-Protokoll-Aufgaben beschäftigen. Zwischen den Bits kann man Pausen machen und die einzelnen Bitmuster bestehen fast nur aus "Luft" (0 und 1 sind mindestens 60us lang, wobei man die eigentliche Arbeit in 2us unterbringen kann, wenn man das Timing ausreizt - der Rest ist Leerlauf). Von den 750ms kann er also ca 749ms mnutzen, um andere Aufgaben zu erledigen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.