Forum: Mikrocontroller und Digitale Elektronik 0-5V => 100Hz PWM 0-100% @10V


von Nitram L. (nitram)


Lesenswert?

Hallo zusammen,
ich brauch mal einen Stubs...

Zur Ausgangssituation:
Ich habe vier analoge Ausgänge, die mir jeweils 0-5V ausgeben.
Damit möchte ich je einen Dimmer mit ansteuern.

Ich habe noch Dimmmodule (schreibt sich das wirklich mit "mmm"), die 
allerdings ein 0-10V PWM Signal am Eingang erwarten.
Der Eingang ist mit einem Optokoppler galvanisch vom Rest getrennt.

Um die Lampen sicher auszuschalten sollte nur der Bereich 0,5V-5V zur 
Ansteuerung genutzt werden.

0-0,5V => PWM 0%
0,5-5V => PWM 0-100%


Jetzt zu meinem eigentlichen Problem.

Ich kann mir gut vorstellen, das die Umsetzung mit einem kleinen AVR nur 
ein paar Zeilen Code sind - allerdings ist das Neuland für mich. Ich 
müsste mich da erst komplett neu einarbeiten.

Das Ganze sollte sich doch auch ohne µP lösen lassen!

Ich suche daher:
a) eine Person für die mich das programmiert (AD Wert einlesen => PWM am 
Ausgang einstellen.

ODER

b) eine Anregung wie sich das Ganze verhältnismäßig leicht ohne µP 
umsetzen lässt...


Für sachdienliche Hinweise wäre ich sehr dankbar...

nitraM

von pascal (Gast)


Lesenswert?

Bau  einen Dreiecks/Sägezahngenerator, der von 0.5V ... 5V geht.
Danach ein Komparator, der dieses Signal mit deinem Sollwert vergleicht.
Das Ausgangssignal musst Du jetzt nur noch auf 10V bringen.

von pascal (Gast)


Lesenswert?

Schau mal im Datenblatt des LM2903:
http://www.national.com/ds/LM/LM193.pdf

Wenn Du die Schaltung auf der ersten Seite aufbaust, hast Du am Ausgang 
ein Rechteck. Und über dem 75pF C ein "Dreieck".

Der LM2903 hat 2 Komparatoren. Den 2. schaltest Du danach. Dann hast Du 
schon alles.

Du musst lediglich die Bauteilwerte etwas ändern. Am besten Du simuliert 
es.

von Anja (Gast)


Lesenswert?

Martin L. schrieb:
> allerdings ein 0-10V PWM Signal am Eingang erwarten.

Das PWM-Signal Netzsynchron (also als Phaseninformation) oder beliebig 
in der Phase zur Netzfrequenz?

Gruß Anja

von Nitram L. (nitram)


Lesenswert?

> Das PWM-Signal Netzsynchron (also als Phaseninformation) oder beliebig
> in der Phase zur Netzfrequenz?


Oh - das kann ich gar nicht so genau sagen!
Ich denke das es nicht Netzsynchron sein muss...

nitraM

von Sebastian M. (compressed)


Lesenswert?

bist du dir 100% sicher, dass die Dimmer PWM sehen wollen und nicht 
einfach analog 0...10V?

von Nitram L. (nitram)


Lesenswert?

Sebastian Möller schrieb:
> bist du dir 100% sicher, dass die Dimmer PWM sehen wollen und nicht
> einfach analog 0...10V?

JA, ja da bin ich mir ganz sicher...
Der Eingang geht auf einen Optokoppler, und auf der anderen Seite wird 
das eingekoppelte Signal einem PIC zugeführt...

nitraM

PS.: so langsam favorisiere ich eine programmierbare "digitale" 
Lösung...

von avrGerd (Gast)


Lesenswert?

Hallo,

wenn das Signal direkt auf einen Optokoppler(mit Vorwiderstand nehme ich 
mal an) geht, dann passiert in der Regel im Bereich 0-1V sowieso nichts, 
da die Diode im Optokoppler eine Uf von ca. 1V hat.

Wenn Du nur 5V hast, kannst Du auch den Vorwiderstand anpassen und schon 
gehts auch mit 5V.

Was ist dass denn für ein Dimmer?

avrGerd

von Nitram L. (nitram)


Lesenswert?

avrGerd schrieb:
>
> Wenn Du nur 5V hast, kannst Du auch den Vorwiderstand anpassen und schon
> gehts auch mit 5V.
>
> Was ist dass denn für ein Dimmer?
>
> avrGerd

Hallo Gerd,
ich habe hier von ELTAKO den LUD12-230V.
Das ist eine Leistungserweiterung, die von einem SUD12 angesteuert wird.
Der SUD12 liefert an seinen Ausgängen die PWM, welche vom LUD12-230 
ausgewertet wird.

Umbauen möchte ich die Dimmmodule nicht - ich möchte später bei Bedarf 
einfach nur ein Ersatz auf die Hutschiene setzten können...

avrGerd schrieb:
>dann passiert in der Regel im Bereich 0-1V sowieso nichts,
>da die Diode im Optokoppler eine Uf von ca. 1V hat.

Da der Pegel der PWM ja 0-10V ist wird der Optokoppler auch bei sehr 
kurzen Impulsen durchgesteuert...


Ich habe mich gestern mal mit Pascal Vorschlag beschäftigt,
allerdings bin ich noch nicht zu einem wirklich brauchbaren Ergebnis 
gekommen. Die 100Hz sind analog ohne großen Abgleich nicht so einfach zu 
treffen. Die Schaltung soll so klein wie möglich sein - von daher würde 
ich nun doch zu einer Lösung mit AVR tendieren.



Von daher meine Frage:
Findet sich hier im Forum jemand, der mir für einen AVR (Atmega8) 
folgendes programmiert:

=> Einlesen von 4 analogen Ports (0-5V)
=> Umrechnung der AD Werte (0,5-5V) in je eine PWM von 0-100% @ 100Hz
=> PWM Ausgabe auf den entsprechenden 4 digitalen Ports

Als Gegenleistung würde ich neben einem DICKEN Dankeschön auch einen 
kleinen Geldbetrag in der Größenordnung eines Kinogutscheins für zwei 
Personen ausloben...

Ich hoffe es findet sich jemand, der mir weiterhelfen kann...

nitraM

von avrGerd (Gast)


Lesenswert?

Hallo Martin,

mit der PWM und dem Durchschalten der Diode hast Du natürlich recht.
Ich war gedanklich wieder bei unserer Dimming Schnittstelle, die kann 
0-10V, PWM oder einen festen Widerstand am Eingang. Damit hat man 
erstmal viele Dinge erschlagen was man so heute zum Dimmen benutzt.

Gibt es einen Grund für die 100Hz? Ich würde da auf ein vielfaches 
gehen.
Können die Geräte von ELTAKO nicht mehr?

Wie eilig hast Du es denn mit dem Projekt?

Wer baut die Hardware?

Machen können das Projekt hier sehr viele Leute.

Aber:
Hättest Du nicht Lust und den Ehrgeiz das alleine hinzubekommen?
Untestützung findest Du hier Forum jederzeit, zumal das Projekt auch für 
Anfänger nicht so schwierig sein sollte.



Gruss,
avrGerd

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
ich denke sogar, dass du das hinbekommst. Im 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial findest du 
alles was du brauchts. Den Controller würde ich dir danach mit deinem 
Programm vershen. Wenn du Fragen zu deinem Code hast, poste ihn hier. 
Ich würde sagen, dass du dir 50% aus dem Tut kopieren kannst. Den Rest 
schaffst du dann mit gesundem Menschenverstand und dem Forum. Auch die 
Forensuche hat schon vielen geholfen.
Gruß Jannis

von Nitram L. (nitram)


Lesenswert?

Hallo Gerd,
vielen Dank für deine Antwort...

avrGerd schrieb:

> Gibt es einen Grund für die 100Hz? Ich würde da auf ein vielfaches
> gehen.

Die 100Hz müssen schon sein - darauf ist das Programm im dem PIC des 
LUD12 anscheinend ausgelegt...

Ehrgeiz hätte ich schon, allerdings bin ich zur Zeit mit dem Umbau 
unseres Hauses total eingespannt - da bleibt nicht mehr viel Zeit über.
Ich suche eine schnelle Lösung für mein Problem - denn wenn möglich 
sollten die Dimmer ihren Platz in der Unterverteilung bald einnehmen...
Die Hardware würde ich aufbauen, ist ja nicht soviel...
Ich brauche halt einen "schnellen" Erfolge - ansonsten könnte ich die 
Dimmer nicht nutzen und müsste wieder (viel)Geld ausgeben für andere.
Wenn ich mit dem Umbau denn mal fertig bin würde ich schon gern meine 
Defizite aus bügeln...

nitraM

von avrGerd (Gast)


Lesenswert?

Hallo Martin,

Wo kommen denn deine 4 analogen Ausgänge mit 0-5V her?

Wie lange werden die Leitungen von den analogen Ausgängen zu den 
Dimmern?

Mit welchen Störungen ist auf den Leitungen zu rechnen?

Würdest Du evtl. notwendige Filter in Hardware machen oder muss/soll das 
in Software gemacht werden.

Um schnell Ergebnisse zu bekommen und die Lernkurve steiler zu machen 
kannst Du Dir auch mal BASCOM ansehen. Ist bis 4k Code kostenlos.

Ausserdem sind schon viele Beispiele dabei, auch für ADC und PWM 
Ausgabe.
Da hast Du in 1 Stunde schon so ziemlich was Du brauchst mal 
ausprobiert.


avrGerd


Ach ja:
Hab ich es richtig verstanden, dass Du mit einer 5V PWM die 10V PWM der 
Dimmer ansteuern willst? Hast Du schon mal ausprobiert, ob das überhaupt 
funktioniert?

von Peter Z. (hangloose)


Lesenswert?

@avrGerd
>Da hast Du in 1 Stunde schon so ziemlich was Du brauchst mal
ausprobiert.

Wenn er noch nichts mit µC gemacht hat, halte ich das für relativ 
unwahrscheinlich.

>Ach ja:
Hab ich es richtig verstanden, dass Du mit einer 5V PWM die 10V PWM der
Dimmer ansteuern willst? Hast Du schon mal ausprobiert, ob das überhaupt
funktioniert?

Martin schreibt: Der Eingang ist mit einem Optokoppler galvanisch vom 
Rest getrennt.

Wenn du so gut bist mach es ihm doch. Sollte ja dann bei dir in 10min 
erledigt sein?!

@Martin L.
Bau mal die Hardware und poste den Schaltplan hier im Forum.
Wenn die Hardware aufgebaut und hier für gut befunden wurde,
kann ich dir gern die Software dazu machen wenn du willst.

Gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Schnellschuss in der Mittagspause.  Ohne Gewehr und Pistole und sowas. 
;)

Gezimmert für einen ATtiny13.  Davon nimmst du für jeden Kanal einen.

von Nitram L. (nitram)


Lesenswert?

Hallo Peter

vielen Dank für dein Angebot, werde mich heute oder morgen Abend mal 
hinsetzten und zeichnen.

Ich würde ja gern 4 PWM Ausgänge nutzen, laut DB hat ein Atmega8 nur 3 
PWM Ausgänge. Allerdings sind 100Hz ja nicht gerade viel.
Würde die Ausgabe auch auf einem normalen Port gehen - also eine reine 
SW-PWM ???

Grüße Martin

von Nitram L. (nitram)


Lesenswert?

Jörg Wunsch schrieb:
> Schnellschuss in der Mittagspause.  Ohne Gewehr und Pistole und sowas.
> ;)
>
> Gezimmert für einen ATtiny13.  Davon nimmst du für jeden Kanal einen.

Ohhhh - vielen Dank - auch wenn ich nicht mal die Hälfte davon 
verstehe...


nitraM

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Martin L. schrieb:
> auch wenn ich nicht mal die Hälfte davon
> verstehe...

Einfach das Datenblatt daneben halten und versuchen, die
Registereinstellungen zu verstehen.

Die ADC-ISR macht weiter nichts, als eine einfache lineare
Interpolation.  Du bekommst vom ADC einen Wert zwischen 0 (für 0 V
am Eingang) und 255 (für Vcc = 5 V am Eingang), d. h. der ADC wird
effektiv im 8-bit-Mode betrieben (das bewirkt das ADLAR-Bit [left
adjust result] zusammen mit der Tatsache, dass man nur ADCH
ausliest und auf diese Weise die verbleibenden 2 Ergebnisbits in
ADCL ignoriert).  Da du Spannungen < 0,5 V als 0 bewerten willst,
muss man die verbliebenen Werte (zwischen 25 und 255) auf die
gesamte Ausgabebreite der PWM abbilden, und diese wierum beträgt
0 ... 186 (Makro TMR_TOP).  Dieser "eckige" Max-Wert ergibt sich
aus deiner 100-Hz-Forderung.  (Die 100 Hz lassen sich nicht exakt
erreichen, aber der wesentliche Fehler ist nicht der Rundungsfehler
im Timer, sondern die Ungenauigkeit des RC-Oszillators.)

p.s.: Ich denke, dass du die Lösung mit vier kleinen Controllern
schneller zum Laufen bekommen wirst als die, alles in einem einzigen
Controller zu machen.  Letzteres ist zwar "sportlicher" ;-), aber
du schrobst, dass deine Zeit gerade knapp ist.

von Nitram L. (nitram)


Lesenswert?

Hallo Jörg,

noch mal ein Dankeschön von mir...
Wenn ich die Tage mal in die Stadt komme werde ich mir bei meinem Krämer 
ein paar ATiny's holen und testen.

Kannst du mir das Ganze vielleicht als hex File Idiotensicher zur 
Verfügung stellen??? Wie gesagt - AVR ist für mich absolutes Neuland...

nitraM


PS.: was muss ich bei den Fuses einstellen???

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Martin L. schrieb:

> Kannst du mir das Ganze vielleicht als hex File Idiotensicher zur
> Verfügung stellen?

Hier hast du's.

> PS.: was muss ich bei den Fuses einstellen???

Lassen, wie sie sind.

p.s:
1
$ avr-gcc -mmcu=attiny13 -Os -o pwm.elf pwm.c 
2
$ avr-objcopy -O ihex pwm.elf pwm.hex

von Janosch M. (jam)


Angehängte Dateien:

Lesenswert?

Hallo,
falls du es doch noch mit einem ATmega8 machen willst hab ich mal ein 
Programm geschrieben mit 4 SW_PWMs. Ich wollte mich sowieso mal mit 
SW-PWM beschäftigen.
Der Takt muss auf 8MHz gestellt werden.

ADC  -> PWM

ADC0 -> PD0
ADC1 -> PD1
ADC2 -> PD2
ADC3 -> PD3

Gruß
Janosch

von Nitram L. (nitram)


Lesenswert?

Vielen Dank Janosch,

ich werde es später mal ausprobieren, derzeit warte ich auf die ATiny's 
für Jörgs Lösung.


nitraM

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.