www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Phasenanschnitt


Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich suche eine funktionierende Version eines Phasenanschnitt programmes 
für einen simplen 220V dimmer für einen 2313 oder 4433 wenn möglich in 
ASM. Kann mir da bitte jemand weiter helfen ?

Autor: Simon Stoye (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist für AT90S1200 mit 4 MHz Quarz, sollte man aber anpassen können...
http://www.mikrocontroller.net/forum/read-4-9509.html

mfg
SiSt

Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

danke erst mal, aber den link hatte ich auch schon gefunden. Habs für 
den 2313 angepasst, aber das problem ist, entweder ich bekomm die Lampe 
nicht ganz dunkel gedimmt, oder wenn ich die verzögerung t_sin0 ändere 
dann gehts zwar ganz runter aber nicht mehr weit genug hoch bis zur 
vollen helligkeit. Hat vielleicht jemand ein funktionierendes programm 
oder weiß was man in diesem ändern kann damit das funktioniert, vom 
glimmen bis maximum helligkeit ? Ich kenn mich mit phasenanschnitt als 
solches überhaupt nicht aus, aber ich denke auch dass man das rad nicht 
zig mal erfinden muss. Es werden doch schon sicher viele mit 
phasenanschnitt experimentiert haben die sich damit auskennen und mir 
weiterhelfen können. wär wirklich wichtig.

Danke schonmal im vorraus.

Gruß, Andy

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit der Helligkeit ist doch bei den Baumarktdimmern genauso, da 
bekommt man auch hinterher nicht mehr die Helligkeit vom anfang, auch 
wenn der Dimmer voll aufgedreht ist. ist vielleicht ein ganz normales 
Phänomen?!

Autor: Ripper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab mir das projekt oben net angeguggt aber ich rate einfach mal so 
mangels sachverstand:

da wird doch sicherlich im analogteil beim verwendeten triac or whatever 
der rückkopplungszweig kompensiert werden müssen, auf dass da kein 
hystereseeffekt auftritt.

Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Sven, ich habe bei mir auch einen Baumarkt Dimmer in Betrieb, der geht 
von ganz dunkel bis maximum ohne probleme. Allerdings verwendet der auch 
ein spezielles Sensor dimmer IC.

Ripper, von den Bauteilen hab ich genau die, die im txt angegeben sind. 
Auch mit dem nullspannungsschalter, der den int0 auslöst den angegebenen 
OC. Wie gesagt, soweit funktioniert die geschichte ja auch, bis auf dass 
der volle dimmbereich nicht ausgeregelt wird. Das Triac ist ein solid 
state relais. Triac mit integriertem Optokoppler, welches aber auch auf 
die impule des Prozessors angewiesen ist um die phase richtig 
anschneiden zu können. Hardwaremässig denke ich ist das kein Problem. 
Ich denke liegt wohl eher an der Auflösung ( 0-255 ) und 7° Auflösung 
reicht vielleicht nicht um den vollen dimmbereich auszunutzen. Und dass 
das prog jetzt auf einem 2313 läuft statt auf einem 1200 daran kanns 
wohl auch nicht liegen. Hmmmmmmmmmmmmmmmmm

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Da kam mir doch was bekannt vor. Du hast ein kleines Timingprobl. Poste 
oder schicke mir mal das Prog, ich passe es dir an.
Ämmm Du hast aber 100Hz am PD2-Eingang?

MFG Uwe

Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Uwe,

das prog ist das allerselbe wie Simon oben schon gepostet hat.

http://www.mikrocontroller.net/forum/read-4-9509.html

Ja, ich habe 100hz am Eingang, auch gemessen mit einem frequenzzähler... 
obwohl mir 50 Hz lieber gewesen wären, wäre für mich einfacher aus der 
netzspannung zu gewinnen.

Gruß, Andy

Autor: Voyager9 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier aber nochmal mein angepasstes. da der tov interrupt beim 2313 
anders liegt als beim 1200 habe ich den lediglich an die richtige stelle 
verschoben.

Gruß, Andy

Autor: Mark Hämmerling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salut,

@Voyager9:
Du kannst Dir mal mein Projekt ansehen. Enthält Hard- und Softwareteil 
für einen Phasenanschnittdimmer mit Taster-, IR- und UART-Schnittstelle. 
Läuft seit Wochen völlig problemlos.
Realisiert auf einem 2313 in Assembler.
Dimmt von 0% auf 100% (Netzteil eingebaut, daher volle Leistung).
Der Analogteil ist relativ klein und preisgünstig, der µC vom 
Netzpotential getrennt. Der Netzfrequenzeingang hat 50Hz.
Mehr Infos auf der Website:

http://semitone.sourceforge.net
http://sourceforge.net/projects/semitone/

Grüße und danke nochmal an alle hier, die mir geholfen haben!
Mark

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Voyager9 !

Wenigstens 2 Fehler stechen mir gleich ins Auge:
1. die "include "- Anweisung steht noch auf AT90S1200

.include "4433def.inc"

2. du hast den Stack nicht initialisiert

.org $00

ldi  temp,RAMEND  ;$df
out  SP,temp    ;Stack als 1.festlegen


Weiterhin steht noch der 4MHz Quarz drinn, hast du auch einen verwendet? 
Ansonsten bitte die richtige Frequenz eintragen.

Der Phasenanschnitt ist schon für 50Hz Netzfrequenz, nur du musst ja die 
positive und die negative Halbwelle anschneiden um auf Vollwellenbertieb 
zu kommen. Dazu brauchst du aber beide Nulldurchgänge eines kompletten 
Sinus, was dann natürlich 100Hz sind.
Mal was zum Verständnis. Eine Halbwelle wird in 255 zeitgleiche Teile 
zerlegt was einem Winkel von 180°/255=0,706°
entspricht. Das sind genau 10ms / 255 = 39,21µs für ein solches 
"Zeitsegment" welches der Timer erzeugen muss.
Es müssen also pro Halbwelle(180°) 255 TOV0's erzeugt werden.
Kommen wir mal zu "t_sin0". Der Nulldurchgang wird etwas vor dem echten 
Nulldurchg. detekt. weil ja der Stromfluss durch den OK nicht erst bei 
Null Volt aufhört sondern schon etwas eher. Du musst also noch etwas 
Zeit verstreichen lassen bis der echte Sin0-Durchgang stattfindet. Genau 
diese Zeit muss mit t_sin0 erzeugt werden. Das Zeitraster ist ebenfalls 
39,21µs. Wenn da also ein Wert von 10 drinnsteht,bei mir war das so, 
entspricht das genau 392,1µs was der OK eher schaltet. Solltest du an 
einen Oszi rankommen kannst du dir das sehr schön anschauen indem du dir 
das 50(100)Hz Signal nach dem Gleichrichter auf einen Kanal legst und 
den anderen Kanal mit dem INT0-Signal ansteuerst. Getriggert wird auf 
das steigende INT0-Signal und schon kannst du die genaue Zeit ablesen 
die deine Schaltung eher ist.

Ich hoffe das du jetzt etwas besser klarkommst, ansonsten fragen, 
fragen,.....

MFG Uwe

Ps.: Sage bitte auch was dir zum Verständnis gefehlt hat, damit ich es 
in den Beitrag einarbeiten kann.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Mir ist nochwas eingefallen. Das Schreiben des EE-Prom geht etwas 
anders: Statt

ee_wr:  in  eetmp,eedr   ;alte eeprom Daten laden
  cp  eetmp,w_soll ;mit neuen vergleichen
  breq  wr_e      ;wenn gleich nicht speichern
ee1:  sbic  eecr,1      ;überspringe wenn eewe = 0 (schreiben bereit)
  rjmp  ee1      ;noch nicht bereit
  out  eedr,w_soll  ;nun in's ee .schreiben
  sbi  eecr,1      ;und schreiben aktivieren
wr_e:  clt        ;T-Flag löschen
  rjmp  loop

;*** neu für 2313 *********
ee_wr:  in  eetmp,eedr   ;alte eeprom Daten laden
  cp  eetmp,w_soll ;mit neuen vergleichen
  breq  wr_e      ;wenn gleich, nicht speichern

EE:  sbic  EECR,EEWE      ;Schreibbit gelöscht?
  rjmp  EE      ;nein->EE
  out  eedr,w_soll  ;nun in's ee .schreiben
  sbi   EECR,EEMWE   ;Schreiben Masterbit=1
  sbi  EECR,EEWE      ;Schreibbit =1
wr_e:  clt        ;T-Flag löschen
  rjmp  loop


MFG Uwe

Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Uwe,
mal 1000 Dank für die ausführliche erklärung.
Das Device ist richtig und der stack ist auch initialisiert. Habe
ausversehen das falsche file erwischt. Wäre der stack nicht ok würden
wahrscheinlich auch die irq`s nicht gehen. Das mit dem stack war das
2te was ich sofort gemacht hatte, da ich irgendwo gelesen habe dass der
1200er eine art automatischen stack hat und nicht initialisiert werden
braucht. Soweit funktioniert ja auch alles, bis, wie du wahrscheinlich
richtig liegst, mit dem Timing Problem von t_sin0. Ich habe mir mal die
mühe gemacht und alle werte von 0 bis 255 in 2er schritten ausprobiert,
aber bei keinem Wert erreiche ich den vollen Dim Berech von 0 bis max.
Ich habe nun spasseshalber mal das t_sin0 in ein register umgewandelt,
in das ich dann 2 verschiedene Werte schreibe. Bei 255 ist die lampe
ganz aus, und wenn w_soll null ist hat sie dann ca die halbe
helligkeit. Danach lade ich t_sin0 mit 10 und setze w_soll auf ca 230
hoch, das entspricht ca der vorigen helligkeit, damit kein
helligkeitssprung beim übergang drin ist. dann wird w_soll wieder bis 0
gezählt und damit erreiche ich dann die volle helligkeit. Danach halte
ich den weiteren countup von w_soll an, da er sonst, so wie es im
original programm ist überläuft und wieder von unten anfängt. Das
gleiche mache ich beim dunkel dimmen in umgekehrter reihenfolge.
ABER.... das ganze ist ja nicht im Sinne des Erfinders. Als OP der int0
triggert benutze ich ein PC817 und als Rel. ein S201S01, also beides
was als funktionierende hardware im text des programmes angegeben ist.
Die 100 Hz habe ich momentan über einen trafo laufen, dem ein normaler
4 dioden Gleichrichter folgt. Logischerweise ohne kondensator :-) Auf
den Trafo möchte ich aber gerne verzichten können da das ganze später
in eine Schalterdose passen soll. setz ich den Gleichrichter direkt an
die 220 V brauche ich wieder einen riesen widerstand für die OC LED,
weil die verlustleistung zu hoch ist. Selbst ein 1 Watt wird noch
ziemlich heissaber daran dürfte es ja im Moment auch nicht liegen. Laut
Frequenzzähler liegen satte 100 Hz an PD2 an, etwas schwankend, weil
unser netz ist auch nicht das stabilste :) ( Ich weiß, es gibt länder
da würden wir die Hände überm kopf zusammen schlagen ) Aber egal, dafür
ist ja der int0 da. Nun, Hardwaretechnisch dürfte also normalerweise
kein fehler vorliegen. Woran es hängt entzieht sich wirklich meiner
kenntnis :( Heul

Hey Mark, Dein Projekt ist echt ganz nett, aber wie gesagt, das ganze
soll in einer Schalterdose platz finden ;)

Vielleicht werden sich auch einige Fragen warum ich mir keinen
Handelsüblichen Dimmer einbaue... Nun, das hat folgenden Grund:
Ich möchte (wenn der Phasenanschnitt endlichmal richtig klappt ) das
Licht beim einschalten des Lichtschalters ( ersetzt durch einen
kleinen, dann am AVR angeschlossenen ) langsam von null hochfahren
lassen, um einfach die birnen zu schonen. und beim Ausschalten langsam
herunter. Ausserdem möchte ich durch 3 LED`s die ungefähre Helligkeit
angezeigt bekommen, LED1 ca 33%, LED2 ca 66% und die 3. LED dann eben
100%
Ich kenne keinen Dimmer der diese features bietet ;);)

Autor: Mark Hämmerling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salut,

@Voyager9: also genau dieses Fading war es auch, was mich dazu brachte,
mein Projekt zu starten. Die Platine ist mit 50x100mm² nicht wirklich
winzig, zugegeben. Aber für einen PhasenANschnitt brauchst Du die
entsprechende Entstörung - und die braucht Platz. Wenn Du die ganze
Geschichte in Reihe zur Lampe schalten willst, kommst Du auch ohne
Trafo aus, dann kannst Du die Z-Dioden-Schaltung verwenden. Aber dann
hast Du auch keine Potentialtrennung mehr, was solche Sachen wie UART
fast unmöglich macht und einen externen Taster gefährlicher. Außerdem
kannst Du die Lampe dann nur noch bis ca. 90% fahren, damit sich der
Schaltkreis nicht seiner eigenen Spannung beraubt.
Alles in allem dachte ich mir die Sache auch billiger und einfacher,
aber die Anforderungen haben schließlich zu dem geführt, was es heute
ist.
Das nächste Modell in der Reihe sollte auch ein Dimmer werden, der in
eine Schalterdose paßt. PhasenABschnitt, Drehgeber oder Poti, und IR.
Muß man evtl. als Sandwich bauen. Insgesamt halte ich die Idee mit der
Schalterdose aber für ein zu krasses Kriterium. Meine nächste Idee war
dann, den Dimmer selbst in ein Gehäuse zu bauen und nur den
Triac-Zündstrom zur Schalterdose zu leiten. Auf Wunsch könnte dieser
Dimmer dann auch mehrere Lampen getrennt ansteuern. Ist dann ja nur
noch ne Frage von freien I/O's und entsprechender Firmware.

Das nur als kleiner nett gemeinter Denkanstoß. :)

Viele Grüße und viel Erfolg!
Mark

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Voyager9 !

Hast du etwar einen 8MHz Quarz? Dein Timer scheint zu schnell zu
laufen!Das Ganze geht nur bis ~6,5MHz ohne Vorteiler, und dafür ist im
Kopf die Berechnung zugeschnitten. Wenn du 8MHz hast musst du den
Ladewert für 39,21µs per Hand ausrechnen und als "teiler" einsetzen.
equ  t_wert  =$00-teiler  ;157=4MHz =>10ms(Timerwert)

Ein Transformator ist für dich ein Problem? Hast du schon mal einen
0,35VA Trafo gesehen? Der ist kleiner wie deine Kondensatoren und die
Potentialtrennung ist gratis. Ich habe so eine Dimmerschaltung übrigens
mal in ein Sicherungsgeh.(16A Automat=12,5mm) eingebaut. Da ist eine
Schalterdose ja riesig und mit einer Ringkerndrossel kannst du sehr gut
entstören. Was du da bauen willst habe ich vor 2-3 Jahren mal einem
Aquarianer gebaut, der wollte unbedingt Sonnenauf und untergang
haben.(Für seine Fische natürlich)
Wenn ich mal richtig grabe fine ich bestimmt das Progr.noch irgendwo.
War allerdings mit einem 2323(8-Beiner)

Also wie gehabt, immer schön fragen fragen ..., Das wird schon!

MFG Uwe

Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe,

Als Quarz habe ich momentan im Versuchsaufbau einen Quarzoszillator von
genau 4 Mhz dran, das sollte soweit alles passen. Hmmmmm... diese
Trafos sind mir nicht geläufig... kenn ich echt nicht. ( Haben will )
 :-) Gibts die auch bei conrad? Falls Du das Prog noch irgendwo finden
würdest wäre ich sehr interessiert daran :) 2323 ist auch kein Problem,
habe hier eine breite Palette AVR`s zur verfügung. Ich entschied mich
lediglich für den 2313 wegen der ports für spätere led`s usw.... aber
ich denke mal das dürfte ja normalerweise ohne probleme anzupassen
sein. Echt mal 1000 Dank für Deine Bemühungen und Geduld mit mir :-)))

Mark...Die schaltung ist so konzipiert, dass Phase und Null
angeschlossen sind, sind also in der schalterdose vorhanden, da Schlter
/ Steckdose Kombination. Uart und IR brauche ich für diese Ausführung
nicht, sind also nicht von belang, daher spielt auch die
potentialtrennung hier nur eine nebenrolle. Aber dein Projekt ist nicht
von schlechten Eltern :) und ich werde es auch bestimmt bei gelegenheit
mal nachbauen. Interessiert mich selber, obwohl mir dein coding den
rest gibt. Ich finde die initialisierung der led Ports und diverser
wären auch einfacher gegangen, anstatt sie hintereinander einzuschieben
lol diese sachen machen für mich zumindest das coding etwas
unleserlicher und man verliert leicht den überblick. zumindest geht es
mir so, was nicht heissen soll das ich an einem funktionierenden
Programm auch nur das geringste auszusetzen hätte. :) Aber egal, jeder
programmiert ja wie es für ihn am einfachsten und sinnvollsten ist und
jeder kann ja auch programmieren wie er will smile Hauptsache es
funktioniert am ende so wie man es gerne hätte.

Gruß, Andy

Autor: Uwe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Voyager9 !

Mich macht das sehr stutzig was du mit dem Progr. veranstaltest um den
richtigen Erfolg zu haben. Vermutlich hast du auch ein kleines
Verständnisproblem, zu dem ich schnell mal eine Zeichnung gemacht
habe.
Wenn du einen 4MHz Quarz/Takt hast, muss es gehen, es sei denn dein
Assembler macht Mist. Setze doch bitte mal statt "teiler" den Wert
157 ein. Bei w_soll = 0 muss volle Helligkeit sein und bei 255 kein
Zündimp.
Jedenfalls, wenn du soviel Zeit verstreichen lassen musst, um volle
Helligkeit zu erreichen, bist du schon in der nächsten Halbwelle und
das ganze haut nicht hin.

Hänge doch mal dein richtiges Progr. an damit ich nachvollziehen kann
was du da machst.

MFG Uwe

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Voyager9 !

Mir ist nochwas eingefallen. Kann es sein das dein Lastrelais nicht
zwischen +5V und dem Ausgang angeordnet ist, sondern gegen GND? Das
invertiert die ganze Geschichte und bei Nulldurchgang würde ein- statt
ausgeschaltet. Und nochwas! Der OK am Eingang muss Int0 im nicht
angesteuerten Zustand erzeugen.(Trafo aus, dann muss Int0-Eing.auf 5V
sein)

MFG Uwe

Autor: Voyager9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe,

so, nun, anscheinend hat der AVR eine Macke, warum auch immer. Ich habe
aus lauter frust mal einen neuen AVR eingesteckt, die soft
draufgebrutzelt und jetzt funktioniert es komischerweise problemlos.
Wieder den alten avr hat wieder die selben fehler zur folge. Verstehen
muß ich das wohl nicht, denn ich habe mal alle ports mit led`s belegt
und die lassen sich mit einem keinen testprog problemlos einzeln
ansteuern. Vermute mal dass der Timer dieses avr`s spinnt.

Was ich aber dennoch immer noch nicht ganz verstehe, bezogen auf Deine
Zeichnung. Wie kann die Lampe nach ablauf von t_sin0 und w_soll auf 0 (
wo sie sich kreuzen auf der nullinie ) zum Zeitpunkt des Nullpunktes
100% Helligkeit haben ?????? Zum Zeitpunkt des Nullpunktes fliesst doch
kein Strom, demnach müsste die lampe doch aus sein, oder? Oder
interpretiere ich die Zeichnung verkehrt?

Oder heißt das dass zu diesem Zeitpunkt ( bei w_soll auf 0 ) die
halbwelle nicht geschnitten wird und somit die Lampe die ganze
halbwelle abbekommt. Dann escheint es mir logischer dass sie dann 100%
erreicht :) ( Jetzt davon ausgegangen dass beide halbwellen durchgingen
)

Gruß, Andy

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Voyager9 !

Schön das du Erfolg hattest, ich hatte schon fast keine Idee'n mehr.
Hatte übrigens selbst auch schon mal so ein Probl.,da ging INT0 auf
einmal nicht nehr, alles andere war i,O.
Und ,ja die Lampe (Verbraucher) bekommt die ganze(n) Halbwelle(n) womit
sich 100% Leistung einstellen.

MFG Uwe

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe,
habe mit Interesse die Diskussion verfolgt. Ich bastel selbst auch an
einer Dimmerschaltung mit dem AT2051. Funktioniert auch alles prima
(ähnliches Prinzip wie Deine Beschreibung). Hast Du evtl. eine Idee
(theoretischer Ansatz), wie man die Helligkeit linear zum Stellwert
(0-255) bekommt. Es gibt da ja Wahnsinnsformeln, aber das kann der
kleine Controler nicht. Für eine Tabelle ist auch nicht genügend
Platz...???
Olaf

Autor: Mark Hämmerling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salut,

ich will Dir ja nicht den Mut nehmen, aber ich glaube nicht, daß man
einen arccos in weniger Code als sie eine Tabelle braucht nachbilden
kann. Nun da mein 2313 auch randvoll ist (aber doch noch soviele
Features warten, implementiert zu werden), hab ich schon über eine
einfache lineare Interpolation nachgedacht. Hab mir aber noch nicht die
Zeit genommen, die entsprechenden Graphen mal zu vergleichen. 128, 64
oder gar 32 Stützwerte könnten reichen. Und linear interpolieren sollte
sich relativ einfach gestalten.
Mein persönlicher Ausweg aus dieser Misere wird wohl aber, doch auf den
Mega8 umzusteigen. Kostet minimal mehr und bietet eine Handvoll mehr
Features.

Viel Erfolg! Bin auf eventuelle andere Ansätze aber auch gespannt. :)
Mark

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf!

Darüber habe ich mir noch nicht einmal Gedanken gemacht, aber wenn ich
mir das recht überlege so bedeutet ja 50% Leistung noch nichtmal 50%
Licht. Ist das überhaupt berechenbar? Selbst wenn, so trifft das doch
dann auch nur auf einen speziellen Verbraucher zu. Ich denke da nur mal
an die vielen unterschiedlichen Lampentypen. Persöhnlich würde ich
warscheinlich den Bereich unter 100(mal schauen ab wann sich kaum noch
etwas ändert) ausblenden und den Rest des Bereiches auf 255 verteilen,
sozusagen 10ms/355 als kleinste Takteinheit. Die 100 fehlenden
"Takte" müssten dann in meine "t_sin0"mit eigearbeitet werden. Wenn
es ganz ausgefeilt sein soll könnte das der uC eigentlich selbst
aufteilen indem er ein "Setup" durchführt in der Art: Wert "Min"->
Anwender stellt "Min"->OK(Taste)-> Wert Max-> Anwender stellt
"Max"->OK(Taste)->neue Teiler berechnen und im EEprom ablegen. Aber
wie gesagt das sind jetzt nur undurchdachte Ansätze, wie das vernünftig
zu bewerkstelligen ist müsste man untersuchen.


MFG Uwe

Autor: Mark Hämmerling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salut Uwe,

naja, Du könntest mit Hilfe eines Fotowiderstandes (dessen Kennlinie Du
kennen mußt) den jeweiligen Lampentypen ausmessen. D.h. schrittweise
hochfahren bis Du an je einem 1/256 Helligkeitsschritt angekommen bist,
und dann den aktuellen Zündzeitpunkt im ROM speichern (EEPROM oder dann
in den Flash übertragen).
Wenn Du eine Linearisierung brauchst, die Dir die Leistung (also die
Fläche unter der sin-Halbwelle) linear zum "Helligkeitswert"
berechnet, dann hilft Dir diese Formel: y = acos (2x - 1) / PI. Das
bildet Dir dann quasi das Gegenstück zu den jeweils stark nichtlinear
weggeschnittenen sin-Halbwellenstückchen.
Das funktioniert an sich auch ganz prima. Mir persönlich gefällt es
besser, wenn dieser arccos noch mit 1/3 der linearen Funktion gemittelt
wird. Das bringt in den dunkleren Bereichen eine höhere Auflösung. Bei
großen Helligkeiten nimmt das menschliche Auge kaum noch Unterschiede
wahr.

Wie gesagt, mein Dimmerprojekt liegt unter http://semitone.sf.net .
Wen's interessiert... inzwischen läßt sich der Dimmer auch über ein
GTK- und Kommandozeilen-Frontend unter GNU/Linux steuern. :))

Viel Spaß,
Mark

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.