USB Temperatursensor: USBTemp

#1097664
Lesenswert?

Hi,

meine diesjährige Weihnachtsbastelei ist fertig: Ein kleines 
Thermometer, welches über USB kommuniziert. Ich benutze es um 
kontinuierlich die Temperatur aufzuzeichnen. In meinem Fall denke ich 
daran, eine kleine Regelung für die Heizung aufzubauen (die 
HR20-Thermostate habe ich schon) - dafür sollen im nächsten Schritt noch 
Funksensoren dazu kommen. Andere Leute haben ein ähnliches Setup im 
Serverraum laufen.

Das Projekt basiert auf dem ATMega168 und zwei Temperatursensoren 
DS18S20: Einer für die Innen-, der andere für die Außentemperatur. Ich 
benutze den Software-USB-Stack "AVR-USB" von Objective Development und 
die DS18X20-Routinen von Martin Thomas.

Der Code und die Schaltung stehen unter der GPL und sind hier verfügbar:

  http://code.google.com/p/mikrowerk/wiki/USBTemp

Mein Setup daheim beschreibe ich hier:

  http://gonium.net/md/2009/01/03/usbtemp-continuous-temperature-monitoring/

Schönen Gruß,
-Mathias
#1098162
Lesenswert?

> In meinem Fall denke ich daran, eine kleine Regelung für die Heizung
> aufzubauen
Die Regeldaten (Solltemperatur) schickst du dann über ein (Java, C++, 
... )Programm mit dem du die Temp.-Kurven für die einzelnen Räume 
erstellt hast zu dem µC ?

> (die HR20-Thermostate habe ich schon) - dafür sollen im
> nächsten Schritt noch Funksensoren dazu kommen.
Willst du die Daten wirklich per Funk übertragen?

Diese HR20-Thermostate hast du dir aber nur gekauft weil du dir die 
Mechanik nicht selbst machen kannst, die Elektronik schmeißt du doch 
dann bestimmt raus.
#1098889
Lesenswert?

Hallo Peter,

Peter Bandhauer wrote:
>> In meinem Fall denke ich daran, eine kleine Regelung für die Heizung
>> aufzubauen
> Die Regeldaten (Solltemperatur) schickst du dann über ein (Java, C++,
> ... )Programm mit dem du die Temp.-Kurven für die einzelnen Räume
> erstellt hast zu dem µC ?

So denke ich mir das, ja. Welche Regelverfahren dann zum Einsatz kommen 
etc. ist noch offen. Im Moment finde ich es schon spaßig, die 
Abweichungen von Thermostat- und tatsächlicher Raumtemperatur zu plotten 
- das Verhalten erschließt sich mir noch nicht ganz. Wie gesagt, ist 
eine Spielwiese.

>> (die HR20-Thermostate habe ich schon) - dafür sollen im
>> nächsten Schritt noch Funksensoren dazu kommen.
> Willst du die Daten wirklich per Funk übertragen?

Ja, warum nicht? Ich denke an die RFM12-Module. Natürlich muß der 
Datentransfer verschlüsselt werden. Ich möchte - soweit möglich - 
bereits existierenden Code bzw. Projekte wiederverwenden, da bietet sich 
RFM12 an. (Modulo die Probleme, die ich erst später finde ;-))

> Diese HR20-Thermostate hast du dir aber nur gekauft weil du dir die
> Mechanik nicht selbst machen kannst, die Elektronik schmeißt du doch
> dann bestimmt raus.

Warum? (Ernstgemeinte Frage!) Eigentlich (s.o.) hab ich mir die 
HR20-Thermostate gekauft, weil sie als Experimentierplattform im 
preislichen Rahmen bleiben und weil es wiederum Leute hier im Forum 
gibt, die Code dafür entwickeln. Bis jetzt bin ich auch eigentlich ganz 
zufrieden damit. Gibt es denn Probleme damit?

Schönen Gruß,
-Mathias
#1099344
Lesenswert?

Hi,

Peter Bandhauer wrote:
>> Gibt es denn Probleme damit?
> Nein, ich hab mir die aber mal angeschaut und frage mich ob die irgend
> eine Schnittstelle haben.
> Sieht nicht so aus, da ist doch nur eine Zeitschaltuhr drin.

Im Prinzip ja, allerdings ist das im Prinzip nur ein ATMega169. Guckst 
Du hier:

 http://www.mikrocontroller.net/articles/Heizungssteuerung_mit_Honeywell_HR20

Die Leute schreiben eine alternative Firmware für den HR20. Später ist 
dann geplant, weitere Interfaces (CAN, RFM12) dranzuhängen.

> Wie machst du das?

Noch gar nicht ;-) Ich benutze die HR20 nur, weil ich sonst vergesse, 
die Heizung in meiner Mietwohnung herunterzudrehen. Nächster Schritt ist 
für mich erst einmal, via Funk einzelne Sensoren zu erfassen. Heute kam 
mein SHT11-Sample ;-)

Gruß,
-Mathias
#1185198
Lesenswert?

Hallo Björn,

in der Tat, C5 fühlte sich verpolt. Danke für den Hinweis, der 
Kondensator ist nun richtig herum im Schaltplan. Gleichzeitig habe ich 
noch ein paar Bugfixes an der Hostsoftware gemacht. Weiterhin enthalten 
die Graphen nun neben dem letzten Wert auch direkt Minimum, Maximum und 
Durchschnitt der Temperaturen in dem jeweiligen Zeitraum, siehe hier:

  http://gonium.net/md/temperature/

Das neue Release (V0.1.1) ist bei Google Code zu haben:

  http://code.google.com/p/mikrowerk/wiki/USBTemp

Schönen Gruß,
-Mathias
#1185847
Lesenswert?

Hallo Marcel,

M. W. wrote:
> wofür bzw. wohin geht VDD?
> Ich habe eine Brille, finde aber trotzdem keinen Anschluss dafür.

Das wenn Du VDD in der rechten oberen Ecke des Schaltplans meinst: Das 
liegt daran, daß das Eagle-Symbol für den DS18S20 VDD und GND benutzt. 
Die beiden werden einfach auf GND gelegt, die Temperaturmessung 
funktioniert über Parasite Power.

> Die Software finde ich auch nicht.

Brauchst Du Brille:

http://code.google.com/p/mikrowerk/downloads/list

HTH,
-Mathias
Persönliche Seite #1188230
Lesenswert?

Mathias D. wrote:
> Simon K. wrote:
>> Warum kein AVR mit eingebautem USB? Das ist standardkonformer.
>
> Kennst Du einen USB-AVR im DIL-Gehäuse? Ich würde auch einen "richtigen"
> USB-Stack bevorzugen, aber ich mag nicht extra Platinen ätzen lassen.
> Ich kenne den 90USB162 recht gut, aber der ist eben als SMD-Bauteil
> ausgelegt.

Ok, im DIL Gehäuse wird's dann doch problematisch.
#1199822
Lesenswert?

Hallo Björn,

Björn Biesenbach wrote:
> ich habe/hatte das Problem, dass die Sensoren bei längerem
> Anschlusskabel nicht erkannt wurden. Nach Abschalten der Compiler
> Optimierung ( OPT=0 ) funktionierte es. Allerdings benutze ich auch
> einen Mega8. Damit die Firmware noch ins Flash passt, habe ich die debug
> Infos abgeschaltet.

Dieses Problem habe ich in meinem Fall durch ein geschirmtes Kabel 
gelöst. Mein Anschlußkabel ist allerdings auch nur ca. fünf Meter lang. 
Interessant, daß sich die Probleme auch durch das Abschalten der 
Kompileroptimierungen beheben lassen. Wahrscheinlich "optimiert" der 
Compiler die Timings des Onewire-Protokolls kaputt.

Schönen Gruß,
-Mathias
Gast #1450616
Lesenswert?

Zuerst einmal vielen Dank für diese tolle Lösung, entsprach sie doch 
fast dem, was ich erreichen wollte.
Mittlerweile habe ich den Code auf den ATTiny45 portiert und dabei noch 
den Quarz eingespart. Zwei Pins des 45er dienen jetzt als Ausgang und 
einer davon wird in Zukunft meine Heizung steuern.
Als nächstes wird noch der watchdog implementiert und dann folgt der 
Langzeittest.
Erstaunlich ist die Streuung der DS18S20. Vier von sechs sind ziemlich 
genau, d.h. eine Abweichung von weniger als 0,2°C, während einer bei ca. 
0,7°C liegt und der letzte mit über 1,2°C abweicht, wobei es kein 
linearer Offset ist.
#1455789
Lesenswert?

Hi,

seit_z80 schrieb:
> Zuerst einmal vielen Dank für diese tolle Lösung, entsprach sie doch
> fast dem, was ich erreichen wollte.

Schön!

> Mittlerweile habe ich den Code auf den ATTiny45 portiert und dabei noch
> den Quarz eingespart. Zwei Pins des 45er dienen jetzt als Ausgang und
> einer davon wird in Zukunft meine Heizung steuern.
> Als nächstes wird noch der watchdog implementiert und dann folgt der
> Langzeittest.

Interessant. Du hast auch den USB-Part auf den ATTiny45 gebracht? Ist 
der Code bzw. Dein Schaltplan irgendwo zugänglich?

> Erstaunlich ist die Streuung der DS18S20. Vier von sechs sind ziemlich
> genau, d.h. eine Abweichung von weniger als 0,2°C, während einer bei ca.
> 0,7°C liegt und der letzte mit über 1,2°C abweicht, wobei es kein
> linearer Offset ist.

Hm, das habe ich noch gar nicht gemessen. Bei den beiden, die ich 
benutze, liegt der Unterschied konstant bei 0.1°C, wenn sie 
nebeneinander liegen. 1,2° ist schon etwas viel.

Schönen Gruß,
-Mathias
Gast #1459458
Lesenswert?

Hallo Mathias,

ja, der 45er macht de facto alles und natürlich auch die Kommunikation 
per USB. Im Grunde nichts revolutionär neues nach eurer Vorarbeit.
Da ich den Code für die UART entfernt habe, passt jetzt alles in den 
45er. Ich werde den uC-Code weiter reduzieren und nur noch die 
Sensordaten unkonvertiert übertragen, denn die Konvertierung kann das 
usbtemp45 übernehmen.
Was mich momentan noch stört, ist die relativ geringe 
Konvertierungsrate, denn wenn ich 5 Sensoren minütlich abfrage, dann 
dauert es bis zu 3 Minuten, bis die Sensoren ihre Werte aktualisieren.
Aber an sich eine super Lösung und kaum noch zu unter- bzw. überbieten.

Viele Grüße,

Steffen
Angehängte Dateien:
#1459577
Lesenswert?

Hi Steffen,

seit_z80 schrieb:
> ja, der 45er macht de facto alles und natürlich auch die Kommunikation
> per USB. Im Grunde nichts revolutionär neues nach eurer Vorarbeit.
> Da ich den Code für die UART entfernt habe, passt jetzt alles in den
> 45er. Ich werde den uC-Code weiter reduzieren und nur noch die
> Sensordaten unkonvertiert übertragen, denn die Konvertierung kann das
> usbtemp45 übernehmen.

Ah, ok. Ohne den Serial-Teil kann das natürlich funktionieren. Macht 
Sinn :-)

> Was mich momentan noch stört, ist die relativ geringe
> Konvertierungsrate, denn wenn ich 5 Sensoren minütlich abfrage, dann
> dauert es bis zu 3 Minuten, bis die Sensoren ihre Werte aktualisieren.

Hm, hast Du vielleicht Probleme mit der Kommunikation über Onewire? Zum 
Debuggen wäre natürlich eine serielle Leitung schön ;-) Ich hab 
instabile
Verbindungen über Onewire beobachtet, die von zu langen Kabeln (> 5m) 
verursacht wurden.

> Aber an sich eine super Lösung und kaum noch zu unter- bzw. überbieten.

Standing on the shoulders of giants... Der Obdev USB Stack sowie die 
Arbeiten von Martin Thomas sollten nicht unerwähnt bleiben.

Schönen Gruß,
-Mathias

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren