Forum: Mikrocontroller und Digitale Elektronik AVR-Thermometer in Assembler


von Peter Pan (Gast)


Lesenswert?

Hallo Forum, ich suche seit längerem ein Assemblercodebeispiel zum Thema 
NTC an AVR. Ich weiß nicht, entweder der falsche Suchbegriff in Google 
oder einfach zu dumm. Kann mir hier jemand weiterhelfen? Ich dachte an 
ein Programm, das mit einer internen Tabelle Arbeitet.

Danke im voraus

: Verschoben durch Moderator
von Karl M. (Gast)


Lesenswert?

Soll das jemand für Dich programmieren?

Oder ist eher nur eine Linksammlung interessant?

Wenn Du so etwas einfachen noch nicht selbst kannst, dann nutze C und 
schaue dir den Assembleroutput an.

Denn kann man verwenden und so sich ein reines AVR-Assemblerprogramm 
schreiben.

von test (Gast)


Lesenswert?

Oder mit was einfacheren anfangen (LED blinken lassen) und dann langsam 
weiter ausbauen.

von Michael K. (Gast)


Lesenswert?

Peter Pan schrieb:
> ein Assemblercodebeispiel zum Thema
> NTC an AVR

ADC konfigurieren, Bit auswerten das die Wandlung abgeschlossen ist und 
mit dem Wert was anstellen.
Dazu brauchst Du einen copy paste Code?

Die linearisierung soll Dir auch jemand abnehmen?

Warum programmierst Du in ASM wenn Du nicht in ASM programmieren kannst?

von Platinen Frickler (Gast)


Lesenswert?

Als komplettes Beispiel Design für den PIC bietet sich dieser Beitrag 
von Sprut.de an:

http://www.sprut.de/electronic/pic/projekte/thermo/thermo.htm

Auch wenn Du nach eine AVR Lösung suchst (Ich weiss!), ist hier Vieles 
gut erklärt. Prinzipiell kann man ja den PIC Code für AVR umschreiben. 
Die Programmaufgaben sind ja nahezu dieselben. Es lohnt sich durchaus 
den PIC ASM Code zu studieren.

Temperaturmessung Grundlagen:
http://www.sprut.de/electronic/temeratur/temp.htm

von Peter Pan (Gast)


Lesenswert?

Tut mir leid, ist falsch rüber gekommen. Mir ging es eig um das Prinzip, 
was man beachten sollte, bevor man anfängt. Auch die Schrittweite bei 
der E-Funktion wäre für mich wichtig. Da ich der volle "Mathefreak" bin.

mfg

von Alter Sack (Gast)


Lesenswert?

Peter Pan schrieb:
> Tut mir leid, ist falsch rüber gekommen. Mir ging es eig um das
> Prinzip,
> was man beachten sollte, bevor man anfängt. Auch die Schrittweite bei
> der E-Funktion wäre für mich wichtig. Da ich der volle "Mathefreak" bin.
>
> mfg

Ich habe mir die betreffenden Rubriken von Sprut mal angesehen. Er 
beschreibt die Grundlagen sehr ausführlich. Auch die praktische Seite 
kommt nicht zu kurz was die möglichen Sensortypen betrifft. Die 
beschriebenen Projekte geben zumindest einen Anhalt für den Einstieg.

von Sebastian S. (amateur)


Lesenswert?

Ich würde Dir empfehlen mal oben links, in die Rubrik AVR, zu schauen.
Da findest Du eine recht ausführliche Beschreibung zu den Teilen inkl. 
Assembler.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die e-Funktion wurde schon vor vielen Jahren in einer Siemens-Appnote 
ausführlich beschrieben. Heute heißen die Epcos und gehören zu TDK, aber 
der Text ist immer noch als pdf vorhanden:

https://www.tdk-electronics.tdk.com/de/510060/produkte/produktsuche/technische-parameter/sensoren-und-sensorsysteme/ntc-temperatursensoren--epcos-/ntc-elemente?t=information
vor allem unter "General technical information", und "Standardized R/T 
characteristics".

von Bla (Gast)


Lesenswert?

Schreib auf was es tun soll - je mehr da steht desto höher deine Chancen 
ein Programm daraus zu machen  :-)

von Peter Pan (Gast)


Lesenswert?

Ich dachte an einen billigen NTC (zB für 0,15€ bei Pollin), einen 
Attiny85, und eine serielle Datenverbindung zum PC, über usb <-> ser 
Adapter. Programmieren möchte ich folgendermaßen. Ich messe den 
Spannungswert über den AD-Wandler. Mit dem Wert schaue ich in einer 
Tabelle nach zwischen welchen Temperaturwerten der gemessene Wert liegt 
und nehme das Teilstück als linear an und berechen die Temperatur. Jetzt 
die Frage: Wie fein muß der Abstand der Werte in der Tabelle sein, damit 
das Ergebnis aus einigermaßen genau wird. Bei Pollin der NTC hat bei 25° 
1500 Ohm und einen B-Wert von 3975. Ich dachte, daß ich im Bereich von 
-20° bis 40° in 1° Schritte die Spannungswerte zur Temperatur angeben 
und jenseits von -20° und 40 ° in 2° Schritten. Kann man das so machen 
und ist das Sinnvoll?

von MaWin (Gast)


Lesenswert?

Peter Pan schrieb:
> Kann man das so machen und ist das Sinnvoll?

Man kann einfach für alle 1024 ermittelten ADC Werte eine (in Excel 
vorausberechnete) Tabelle der dazu passenden Temperaturen in den uC 
stecken, was soll der ATtiny85 sonst mit seinem ganzen Speicher anfangen 
bei dem primitiven Job.

Ob man allerdings USB mit einem uC ohne USB interface treiben will, ist 
fraglich, eher ein 20ct CH552 von WCH statt dem steinzeitalten ATtiny85.

von F. F. (foldi)


Lesenswert?

MaWin schrieb:
> Ob man allerdings USB mit einem uC ohne USB interface treiben will, ist
> fraglich, eher ein 20ct CH552 von WCH statt dem steinzeitalten ATtiny85.

Attiny10 und fertigen 1-wire Adapter nehmen, dann wird das alles noch 
schön klein.

von gerd (Gast)


Lesenswert?

Der ATtiny85 hat schon ein eingebautes Thermometer. Da braucht man 
keinen angebauten NTC. Im Device-Databook unter Kapitel 17.12 
"Temperature measurement" beschrieben. Und linear misst das Teil auch. 
Aber wer unbedingt 0,1 Grad Genauigkeit haben möchte, kann das eh nicht 
gebrauchen.

mfg,
gerd

von Karl B. (gustav)


Lesenswert?

Hi,
scroll mal durch hinten im Prog gibt es eine Reihe von Tips, wie man
umrechnet.
Es gibt ja nicht nur einen Temperatursensor.
Einige brauchen eine Konstantstromquelle noch. etc.

http://www.avr-projekte.de/downloads/DS18x20_multi.asm

ciao
gustav

von Achim H. (pluto25)


Lesenswert?

Peter Pan schrieb:
> Kann man das so machen
Klar
> und ist das Sinnvoll?
Möglicherweise
Warum Assembler? Aus Lernzecken oder Flashnot?
Hier: https://bascomforum.de/index.php?thread/1212-ntc-sensor-am-adc/
könnte hilfreiches drin stehen. Kleinere Dinge lassen sich einfach ins 
Asm übersetzen, mit Single-berechnungen haben ich es noch nicht 
versucht.

von Stefan F. (Gast)


Lesenswert?

Vergiss die komplexe Mathematik. Für Raumthermometer erreichst du eine 
gewöhnliche Genauigkeit durch zuschalten passender Widerstände.

Berechnungshilfe: 
https://www.electronicdeveloper.de/MesstechnikNTCLinearR.aspx

Wesentlich genauer wird es nur mit einer Tabelle, die ganz individuell 
an diesen einen Sensor angepasst wird. Also nicht mit berechneten 
Zahlen, sondern tatsächlich gemessenen.

von Lukas G. (lukas88)


Lesenswert?

Befasse dich mit dem ADC sowie Arithmetik  (add, mul,sub) Datenblätter 
des Sensors  der Rest erklährt sich von selbst.

Übrigens : Dank dem das ich mich mit ASM beschäftige, habe ich 
Division/Multiplikation verstanden. Es sind eigentlich nur 
Subtraktion/Additionen...

von Anja (Gast)


Lesenswert?

Peter Pan schrieb:
> Ich messe den
> Spannungswert über den AD-Wandler. Mit dem Wert schaue ich in einer
> Tabelle nach zwischen welchen Temperaturwerten der gemessene Wert liegt
> und nehme das Teilstück als linear an und berechen die Temperatur.

Wenn die Anzeige sowieso im PC erfolgt, wozu dann die Interpolation auf 
dem 8-Bit Rechner? Ich würde nur den A/D-Wert übertragen.

Peter Pan schrieb:
> Wie fein muß der Abstand der Werte in der Tabelle sein, damit
> das Ergebnis aus einigermaßen genau wird.

Das hängt vom Gesamtmeßbereich und dem Linearisierungswiderstand ab.
Ich messe von 10 Grad bis 40 Grad bei optimiertem 
Linearisierungswiderstand mit einer einzigen Geraden mit 0.3 Grad 
maximalem Linearitätsfehler. Bei 10 Bit A/D-Wandler ergeben sich ca 0.1 
Grad Auflösung.

Allerdings wird bei mir jeder einzelne Sensor abgeglichen da die 
billigen NTCs üblicherweise 5% Toleranz haben.

Gruß Anja

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
Noch kein Account? Hier anmelden.