Forum: Mikrocontroller und Digitale Elektronik DMX Dimmerpack bauen


von Benjamin Munske (Gast)


Lesenswert?

Hallo Leute, ich möchte ein solches Dimmerpack bauen:

http://www.netzmarkt.de/thomann/artikel-168077.html?sn=ecc8c565f8b4fbff3f929b3bac618835

Ich sende mit einem AVR über ein Kabel DMX Signale und das Dimmerpack
soll abhängig vom gesendeten Signal die Lampen dimmen.

Folgendes soll möglich sein:

- jede Steckdose soll einzeln einstellbare Adressen haben
- es müssen min 300W geschaltet werden können

Kenn jemand schaltungsbeispiele, in denen ein DMX Signal eine
Helligkeitsstufe generiert >> Dimmer?

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Schau mal hier nach:

http://www.theaterzentrum.at/technix/development/dimmer/index_html

Da und unter dem Stichwort DMX hier in der Forumsuche solltest Du
fündig werden.

Gruß
Kai Markus

von Benjamin Munske (Gast)


Lesenswert?

Hallo,

die Seite enthält zwar genau das, was ich brauche, allerdings ist das
Projekt so schlecht dokumentiert und erklärt, dass ich es nicht
nachvollziehen kann und dadurch nicht verändern und nachbauen kann.

Kannst du mir das erklären?

1. Wie wird gedimmt?
2. Welche Adressen haben die Strahler dann?
3. Kann man auch wirklich (in diesem Fall) 12 Strahler einzeln
ansteuern?

von Benjamin Munske (Gast)


Lesenswert?

Frage: Wie muss ich die Widerstands-, Spulen- und Kondensatorwerte
ändern, wenn ich das TIC225M Triac benutze?

von Michael (Gast)


Lesenswert?

Immer gern als Inspiration benutzt:  www.dmx4all.de

Michael

von Benjamin Munske (Gast)


Lesenswert?

Danke, das baue ich nach! Ich finde aber diese Spulen (64µH 5A) bei
Reichelt nicht! Kennt zufällig jemand die Bestellnummer?

von Joline (Gast)


Lesenswert?

@Michael

Ist bestimmt ganz nett. Aber ausser der Startseite ist nichts zu sehen,
wenn man den ganzen Multimediakram im Browser ausgeschaltet hat. Nicht
gerade besucherfreundlich. :o(

von Benjamin Munske (Gast)


Lesenswert?

Wieso siehst du dort nichts? Klick einfach auf die deutsche Flagge -
dann siehst du doch die Homepage! Warum schaltest du den
"Multimediakram" im Browser ab?

Kann mir noch jemand meine letzte Frage (s.o.) beantworten?

von Bitmonster (Gast)


Lesenswert?

Wundert mich, dass noch keiner dieses Projekt erwähnt hat:
http://semitone.sourceforge.net/

von Benjamin Munske (Gast)


Lesenswert?

Das Projekt hat noch niemand erwähnt, weil ich eine Lösung ohne PC
entwickeln möchte und nicht eine Software - trotzdem nette Sache

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Wenn ich das Projekt richtig verstanden habe, bezieht sich die
PC-Anbindung nur auf den DMX-Sender, nicht auf den Empfänger. Wäre
nicht der Semitone Diamond so etwas, was Du suchst?!?

KMT

von Benjamin Munske (Gast)


Lesenswert?

Moin,
kann mir jemand Informationen über die Phasenanschnittsteuerung zur
verfügung stellen?

von Peter D. (peda)


Lesenswert?

"Wieso siehst du dort nichts? Klick einfach auf die deutsche Flagge"

Habe ich gemacht, sehe trotzdem nichts weiter als:

------------------------------------------------------------
Es ist Vollbracht
23 09 2004 | 10:22
Die Neue Homepage ist nun Online...

- Neues Design
- Neuer Online Shop

und noch einige andere Neuheiten werden folgen...

MfG Webmaster
-------------------------------------------------------------

Aber nirgends ein Link, den man antippen kann.
Und ich habe nichts deaktiviert außer Flash.

Wenn die Seite Flash-pflichtig wäre, müßte doch wenigstens die übliche
Flash-Sauger-Anpflaumerei kommen (...get the plugin...).


Peter

von Benjamin Munske (Gast)


Lesenswert?

Doch, das Menü ist in Flash erstellt - aber mal eine Frage: Warum hast
du Flash deaktiviert? Da kann doch nichts passieren!

von Peter D. (peda)


Lesenswert?

Ich hab nur nen Analog-Anschluß und da dauert Flash ewig und man kann
nicht navigieren (Bookmarks usw.) und muß meistens nervtötende und
nicht abbrechbare Intros über sich ergehen lassen.


Peter

von Benjamin Munske (Gast)


Lesenswert?

Naja, meistens sehen die ja ganz nett aus! Aber egal - kennst du dich
mit Phasenanschnittsteuerungen aus?

von Christof Rieger (Gast)


Lesenswert?

Was möchtest du denn wissen ?

von Benjamin Munske (Gast)


Lesenswert?

Ich möchte die ganze Funktionsweise einer Phasenanschnittsteuerung
wissen, z.B. Bei wie viel "Abschnitt" sich welche Helligkeit ergibt,
ob man das mit einer Sinusformel berechnet, wo man abschneidet, usw. -
halt alles, was man wissen muss, damit man ein solches Dimmerprojekt in
Angriff nehmen kann.

von Christof Rieger (Gast)


Lesenswert?

Ja, daran habe ich auch schon rum experimentiert. Du hast schon richtig
erkannt, das die Abstände zwischen den möglichen Zündzeitpunkte nicht
Liniar sein darf. Ursprüglich dachte ich müsste  die Zündzeitpunkte
über die Leistung berechnen also eine Funktion aus dem sinus^2
abgeleitet. Das Ergebnis war ernüchternd. Der Helligkeitseindruck war
NICHT liniar. Ich habe dann eine einfache
1-sinus Funktion zu Grunde geleg und siehe da der Helligkeitseindruck
war recht liniar.
Rechne:
SLin=180Grad/256
Intervall(n)=1-sin(SLin*n) (n= 0 bis 127) die 2. 90 Grad kannst du
Spiegeln.
Bilde die Summe über alle Intervallwerte.
Teile 10ms durch die Intervallsumme.
und multipliziere dann jeden Intervallwert mit diesem Ergebnis.
Jetzt hast du eine Tabelle mit den Zeiten, die von Zündpunkt zu
Zündpunkt verstreichen muss.

von Benjamin Munske (Gast)


Lesenswert?

Sehr cool, werde ich mir am Wochenende mal genauer anschauen und
ausprobieren. Bin momentan etwas im Stress.

von Mark Hämmerling (Gast)


Lesenswert?

Salve,

huch, geht schonwieder um meinen Dimmer und ich habs nicht
mitbekommen.
Also: Der Diamond ist ein Standalone-Dimmer, konzipiert für den
Wohnbereich. Die DMX-Anbindung ist optional. Eine native PC-Anbindung
an sich (wie es beim Crystal war, der sich über UART mittels eines
eigenen Protokolls mit z.B. einem Gtk2-Programm unterhalten hat) gibt
es keine.

Die Linearisierung übernehmen in meinen Dimmern Lookup-Tables (beim
Diamond immerhin ca. 4kByte). Aufgebaut sind die mit einem acos() und
etwas proportionalem Anteil. Die Formel findest Du in dem Perl-Script
in den Diamond-Sources.

Viele Grüße,
Mark

von Christof Rieger (Gast)


Lesenswert?

Das mit dem acos dürfte passen:

für Helligkeitswert X(0-256) in einer Halbwelle gilt:
Zündzeitpunkt=arcos(1-(X/128))*10ms/PI

aus dieser Formel kann man die Timer Comparewerte direkt berechnen.

bei meinem Vorschlag higegen würde man die Timer Reloadwerte
berechnen.

Die daraus ressultierenden Zündzeitpunkte dürften aber sehr ähnlich bis
gleich sein. Aber zugegeben die Methode von Mark ist deutlich einfacher
zu berechnen.

von The Clown (Gast)


Lesenswert?

Test

von The Clown (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich schmeisse mal mein Projekt in die Runde.
Es handelt sich um eine Dimmerbar (eigenbau) mit 8 Kanäle.
Das Projekt arbeitet mit einem Mega8 mit 16 Mhz Takt.
Die Software ist mit Bascom geschrieben.
Softaremäsig ist die Adresse 0 als Startadresse im DMX-Protokoll
für Dimmer festgelegt.

Viel Spass

von Stromi (Gast)


Lesenswert?

hallo, ist es vermessen nach dem Bascom programm und ev. nach dem Layout
zu fragen?
Ich programiere gerade eine Art Haussteuerung steuerbar durch
Windowsprogramm
(und Webbedienung als Option), mit Microkontroller als Aktuatoren und
Eingabegeräten. Die Übertragungsart rs485 werde ich auch nehmen, ich
weiss aber noch nicht, ob ich die DMX-Protokolle nehme, aber die
Dimmerei bräuchte ich dann nicht neu zu programmieren.
Helfe gerne mit meinem Wissen aus, wenn es gebraucht wird.

von The Clown (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Stromi

den Quelltext kannst du gerne haben, für ein Layout leider nicht
da ich viel zu faul bin.
Die Schaltung habe ich extra für das Forum gezeichnet.
Meine DMX Projekte entstehen im Kopf und werden dann einfach ohne
irgendwelche Dokumentation für meine Anwendungen gebaut und fertig.

MfG The_Clown

von The Clown (Gast)


Lesenswert?

Störe dich bitte nicht an meiner Programmierkunst.
Der Quelltext müsste warscheinlich noch etwas überarbeitet werden.

von Stromi (Gast)


Lesenswert?

Danke, den muss ich erstmal durch die Rübe ziehen, weil ich ja auch
keine Rem's mache, muss ich ja auch mal bestraft werden....  :-)

Vielen herzlichen Dank für den Code

von The Clown (Gast)


Angehängte Dateien:

Lesenswert?

Stromi

Habe mal die überflüssigen Zeilen entfernt.

von Christof Rieger (Gast)


Lesenswert?

Betreff:

>für Helligkeitswert X(0-256) in einer Halbwelle gilt:
>Zündzeitpunkt=arcos(1-(X/128))*10ms/PI

Leo hat mich auf einen Fehler hingewisen, der Zündzeitpunkt muss von
180 Grad nach 0 Grad laufen und nicht so wie dargestellt von 0 Grad
nach 180 Grad. Richtig ist:

Zündzeitpunkt=arcos((X/128)-1)*10ms/PI

Danke Leo

von The Clown (Gast)


Lesenswert?

Hallo

Warum versucht Ihr so komplexe Rechnungen für euren Zündzeitpunkt
zu berechen.
Beim Emfangen von DMX Signale habt Ihr sowieso keine Zeit solche
Berechnungen noch durchzuführen oder ihr beschäftigt spezielle
Cips oder mehrere Processoren.

Für eurer Problem werden im Programm sogenannte
"firing angle Table"
eingesetzt wo zu jedem DMX-Wert (0-255) ein Vergleichswert im
Programm hinterlegt wird.
Diese Werte ändern sich aber je nach verwendetem Leuchtmittel.

In meinem Projekt habe ich da aber keinen Wert drauf gelegt, da es
bei normalen Anwendungen z.b. in meinem Dimmer sowieso keinem
auffällt ob das Licht linear heller oder dunkler wird oder nicht.

MfG The Clown

von Benjamin Munske (Gast)


Lesenswert?

Wenn ich das Richtig verstanden habe, dann sind diese Tabellen doch
folgendermaßen aufgebaut:
(mit Beispielzahlen):

0 > 0s
1 > 1ms
2 > 2ms
...

Man muss aber erst durch diese Formel die Werte auf der rechten Seite
berechnen, damit man sie im Speicher ablegen kann, oder?
Kannst du mal deine Tabellenwerte als Datei hochladen?

von Christof Rieger (Gast)


Lesenswert?

@The Clown

Du lasst dem Kontroller nicht die Formel berechnen sondern legst eine
Tabelle mit den Ergebnissen im Controller an, die dann nur ausgelesen
wird.

von The Clown (Gast)


Lesenswert?

@Benjamin Munske

So ähnlich lauft das ab.
In meinen Proj. sind die Timer so eingestellt das sie mit der
Netzfrequnen (50 Hz x 2 Halbwellen 100Hz) in etwa syncron laufen.

Mit der oben erwähnten Tabelle gleicht man das Verhalten
unterschiedlicher Leuchtmittel aus.

Als Beispiel:

Nehme eine LED und pulse sie mit 50%, du wirst feststellen das
sie aber unmerklich dunkler wird und est bei Werten unter 50%
an intensität verliert.

Im vergleich dazu eine einfache Glühbiren sie ist bei ca. 40%
Pulsrate schon fast aus und eine Halogenlampe hat wieder ein anderes
verhalten.

Dieses wird mit solch einer Tabelle ausgeglichen.

DMX IN 255 Pulslänge 100% ....
DMX IN 224 Pulslänge 95% ....
DMX IN 128 Pulslänge 75% ....
DMX IN 64 Pulslänge 60% ....
DMX IN 32 Pulslänge 50% .... u.s.w.

Zwischenwerte habe jetzt nicht mit angegeben.

Es entsteht eine log. Verhalten die für verschidenen Leuchtmittel
halt unterschiedlich sind. Einige Hersteller von Dimmer haben
dann halt 2-3 Tabellen integriert.

Ich hoffe das es halberwegs verständlich war.

Also mache dir nicht soviel gedanken darüber wann du die Phase
einschalte sonder mehr das du in der Zeit einer Halbwelle deinen
DMX-Wert unterbekommst ob nun 0-255 oder 0-128 es kommt immer darauf
an was du damit machen willst.

Ich habe in einem anderen Projekt mir den Kanal geteielt.
Werte von 0-128 Dimmen einen Par36 und Werte 129-255 Dimmen zwar
auch schalten aber dazu noch ein Farbrad ein.


MfG The_Clown

von Benjamin Munske (Gast)


Lesenswert?

Vielen Dank dafür. Wenn ich das richtig herausgehört habe verwendest du
eine Phasenanschnittsteuerung - es gibt ja immernoch die
Phasenabschnittsteuerung. Was ist denn nun besser?

von The Clown (Gast)


Lesenswert?

Ich habe das leichte gefühl das einige garnicht wissen was eine
Phasenanschnitt ist und wie die Arbeitsweise eines Dimmer's ist.

Vieleicht irre ich auch, dann sorry.

Aber trotz alle dem ganz kurz.

Phasenanschnitt:
Das Schalten von Wechselspannung bei Erreichen eines regelbaren
Phasenwinkels. Hiermit lässt sich die Amplitude des resultierenden
Stroms verlustarm regeln.

Das heist in unserem Fall einen Schalter sprich Triac zu einen
bestimmten Zeitpunkt in der Sinusförmigen Halbwelle einzuschalten.

Da die Frequenz von 50 Hz einer Periodendauer von 20 ms entspricht,
hat die Spannung alle 10 ms einen Nulldurchgang. Also wird der
Triac alle 10ms in einer Halbwelle der Sinuskurve gezündet sprich
eingeschalten.
Glücklicherweise müssen wir uns um das Ausschalten des Triac nicht
weiter kümmern, da er sich bei jedem Nulldurchgang selber löscht.
Für das Zünden des Triac benötigt man nur einen kurzen impuls, der aber
nicht zeitlich über den Nuldurchgang der Halbwelle dauern
darf, da sonst der Triac wieder gezündet wird und da kommt der Null-
durchgangsdetektor ins Spiel.

Mit dem Nulldurchgangsdetektor meiner Schaltung wird somit alle 10 ms
ein impuls auf den Interrupt-Eingang des Controllers gegeben.
Diesen Impuls benötiget man um eine Netzsynchrone Steuerung der Last
zu erreichen.

Eigendlich ist die ganze Sache doch recht simpel oder.


MfG The_Clown

von The Clown (Gast)


Lesenswert?

@Benjamin Munske

Es gieb auch noch Wellenpacketsteuerung.
Technisch läst sich aber die Phasenanschnittsteuerung realiesieren.

MfG

von The Clown (Gast)


Lesenswert?

@Benjamin Munske

Sorry,habe wieder mal schneller gedacht als geschrieben.

Phasenanschnittsteuerung lassen sich leichter realiesieren da man
dort Triac's oder Tyristoren einsetzen kann.

Bei Phasenabschnittsteuerung ist das nicht möglich, da Triac's sich
innerhalb einer Phase nicht ausschalten lassen ausser durch einen
erzwungenen Nulldurchlauf, das würde heissen einen Kurzschluss.
Phasenabschnittsteuerung lassen sich meineswissens nur mit
Hochvolt Mosfet's oder so wie in Schaltnetzteilen verwendet
Realiesieren.

MfG

von Sebastian (Gast)


Lesenswert?

> Hiermit lässt sich die Amplitude des resultierenden
> Stroms verlustarm regeln.

Nee, die Amplitude ist immer noch 325V. :-) Der Effektivwert ändert
sich.

von Sebastian (Gast)


Lesenswert?

Schneller getippt als gedacht ... Die Amplitude des Stromes ist
natürlich 325V/Z_Last, nicht 325V. Der Effektivwert dementsprechend 1/T
mal dem Integral über der Wurzel des quadratischen Stromverlaufes (über
eine Periode integriert).

von AxelR. (Gast)


Lesenswert?

@Sebastian
Schlaues Kind, hauptsache es dimmt!
Gruß an alle
AxelR

von Benjamin Munske (Gast)


Lesenswert?

Ok, jetzt weiß ich bescheid, was ich machen muss. Also noch einmal: Ich
benutze ja auch eine Triac-Schaltung, sprich ich muss Phasenanschnitt
nehmen, d.h. nach einer bestimmten Zeit (< 10ms) muss ich den Triac
zünden, also Spannung ans Gate (heißt das dort auch so?) anlegen. Der
Triac löscht sich dann von selbst, wenn der Nulldurchgang kommt. Dann
wiederholt sich das Spiel, richtig?

http://www.morup.dk/pics/forkant.gif << so sähe das dann aus.

Noch einmal zu den Tabellen: Kann mal einer so eine "firing angle
Table" hochladen? Ich benutze im übrigen Par56-Brenner.

von The Clown (Gast)


Lesenswert?

@Benjamin Munske

Hallo

ersmal danke Axel

Deine Grafik hätte es nicht besser treffen können.

Solche Tabellen sind meist auf die Software zugeschnitten, das
hängt von der Zählschleife ab. Vor- oder Rückwärszählung  255
Stuffen oder nur 64 Stufen u.s.w.

Es giebt aber einige Projekte im Netz die so etwas benutzen, halte
ich für einfache Anwendungen die nur simple Parser ansteuern für nicht
nötig.

Noch ein Tip:
Nimm doch zum experimentieren einen 12V Trafo ohnen Gleichrichtung,
eine Halogen Niedervoltlampe und betreibe den Triac mit der 12v
Wechselspannung geht genauso gut und ist nicht so gefährlich.


zu Sebastian

Ich bin der Meinung das wir hier kein Wissenschaftliches Forum draus
machen, wir sind alle nur Bastler und wollen doch nichts weiter als
einen simplen Dimmer bauen.


MfG The_Clown

von Christof Rieger (Gast)


Lesenswert?

@ The_Clown
>Ich bin der Meinung das wir hier kein Wissenschaftliches Forum draus
>machen, wir sind alle nur Bastler und wollen doch nichts weiter als
>einen simplen Dimmer bauen.

Täusch dich da mal nicht. Hier im Forum geistern einige begnadete
Entwickler rum die damit ihre Brötchen verdiene. Ich finde das toll,
dass solche Leute sich mit uns Hobbybastlern abgeben und ihr Know How
weitergeben. Allerdings gibt er auch den ein oder anderen der etwas
hochnäsig rüber kommt.

von The Clown (Gast)


Lesenswert?

Du hast ja irgendwie recht, dann sollten sie aber auch versuchen
es für uns Hobbybastler verständlich darstellen was sie mit ihren
Aussagen meinen oder Hast du den schonmal versucht eine
Wurzelberechnung oder Quadratische Gleichungen in ASM mit deinem
Atmel oder Pic zu Programmieren, wenn ja, dann meine Hochachtung.

Das oben war ja auch nicht negativ von mir gemeint, aber wenn ich
mir so einige Foren anschaue kommt igendwann nur noch Bla-Bla-Bla
herraus oder läuft vom eigendlichen Thema vorbei und das hilft dann
auch keinem.

von Christof Rieger (Gast)


Lesenswert?

Meistens entwickelst du über die Formeln Tabellen, die du dann in den
Kontroller legst. Sonst gebe ich dir recht, ich kenne keine AVR mit
mathematischen Coprozessor ;-)

von Sebastian (Gast)


Lesenswert?

Erstens programmiere ich nicht AVR, sondern MSP430. Zweitens wollte ich
keinesfalls irgendjemanden angreifen. Falls du, Christof, mich für
hochnäsig hälst, ist das leider dein Pech und mir ziemlich egal. Ich
habe lediglich The Clown (Realnames sind übrigens höflicher) in einem
kleinen Detail korrigiert. Wenn man sich schon darüber aufregt, dass
hier scheinbar kaum einer weiss, was eine Phasenanschnittsteuerung
bedeutet, sollte man nicht selber noch Fehler einbauen. War ja auch
keinesfalls böse gemeint. Aber wenn schon eine Klarstellung, dann auch
komplett richtig.

Und jetzt EOT.

von Christof Rieger (Gast)


Lesenswert?

Sorry, das wollte ich nicht gegen über deiner Person ausdücke hatte nur
schon solche erfahrungen gemacht.

von Sebastian (Gast)


Lesenswert?

Na wunderbar. Dann haben wir uns ja jetzt wieder alle lieb. :-) Und ich
werde mich in absehbarer Zeit (wenn ich das Webserver-Projekt durch
habe) dann endlich auch mal der DMX512-Implementation auf dem MSP430
widmen ...

von Benjamin Munske (Gast)


Angehängte Dateien:

Lesenswert?

So, ich habe jetzt meine Dimmer-Teststeuerung aufgebaut (s. Anhang).
Ich habe zuvor noch nie mit Triacs gearbeitet, daher die Frage: Was für
ein Signal muss ich an das Gate schicken, damit der Triac zündet - muss
das ein Impuls bestimmter Länge sein, wenn ja - wie lang?

von Sebastian (Gast)


Lesenswert?

Steht irgendwo in den Datenblättern drin. Beim TIC216 muss es irgendwas
um 1µs sein ... Ich hatte jedenfalls schon mal den Fall, dass der
Zündimpuls zu kurz war (irgendwas im höheren ns-Bereich). Aber bei 20ms
Periodendauer kommt es ja auch gar nicht darauf an, ob der eigentliche
Zündvorgang nun 1µs oder 100µs dauert ...

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Datenblatt

von Direx (Gast)


Lesenswert?

Die Länge des Impulses ist eine Frage, die andere ist die Polarität:
Triacs mögen es am liebsten, wenn der Zündimpuls die selbe Polarität
hat wie die Anodenspannung.
Das geht am besten mit den Opto-Triacs (MOC30xx). Da hat man gleich
galvanische Trennung.

Am zweitliebsten haben sie es, wenn man beide Halbwellen negativ
zündet.
Erst am drittliebsten werden sie positiv getriggert.
Und gar nicht gern haben sie es, wenn man mit invertierter Phase
zündet.

Das wirkt sich übrigens auch auf die ausgesendete Störstrahlung aus.
Wird es falsch rum gezündet, kommt irgendwann mal der Punkt
(stromabhängig), an dem es sich es intern andersrum überlegt, dabei
gibt es mal kurzzeitig HF ab.
Drosseln und RC-Snubber parallel zum Triac oder zum Ausgang
verhindern/vermindern solche und andere Störungen.

Siehe auch http://www.mikrocontroller.net/forum/read-1-128923.html

von Sebastian (Gast)


Lesenswert?

@Direx: Die verschiedenen Quadranten-Zündungen klingen interessant.
Vielleicht hast du ja auch eine Lösung für mein Brett vor dem Kopf?
:-)

http://www.mikrocontroller.net/forum/read-1-128923.html

Ich blicke im Moment irgendwie nicht mehr ganz durch, in welchen
Quadranten ich meinen Triac zünde und wieso das Zünden immer
funktioniert, unabhängig von der Belegung L1/N.

von Benjamin Munske (Gast)


Lesenswert?

Hallo Leute,

nach langem Schweigen bin ich wieder da - es hat sich viel getan:
Das ist nun meine Dimmerschaltung:
http://www.soundtechniker.de/Projekte/bilder/Dimmerlayoutbig.jpg
http://www.soundtechniker.de/Projekte/bilder/Dimmertestboard_01.JPG
Es handelt sich um einen Prototypen.
Das ist bisher möglich: Die Nulldurchgangserkennung erkennt jeden 2.
Nulldurchgang, also immer nach einer Wellenlänge, der Triac kann
dauerhaft ein- und ausgeschaltet werden (über die RS232 Schnittstelle
des PCs).

Mir ist es leider bisher nich gelungen eine Software zum Dimmen zu
programmieren (ich habe bisher FASTAVR benutzt) - bisher habe ich
leider nur ein flackern produziert! lol

Könnt ihr mir dazu einen Tipps bzw. programmierbeispiele geben, wie ich
am besten an die Sache herangehe? Ist Assembler vorteilhafter?

von Michael (Gast)


Lesenswert?

Hallo Benjamin,
als erstes würde ich die Nullpunkterkennung umbauen. Nimm einen
Vorwiderstand, eine Gleichrichterbrücke und direkt an der Brücke den
Optokoppler. Dann hast du einen schönen High-Spike in jedem
Nulldurchgang, wenn du den Emitter des Transistors auf Gnd legst und
den Kollektor über einen Widerstand auf Vcc. Am Kollektor kannst du
dein Signal abgreifen. Mit etwas Rechnerei kannst du sogar
Frequenzschwankungen kompensieren.
Michael

von Dirk (Gast)


Lesenswert?

Hallo Benjamin,

das mit dem flacker habe ich auch gehabt, das liegt am Timing für die
Ansteuerung des Triac (warscheinlich zu langer Impuls ca. 10-20yS
sollten reichen).
Du solltest den Triac aber in beiden Halbwellen Zünden also alle 10mS.

Ein Stück weiter oben habe ich meine Dimmersoftware in Bascom
reingestellt, sollte ohne Probleme auch auf FastAVR umzusetzen sein.

MfG

von Benjamin Munske (Gast)


Lesenswert?

Moin,

ich habe jetzt mal die Bascom-Demo installiert. Leider sehe ich nur ein
>j, wenn ich die Datei, die du oben gepostet hast öffne! Was ist da los?
Wie kann ich die Datei öffnen? Kannst du die Syntax in eine Textdatei
kopieren und die dann hier posten?

von Dirk (Gast)


Lesenswert?

Hast du die "DMX_Dimmer8_V1.bas" herunter geladen?

Du kannst sie mit dem Windows Editor auch öffnen, sogar mit FastAVR.

MFG Dirk

von Benjamin Munske (Gast)


Lesenswert?

Noch mal eine Frage zum Thema Triac: Im Datenblatt steht ja, dass der
Zündimpuls von meinem Triac 20µs betragen soll - ist es schädlich für
einen Triac, wenn man dauerhaft das Gate unter Spannung setzt?

von Dirk (Gast)


Lesenswert?

Im Datenblatt steht tp > 20µs.
Eine ständige ansteuerung des Gate uber einen MOC... o.ä. kannst du
ruhig machen.
In meinem Prog schalte ich die Gate erst kurz vor dem nächsten Null-
durchgang wieder aus.

MfG Dirk

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

hallo zusammen,
ich habe mir das mal angeschaut was ihr da so gemacht habt,
und ich bin gerade an etwas änlichem dran, ich habe mir eine "dimmer"
schaltung gebaut, die phasenan.- und abschnittsteuerung kann (mit
mosfet).
ach ja, die schaltung kostet ca. 5 euro komplett.
die schaltung solte im phasenabschnitt modus problemlos 5 A dauer
verkraften, der mosfet hält bis 56A aus :-)
falls jemand da interesse dran hat, ich könte noch ein bischen hilfe
bei der software gebrauchen...


gruss

michael

von Benjamin Munske (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe jetzt mal eine Software in Basic geschrieben, die den triac
eigentlich nach einer 1/4 - Periode (nach 0,005s) und nach einer 3/4
Periode zünden soll, allerdings funktioniert das nicht!

http://www.soundtechniker.de/Projekte/bilder/Dimmerlayoutbig.jpg

Unter dieser Adresse findet ihr den Schaltplan. Im Anhang befindet sich
eine Aufnahme des Oszilloscope-Bildes von der Nulldurchgangserkennung
(eine Periode ist logischerweise 50Hz lang) > Die Spannung wurde
zwischen Pin 4 und Masse gemessen. Wie ist dieses Bild der
Nulldurchgangserkennung auf die 50Hz Sinusfrequenz zu legen? Ist der
Nulldurchgang bei der fallenden Flanke, bei der steigenden oder ganz wo
anders? Ich verstehe das noch nicht so ganz. Meine nächste Frage wäre,
ob man an ein 2Kanal Oszilloscope mit gemeinsamer Masse die 50Hz
Wechselspannung  (230V) und an den anderen Kanal 5V Gleichspannung
anlegen kann?! Meiner Meinung nach geht das nicht, (wegen der
gemeinsamen Masse).

Bitte helft mir weiter, da ich mich im Moment auf der Stelle drehe!
1
$Device= Mega8
2
$Stack = 28
3
$Clock = 8.000000
4
$Timer1=Timer, Prescale=64, CompareA=DisConnect, Clear
5
$Source= On
6
7
Dim status As Word
8
9
Declare Interrupt Oc1A()
10
Declare Interrupt Int0()  
11
12
DDRB = &HFF
13
DDRC = &HFF
14
DDRD = &H00    
15
16
MCUCR.0 = 0  
17
MCUCR.1 = 1  
18
MCUCR.2 = 0  
19
MCUCR.3 = 1  
20
Enable Interrupts
21
Enable Int0
22
23
PORTC = 0
24
Do
25
Loop
26
27
Interrupt Int0()
28
  PORTC = 0
29
  status = 1
30
  Start Timer1
31
  Enable Oc1A
32
  Compare1=&h271
33
End Interrupt 
34
35
Interrupt Oc1A(), Save 1
36
Select Case status 
37
   Case 1 'nach 1s
38
    Set PORTC.3
39
    Stop Timer1
40
    Start Timer1
41
    Compare1=&h5
42
    status = 2 
43
   Case 2 'nach 200ms
44
    Reset PORTC.3
45
    Stop Timer1
46
    Start Timer1
47
    Compare1=&h4DD
48
    status = 3  
49
   Case 3 'nach 1,5s
50
    Set PORTC.3
51
    Stop Timer1
52
    Start Timer1
53
    Compare1=&h5
54
    status = 4 
55
   Case 4 'nach 200ms
56
       Reset PORTC.3
57
      Stop Timer1
58
      Disable Oc1A
59
End Select 
60
End Interrupt

von Michael (Gast)


Lesenswert?

hallo Benjamin,

zu deiner frage, das problem liegt schon ein bischen in der schaltung,
du kanst nur den phasen nulldurchgang in der einen der beiden phasen
feststellen, und nicht in beiden, also wenn du nach dem nulldurchgang,
sofort oder nach ein par ms schaltest, kanste maximal halbe leistung
bekommen. das oziloskop kanste an die 5v und die 230 v hängen aber nur
wenn ALLE daran noch angeschlossenen geräte auch wirklich eine
funktionierende galvanische trennug haben, ansonsten knalt das !!!
du hast keine trennung, wenn du diese beiden gleichzeitig mißt!!!!!

die schaltung müste erstmal so angepaßt werden, das du den
nulldurchgang von beiden phasen erwischen kanst.
z.b. in dem du da nen brückengleichrichter vor den ok3 anstelle der d1
machst.

von Benjamin Munske (Gast)


Lesenswert?

Diese Nulldurchgangserkennung ist schon in Ordnung - ich brauche doch
nur einen Nulldurchgang, da ich den anderen einfach 10ms später
ansetze. Das mache ich mit einem Timer (kannst du in meinem
Programmcode nachvollziehen). Ich verweise außerdem auf diese
Schaltung, die funktioniert:

http://www.theaterzentrum.at/technix/development/dimmer/index_html (ab
und zu scheint die Seite offline zu sein)

Meine Frage ist vielmehr, wie ich die Nulldurchgangserkennung zeitlich
zu den 50Hz 230V Wechselspannung sehen muss, d.h. wie müsste man die
Sinuskurve in mein gepostetes Bild (s.o.) einzeichnen, oder anders:
Wann muss ich den Interupt starten?

von Michael (Gast)


Lesenswert?

hallo benjamin,

also generell, wenn die 100 % leistung haben möchtest, dann must du in
dem moment den triac durchbrechen lassen, in dem die phase das erste
mal von dir entdeckt wird, ob du da jetzt ein par uS zu spät bist, ist
volkommen egal.
bei 50% leistung, muste halt ca. 5 ms nach dem du den phasendurchgang
entdeckt hast den triac durchbrechen lassen, und bei 25 % leistung dann
nach ca. 2,5 ms, und gut, dass dann noch mal wiederholt nach 10 ms, was
ich nicht weiss, wie lange der triac einen impuls benötigt, um wirklich
mit einer absolut steilen flange durch zu brechen, hatte da schon mal
ein problem, das er dann nicht immer richtig durchgeschaltet hat, weil
mein impuls zu kurz und mit zu wenig energie war.

hilft die das ?

also wie schon oben geschrieben, ich mache lieber das ganze mit einem
mosfet transistor, der kann merh leistung, ist schneller, und ich kann
frei den an und abschnitt bestimmen.

von Dirk (Gast)


Lesenswert?

Das mit den 10ms Timer schaft du nicht da die Netzfrequenz nicht immer
100% stimmt.
Wie Michael schon sagt werte bitte beide Nulldurgänge aus.

So zu deinem Programm:

Mache es dir doch nicht so schwer, das geht doch ganz einfach.
1. Du brauchst eine Int0 achte auf (fallende oder Steigende Flanke)
   und eine Timer Routine. soweit OK
2. Nehme dir drei Variablen zb. Dimmer_Wert,Null_Sel
   Setze in der Int0 einfach einen Zähler auf Null_Sel=255 (für 255

   Helligkeitsstufen)

Interrupt Int0()
   Null_Sel=255
End Interrupt

3. Zähle in im Timer0 die Variable Null_Sel auf 0 DEC(Null_Sel)
   Dimmerwert zwischen 0 und 255

Interrupt Oc1A(), Save 1
    IF Null_Sel=0 Then Goto Loop_Exit
    DEC(Null_Sel)
    If Netz_Sel <= Dimmer_Wert Then  Set PORTC.X ELSE Reset PORTC.X
       ENSIF
    :Loop_Exit
End Interrupt

Das ist es eigendlich schon.

Deine Timerzeiten sind nicht OK und Stoppen darft du ihn erst rech
nicht.
Du möchtest 255 Heligkeitsstufen --> Ja

        Dann Rechne mal 10ms/256 ist ca 40ys also muss deine
        Timerroutine alle 40ys angesprungen werden.

        Jetzt dein Quarz und dein Timer

        1 / (8Mhz/64(Prescale)/255(Tcnt0) = ca 2ms

          also 5 Helligkeitswerte (10ms/2ms) deine Timerroutine
          muss schneller werden.

Du musst alle Aufgaben ohnen unterbrechung in den 10ms erledigen.


MfG Dirk

ich hoffe das es dir weiterhilft.
Schreib mir mal ob du es geschaft hast.

von Dirk (Gast)


Lesenswert?

Sorry
Mein deutsch lässt da etwas zu wünschen übrig.
Zu meiner Entschuldigung, ich hatte den Beitrag noch schnell auf dem
Weg ins Bett geschrieben.

kleine Korrektur:

If Null_Sel <= Dimmer_Wert Then  Set PORTC.X ELSE Reset PORTC.X
   --------

Noch ganz kurz zu deiner Zeitmessung für die zweite Halbwelle, wenn
du den Triac nicht rechtzeitig ausschaltest dann bleib er auch bei der
zweiten (nicht erfasten) Halbwelle ebenfals an und es wird mit dem
Dimmen nichts.

Nur noch mal zum Verständnis.

Du hast dir mein Basiclisting (DMX_Dimmer8_V1.bas) oben angesehen,
da du die Timerwerte übernommen hast (schätze ich mal) ich arbeite dort
aber mit einem 16Mhz Takt.

Prescale=64
Tcnt0=247 (256-247=18)

64(Prescale)*18(Tcnt0)=13888,8.. Teiler für den Timerinterupt
Also jeder 13888,888... Quarztakt löst den Interupt aus.
8000000/13888 = rund 576 Hz
16000000/13888 = rund 1152 Hz
Das kannst du auch leicht prüfen, gebe bei jedem Timerinterupt
einen Impuls über ein Port aus und messe es mit einem Frequenz-
messer oder Osilloskop.

Noch etwas zu dein Bild, das Signal auf dem Osilloskop ist ja nichts
weiter als das Sinussinal in Rechteck geformt.
Zur Veranschaulichung nehme dir einen Trafo oder Steckernetzteil
ohne Gleichrichtung und lege den Ausgangsspannung (Niederspannung)
auf den zweiten Eingang des Osilloskop.


Ich hoffe das das alles so stimmt, jedenfalls meine Dimmerbar
läuft zuverlässig.

MfG Dirk

von Benjamin Munske (Gast)


Lesenswert?

Hallo,

@Dirk: Schon einmal vielen Dank für deine Hilfe, allerdings musst du
mir da noch etwas erklären:

1. Noch einmal zu meinem Quellcode: Ich dachte mir, dass der Interupt
bei der fallenden Flanke ausgelöst werden muss (ist das richtig, oder
muss der bei der steigenden Flanke ausgelöst werden), danach wird ein
Timer, der nach 5ms einen Interrupt auslöst gestartet und gleichzeitig
der Triac durch einen zweiten Timerablauf, der 40µs dauert, gezündet.
Nun wird wieder ein Timer mit 9,5µs gestartet, bis wieder der Triac für
40µs gestartet wird. Ich dachte mir dazu folgendes: (1/(8Mhz/64)) =
Dauer bis der Timer einmal zählt. Was ist dann an meinen Timings
falsch?

2. Wenn ich deinen Quellcode jetzt mal in mein Programm einbaue, sollte
das dann nach kleinen Anpassungen schon funktionieren, oder war das nur
ein Denkanstoß?

von Dirk (Gast)


Lesenswert?

Felche Flanke du zum auslösen benutzt ist bei deiner Schaltung egal
da die Fallende oder Steigende Flanke immer auf einem Nuldurchgang
liegen. (siehe meine Anmerkung zum Test mit einem Trafo)
Den C8 der über R4 aufgeladen wird, würde ich kleiner wählen damit die
steigende Flanke steiler wird.

Du bekommst das mit deiner Zeitmessung (einsch.zählen aussch. zählen
usw.)nicht synchron, deine Lampen werden nur sinlos flackern.
Wenn du mit deiner Schaltung den Nullduchgang ermitteln willst (beide
durchgängen) musst du die steigende und fallende Flanke in einer
Do / Loop Schleife ständig abfragen und einen Zähler bei Pege-
änderung setzen den du dann in deinen Timerinterupt weiterverarbeiten
kannst so wie oben bereits erwähnt, das geht dann auch.

Hat aber einen Nachteil, bei Ausfall des DMX-Signals oder zusätzlichen

Funktionen deines Dimmer kannst du dann keine Erweiterungen mehr
Programieren. Die Do / Loop Schleife darf dann nicht ausgebremmst
werden, sonst lauft das mit dem dimmen schief.

MfG

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Vieleicht fällt dir das leicher anhand eines Analogdimmer die
Funktionsweise zu verstehen.

Kurze Erläuterung der Schaltung.

U2b erzeugt ein Pasensyncrones Signal des Nulldurgangs der Sinuskurve.
U2a erzeugt daraus ein Sägezahn so wie meine Var.

"Null_Sel"

im zusammenhang mit der Timer.

"DEC(Null_Sel)"

Nun wird mit U3 die Spannung am 0-10V Eingang mit der Sägezahnspannung
verglichen

"If Netz_Sel <= Dimmer_Wert Then..."

wenn die Spannungsschwelle unterschritten wird schaltet der OPV
den Triac durch. Die Zeit wie lange du in eingeschalten lässt ist
eigentlich egal min. 20ys die Zeit braucht der Triac üblicherweise
um überhaupt zu schalten.
Beim nächsten Nuldurchgang besser gesagt kurz vorher, den der
eigentliche Nulldurhhgang der Phase liegt genau in der mitte des
Rechtecksignal am Nulldurgangdedektor (Lo-Pegel) und schaltet die
OPV's U3 wieder ab. Immer im vergleich 0-10V Eingang mit der
Sägezahnspannung wenn die Eingangsspannung 10V ist bleibt der Triac
auch beim Nulldurchgang weiter eingeschalten.
Die Triac's werden dann im eigentlichen Nulldurchgang abgeschaltet
(selbstlöschend).

Jetzt fängt das ganze Spiel wieder von vorne an.

Vieleicht verstehst du jetzt das es mit deinen Zählschleifen leicht
zu einem Problem werden kann und die ganze sache komplieziert wird.

MfG Dirk

von Benjamin Munske (Gast)


Lesenswert?

@Dirk: Vielen Dank für das alles.

Mittlerweile habe ich einen Bug in meinem Programm gefunden: Der
Optokoppler, der den triac schaltet, schaltet bei 0V durch! Daher
funktionierte meine Software doch, nachdem ich set und reset vom
PortC.3 vertauscht hatte! Ich kann jetzt schon mit dem seriellen Port
des PCs dimmen.

von Argon (Gast)


Lesenswert?

Hallo!
Passt jetzt leider gar nicht ins Thema aber kann mir jemand die
m8def.inc als anhang uploaden?

Mfg Argon

von AxelR. (Gast)


Angehängte Dateien:

Lesenswert?

passt wirklich nicht...
hier hassu
Axel

von AxelR. (Gast)


Lesenswert?

http://www.mikrocontroller.net/forum/read-1-134764.html#134789

Hää? Hatta doch schon!
Sowas aber auch...
weiterdimmen
Axel

von Dirk (Gast)


Lesenswert?

Benjamin Munske:

Entschuldige das ich nochmal deinen Quelltext angreife aber mit deiner
Timerschleife kann es eigendlich nicht funzen???!!!
Wenn es doch irgendwie geht dan schaue dir mal das Signal auf dem
Osilloskop an. Jetzt versuche es mal mit einem 2 Kanäle oder
wollmöglich mit 8,16  oder 32 Kanäle....

Bei mir war es im Test mit 84 Kanäle schuss dann reichte die
Zeit nicht mehr um alle "IF THEN" schleifen zu bedienen, musste man
warscheinlich die passage in ASM schreiben.
Ich habe da auch ein Woche mit der Software gebastelt und dann kam
das Timing mit dem DMX geraffel dazu.

MfG Dirk

von Benjamin Munske (Gast)


Lesenswert?

Hallo,

klar funktioniert das mit den Timings! Das habe ich ausgerechnet - und
in der praxis getestet - das Signal habe ich auch gemessen - passt
wunderbar.

Bei mehreren Kanälen hast du natürlich Recht!
Ich werde das dann so machen, dass ich den Bereich (10ms) in 255
Schritte zerlege, die einzeln vom Timer abgezählt werden. Nach jedem
Abzählen wird dann geschaut, ob einer der 4 Kanäle jetzt geschaltet
werden müsste, wenn ja, dann wird dies getan! So die Theorie -
umsetzung folgt...

84 Kanäle ist natürlich beeindruckend! Würde ich auch gerne machen,
aber irgendwie hast du einen anderen (wahrscheinlich
fortgeschritteneren Programmierstil) oder es fehlt noch etwas in deinem
Quellcode, da ich ihn nicht verstehe. Wo z.B. kommt Dimmer_wert her?
Soll der zwischen 0 und 255 liegen und per DMX übertragen werden, oder
wie? Beschreibe doch bitte mal den Ablauf deines Programms, denn daran
bin ich schon sehr interessiert!

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Korrektur 48 Kanäle habe ich geschaft, besser gesagt der Atmel.

Fortschrittlich bestimmt nicht aber neben Assembler programieren
fand ich Basic ganz lustig und bequem. Für die ganz verrückten
kommt da nur C in frage, kann und will ich auch nicht lernen da
die dasaus erzeugten Assembler bzw Hexfile auch nicht sooo viel
besser sind.

Wie auch immer es muss ja auch faule Programmierer geben.

Den Quelltext habe ich grob erläuter muss einfach reichen.

MfG Dirk

von Benjamin Munske (Gast)


Lesenswert?

Hallo Leute,

ich habe ein neues Oszilloskop bekommen und habe nun merkwürdige
Probleme bei der Messung der phasenangeschnittenen Wechselspannung.

Ich habe bei der Triggerung folgende Einstellmöglichkeiten:

1. AC
2. DC
3. HF
4. LF
5. ~

Ich habe beim alten Oszilloskop AC benutzt und bekam dort auch
wunderbar meine angeschnittene Sinuskurve angezeigt. An der Software
habe ich nichts verändert und trotzdem zeigt das neues Oszilloskop ein
komisches Wirr-Warr an! Woran könnte das liegen? Zur Info: Ich benutze
eine Messpitze mit eine Verhältnis von 10:1 (Abschwächung), habe die
Timebase auf 2ms/cm stehen und den Spannungsbereich auf 10V pro
Zentimeter. Der Eingang ist auf AC geschaltet.

Es handelt sich um ein Hameg HM203-6.

von AxelR. (Gast)


Lesenswert?

stell's mal auf 20ms/cm.
Wo misst Du? Etwa auf der Netzseite? oder verwendest Du, so wie Dirk es
empfahl, einen Trafo und nimmst erstmal 12 Volt statt 230?

von Benjamin Munske (Gast)


Lesenswert?

das habe ich schon alles ausprobiert - an der Timebase habe ich schon
alles versucht - natürlich messe ich die 230V, deshalb habe ich es ja
auch auf 10:1 an der Messspitze eingestellt. Ich messe die Spannung,
die an der Lampe (300W) anliegt.

von Sebastian (Gast)


Lesenswert?

Wo hast du denn die GND-Klemme dran?

von Benjamin Munske (Gast)


Lesenswert?

Die habe ich nicht angeschlossen, weil mir schon zweimal die Sicherung
herausgeflogen ist, weil ich falsch herum die Messspitze und die Klemme
an die Schaltung gehalten habe. Muss ich die echt anschließen bei
Wechselspannung?

von Benjamin Munske (Gast)


Lesenswert?

Mit dem alten Gerät gings nämlich auch ohne!

von Dirk (Gast)


Lesenswert?

Hallo  Benjamin Munske

Bist du immer noch nicht weiter?

Ich schätze mal du hängst immernoch am Programm fest.
>>> die sache mit deinen Zählschleifen <<<

Ich habe mir mal den Link deines 1.Posting angeschaut, jetzt weiss
ich auch woher du die Sache mit dem Optokopler am Netzeingang
herhast.

Wenn du schon die Schaltung übernimmst solltest du dir auch den
Quelltext mal zerlegen und wenigstens teilweise verstehen, dann
hättest du auch bemerkt das der "Typ" die fallende und steigende
Flanke des gewonnen Rechtecksignals (aus dem Netz-Sinus) für sein
Projekt erfasst und weiterverarbeitet.


   zero_check1:  sbis  pinD,zero_crossing_pin
    rjmp  zero_check1

   zero_check2:  sbic  pinD,zero_crossing_pin
    rjmp  zero_check2

MfG Dirk

Was ich eigendlich schade finde das viele zwar mein Projekt
sich heruntergezogen haben, vieleicht auch einige Nachgebaut
haben, aber keine resonanz zu hören ist zwecks Verbesserung
oder so.

von Michael (Gast)


Lesenswert?

hallo benjamin,
damit ein messgerät etwas messen kann, muss es zwichen 2 anschlüssen,
die differenz messen, das das bei deinem altem ging, dann würde ich mal
sagen, dein altes ozi war defekt, was auch darauf schliessen lassen
würde, das du sagst, das die sicherung bei diesem geflogen ist.

ein ozi solte generell bis 2 bzw. 4 kv galvanisch getrennt sein, also
wenn du nur den tastkopf anschliesst, dann mus das ding alles messen,
auser ein wirkliches signal.

von Michael (Gast)


Lesenswert?

hallo dirk,

so ist das doch meistens, solange sich keine melden, haste alles so gut
dokumentiert, das keiner mit dem nachbauen probleme hatte, und alles
einwandfrei ging, man muss sich sorgen machen, wenn eine mail nach der
anderen eingeht, für eine schaltung.

von AxelR. (Gast)


Lesenswert?

Ich sach jenfalls nichs mehr...
Fliegt der typ durchn Raum, oder sein bester Kumpel, der sich nach dem
zweiten Bier aufs Oszi lümmelt, bin ich nacha der dumme.

Ich habe eine IKEA Schreibtischlampe mit 12Volt und 20Watt. Die hat
glaube ich jeder. Nimm die und stell dir vor, da kämen 230Volt raus.
Begreif' doch erstmal, was da abgeht und dann kannst Du , wenn alles
läuft, mit spitzen Fingern und einer Hand auf dem Rücken oder in der
Hosentasche und laut pfeifend an der Netzspannung rummachen.
So kannst Du nicht aus Versehen mit der zweiten Hand irgentwo anfassen
und man hört, wenn Du aufhörts zu pfeifen...

Is ja nun langsam kein Spass mehr. Die stehen die 230! Die brechen auch
nicht zusammen wie irgenteine Hochspannung im Monitor oderso.

Nacht
Axel Rühl

von Michael (Gast)


Lesenswert?

hallo Benjamin,

wenn man an 230 V bastelt, ohne trenn- und regel-trafo und anderen
sicherheitsmassnahmen, solte mann genau wissen, was man macht, und was
die eigene schaltung eigendlich macht, andernfalls kann ich nur raten,
endweder du wendest dich an jdemanden, der sich damit auskennt und dir
persönlich hilft, und nicht hier im forum,
oder du schnapst dir erstmal ein par bücher, und gehst mal die
einfachsten elektronischen grundlagen durch.

ich würde dir raten folgende grundlagen anzuschauen:
- wie gehe ich mit einem messgerät um, wie messe ich etwas, dabei ist
es egal, ob es um ein ozi geht oder ein multimeter
- was ist wechchselspannung
- wie funktioniert eine phasen an- oder abschnitsteuerung
- was ist eine galvanische trennung, und warum ist diese so wichtig

von Benjamin Munske (Gast)


Lesenswert?

Morgen Leute,

ich weiß auch, dass man eigentlich eine Spannung zwischen zwei Punkten
misst, aber merkwürdiger Weise gings auch nur mit er Messspitze des
alten Oszilloskops und mir zweien nicht! Keine Ahnung warum - daher
habe ich mich aber gewundert, warum es jetzt nicht mehr geht, aber
egal.

Danke für eure Gefahrenhinweise, aber so lange ich nur an der dicken
Isolierung anfasse, kann mir gar nichts passieren und glaubt mir: Ich
habe großen Respekt vor 230V! So ist das ja nicht. Ich weiß wo ich an
meiner Schaltung aufpassen muss, die Schaltung ist fest fixiert, also
an die Leiterbahnen kommt man gar nicht ran. Ich messe nur an den
Klemmen, die zur Lampe führen.

Wenn eigenartige Dinge auftreten fängt man halt manchmal an, an
eigentlich selbstverständlichen Dingen zu zweifeln, da man nicht mehr
weiß, wie man weitermachen soll.

@Dirk: Meine 1-Kanal-Dimmung funktioniert wie gesagt wunderbar. Eine
Software für die 4-Kanaldimmung habe ich geschrieben (teilweise nach
deinen Ratschlägen programmiert), konnte ich allerdings noch nicht
debuggen, da das Oszi ja nur Mist anzeigt.

von Kotter-edling (Gast)


Lesenswert?

Kann mir jemand helfen,
ich versuche, ein programm für einen 89C2051 zu schreiben als 4 - Kanal
DMX auf Analog Demultiplexer. Die Schaltung steht und Hardwaremäßig ist
alles in Ordnung.
Nur das Programmieren bereitet erhebliche Schwierigkeiten.

Freue mich auf Antwort.

M.f.G.
F. Kotter

von AxelR. (Gast)


Lesenswert?

Dirk!

Habe vergessen, Dir und deiner Famile frohes Fest zu wünschen, bin
untröstlich...

Axel

Du F.
hier kann keiner mit 89c2051, musst Du wohl einen neuen Thread
aufmachen und die Frage sepearat stellen.

von Benjamin Munske (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin nun wieder ein Stückchen weiter gekommen, allerdings scheinen
sich die verschiedenen Interrupts zu stören, d.h. wenn mein Timer erst
einmal im Gang ist, dann kann ich keine seriellen Daten mehr empfangen!
Gibts dafür auch eine Lösung? Mein aktueller Programmcode ist im Anhang.

von AxelR. (Gast)


Lesenswert?

ganz so einfach ist das mit FastAVR nun auch wieder nicht!
Wenn Du waghalsigerweose einen String als Input verwendest, musst Du
auch 13Zeichen aus der Seriellen Schnittstelle eiinlesen. 12 Zeichen
Nutzdaten und das 13te mit NULL also &h00, nicht ascci "0".
Du machst zu viel in deinen Interrupts: nur kurze Sachen, Signaturbits
setzen und dann in der Hauotschleife abfragen. Die Sache mit Mid und
die stringoperationen überhaupt schlauchen derart viel Rechenzeit...
Ich bin jetzt nicht 100%tig sicher, aber die DMX-Werten werden doch
nicht als ASCCI übertragen, sondern rein binär,oder? Dann nimm doch
auch ein Byte Array, welches die einzelnen Zeichen aufnimmt.
Ich würde nicht über den Umweg String->val->mid gehen.

Du machst dir einen lesezähler und einen schreibzähler. Bytes, die auf
der seriellen einfliegen, erhöhen den schreibzähler undlegen ein Byte
im Puffer(Bytearray) ab.
In der Hauptschleife prüfts du nun einfach, ob dein Schreibzähler
anders steht als dein Lesezähler. Ist er größer, hast Du neue Zeichen
im Puffer. Jetzt kannst Du die Zeichen in der Hauptschleife
auslesen(und dabei den Lesezähler erhöhen), bis Les-und Schreibzähler
wieder gleich groß sind. Sieh dir doch einfach mal in den FastAVR
BEispielen die FIFO.Bas an...

Was passiert in den Programmzeilen?

MCUCR.0 = 0
MCUCR.1 = 1
MCUCR.2 = 0
MCUCR.3 = 1

Gruß
AxelR.

von Dirk (Gast)


Lesenswert?

Hallo Benjamin Munske

Dein erstes Problem:

Die Interuptroutienen haben verschiedene prioritäten in ihrer
Wertigkeit siehe Datenblatt. z.b. wenn ein Timerinterupt ausgeführt
bzw. in Arbeit ist kann kein Uartinterupt ausgeführt werden.

Dein zweites Problem:

$Timer1=Timer, Prescale=1, CompareA=DisConnect, Clear
               ----------

Dein Timer wird alle 256 Prozessortakte angesprungen, deine Timer-
routine benötigt aber deutlich mehr Zyklen.

Dein drittes Problem:

  Start Timer1
  Stop Timer1

Ich dachte ich habe dir es verständlich gemacht das dein Timer für eine
sichere Dimmerfunktion Netzsyncron laufen muss.
Du wirst immer wieder mit deinem Timig aus dem trott kommen, dabei ist
die Lösung doch so einfach.


Dein viertes Problem:
.......


Deine Programmierung ist einfach ...


PS:
Mein Tip, spare dir deine Bemühungen und lasse es sein, oder
gehe mal mit einer anderen vorgehensweise an die Sache ran.



MfG Dirk

von Benjamin Munske (Gast)


Lesenswert?

@AxelR: Das mit den 13 Zeichen werde ich ausprobieren, aber ich dachte,
dass String * 12 heißt, dass der String halt 12 Zeichen lang ist -
macht ja auch Sinn. Im Moment habe ich noch gar nichts mit DMX im Sinn,
das kommt erst später - momentan übertrage ich die Daten seriell über
den PC. Mit diesen Zeilen:

MCUCR.0 = 0
MCUCR.1 = 1
MCUCR.2 = 0
MCUCR.3 = 1

Setze ich die Interrupt eigenschaften fest, d.h. soll der Interrupt bei
einer steigenden oder fallenden Flanke bzw. bei Null ausgelöst werden.

@Dirk: Diese Zeile besagt ja schon "$Timer1=Timer, Prescale=1,
CompareA=DisConnect, Clear", dass mein Timer den gleichen Takt wie der
Prozessor hat, d.h. in 10ms 80000 Takte. Wenn du die nun durch 255
teilst, kommst du genau auf meinen Wert. Das mit den
Interruptprioritäten ist mir auch klar, deswegen habe ich ja meine
Frage hier gestellt! Wie kann ich das umgehen bzw. abändern oder geht
das gar nicht? Mein Timer läuft netzsynchron, da der Timer mit einem
Nulldurchgang gestartet wird.
Ich verstehe ehrlich gesagt deinen Kommentar nicht so ganz - wenn dich
dieses Thema nervt, dann schau es dir einfach nicht an. Was ich
probiere und teste ist meine Sache und ich werde wegen solcher
sinnlosen Kommentare garantiert nicht aufhören meinen Dimmer zu bauen.
Wie gesagt: Mein 1-Kanal Dimmer läuft erste Sahne - Mein 4-Kanal-Dimmer
läuft nur wegen der Interruptprobleme nicht - wenn ich zum ersten Mal
einen Wert übertrage, dann wird richtig gedimmt.

von Dirk (Gast)


Lesenswert?

Das habe ich dir doch gerade gesagt, wenn dein prozess gerade im der
timerrouine festhängt auch wenn du ihn Stopst vor einem "RETI" und du
Daten überträgst kann der Uartinterupt nicht ausgelöst werden und die
Daten gehen verlohren.

Frage doch einfach die UCSRA,FE und OR Register ab, dann wirst du es
feststellen.

MfG Dirk

von AxelR. (Gast)


Lesenswert?

@ben,
ich habe mal den Code geladen und versucht, zu
compilieren/assemblieren.
Dein Code schon mal ausbprobiert? Die Variable COMPARE1 gibt es beim
Mega8 garnicht, weil das Register "OCR1H" und "OCR1L" überhaupt
nicht definiert ist!

;-Line--0050----Compare1=313--
  ldi    zl,Low(313)
  ldi    zh,high(313)
  out    OCR1H,zh
  out    OCR1L,zl

Statt dessen muss es heissen:

;-Line--0050----Compare1A=313--
  ldi    zl,Low(313)
  ldi    zh,high(313)
  out    OCR1AH,zh
  out    OCR1AL,zl

Man sollte schon die Fehlerausgaben, die FastAVR ausgibt, auch als
solche interpretieren und nicht alles wild in den AVR hineinflashen!

 1.  E:\Projekte\Atmel\..\mega-8-mhz-test.asm(219) : error :
Undefined variable referenced
 2.  E:\Projekte\Atmel\..\mega-8-mhz-test.asm(220) : error :
Undefined variable referenced
 3.  E:\Projekte\Atmel\..\mega-8-mhz-test.asm(382) : error :
Undefined variable referenced
 4.  E:\Projekte\Atmel\..\mega-8-mhz-test.asm(383) : error :
Undefined variable referenced
 5.  E:\Projekte\Atmel\..\mega-8-mhz-test.asm(383) : error :
Undefined variable referenced

Ich fang' auch noch an zu suchen! Hast Du schon Hausaufgaben
fertig?!?

Leicht gereizt
AxelR.

Thread abbestellt

von Benjamin Munske (Gast)


Lesenswert?

Das habe ich auch gar nicht - ich vergaß: Du musst die Zeilen :

  out    OCR1H,zh
  out    OCR1L,zl

gegen

  out    OCR1AH,zh
  out    OCR1AL,zl

ersetzen - das habe ich immer gemacht und dann gings auch.

von Dirk (Gast)


Lesenswert?

Hallo Axel

Der misst von Fan... ist immer nich nicht da. Keine Ahnung warum
nicht.

Was machst du dich denn überhaut mit dem mist hir verrückt wird doch
sowieso nichts.

Mein Teil kennst du ja.

MfG Dirk

von Dirk (Gast)


Lesenswert?

ich habe den hundersten "100" Beitrag !!! <<<erster>>>

von Benjamin Munske (Gast)


Angehängte Dateien:

Lesenswert?

So Leute, mein 4-Kanal Dimmer funktioniert nun nach einer
Softwareüberarbeitung -> Der Fehler lag im Umgang mit den Variablen -
Arrays dauern in der Verarbeitung zu lange. Außerdem habe ich den
Interrupt nun so eingestellt, dass er nach einer logischen
Pegeländerung aktiviert wird (das ist bei den Megas neu soweit ich das
weiß).

Nun muss ich nur noch das DMX-Signal einbauen und dann ist das
Dimmerpack einsatzbereit.

von Georg (Gast)


Lesenswert?

ich hab da mal noch eine Hardwarefrage:
Hat jemand eine gute schaltung zur Störunterdrückung?
Meine Dimmer laufen meißt mit 1000W (auch mal mit 3000W :-))
da brummt nicht nur die Sterioanlage sondern auch die Scheinwerfer.
Ich hab schon eine Drossel und ein RC-Glied drinn, aber offenbar etwas
falsch dimensioniert.

von AxelR. (Gast)


Lesenswert?

@Ben
Compare1"A" muss es heissen. Es ist m.E. nicht notwendig, den
Comparematch erneut zu laden.
@Georg
haben bei ebay kürzlich Dimmerdrosseln für DMX Packs angeboten.
Wie viele brauchst Du?
http://www.mikrocontroller.net/forum/read-3-183971.html#183971
AR.

von Benjamin Munske (Gast)


Lesenswert?

Ich habe meine bei Reichelt bestellt - da gibt die auch. Mein Dimmerpack
ist überigens jetzt komplett fertig - es läuft wunderbar - als
Ansteuerungssoftware benutze ich DMX-Control. Das ist echt Sahnemäßig
gut, vor allen Dingen, wenn man für Winamp den Analyser und das
Input-Plugin installiert, denn dann kann man den Sound, den die Band
auf der Bühne erzeugt direkt als Lichtorgel auf die Lichtanlage
weiterleiten - kommt gut! :-)

von Georg (Gast)


Lesenswert?

Das Probem an den Spulen ist, das sie dem Strom von ca. 14A
bei 3000W nicht abhalten. Aber ich hab gesehen es gibt eine
Ausführung für 10A, die werd ich mal testen.

von Tonnie Wittenaar (Gast)


Lesenswert?

Hallo Leute,

Habe bereits einen dimmer gebaud mit einen LCD und Keyboard womit u.a. 
die DMX adresse zu setzen ist.

Alles auf nen Mega8. Durch das programm nun zu gross wert wolte ich die 
mega8 touchen mit einem mega168, aber dat geht nicht.
1
Rec_isr:
2
Dmxcheck = 1
3
   $asm
4
5
   'Routine voor het beoordelen van ontvangen Data
6
      'Variabelen definieren
7
      .def Uart_status = R16
8
      .def Uart_byte = R17
9
      .def Uart_temp1 = R18
10
11
12
            IN Uart_status,ucsra                                                'Laad register Uart_status (R16) met waarde van UART Status Register
13
            IN Uart_byte,UDR                                                    'Laad register Uart_Byte (R17) met waarde van UART I/O Data Register
14
15
            SBRC Uart_status,FE                                                 'Sla 1 regel over indien Uart_status (R16) = 0xFE (254 dec) (Break)
16
17
                                                                                'Indien break gedetecteerd is spring naar Loop1 anders spring naar Reset
18
            RJMP  Asm_reset                                                     'Spring naar Asm_reset bij overlengte van de databyte = DMX Reset
19
            RJMP  Asm_Loop1                                                     'Spring naar Asm_loop1 als Data = OK--->
20
21
      Asm_reset:
22
            LDI Uart_temp1,$00                                                  'Laad register Uart_temp1 (R18) met waarde $00 (Adresteller terugzetten)
23
24
                                                                                'Data aan Basicvariabelen overzetten
25
            STS {Dmx_count_temp} , Uart_temp1                                   'Sla register Uart_temp1 (R18) op in S-Ram variabele Dmx_count_temp
26
            STS {Dmx_byte} , Uart_byte                                          'Sla register Uart_byte (R17) op in S-Ram variabele Dmx_byte
27
28
            RJMP Asm_exit                                                       'Relatieve sprong naar Asm_exit (einde verhaal)
29
30
      Asm_loop1:
31
            STS {Dmx_byte} , Uart_byte                                          'Sla Register Uart_byte (R17) op in S-Ram variabele Dmx_byte
32
33
      Asm_exit:
34
35
36
   $end Asm

fehlermeldung: beim compilieren:

Beim regel:
IN Uart_status,ucsra  >>>>> fehler .EQU not found

Beim regel:
SBRC Uart_status,FE   >>>>> fehler Illegal character [expected 
(,got"[FE]]

Wer weiss was ich falsh mache? Habe nur M168def.dat gebraucht in platz 
von M8def.dat

Uberigens verzeihe meinem slechtes deuts... Komme from die niederlanden

von Jörg X. (Gast)


Lesenswert?

Deshalb musst du nicht gleich einen 3 Jahre alten, und 2,5 Jahre 
'ruhenden', Thread missbrauchen.

Schau dir mal die Atmel-Appnotes AVR094 und AVR095 an (hier: 
http://atmel.com/dyn/products/app_notes.asp?family_id=607#Migration%20Notes).
Du musst wahrscheinich UCSRA0 und FE0 benutzen.

hth. Jörg

von Atm (Gast)


Lesenswert?

Deshalb musst du nicht gleich einen 3 Jahre alten, und 2,5 Jahre
'ruhenden', Thread missbrauchen.

Schau dir mal die Atmel-Appnotes AVR094 und AVR095 an (hier:
http://atmel.com/dyn/products/app_notes.asp?family...).
Du musst wahrscheinich UCSRA0 und FE0 benutzen.

exakt :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.