Nach längerer Zeit wieder ucs. Es geht um ein Messprogramm für Fußbodenheizungen. Es gibt für FBHs verschiedene Trockenbausysteme mit Kosten zwischen 10 und 50 €/m2. Ich suche das billigste System mit brauchbarem Ergebnis. Die Dinger unterscheiden sich im Prinzip nur hinsichtlich der verwendeten Wärmeleitbleche. Verwendet werden Lamellen aus verzinktem Stahlblech oder Aluminium von 0,08 bis 0,5 mm Stärke. Ich will an einem Modell die Auswirkungen unterschiedlicher Bleche messen. Verwendet werden sollen ds1820 - billig bewährt und ausreichend gute Software vorhanden. Damit meine ich die von Peter Dannegger und Falk Brunner - wobei nach meiner Erfahrung die von Falk Brunner zuverlässiger läuft - also werde ich die verwenden. Meine Anforderung ist, dass die ds1820-adressen automatisch vom Programm verwaltet werden ohne dass man den Programmcode ändern muss. Etwa so: 20 mögliche 8byte-Adressen werden im eeprom gespeichert Es gibt im eeprom ein Inhaltsverzeichnis, das status und Ordnungsnummer in jeweils einem Byte speichert. Beim Programmstart wird geprüft, ob die gefundenen Sensoren den als aktiv gemeldeten Sensoren entsprechen - wenn nein, passiert irgendwas. Ich habe sowas schon mal gemacht, es funktioniert auch - aber nicht so gut dass ich es nach längerer Zeit ohne größeren Aufwand wieder benutzen kann. Also neu machen - es sei denn es gibt schon irgendwas Fertiges was meinen Anforderungen entspricht. Das ist jetzt nach langer Vorrede die Frage: gibt es ein gutes Verwaltungsprogramm für ds1820-Adressen?
niemand versteht mich/mein Problem? Hier mal ein erster Lösungsansatz:
1 | uint8_t yesno_keyboard(void) |
2 | {
|
3 | down_timer1=600; |
4 | while(down_timer1){ |
5 | if( !(PIND&(1<<3)))return 1; |
6 | }
|
7 | return 0; |
8 | }
|
9 | |
10 | |
11 | |
12 | |
13 | void a_ds1820_init(void){ |
14 | u8 i=0,jj,j; |
15 | a_ds1820_start_meas(); |
16 | a_eeprom_in_array_einlesen(); |
17 | wait; |
18 | a_ds1820_find_ids(); |
19 | lgi(1,12,zl_sensors_hw);lw("/");li(MAX_ROMS); |
20 | |
21 | for (i=0;i<zl_sensors_hw;i++){ |
22 | if(ds1820table[i]>0x0fff){ |
23 | |
24 | lg(2,1);for(jj=0;jj<8;jj++)lcd_hx(ds1820ids_tmp[i*8+jj]); |
25 | |
26 | |
27 | for(j=0;j<MAX_ROMS;j++) |
28 | {
|
29 | lg(4,1);for(jj=0;jj<8;jj++)lcd_hx(ds1820ids[j*8+jj]); |
30 | lg(3,1);lw("store at "); li(j);lw(" ? "); |
31 | |
32 | if(yesno_keyboard()==1){ |
33 | for(jj=0;jj<8;jj++) |
34 | {eeprom_update_byte(eep_ds1820_adr+j*8+jj,ds1820ids_tmp[i*8+jj]);} |
35 | break; |
36 | }
|
37 | }
|
38 | }
|
39 | |
40 | }
|
41 | }
|
Wenn beim Start Sensoren gefunden werden die noch nicht im eeprom gespeichert sind wird einzeln abgefragt, an welcher Stelle sie im eeprom gespeichert werden sollen.
> aber nicht so gut dass ich es nach längerer Zeit ohne größeren Aufwand wieder benutzen kann. Also neu machen - Mit deinem Lösungsansatz läufst du aber wieder in die gleiche Falle. Ich habe gar nicht erst versucht, das zu verstehen. Vor vielen Jahren hatte ich aber ein ähnliches Problem. Mein Ziel war, ganz ohne Tabellen und Eingaben auszukommen, um (neue) Sensoren anzulernen. Ich habe es gelöst, wie in [[Beitrag "Re: DS1820, DS18B20 in C"]] beschrieben. Wenn das für dich interessant ist, könnte ich dich unterstützen.
Josef D. schrieb:
"Bei der Inbetriebnahme schließt man also die Sensoren in der
Reihenfolge
einzeln an, wie sie in der Überschrift stehen, und schaltet jeweils
einmal kurz ein."
Ich hab 10 fest verklebte Sensoren. Die einzeln anzulernen wäre sehr
umständlich und ist nicht das, was ich will.
Jeder Sensor hat eine Position, die irgendwo gespeichert werden muss. Ob
im Sensor selbst oder im eeprom ist im Prinzip egal. Die Position wird
bei Programmstart einmal ausgelesen und in einem Array abgelegt. der
Zugriff auf die Sensoren erfolgt dann über die im array abgespeicherte
Position.
1 | ds1820table[0]=9; |
2 | ds1820table[1]=7; |
3 | ds1820table[2]=2; |
4 | ds1820table[3]=6; |
5 | ds1820table[4]=0; |
6 | ds1820table[5]=4; |
7 | ds1820table[6]=8; |
8 | ds1820table[7]=3; |
9 | ds1820table[8]=5; |
10 | ds1820table[9]=1; |
11 | |
12 | |
13 | ....
|
14 | onewire_match_rom(ds1820ids+8*ds1820table[sens_nr]); |
15 | res = ds18B20_read_temp(&temp); |
Problem ist die Eingabe der Werte in den uc. 4Zl-Lcd + 1 Taste gestaltet sich schwierig. Ich werde es wohl wieder über ein ir-Menu machen.
grundschüler schrieb: > Problem ist die Eingabe der Werte in den uc. 4Zl-Lcd + 1 Taste gestaltet > sich schwierig. Klares Designproblem. Wenn ich komplexe Daten einzugeben beabsichtige, sehe ich eine Möglichkeit vor, dies komfortabel tun zu können. Mit einem 4Zeilen-Text-LCD und mindestens 5 (im Idealfall eher 6) Tasten kann man ein sehr komfortabel bedienbares Menüsystem realisieren. Sprich: du hast da an der absolut falschen Stelle gespart. War wohl keine passende Wichsvorlage verfügbar...
c-hater schrieb: > Sprich: du hast da an der absolut falschen Stelle gespart. War wohl > keine passende Wichsvorlage verfügbar... absolut unpassende Ausdrucksweise. Im übrigen frage ich hier ja gerade nach einer passenden Vorlage. Es gibt anscheinend keine. Ist doch schön, dass es noch zu lösende Aufgaben gibt.
c-hater schrieb: > Mit einem 4Zeilen-Text-LCD und mindestens 5 (im Idealfall eher 6) Tasten > kann man ein sehr komfortabel bedienbares Menüsystem realisieren. Komfortable ist etwas anderes. Hat der Controller keine serielle Schnittstelle, über die er mit einem PC o.ä. kommunizieren kann?
grundschüler schrieb: > Ich will an einem Modell die Auswirkungen unterschiedlicher > Bleche messen. Ich kann Dir mit Sicherheit sagen, dass alle Bleche für den gewünschten Temperaturbereich geeignet sind. Ein Beratungsgespräch beim Fachmann - vielleicht gar beim Hersteller, wird sicher wesentlich aufschlussreicher. Welche Auswirkung willst du denn messen. Offenbar irgend etwas bezüglich der Temperatur. Vielleicht geht Dir darum, deren Wärmeleitfähigkeit zu vergleichen. Dafür müssten allerdings die Infos von Wikipedia bereits genügen. Die Wärmeleitfähigkeit wäre allerdings ziemlich egal, da a) Das Metall ohnehin in wesentlich stärker isolierendem Material eingebettet ist b) Du auch gar nicht willst, dass der Raum binnen Sekunden von 15 auf 20 Grad aufgeheizt wird. Das wäre nämlich sehr unangenehm. Daher nochmal die Frage: Welche Auswirkung bzw. welche Unterschiede willst du messen?
grundschüler schrieb: > Meine Anforderung ist, dass die ds1820-adressen automatisch vom Programm > verwaltet werden ohne dass man den Programmcode ändern muss. Etwa so: > > 20 mögliche 8byte-Adressen werden im eeprom gespeichert > Es gibt im eeprom ein Inhaltsverzeichnis, das status und Ordnungsnummer > in jeweils einem Byte speichert. > Beim Programmstart wird geprüft, ob die gefundenen Sensoren den als > aktiv gemeldeten Sensoren entsprechen - wenn nein, passiert irgendwas. alles eine Frage vom vorhandenen Platz und SRAM Ich habe sowas ähnliches gemacht mit 2 Wesserver auf AVR ATmega Basis alle beteiligten DS mit ihrer Seriennummer erfasst und entscheide per #define vor dem Kommpilieren ob der Webserver daheim oder @work ist. Das kann man auch zur Laufzeit entscheiden denn man weiss ja wo die Sensoren sitzen!
Bei weniger Sensoren und Änderungen speichere ich die Adressen gar nicht fest, sondern lasse sie nur bei jedem Einschalten einlesen und im RAM sortieren. Damit hat jeder Sensor erstmal eine vorläufige eindeutige Nummer in der Konfiguration. Im EEPROM halte ich dann nur eine Zuordnungsliste wie 1,3,2,4 und sortiere das Array danach um. Bedeutet also "Gib dem 2-ten Sensor die Nummer/Funktion/Position 3" und so mach ich bei einer (seltenen) Konfigurationsänderung die Zuordnung einmal komplett neu, das geht z.B. über einen Webserver und/oder die Tabelle als (SPIFFS-)Datei. Vorteil ist, dass man von der Benutzerseite die Adressen nie sehen muß und die Lösung trotzdem universell mit allen möglichen Sensoren parallel funktioniert.
Wolfgang schrieb: > Komfortable ist etwas anderes. Hat der Controller keine serielle > Schnittstelle, über die er mit einem PC o.ä. kommunizieren kann? Ein wirklich guter Vorschlag den ich umsetzen werde. Kleines c#-Programm auf dem PC, welches das m328-eeprom beschreibt. Stefan ⛄ F. schrieb: > Ich kann Dir mit Sicherheit sagen, dass alle Bleche für den gewünschten > Temperaturbereich geeignet sind. Ein Beratungsgespräch beim Fachmann - > vielleicht gar beim Hersteller, wird sicher wesentlich > aufschlussreicher. Ein richtiger Dilettant vertraut keinem Fachmann. Gekaufte Syteme kosten zwischen 20 und 50,00€/m². Mein angestrebtes Budget liegt bei 10,00/m² - bei angestrebt gleicher Leistungsfähigkeit. Was wird mir der befragte Fachmann / Hersteller wohl sagen? Die billigsten Bleche kosten 4 €/m². Alufolie ist möglicherweise billiger. Die Fragestellung lautet, wie dick muss Alufolie sein, damit die Wirkung mit 0,5mm Stahlblech vergleichbar ist. Reichen möglicherweise 0,01 mm oder 0,1mm? 0,1mm kosten 1€/m2, 0,01mm lägen unter 30Cent/m2. Mein Messaufbau sieht bis jetzt so aus, dass eine halbe Stunde auf 50° Vorlauf erwärmt wird. Danach wird nicht mehr zugeheizt und die Temperaturen nach einer halben Stunde Abkühlung gemessen. Je höher die Temperatur der steinernen Abdeckung ist- um so mehr Wärme ist dem Wasser entzogen worden.
grundschüler schrieb: > Je höher die Temperatur der steinernen Abdeckung ist- > um so mehr Wärme ist dem Wasser entzogen worden. Und das wird mit besser leitendem Material natürlich stärker ausfallen. Was willst du da noch messen? Die Frage ist eher: Wie viel Wärmeleitung ist nötig, damit das ganze sinnvoll und wirtschaftlich funktioniert. Ich habe starke Zweifel, dass du das "mal eben schnell" mit so einem Test ermitteln kannst. Und dann kommen da ja noch nicht-funktionale Anforderungen, dass das Material gut zu verarbeiten sein muss und lange genug haltbar sein soll. Wie lange wäre das? 2 Jahre oder 100 Jahre? Ich wohne in einer 90 Jahre alten Ruine, die aus Müll wieder aufgebaut wurde. Da sieht man ganz gut, welche Notlösungen gut waren, und welche nicht. Aber so viel Zeit hast du wohl nicht.
grundschüler schrieb: > Danach wird nicht mehr zugeheizt und die > Temperaturen nach einer halben Stunde Abkühlung gemessen. Je höher die > Temperatur der steinernen Abdeckung ist- um so mehr Wärme ist dem Wasser > entzogen worden. Die willst aber gar nicht einen möglichst effektiven Wärmeentzug. Sonst wird der Fußboden nahe der Einspeisung warm und am Ende kommt nichts mehr an. Die Metallflächen dienen als Heatspreader, um den Abstand der Heizschlangen vergrößern zu können, ohne dass der Fußboden zwischen den Rohren kalte Streifen bekommt. Es geht also um Kosten Heizschlagen/Pumpleistung vs. Kosten Headspreader.
Stefan ⛄ F. schrieb: > Aber so viel Zeit hast du wohl nicht. Der Corona-Tod droht.... Ich hoffe, mir bleiben noch ein paar Jahre > Ich habe starke Zweifel, dass > du das "mal eben schnell" mit so einem Test ermitteln kannst. Ich muss ja nur vergleichen. Trockenbau mit Wärmeleitblechen ist ja ein bewährtes System für FBHs. Wenn ich mit Alufolie ähnliche Oberflächentemperaturen auf meinem Prüfstand erreiche kann ich davon ausgehen, dass es auch auf der Baustelle funktioniert. > Und dann kommen da ja noch nicht-funktionale Anforderungen, dass das > Material gut zu verarbeiten sein muss und lange genug haltbar sein soll. > Wie lange wäre das? 2 Jahre oder 100 Jahre? Arbeitszeit ist ein zu berücksichtigender Kostenfaktor. Haltbarkeit nicht unter 50Jahre. Wolfgang schrieb: > Die Metallflächen dienen als Heatspreader, um den Abstand der > Heizschlangen vergrößern zu können, ohne dass der Fußboden zwischen den > Rohren kalte Streifen bekommt. Im Prinzip jein. Bei käuflichen System beträgt der Abstand zwischen den Heizrohren entweder 12,5 oder 25cm (8 Rohre bzw. 4 Rohre/m). Ich verwende 16,6 cm Abstand (6 Rohre/m). Das steht im Prinzip fest. Die Rohre kosten 3,70€/m2 - da kommt man auch nicht mehr wesentlich runter. 40 mm Styroporplatten kosten rund 3€/m2. Einzige Möglichkeit Kosten zu sparen, sind die Bleche, die als "Heatspreader" wirken. Auch die Wärmeverteilung über die Bleche will ich messen. Da kommen noch mehr Sensoren hin. Die Bleche sind für 125mm Abstand. Ich hab also 5cm Abstand zwischen den Blechen. Es kann Sinn machen die Bleche mit Folie abzudecken.
die Lösung: alle Sensoren werden mit aktueller Temperatur und id erfasst. Auf dem Display werden seitenweise jeweils drei Sensoren angezeigt. Das Programm sucht jeweils den wärmsten Sensor heraus und zeigt die entsprechende Seite mit diesem Sensor an. Gespeichert wird mit ir-Tastenbefehl. Man selektiert den gewünschten sensor durch Wärmezufuhr - dieser wird dann durch ir-Befehl an der ersten nicht belegten Stelle im eep gespeichert.
grundschüler schrieb: > Die Fragestellung lautet, wie dick muss Alufolie sein, damit > die Wirkung mit 0,5mm Stahlblech vergleichbar ist. Ein Tabellenbuch mit den Wärmeleitfähigkeiten von Al und Fe beantwortet diese Frage sofort. Interessant wäre eher das Langzeitverhalten von Al oder Fe im Kontakt mit Beton oder Styropor. Oder das Verhalten bei Wärmedehnung des Betons. An Deiner Preisangabe für Styro habe ich Zweifel. Schlließlich muss Styro für diesen Zweck eine zuverlässige Druckfestigkeit haben, höher als die für Verpackungsmaterial.
grundschüler schrieb: > Meine Anforderung ist, dass die ds1820-adressen automatisch vom Programm > verwaltet werden ohne dass man den Programmcode ändern muss. Etwa so: Hab sowas in ASM gemacht und es ist ziemlich einfach wenn man das LCD nur zum anzeigen nutzt. Wenn man es aber evtl wie folgt erweitert sind den Möglichkeiten keine Grenzen gesetzt. - einzelnen Sensor anschließen - Controller per serieller Schnittstelle ansprechen sodass - SrNr auslesen/abspeichern - diese per ser. Schnittstelle zum PC Schicken (8Byte) - 2 bis 3 Byte als Platzhalter vor oder nach der jeweiligen DS-Adresse für für die Beschreibung nutzen - Den FamalyCode könnte man auch bei allen weg rationalisieren und fest in die Adressierungsroutine einbetten - dies alles über ein TerminalProgramm einfach ausgedrückt ein Frage/Antwortspiel. DS schickt Adresse zum µC und speichert -> µC schickt Adresse zum PC -> Nutzer ergänzt zb WZ für Wohnzimmer = 2 Byte -> WZ wird zum vor/nach der SerienNummer eingefügt im EEPROM µC
chris schrieb: > - einzelnen Sensor anschließen > - Controller per serieller Schnittstelle ansprechen sodass > - SrNr auslesen/abspeichern So ähnlich habe ich es auch gemacht. Jedem DS18B20 wurde eine fortlaufende Nr. "eingraviert" und dann die SN ausgelesen. Dies geschieht über einen DS2482 (I2C). Der jeweilige DS18B20 wird zur Temp.-messung mit seiner Adresse angesprochen und der Messwert ausgelesen. Im Laufe der Zeit haben sich 30 DS18B20-fühler angesammelt, die sich nach dieser Methode sicher auslesen lassen.
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.