Esp32 C° In Millis umwandeln

Hallo Wie der titel schon sagt, versuche ich eine Temperatur C° in Millis um zu wandeln.

Allerdings reicht nicht 20 * 1000.

Sondern es soll wenn sich die temperatur von 19 auf 20C° Verändert, die Millis vonn z.b 2000 auf 3000 erhöhen. Also 1000 Pro Grad.

Hat jemand eine idee wie ich das realisiieren könnte?

Versucht habe ich in etwa so zu splitten Problem ist das hochzählen, da die Temperatur Sich ständig ändert 16-25C°


float objectTemp = 19.00;
erstenummer = int(Tempbefore)  /10;
zweitenummer = int(Tempbefore) % 10;

P.s So skalieren geht auch nicht dann müsste ich unten ehr bei 12C° anfangen zu rechen Bei 25C° hätte ich dann 13.000ms ich brauche ehr die Kommastellen aus den Float.
Oder die Berechnung jedenfals anders Fein Skalieren.

      float previousTemp = 16.00; // Vorherige Temperatur in Grad Celsius
      int millisChange = (Tempbefore - previousTemp) * 1000;

Lg seby

Wurde mit switch...case machen , vorher aber die float Temp in int wandeln --> *10, oder 100, je nach Nachkommastellen, switch kann nicht mit float umgehen.
In case dann zuweisen was für Zeit gewünscht ist, man kann auch weitere Aktionen mit packen

1 Like

Die idee ist schonmal gut, könnte ich zumindest gut aufteilen mit switch arbeite ich schon im andern code teil, ist ansich kein proble.

Problem ist ehr, die Temperatur, selbst wenn ich die Beim starten Abspeicher, ergibt teils ein negativen wert. Aber switch könnte da schonmal helfen. Danke :slightly_smiling_face:

Hallo seby1302

Nimm das map() Makro und bohre das für den Type float auf.

Das ist kein Problem z.B. Temp = -12.3 machst Temp *( - 1) fertig Pluswert :wink:

1 Like

wie lautet die mathematische Funktion die du umgesetzt haben möchtest?

Ich denke ich habe es So hinbekommen...
Tempbefore wird jeds mal neu ausgelesen, und die Neue millis drauf angepasst.
Nicht ganz perfekt aber anpassbar.
:+1: :slightly_smiling_face:

      Tempbefore = objectTemp;// Temperattur Sensor

      tempprozent = map(int(Tempbefore), 10, 20, 2000, 3000);
      Refmillis = tempprozent; // Neue Millis
      Runtimes = tempprozent / 1000;

Refmillis= 3500.00000000000000000000
Runtimes= 3.50000000000000000000
tempprozent= 3500.00

Thx :slightly_smiling_face: :+1: oder ich mappe den wie @paulpaulson schon sagte.

Aber es hat einfach keinem Sinn, die Kurve ist extrem schlecht weil die temperaturen zu extrem schwanken, und Map kann zusätlich nur Long sollte die komastellen denke ich nicht mit nehmen wen ich es nicht falsch im kopf habe?

Hauptsächlich muss ich die temperatur Anfang bei 20C° haben, es ist wohl besser wenn ich die Platte vorheitze auf 20C° und dann erst die messunfg starte.

Blöd ist nur Bei höhrern Raum temperaturen dann muss das teil im Kühlschrank. :sweat_smile:

Das Frage ich auch:
mathematische Funktion

Und ebenso interessant Was ist der letztendliche finale Zweck davon verschieden lange Zeiten in Form von Millisekunden zu haben.

  • Ist das am Ende die Wartezeit bis ein Signalton erzeugt wird?
  • Ist das die Zeit wie lange ein Gerät eingeschaltet werden soll?
  • Ist das die Zeit die ein Gerät ausgeschaltet sein soll?

Was?

du fragst hier mit knappen Sätzen die nicht so richtig verständlich sind
nach einem Detail

Ohne den Überblick zu geben zu was das am Ende gebraucht wird.

Wenn du den Überblick gibst dann gibt es mit sehr hoher Wahrscheinlichkeit eine gut funktionierende Lösung.

Mit den spärlichen Informationen ist das im Nebel rumbasteln.

vgs

Das ist die Zeit Wie lange Ein laser Eine Probe Bestrallt. (Mini Labor Gerät)
In der regel wird die Probe Bei 20C° Getestet.
Um Also Nicht Aufwändigen eine Gehäuse zu bauen mit Heiz und kühlfunktion.
Dachte ich mir ich passe Die zeiten einfach an.
Die Kurwe ist viel zu ungenau, würde zwar schon gehen Aber noch aufwändiger.
Ich erwärme nun die Platte vor indem ich mit Pwm Auf 20C° vorheitze, und erst dann starte ich die messung. Für wärmere tagen baue ich dann wohl ein Mini Kühlschrank der zwischen 15-20C° Kühlen kann.

OK jetzt hat man einen Überblick was du insgesamt machst.

Funktioniert jetzt das Vorwärmen auf 20°C per PWM?
Das wird aus der Aussage nicht eindeutig klar.

Wenn das klappt auf 20°C aufzuheizen dann hast du ja immer die gleiche Laserbestrahlzeit.

Hat sich damit die Frage nach der Formel erübrigt?
Wenn nein.
Du scheinst keine mathematische Formel benennen zu können.
Dann mache einfach 4 bis 5 Beispiele

bei 20,00°C Lasereinschaltzeit 2000 Millisekunden
bei 19,00 °C Lasereinschaltzeit 3000 Millisekunden
bei 21,00 °C ????
bei 18,00 °C ????
bei 13,00 °C ????
dann kann man aus den Beispieldaten eine entsprechende Funktion erstellen.

Je mehr Datenpaare °C / Millisekunden du zur Verfügung stellen kannst desto genauer wird die Berechnungsformel.

Wenn du jetzt wieder nur Pi mal Daumen = unverständlich beschreibst

dann viel Spaß beim Versuch und Irrtum bratzeln.
Vielleicht lässt du es als Weihnachtsbeleuchtung mal so richtig glühen.

vgs

Ja pwm Funkttioniert und lässt sich x Belibig dosienren, von 1-10watt alles kein problem.
Nein Da müsstest du tauseende kombinationen aufbauen.
Jede Proble verhält sich anders.
Nun mal angenommen Du Testest ein stück Kupfer und dann Wiederum ein Stück Nickel, die matterialien haben komplett andre Wärmeleitfehigkeit....
klar du kannst ein case bauen für den jeweiligen material und jeweils dann die Temperaturen anpassen in 0,01C° schritte, in 100 jahren bin ich dann auch fertig ABER naja :sweat_smile:

Also ja Vorheitzen Klappt super, und Werde das dann auch so weiter machen, für wärmeren tagen Ein Kühlschrank bauen in der art. Weil alles andere, ist Käse.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.