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
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.
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?
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
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.
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.
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?
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.
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.
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
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.
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.
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...
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