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
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.
Oder mit was einfacheren anfangen (LED blinken lassen) und dann langsam weiter ausbauen.
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?
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
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.
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".
Schreib auf was es tun soll - je mehr da steht desto höher deine Chancen ein Programm daraus zu machen :-)
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
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
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
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.