Emisar / Noctigon Laber- und Bestellthread

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Die neue Dev überschießt bei mir um 15K
Kann ich mit meiner SP36 Anduril durchaus nachvollziehen. Bei einem eingestellten Temperaturlimit von 40 Grad Celsius hatte ich gerade bis zu 56 Grad Celsius. Ich muss dringend neben dem Temperatur- auch den Helligkeitsverlauf aufzeichnen. Mit bloßem Auge erkenn ich bei der Lampe überhaupt keine aktive Regelung.
 

Nicobrosi

Flashaholic**
24 Oktober 2018
2.091
1.625
113
Wenn der temperaturverlauf schnell Wechselt(zb. Abkühlen im Wasser) sieht man wie die Helligkeit zunimmt....
Es ist ja so gewollt, dass die Änderung der Helligkeit weniger merklich ist
 

Unheard

Flashaholic**
6 November 2017
4.011
2.570
113
Raffnixhausen
Kann ich mit meiner SP36 Anduril durchaus nachvollziehen. Bei einem eingestellten Temperaturlimit von 40 Grad Celsius hatte ich gerade bis zu 56 Grad Celsius. Ich muss dringend neben dem Temperatur- auch den Helligkeitsverlauf aufzeichnen. Mit bloßem Auge erkenn ich bei der Lampe überhaupt keine aktive Regelung.
Hast Du diese Version aufgespielt? Was blinkt die Lampe aus, weicht der Sensor ab?
 

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Hast Du diese Version aufgespielt?
Nein und ich bin mir auch noch nicht sicher, welche Version drauf ist, aber seid Andruil die SP36 unterstützt wurde die Temperaturregelung nur einmal wirklich verändert: https://bazaar.launchpad.net/~toykeeper/flashlight-firmware/fsm/revision/418
Was blinkt die Lampe aus, weicht der Sensor ab?
Weicht so gut wie gar nicht ab. Daran kann es nicht liegen.

Nachtrag: Beim Nachprogrammieren der Temperaturregulierung ist mir aufgefallen, dass ich bei meiner Funktionsbeschreibung einen wesentlichen Aspekt weggelassen habe.
Für jedes Grad, das die prognostizierte Temperatur außerhalb des Temperaturfensters liegt, wird in der Rampingtabelle einfach einen Eintrag in die entgegengesetzte Richtung gesprungen.
Es wird nicht direkt gesprungen, sondern erst mal nur eine Sollposition in der Ramping Tabelle vorgegeben. Je nach Stärke der Abweichung zwischen Ist- und Sollwert wird die Tabelle dann schneller oder langsamer durchlaufen. Und genau dieser Mechanismus scheint auch der Grund dafür zu sein, warum die Solltemperatur nicht eingehalten wird.
 
Zuletzt bearbeitet:

Unheard

Flashaholic**
6 November 2017
4.011
2.570
113
Raffnixhausen
OK. Ich verstehe allerdings nicht, warum deine Sofirn betroffen ist. Mit älteren Versionen hatte die D4 eine gute Regelung. Erst die aktuelle, die bei dir nicht drauf sein kann, weil Dev, ist der Mechanismus dahin. Ich gebe das an TK weiter, wenn das für dich ok ist.
 

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Mit älteren Versionen hatte die D4 eine gute Regelung.
Wie alt war die Version, mit der es funktioniert hat? Seit Mai wurde, soweit ich das beurteilen kann, nichts Relevantes an der Regelung verändert.
Ich gebe das an TK weiter, wenn das für dich ok ist.
Gerne.

Nachtrag: Ich kann das aktuelle Regelverhalten meiner Sofirn SP36 Anduril in meinem Simulationsmodell reproduzieren:
anduril_temp_regulation_old.png
"temp" ist die tatsächliche Temperatur der Lampe.
"raw" ist der Messwert des internen Temperatursensors (mit simuliertem Rauschen).
"lowpass" ist die von Anduril aus den Messwerten berechnete Temperatur.
"power" ist eine dimensionslose Kennzahl für die momentane Ausgangsleistung.
 
Zuletzt bearbeitet:

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Ich hab ein kleines Programm geschrieben, dass die Temperaturentwicklung der Lampe (auf Basis meiner Infrarotmessung) simuliert und dann die Temperaturregelung von Anduril darauf losgelassen. Es ist also keine Messung, sondern eine Simulation.

Nachtrag: Eine alternative Regelung (mit funktionierender Temperaturprognose) könnte folgendermaßen aussehen:
anduril_temp_regulation_new.png
Mit ein bisschen Zusatzaufwand, sollte man es auch schaffen, das noch ein wenig zu glätten.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: grzly und SammysHP

Unheard

Flashaholic**
6 November 2017
4.011
2.570
113
Raffnixhausen
Wie alt war die Version, mit der es funktioniert hat? Seit Mai wurde, soweit ich das beurteilen kann, nichts Relevantes an der Regelung verändert.
Nicht betroffen war die initiale D4V2 Version mit dem Muggle Mode Bug. Ebenfalls ok war die zweite Korrekturfassung aus dem August. In beiden Fällen wollte ich eine Grenztemperatur von 50 °C. Überprüft habe ich das mit dem Richmeters GM550. In beiden Versionen sah man deutlich ein Abregeln der Lampe in sichtbaren Stufen.

Die aktuelle Dev regelt dagegen in der Tat fast unsichtbar.

Wenn am Regelalgorithmus nichts verändert wurde, ist es vielleicht das Auslesen der Sensoren. Spannung und Temperatur sind ja zusammengelegt, daran hatte Selene gearbeitet.

Erklärt alles nicht die SP36. Und es erklärt nicht, warum nur wir beide diese Beobachtung machen. Interessiert das sonst niemanden, dass man die Lampe u.U. nicht mehr anfassen kann? Hat doch genug Brandschäden mit D4 und FW3 gegeben.
 
  • Danke
Reaktionen: 0-8-15 User

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Zuletzt bearbeitet:

Nicobrosi

Flashaholic**
24 Oktober 2018
2.091
1.625
113
Ich habe keine sp36... Bei meinen emisar Lampen und den astrolux Modellen funktioniert alles so wie ich es eingestellt habe... Wenn man die grenztemperatur hoch genug legt kann man die Lampen nichtmehr halten... Aber das liegt doch am jedem selbst wie man sie einstellt
 

Nicobrosi

Flashaholic**
24 Oktober 2018
2.091
1.625
113
Nutze ein infrarotthermometer... Bisher passt es... Habe aber auch nur die Firmware mit dem ausgemerzten muggle Bug drauf.... Die aktuelleren Versionen haben mich nicht interessiert weil alles läuft
 
  • Danke
Reaktionen: Unheard

Unheard

Flashaholic**
6 November 2017
4.011
2.570
113
Raffnixhausen
Die aktuelleren Versionen haben mich nicht interessiert weil alles läuft
Nicht ganz, aber den Bug entdecken nur zart besaitete Nutzer: Manchmal verpasst die Diva ihren Einsatz, sprich, sie schaltet nicht immer ein. Das ist aber selten und es hängt irgendwie mit dem Zustand des Akkus zusammen *glaub*.

Bekannter Fehler, Korrektur noch nicht im Release enthalten. Darum hab' ich die Dev ja überhaupt getestet. Mich nervt sowas.
 

LightRacer

Flashaholic*
19 Dezember 2015
639
158
43
Wismar
Wie bekomme ich es im elektronischen Lockout hin, nicht nur Moon sondern auch Low zu verwenden? Die Grafik gibt da wenig Aufschluss drüber.
 

Onkel Otto

Moderator
Teammitglied
20 November 2015
9.339
10.550
113
Stadtallendorf
Mach vielleicht zunächst einmal einen Reset und versuch es dann noch einmal.
Dann hast Du auf jeden Fall reproduzierbare Bedingungen.
Das Low der Rampe ist dann niedriger als die dunkelste Stepped-Stufe.

Greetings
Klaus
 
  • Danke
Reaktionen: LightRacer

Langer

Flashaholic*
14 März 2010
438
423
63
Bei Karlsruhe
Wie zwei Ramp Modi? Du meinst Ramp und Stepped? Also muss ich im stepped ein helleres Low programmieren?
So sieht es auch, ich hatte das bei einer meiner Lampen anfangs auch und bin von einer alten Firmware ausgegangen.
Wenn du das smooth Ramping benutzt, ist Halten der floor des smooth Ramping und Drücken, Halten der Floor des Stepped Ramping, normal sollte der Höher sein (20/150 zu 1/150).
Beim Stepped Ramping ist es genau anders rum.

(Wenn die Konfiguration der Lampe sonst passt, mach sie doch einfach mal an, geh mit 3x Klick in den stepped Modus, klicke 4x, um in das Konfigurationsmenü zu gelangen und drücke nach dem ersten Blinken 20x (oder so hell du es haben willst) und mach beim Rest einfach keine Eingabe. Dann nochmal 3x drücken, um zurück ins smooth zu kommen und dann sollte es klappen.)
 
  • Danke
Reaktionen: LightRacer

LightRacer

Flashaholic*
19 Dezember 2015
639
158
43
Wismar
So sieht es auch, ich hatte das bei einer meiner Lampen anfangs auch und bin von einer alten Firmware ausgegangen.
Wenn du das smooth Ramping benutzt, ist Halten der floor des smooth Ramping und Drücken, Halten der Floor des Stepped Ramping, normal sollte der Höher sein (20/150 zu 1/150).
Beim Stepped Ramping ist es genau anders rum.

(Wenn die Konfiguration der Lampe sonst passt, mach sie doch einfach mal an, geh mit 3x Klick in den stepped Modus, klicke 4x, um in das Konfigurationsmenü zu gelangen und drücke nach dem ersten Blinken 20x (oder so hell du es haben willst) und mach beim Rest einfach keine Eingabe. Dann nochmal 3x drücken, um zurück ins smooth zu kommen und dann sollte es klappen.)
So hab ich es letztendlich gemacht :) Danke :thumbup:
 

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
@Unheard, @SammysHP ich hab gestern Abend noch mal ein wenig rumgebastelt. Die neue Regelung sieht mittlerweile ziemlich vielversprechend aus und ist dabei auch noch deutlich weniger komplex als die bisherige. Jetzt müssen nur noch meine D4(S)V2 Lampen eintreffen, um die neue Regelung in der Praxis testen zu können. Das wird aber wohl noch bis Weihnachten dauern.
anduril_temp_regulation_new.png
Ich verstehe allerdings nicht, warum deine Sofirn betroffen ist.
Die Firmware, die auf meiner Lampe drauf ist, regelt einfach zu zögerlich runter. Ich hab gestern mal einen Photodiodenverstärker vor die Lampe geschnallt und das Regelverhalten deckt sich mit dem, was meine Simulation für älterer Firmware Versionen ausspuckt. Im BLF Forum hab ich die verschiedenen Versionen gegenübergestellt: http://budgetlightforum.com/comment/1591422#comment-1591422

Eine Begründung dafür, dass deine D4V2 mit der Dev Version so übers Ziel hinausschießt habe ich aktuell nicht.
 
  • Danke
Reaktionen: grzly

Unheard

Flashaholic**
6 November 2017
4.011
2.570
113
Raffnixhausen
Ok, ich warte gespannt auf eure Ergebnisse. Bis dahin hab' ich halt die Grenztemperatur so eingestellt, dass die erreichte Temperatur passt. 40 °C und das Ding bleibt benutzbar.

Und ich finde immer noch, dass Hank die Lampen kalibrieren muss. Sofirn mit seinem weniger flashaholisierten Publikum sowieso. Die verbrennen sich doch alle die Pfoten, wenn's ganz doof läuft.
 
  • Danke
Reaktionen: LightRacer

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
@Unheard, ich hab mich gestern noch mal richtig ausgetobt und schon mal alles Nötige vorbereitet, damit ich voll durchstarten kann, wenn die D4(S)V2s ankommen.

Zuerst habe ich versucht, die Lampentemperatur mit einem aufgeklebten digitalen Thermometer (DS18B20) aufzuzeichnen, aber das hat leider trotz Wärmeleitpaste kein zufriedenstellendes Ergebnis geliefert. Ich vermute, dass der Anpressdruck zu gering war oder das Plastikgehäuse des Sensors einfach einen zu großen thermischen Widerstand darstellt. Stattdessen werte ich jetzt einfach nachträglich das Kamerabild der Wärmebildkamera aus. Das klappt wunderbar und liefert ~ 10 Messwerte pro Sekunde.

SP36 BLF Anduril (fast voll vollgeladene LG HG2 Akkus, Raumtemperatur lag bei 20 C):
anduril_run-2.png
Zum Vergleich das Simulationsergebnis (Firmware Revision 388):
anduril_temp_regulation_pre_388.png
 
  • Danke
Reaktionen: beamwalker und Langer

Unheard

Flashaholic**
6 November 2017
4.011
2.570
113
Raffnixhausen
Die thermische Simulation hast Du ja toll hinbekommen, @0-8-15 User :thumbup:

Ja, Wärmeleitpaste isoliert sehr gut. Die ist eigentlch nur dazu da, Riefen zu füllen, weil Luft ein noch besserer Isolator ist. Ich frag' mich, wie manche Lampen überleben, so dick wie die Paste da reingeschmiert wird. Einen modernen Prozessor würde nan damit eliminieren.

Bei Gelegenheit musst Du mir verraten, wie Du das System simuliert hast. Oder TK. Die war auf der Suche nach einem brauchbaren Simulator und hat nicht die Möglichkeit, 'ne CFD-Software zu nutzen, wenn ich das richtig verstanden hatte.
 

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Bei Gelegenheit musst Du mir verraten, wie Du das System simuliert hast.
Ganz billig mit ein paar Zeilen Python:
Code:
def simulation_step(dt):
    global flashlight_temp, ramping_index
    output_power = max_output_power * pow(ramping_index / ramping_length, 2)
    flashlight_temp += dt * output_power * pow(ramping_index / ramping_length, 2) / thermal_mass
    flashlight_temp -= dt * (flashlight_temp - ambient_temperature) * cooldown_rate / thermal_mass
 
Zuletzt bearbeitet:

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Mit ein bisschen Zusatzaufwand, sollte man es auch schaffen, das noch ein wenig zu glätten.
Ich konnte es einfach nicht lassen, noch mal nachzulegen. Die Regelung ist jetzt ein Träumchen (und glatt wie ein Babypopo):
anduril_temp_regulation_new_smooth.pnganduril_temp_regulation_new_smooth-long.png
Toleriert schon ab Werk eine mäßige Phasenverschiebung zwischen LED- und Sensortemperatur, reagiert schnell und zuverlässig auf veränderte Temperaturbedingungen und lässt sich außerdem noch kinderleicht an die eigenen Bedürfnisse anpassen. Jetzt muss es nur noch so implementiert werden, dass es auch auf den AVR Mikrocontrollern läuft. Aber das sollte eigentlich keine großen Probleme bereiten.
 

0-8-15 User

Flashaholic*
17 Februar 2017
257
232
43
Code:
Code:
#include <stdlib.h>
...
#ifdef USE_THERMAL_REGULATION
void sort_raw_temps(int16_t a[], uint8_t b[], int n)
{
    for (int i=1; i<n; i++) {
        for (int j=i; j>0; j--) {
            if (a[j-1] > a[j]) {
                int ta = a[j]; a[j] = a[j-1]; a[j-1] = ta;
                int tb = b[j]; b[j] = b[j-1]; b[j-1] = tb;
            } else {
                break;
            }
        }
    }
}
static inline void ADC_temperature_handler() {
    #define NUM_RAW_TEMPS 30 // must be an even number >= 10
    #define NUM_FILTERED_TEMPS 5 // hardcoded, not intended to be changed
    #define THERM_LOOKAHEAD 1 // needs to be raised with lower power to mass ratios
    #define THERM_RESPONSE_DAMPING 1 // needs to be raised with higher power to mass ratios
    const int16_t THERM_CEIL = therm_ceil * 10
    static uint8_t raw_temp_indices[NUM_RAW_TEMPS];
    static int16_t raw_temps[NUM_RAW_TEMPS];
    static uint8_t raw_temp_index = 0;
    static int16_t filtered_temps[NUM_FILTERED_TEMPS];
    static uint8_t filtered_temp_index = 0;
    static int16_t filtered_temp = 210;
    static uint8_t adjustment_cooldown = 0;
    // Convert ADC units to Celsius (ish)
    temperature = adc_values[1] - 273 + THERM_CAL_OFFSET + therm_cal_offset;
    // prime on first execution
    if (reset_thermal_history) {
        reset_thermal_history = 0;
        for (uint8_t i=0; i<NUM_RAW_TEMPS; i++) {
            raw_temp_indices[i] = i;
            raw_temps[i] = temperature;
            if (i < NUM_FILTERED_TEMPS)
                filtered_temps[i] = temperature;
        }
        filtered_temp = temperature;
    }
    // insert raw temperature reading
    for (uint8_t i=0; i<NUM_RAW_TEMPS; i++) {
        if (raw_temp_indices[i] == raw_temp_index) {
            raw_temps[i] = temperature;
            raw_temp_index = (raw_temp_index + 1) % NUM_RAW_TEMPS;
            break;
        }
    }
    if (adjustment_cooldown > 0) {
        adjustment_cooldown--;
    } else {
        // post-process raw temperature readings
        sort_raw_temps(raw_temps, raw_temp_indices, NUM_RAW_TEMPS);
        int16_t sum = 0;
        const uint8_t d = (NUM_RAW_TEMPS - 10) >> 1;
        for (uint8_t i=d; i<NUM_RAW_TEMPS-d; i++) {
            sum += raw_temps[i];
        }
        filtered_temp = (filtered_temp * 23 + 9 * sum) >> 5;
        int16_t temp_slope = filtered_temp - filtered_temps[filtered_temp_index];
        filtered_temps[filtered_temp_index] = filtered_temp;
        filtered_temp_index = (filtered_temp_index + 1) % NUM_FILTERED_TEMPS;
        int16_t offset = filtered_temp - THERM_CEIL;
        int16_t howmuch = 1 + ((abs(temp_slope) + 1) >> THERM_RESPONSE_DAMPING);
        int16_t predicted_temp = filtered_temp + temp_slope * THERM_LOOKAHEAD;
        if (predicted_temp > THERM_CEIL && temp_slope >= 0 && (temp_slope > 1 || offset > 15)) {
            emit(EV_temperature_high, -howmuch);
        } else if (predicted_temp < THERM_CEIL && temp_slope <= 0 && (temp_slope < -1 || offset < -15)) {
            emit(EV_temperature_high, +howmuch);
        }
        adjustment_cooldown = ADC_CYCLES_PER_SECOND;
    }
}
#endif
Simulationsergebnisse:
Code:
THERM_RESPONSE_DAMPING = 1;
anduril_temp_regulation_new_smooth-short-nofp-type1.png
Code:
THERM_RESPONSE_DAMPING = 2;
anduril_temp_regulation_new_smooth-short-nofp-type2.png
Ich hab leider keinen ATtiny1634 hier, aber auf dem ATmega328p funktioniert der Sensordatenfilter prächtig. Scheint fast so, als ob man sich einen Teil des Aufwands sparen könnte. Ohne das Ausfiltern der Extremwerte hätte der neue Code keinen erhöhten Speicherbedarf.
 

Felurian

Flashaholic
10 Februar 2013
102
23
18
Niedersachsen
Moin zusammen,
auch mich hat es nun gepackt und ich möchte mir bei Hank die D4SV2 ordern.
Nach langem lesen habe ich mich für die XP-L HI V3 3A 5000k entschieden.

Es kommt aber wie es kommen musste und ich möchte hier gerne noch 2 Fragen dazu loswerden.
Die erste wäre, ob es sinnvoll ist, gleich einen Liitokala 5000mAh Akku mit zu bestellen, oder sollte ich lieber zu einem anderen greifen?

Die zweite Sache ist die Bestelloption - extra optic with floody beam - ist die dann ein Extra welches lose dabei liegt, oder wird die Lampe dann entsprechend von Hank angepasst.

Dies ist meine erste Bestellung bei Hank und die Erfahrung in seinem Shop und mit der D4SV2 hält sich noch sehr in Grenzen.
Für Anregungen und Hilfen bin ich dankbar.