Temperatur ermittelung

Microcontroller, Steuerungen, Protokolle und und und.

Moderatoren: thomasf, random

Antworten
Benutzeravatar
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

Beitrag von lexa » Sa 14 Aug, 2010 2:13 pm

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
405nm Plotter

100mW 457nm
150mW 532nm
400mW 650nm

Raytrack 35+

Benutzeravatar
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

Beitrag von adminoli » Sa 14 Aug, 2010 2:28 pm

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

Benutzeravatar
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

Beitrag von lexa » Sa 14 Aug, 2010 3:06 pm

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.
405nm Plotter

100mW 457nm
150mW 532nm
400mW 650nm

Raytrack 35+

Benutzeravatar
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

Beitrag von lexa » Sa 14 Aug, 2010 3:42 pm

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
405nm Plotter

100mW 457nm
150mW 532nm
400mW 650nm

Raytrack 35+

Benutzeravatar
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

Beitrag von adminoli » Sa 14 Aug, 2010 3:42 pm

Hi,

jetzt hab´ ich´s verstanden. :mrgreen: 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. :mrgreen: Kann man so machen. Elegant ist nicht wichtig, Hauptsache sauber und übersichtlich. Deswegen muss man keine Schleife bauen.

Gruß
Oliver

vexti
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

Beitrag von vexti » Mo 16 Aug, 2010 10:15 am

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

Benutzeravatar
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

Beitrag von adminoli » Mo 16 Aug, 2010 6:10 pm

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. :mrgreen:

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

xrayz
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

Beitrag von xrayz » Mo 16 Aug, 2010 6:21 pm

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

Benutzeravatar
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

Beitrag von adminoli » Mo 16 Aug, 2010 6:26 pm

Hi,

letztendlich ist es - wenn der Prozessor ausser Temperaturerfassung von 3 Sensoren ermittelt und diese dazu nutzt um einen Lüfter zu steuern - wurst :mrgreen:

Gruß
Oliver

xrayz
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

Beitrag von xrayz » Mo 16 Aug, 2010 7:23 pm

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 :mrgreen:

Gruß
Oliver
Jo gut, das stimmt wohl. :)
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

vexti
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

Beitrag von vexti » Di 17 Aug, 2010 7:17 am

@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 :)

Benutzeravatar
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

Beitrag von lexa » Di 17 Aug, 2010 11:11 am

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
405nm Plotter

100mW 457nm
150mW 532nm
400mW 650nm

Raytrack 35+

Antworten

Zurück zu „Microcontroller & Steuerungen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste