LaserFreak Forum
Temperatur ermittelung
- lexa
- Beiträge: 402
- Registriert: Mi 26 Jan, 2005 7:23 pm
- Do you already have Laser-Equipment?: 150mW - 532nm
400mW - 650nm Eigenbau
200mW - 405nm Eigenbau
150mW - 457nm
1000mW - 445nm Beamer
Raytrack 35+ - Wohnort: NRW, Detmold
- Kontaktdaten:
Temperatur ermittelung
Hallo zusammen.
Ich habe für meinen Projektor mit einem Mega48 eine Schaltung aufgebaut, die die Lüfter mit PWM regelt und die Temperatur an 3 Stellen mit DS1820 Sensoren misst.
Je nach Temperatur wird über eine CASE anweisung die Pulsweite moduliert.
Mein Problem ist, wie bekomme ich es hin, das in der CASE anweisung immer die höchste Temperatur "genutzt" wird
Also quasi
T1 = 20°C
T2 = 21°C
T3 = 30°C
Variable_X = immer den höchste Temperatur von T1 T2 oder T3
Select Case Variable_X Hier sollten jetzt die 30°C angenommen werden
Case Is <= 25 : Ocr2b = 10
Case Is <= 30 : Ocr2b = 20
...
End Select
Ich stehe das gerade voll aufem Schlauch
Gruß Axel
Ich habe für meinen Projektor mit einem Mega48 eine Schaltung aufgebaut, die die Lüfter mit PWM regelt und die Temperatur an 3 Stellen mit DS1820 Sensoren misst.
Je nach Temperatur wird über eine CASE anweisung die Pulsweite moduliert.
Mein Problem ist, wie bekomme ich es hin, das in der CASE anweisung immer die höchste Temperatur "genutzt" wird
Also quasi
T1 = 20°C
T2 = 21°C
T3 = 30°C
Variable_X = immer den höchste Temperatur von T1 T2 oder T3
Select Case Variable_X Hier sollten jetzt die 30°C angenommen werden
Case Is <= 25 : Ocr2b = 10
Case Is <= 30 : Ocr2b = 20
...
End Select
Ich stehe das gerade voll aufem Schlauch
Gruß Axel
405nm Plotter
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
- adminoli
- Beiträge: 3949
- Registriert: Mi 04 Okt, 2006 11:37 am
- Do you already have Laser-Equipment?: Dynamics und diverse Projektoren
- Wohnort: nähe Schweinfurt/Würzburg, Bayern, Franken
Re: Temperatur ermittelung
Hi,
wenn ich jetzt nich falsch liege sind sollte das doch so aussehen:
Case Is >= 25 : Ocr2b = 10
Case Is >= 30 : Ocr2b = 20
PS: Bin aber mit C nicht vertraut.
Aber eigentlich ist das noch der einfache Part, schwieriger wird es mit der Hysterese, oder möchtest du wenn der Sensor zwischen zwei Schaltwerten switched, sich ständig die Drehzahl ändert?
Gruß
Oliver
wenn ich jetzt nich falsch liege sind sollte das doch so aussehen:
Case Is >= 25 : Ocr2b = 10
Case Is >= 30 : Ocr2b = 20
PS: Bin aber mit C nicht vertraut.
Aber eigentlich ist das noch der einfache Part, schwieriger wird es mit der Hysterese, oder möchtest du wenn der Sensor zwischen zwei Schaltwerten switched, sich ständig die Drehzahl ändert?
Gruß
Oliver
- lexa
- Beiträge: 402
- Registriert: Mi 26 Jan, 2005 7:23 pm
- Do you already have Laser-Equipment?: 150mW - 532nm
400mW - 650nm Eigenbau
200mW - 405nm Eigenbau
150mW - 457nm
1000mW - 445nm Beamer
Raytrack 35+ - Wohnort: NRW, Detmold
- Kontaktdaten:
Re: Temperatur ermittelung
Hi
also so wieich es habe, funktioniert es gut. Nur mit dem Problem, das ich immer nur einen Sensor "auswerten".
und da die Temperatur ja recht "träge" ist, ging das auch ohne Hysterese.
also so wieich es habe, funktioniert es gut. Nur mit dem Problem, das ich immer nur einen Sensor "auswerten".
und da die Temperatur ja recht "träge" ist, ging das auch ohne Hysterese.
405nm Plotter
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
- lexa
- Beiträge: 402
- Registriert: Mi 26 Jan, 2005 7:23 pm
- Do you already have Laser-Equipment?: 150mW - 532nm
400mW - 650nm Eigenbau
200mW - 405nm Eigenbau
150mW - 457nm
1000mW - 445nm Beamer
Raytrack 35+ - Wohnort: NRW, Detmold
- Kontaktdaten:
Re: Temperatur ermittelung
hab ne Lösung, aber wenn jemand einen schöneren/eleganteren Weg hat, würde ich mich darüber freuen
T = 0
If T1 >= T Then
T = T1
End If
If T2 >= T Then
T = T2
End If
If T3 >= T Then
T = T3
End If
Select Case T
Case Is <= 25 : Ocr2b = 10
Case Is <= 30 : Ocr2b = 20
...
End Select
T = 0
If T1 >= T Then
T = T1
End If
If T2 >= T Then
T = T2
End If
If T3 >= T Then
T = T3
End If
Select Case T
Case Is <= 25 : Ocr2b = 10
Case Is <= 30 : Ocr2b = 20
...
End Select
405nm Plotter
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
- adminoli
- Beiträge: 3949
- Registriert: Mi 04 Okt, 2006 11:37 am
- Do you already have Laser-Equipment?: Dynamics und diverse Projektoren
- Wohnort: nähe Schweinfurt/Würzburg, Bayern, Franken
Re: Temperatur ermittelung
Hi,
jetzt hab´ ich´s verstanden. Ist auch nicht schwer, alle Sensoren abfragen und Ergebnisse in drei Variablen eintragen und diese mit einander vergleichen und den höchsten Wert in die benötigte Variable kopieren.
Edit: Ups da warste ja schneller. Kann man so machen. Elegant ist nicht wichtig, Hauptsache sauber und übersichtlich. Deswegen muss man keine Schleife bauen.
Gruß
Oliver
jetzt hab´ ich´s verstanden. Ist auch nicht schwer, alle Sensoren abfragen und Ergebnisse in drei Variablen eintragen und diese mit einander vergleichen und den höchsten Wert in die benötigte Variable kopieren.
Edit: Ups da warste ja schneller. Kann man so machen. Elegant ist nicht wichtig, Hauptsache sauber und übersichtlich. Deswegen muss man keine Schleife bauen.
Gruß
Oliver
-
- Beiträge: 76
- Registriert: Sa 25 Jul, 2009 11:35 am
- Do you already have Laser-Equipment?: Easylase, abgewandelter MOTU Traveler MK3 als 8 Kanal 24 Bit 196kHz DAC, 150mW Diode Rot, 150mW Grün DPSS, 150mW Blau DPSS und haufenweise Module in Arbeit
- Wohnort: Braunschweig
Re: Temperatur ermittelung
Hmm ne Schleife kann aber auch günstiger sein ... @adminoli
hier mal ein Beispiel in C. Ich denke die Umsetzung kann dann sicher auch in Basic gemacht werden.
unsigned char t_array(3); //t1,t2,t3 (global) kann auch anderer Variablentyp(int) sein
void set_ocr2b() //Funktions Aufruf
{
unsigned char i; //Array Zähler
unsigned char t=0; //kann auch anderer Variablentyp(int) sein
for(i=0; i<3; i++)
{
if(t_array(i) > t)t=t_array(i); //der höchste Wert im Array gewinnt...
{
switch(t) //Umwandlung der Daten
{
case <=25: Ocr2b=10; break; //und Ausgabe an das Output Compare Register 2b
case <=30: Ocr2b=20; break;
default: Ocr2b=10; //.. falls kein Wert zutreffend - sichern!
}
}
Gruß Ulli
hier mal ein Beispiel in C. Ich denke die Umsetzung kann dann sicher auch in Basic gemacht werden.
unsigned char t_array(3); //t1,t2,t3 (global) kann auch anderer Variablentyp(int) sein
void set_ocr2b() //Funktions Aufruf
{
unsigned char i; //Array Zähler
unsigned char t=0; //kann auch anderer Variablentyp(int) sein
for(i=0; i<3; i++)
{
if(t_array(i) > t)t=t_array(i); //der höchste Wert im Array gewinnt...
{
switch(t) //Umwandlung der Daten
{
case <=25: Ocr2b=10; break; //und Ausgabe an das Output Compare Register 2b
case <=30: Ocr2b=20; break;
default: Ocr2b=10; //.. falls kein Wert zutreffend - sichern!
}
}
Gruß Ulli
- adminoli
- Beiträge: 3949
- Registriert: Mi 04 Okt, 2006 11:37 am
- Do you already have Laser-Equipment?: Dynamics und diverse Projektoren
- Wohnort: nähe Schweinfurt/Würzburg, Bayern, Franken
Re: Temperatur ermittelung
Hi,
mit "günstiger" meine ich nicht den Quellcode in "C" sondern wieviele Steps der Pozessor machen muss um das auszuwerten und dies hängt wiederum daran wie gut der Compiler arbeitet und was der Prozessor kann.
PS: Die Anzahl der Zeilen ist nicht wichtig, ausser man programmiert Spielzeugprozessoren mit 8K oder so.
Es ist auch fast egal ob man so was in "C" programmiert oder in "Basic", es kommt nur auf den Compiler an was er daraus für Code erzeugt. Ein guter Basic-Compiler ist besser als ein schlechter C-Compiler. Natürlich ist auch der Programmierstil mit entscheidend.
Gruß
Oliver
mit "günstiger" meine ich nicht den Quellcode in "C" sondern wieviele Steps der Pozessor machen muss um das auszuwerten und dies hängt wiederum daran wie gut der Compiler arbeitet und was der Prozessor kann.
PS: Die Anzahl der Zeilen ist nicht wichtig, ausser man programmiert Spielzeugprozessoren mit 8K oder so.
Es ist auch fast egal ob man so was in "C" programmiert oder in "Basic", es kommt nur auf den Compiler an was er daraus für Code erzeugt. Ein guter Basic-Compiler ist besser als ein schlechter C-Compiler. Natürlich ist auch der Programmierstil mit entscheidend.
Gruß
Oliver
-
- Beiträge: 623
- Registriert: Fr 25 Jul, 2008 11:57 am
- Do you already have Laser-Equipment?: 2x 2.5W /w Compact506
Software: RayComposer, HE-LS, Dynamics Nano, Mamba - Wohnort: Berlin
Re: Temperatur ermittelung
Schon mal drüber nach gedacht den kleinen Block in Assembler zu schreiben? Damit kannst du ziemlich genau sagen wie viele Zyklen man braucht...
Sincere regards, Max
In the Beginning God said: "Let the four-dimensional divergence of an anti-symmetric second rank tensor equal zero" And there was light! - Michio Kaku
In the Beginning God said: "Let the four-dimensional divergence of an anti-symmetric second rank tensor equal zero" And there was light! - Michio Kaku
- adminoli
- Beiträge: 3949
- Registriert: Mi 04 Okt, 2006 11:37 am
- Do you already have Laser-Equipment?: Dynamics und diverse Projektoren
- Wohnort: nähe Schweinfurt/Würzburg, Bayern, Franken
Re: Temperatur ermittelung
Hi,
letztendlich ist es - wenn der Prozessor ausser Temperaturerfassung von 3 Sensoren ermittelt und diese dazu nutzt um einen Lüfter zu steuern - wurst
Gruß
Oliver
letztendlich ist es - wenn der Prozessor ausser Temperaturerfassung von 3 Sensoren ermittelt und diese dazu nutzt um einen Lüfter zu steuern - wurst
Gruß
Oliver
-
- Beiträge: 623
- Registriert: Fr 25 Jul, 2008 11:57 am
- Do you already have Laser-Equipment?: 2x 2.5W /w Compact506
Software: RayComposer, HE-LS, Dynamics Nano, Mamba - Wohnort: Berlin
Re: Temperatur ermittelung
Jo gut, das stimmt wohl.adminoli hat geschrieben:Hi,
letztendlich ist es - wenn der Prozessor ausser Temperaturerfassung von 3 Sensoren ermittelt und diese dazu nutzt um einen Lüfter zu steuern - wurst
Gruß
Oliver
Sincere regards, Max
In the Beginning God said: "Let the four-dimensional divergence of an anti-symmetric second rank tensor equal zero" And there was light! - Michio Kaku
In the Beginning God said: "Let the four-dimensional divergence of an anti-symmetric second rank tensor equal zero" And there was light! - Michio Kaku
-
- Beiträge: 76
- Registriert: Sa 25 Jul, 2009 11:35 am
- Do you already have Laser-Equipment?: Easylase, abgewandelter MOTU Traveler MK3 als 8 Kanal 24 Bit 196kHz DAC, 150mW Diode Rot, 150mW Grün DPSS, 150mW Blau DPSS und haufenweise Module in Arbeit
- Wohnort: Braunschweig
Re: Temperatur ermittelung
@adminoli "Spielzeugprozessoren mit 8K oder so.."
Dazu möchte ich dich fragen, was du glaubst, was man in 8k alles unterbringen kann und wieviele Seiten Code geschrieben werden müssen, damit die auch voll werden?
Ich kann dir sagen, dass es sehr viel Code ist und ich mit meinen Projekten(Midi Synthesizer, Aquariencontroler, Laserleistungsmesser(noch in Arbeit) usw.) meist noch mit 8k gut arbeiten kann.
Hatte ich behauptet, dass Basic schlechter wäre als C? Nein! Wie du schon sagst, es liegt letztlich am Compiler und was er daraus macht und meistens bedient sich so ein (Pre)Compiler eh aus irgendendwelchen fertigen Assembler Macros(egal ob C, Basic, Pascal usw.) . Das wäre zudem auch wieder eine der vielen( mir zu blöden) Glaubensfragen, die ich nicht unterstützen will und werde.
Das Beispiel schrieb ich deshalb in C, weil ich C in der Hauptsache neben etwas Assembler verwende um AVRs zu programmieren.
Viel wichtiger war mir dabei, zu erklären, dass man auf Sachen wie Lokale Variablen, Kapsellung durch Funktionen, Wiederverwendbarleit(Abstraktion) usw. Wert legen sollte - egal ob man nun 100B oder 100k Programme schreibt.
Ich bin mir auch ziemlich sicher, dass es auch Prozeduren( denn nix anderes war das Void ohne Parameterübergabe) und Arrays in Basic gibt. Also kann man das Beispiel auch gut in Basic portieren.
Gruß Ulli
Dazu möchte ich dich fragen, was du glaubst, was man in 8k alles unterbringen kann und wieviele Seiten Code geschrieben werden müssen, damit die auch voll werden?
Ich kann dir sagen, dass es sehr viel Code ist und ich mit meinen Projekten(Midi Synthesizer, Aquariencontroler, Laserleistungsmesser(noch in Arbeit) usw.) meist noch mit 8k gut arbeiten kann.
Hatte ich behauptet, dass Basic schlechter wäre als C? Nein! Wie du schon sagst, es liegt letztlich am Compiler und was er daraus macht und meistens bedient sich so ein (Pre)Compiler eh aus irgendendwelchen fertigen Assembler Macros(egal ob C, Basic, Pascal usw.) . Das wäre zudem auch wieder eine der vielen( mir zu blöden) Glaubensfragen, die ich nicht unterstützen will und werde.
Das Beispiel schrieb ich deshalb in C, weil ich C in der Hauptsache neben etwas Assembler verwende um AVRs zu programmieren.
Viel wichtiger war mir dabei, zu erklären, dass man auf Sachen wie Lokale Variablen, Kapsellung durch Funktionen, Wiederverwendbarleit(Abstraktion) usw. Wert legen sollte - egal ob man nun 100B oder 100k Programme schreibt.
Ich bin mir auch ziemlich sicher, dass es auch Prozeduren( denn nix anderes war das Void ohne Parameterübergabe) und Arrays in Basic gibt. Also kann man das Beispiel auch gut in Basic portieren.
Gruß Ulli
- lexa
- Beiträge: 402
- Registriert: Mi 26 Jan, 2005 7:23 pm
- Do you already have Laser-Equipment?: 150mW - 532nm
400mW - 650nm Eigenbau
200mW - 405nm Eigenbau
150mW - 457nm
1000mW - 445nm Beamer
Raytrack 35+ - Wohnort: NRW, Detmold
- Kontaktdaten:
Re: Temperatur ermittelung
Hi zusammen,
Danke für eure Antworten.
JA das mit dem Compiler ist so ne sache, hatte erst einen Tiny mit 2kB Flash. Da hat mein Programm leider nicht reingepasst.
Ich benutze aber auch BASCOM und das soll ja "verschwenderisch" sein. Keine Ahnung ich fand es in dem fall aber leichter einen Mega44 mit 4kB Speicher zu benutzen als Assembler zu lehrnen.
Gruß der Axel
Danke für eure Antworten.
JA das mit dem Compiler ist so ne sache, hatte erst einen Tiny mit 2kB Flash. Da hat mein Programm leider nicht reingepasst.
Ich benutze aber auch BASCOM und das soll ja "verschwenderisch" sein. Keine Ahnung ich fand es in dem fall aber leichter einen Mega44 mit 4kB Speicher zu benutzen als Assembler zu lehrnen.
Gruß der Axel
405nm Plotter
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
100mW 457nm
150mW 532nm
400mW 650nm
Raytrack 35+
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste