Hallo
Ich möchte mit einem Attiny eine LED dimmen (Fading). Habe schon den
Beitrag dazu gelesen (LED Fading). Der läuft mit einem Atm 32. Habe
versucht es auf den Attiny zu übersetzen, leider ohne Erfolg.
Wie kann man so was am besten machen. Mit PWM und Timer, aber wie genau.
Leider ist im Beitrag nicht viel an Erklärung dabei.
Oder kennt jemand einen guten Beitrag dazu?
LG Klaus
Anscheinen musst du Grundlagen lernen. Ist dir klar, was PWM ist und wie
man es benutzt?
Wenn nicht, worauf können wir aufbauen?
Zu diesem Thema gibt es zahlreiche Tutorial im Arduino Umfeld,
vielleicht fängst du damit mal an. Z.B.
https://starthardware.org/lektion-13-leds-dimmen-mit-der-analogen-ausgabe/
Wenn du diese Lektion 13 nicht verstehst, dann fange mit Lektion 1 an.
Klaus schrieb:> Mit PWM und Timer, aber wie genau.
Steht sehr detailiert im DB und der Family Reference wie die Register zu
setzen sind.
Aber ohne English lesen und verstehen zu können kannst Du das komplette
Thema Elektronik und Programmierung auch gleich sein lassen.
Ohne zu verstehen was Du da tust, reicht Copy Paste einfach nicht aus.
Klaus schrieb:> Hallo> Ich möchte mit einem Attiny eine LED dimmen (Fading). Habe schon den> Beitrag dazu gelesen (LED Fading). Der läuft mit einem Atm 32. Habe> versucht es auf den Attiny zu übersetzen, leider ohne Erfolg.> Wie kann man so was am besten machen. Mit PWM und Timer, aber wie genau.
Mann muss die Register passend einstellen.
> Leider ist im Beitrag nicht viel an Erklärung dabei.
Eine glatte Lüge!
> Oder kennt jemand einen guten Beitrag dazu?
Du suchst ein Hörbuch? Oder noch besser jemanden, der das für dich
macht?
In jedem Datenblatt zu jedem AVR steht drin, wie man die Bits setzen
muss, um einen PWM-Modus zu konfigurieren. In den Beispielen im Artikel
LED-Fading sieht man das auch. Wenn dein Tiny keinen 16 Bit Timer
hat, muss man es halt mit einem 8 Bit Timer machen. Aber das ist kein
großes Problem, man muss nur 1-2 Register mit einer handvoll Bits
korrekt setzen!
Falk B. schrieb:> Wenn dein Tiny keinen 16 Bit Timer> hat, muss man es halt mit einem 8 Bit Timer machen.
Auch eine glatte Lüge!
Wer es kann, nimmt eine 16/32bit variable als SW counter und einen 8bit
HW counter für das inc/dec interval des SW counters.
Also Ball immer schön flach halten hinsichtlich "Lüge" und so :-)!
Hallo,
man schaut sich die Timer Register im Manual an. Nimmt diese Lektüre
https://www.mikrocontroller.net/articles/LED-Fading, passt ggf. die
Register an und hat sein Led Fading.
Oder man schaut sich zuerst den Code rund um die Timerregister an,
schaut was die Registereinstellungen vom Timer machen und überträgt das
auf seinen anderen Ziel Controller.
Um eine Einarbeitung kommt man allerdings nie drumherum egal wie man es
anstellt.
Apollo M. schrieb:> Falk B. schrieb:>> Wenn dein Tiny keinen 16 Bit Timer>> hat, muss man es halt mit einem 8 Bit Timer machen.>> Auch eine glatte Lüge!
Eher nicht, da ist nichts Falsches darin, was Falk so schreibt.
Auch Du scheinst sowas zu brauchen:
Apollo M. schrieb:> und einen 8bit HW counter für
Was Du allerdings mit dem Timer als Counter willst, bleibt verborgen,
man könnte auch sagen Du bist hier aufgeschlagen um dem TE Blödsinn zu
raten.
[sarkasmus]Man soll's diesen blutigen Anfängern einfach nicht zu leicht
machen, einfach mal was Dummes zur Verwirrung geschrieben und schon ist
des Anfängers Leben und Lernen interessanter.[/sarkasmus]
Erklär doch mal, wie betreibst Du den Counter, nimmst Du einen externen
Oszillator dafür? Oder muss da noch ein Fluxkompensator dazwischen?
MWS schrieb:> Erklär doch mal,
Das ist nicht schwer zu verstehen wie er das meint.
An / Aus über SW PWM, (halbwegs) konstante Zweit zwischen zwei
++pwm_counter über den HW Timer.
Trotzdem eine völlig unbrauchbare Verquickung aus HW und SW PWM
Für eine flackerfreie PWM brauche ich bei LEDs 100Hz.
Wozu also die 16/32 bit Variable auf einen niedrig getakteten 8bitter?
In niedrigen Dimmstufen sieht man jede klitzekleine Abweichung in der
Bearbeitungszeit einer SW PWM sofort.
Wenn schon per SW, weil z.B. nicht genug PWM Ausgänge zur Verfügung
stehen, dann doch bitte PDM (Pulse Dichte Modulation).
Da komme ich mit sehr viel niedrigerer Frequenz hin, weil innerhab eines
PWm Zyklus mehrfach ein/aus geschaltet wird.
Damit sieht man auch kleine Timing Abweichungen nicht mehr.
Aber nach dem derzeitigen Kenntnissstand des TO hilft dem das alles
nicht weiter.
Wenn man die Sprache so garnicht beherrscht UND das DB nicht liest, ist
einem eben kaum zu helfen.
Veit D. schrieb:> PDM - Pulse Dichte Modulation?> Meinst du DDS?
das sind 2 unterschiedliche Methoden
PMD 1== 1:puls/Zyklus 2:pulse/Zyklus ....
Vorteil: man bekommt schnell hohe Frequenz
Nachteil: man bekommt schnell hohe Frequenz
Hallo,
okay, merke ich mir vor. Das wird bei Gelegenheit getestet.
Unterschiedliche Verfahren und Herangehensweisen zu vergleichen sind
immer interessant
Klaus schrieb:> eine LED dimmen (Fading)
off-topic:
Sind "Dimming" und "Fading" nicht zwei unterschiedliche Vorgänge?
Unter "dimmen" verstehe ich einmaliges "Regulieren" auf einen bestimmten
Wert.
Unter "faden" verstehe ich ein kontinuierliches "auf (und/oder) ab" der
Intensität.
LG Martin
Man kann mit einem ATTiny durchaus eine 12Bit-PWM umsetzen. Man benutzt
dafür eine 8Bit-Hardware-PWM und eine Timer-Overflow-ISR, in welcher man
die oberen 4 Bit der PWM per Software macht.
Mit der 12Bit-PWM hat man dann 4096 Schritte, mit welchen auch
problemlos noch eine Gamma-Korrektur für das menschliche Auge möglich
ist. Auch in den unteren Helligkeitsbereichen ist damit ein stufenloses
Fading möglich - zum Beispiel mit 3 PWM-Kanälen für RGB.
Ich selbst habe das damals gemacht für meine Equinox-Uhr, als die WS2812
noch gänzlich unbekannt bzw. schweineteuer waren - mit 60 LEDs und 60
ATTinys (ATTiny85), siehe Bild.
Thread dazu - mit Link auf Video:
Beitrag "Equinox-Uhr mit 60 ATtinys"
Bloss mal zur Klarstellung. Ich such kein "Hörbuch" oder einen des für
mich erledigt. Ich suche auch kein fertiges Programm-
Was ich suche ist ein Tut oder eine Erklärung die man verstehen kann.
Keine Doktorarbeit oder anderes kompliertes.
Ich arbeite mit C und nicht mit Arduino.
Es muss doch möglich als nicht Doktor sowas zu machen.
Klaus schrieb:> Es muss doch möglich als nicht Doktor sowas zu machen.
Ja schon, doch der Zeitaufwand bleibt der selbe. So etwas lernt man in
einem Winter.
Klaus schrieb:> Ich arbeite mit C und nicht mit Arduino.
Gut. Mache ich auch so. :-)
> Es muss doch möglich als nicht Doktor sowas zu machen.
Man muss sich dafür da reinarbeiten. Zunächst lässt man die LED blinken.
Dann schaut man sich im Datenblatt den Fast-PWM Mode an und lernt, wie
man die Register TCCR0A und TCCR0B (für z.B. ATTiny85) bedienen muss, um
eine PWM zu generieren.
Wenn man dann einen beliebigen 8-Bit-PWM-Wert erzeugen kann, versucht
man, die LED zu faden, indem man mittels Timer die PWM von einem
Startwert bis zu einem Stoppwert laufen lässt. Dazu inkrementiert (bzw.
dekrementiert) man über die Timer-ISR den PWM-Wert, bis dieser den
Stoppwert erreicht hat.
Das Ganze kann man dann noch mit einer Gamma-Korrektur versehen, damit
die Helligkeitswerte an das Helligkeitsempfinden des menschlichen Auges
angepasst werden.
Hier findest Du dazu alles, was Du brauchst: LED-Fading
Das ist für einen ATMega32, ist aber leicht auf einen ATTiny
umzuschreiben.
Hat man eine RGB-LED, kann man das dann auf 3 PWM Kanäle erweitern. Hier
lässt man die LED dann von einem Start-Tripel R,G,B zu einem
Stopp-Tripel R,G,B laufen. Hier muss man dann 3 Werte erhöhen bzw.
erniedrigen - mit einem geeigneten Inkrement-Wert für jeden Kanal, damit
alle 3 Stopp-Werte gleichzeitig erreicht werden.
Die Königsklasse ist dann die Erweiterung der 8-Bit-HW-PWM auf 12 Bit,
wobei hier der Timer-Overflow-Interrupt für das Erzeugen von 4 weiteren
höherwertigen PWM-Bits genutzt wird. Diese ISR (TIMER1_OVF_vect) kann
dann auch noch zusätzlich das Fading erledigen. Damit erschlägst Du
direkt 2 Fliegen mit einer Klappe.
Ist Dir das als "Tutorial" genug, oder muss man Dir das noch in
Einzelheiten vorkauen? Das Datenblatt zum ATTiny liefert Dir eigentlich
alle nötigen Informationen dazu.
P.S.
Zu Deinem Threadtitel "LED dimmen mit Fading oder lieber mit PWM"
Man machts mit PWM. Fading ist eigentlich nur das Ändern der PWM über
die Zeit.
Frank M. schrieb:> Man machts mit PWM. Fading ist eigentlich nur das Ändern der PWM über> die Zeit.
Das ist für mich eine klare Aussage. Mit dem PWM und den Timern werde
ich angehen und lesen.
Hatte im Netz gelesen das es verschiedene Möglichkeiten geben soll. Bei
einigen ist der Timer dazu auf verschiedene Teile des Programms
"verstreut" oder man versucht es einfach zu "verschleiern". Grund genug
für micjh es anzugehen. Danke für die Info.
LG Klaus
Stefan schrieb:> das sind 2 unterschiedliche Methoden> PMD 1== 1:puls/Zyklus 2:pulse/Zyklus ....> Vorteil: man bekommt schnell hohe Frequenz> Nachteil: man bekommt schnell hohe Frequenz
PDM ist eine sehr effiziente Methode per Software viele 'PWM' Ausgänge
zu machen.
Warum das ein Nachteil sein soll, das ich trotz niedriger
Bearbeitungsfrequenz auf eine flackerfreie Ansteuerung komme, da nicht
nur einmal pro Zyklus geschaltet wird, sondern viel Male, müsstest Du
aber mal erklären.
Zwingt mich ja keiner die Routine häufiger aufzurufen als ich für eine
vernünftige Wiederholfrequenz benötige.
Mit PDM habe ich schon auf einem 8Mhz Silabs 8051 RGBW mit 10bit / 100Hz
gesteuert, alle 300ms RS485 Protokolle empfangen und dekodiert, Fading,
Temperatur- und Chargenkompensation des Farbortes und anderes
Housekeeping gemacht, ohne das der am Limit war.
Prokrastinator schrieb:> Warum das ein Nachteil sein soll, das ich trotz niedriger> Bearbeitungsfrequenz auf eine flackerfreie Ansteuerung komme, da nicht> nur einmal pro Zyklus geschaltet wird, sondern viel Male, müsstest Du> aber mal erklären.
Das ist ein Nachteil für Leistungsstufen, denn dort verursacht die
Umschaltung satte Schaltverluste. Bei einer 8 Bit PWM gibt es unabhängig
vom PWM-Wert nur 2 Schaltvorgänge/Periode. Bei PDM bis zu 256!
Bei LEDs und ähnlichem Kram spielt das keine Rolle.
Martin S. schrieb:> Unter "dimmen" verstehe ich einmaliges "Regulieren" auf einen bestimmten> Wert.>> Unter "faden" verstehe ich ein kontinuierliches "auf (und/oder) ab" der> Intensität.
Egal was man unter welchem Begriff versteht - mit PWM wird man es so
oder so machen. Das ist kein "oder".
Prokrastinator schrieb:> PDM ist eine sehr effiziente Methode per Software viele 'PWM' Ausgänge> zu machen.
sehe ich genauso
> Warum das ein Nachteil sein soll, das ich trotz niedriger> Bearbeitungsfrequenz auf eine flackerfreie Ansteuerung komme, da nicht> nur einmal pro Zyklus geschaltet wird, sondern viel Male, müsstest Du> aber mal erklären.
10-bit PDM verursacht schon über 1000 Schaltvorgänge
> Zwingt mich ja keiner die Routine häufiger aufzurufen als ich für eine> vernünftige Wiederholfrequenz benötige.
aber verführt u.U. weil eine PDM bei 90% Rechenleistung trotzdem
ausreichend Zeit für die Anwendung lässt d.h. kleine Drahtstücke können
(vom Gefühl) schnell zu Sendern werden.
Stefan schrieb:> d.h. kleine Drahtstücke können (vom Gefühl) schnell zu Sendern werden.
Wie weit die Oberwellen reichen, hängt von der Steilheit der Flanken und
nicht vom Gefühl ab ;-)
Wolfgang schrieb:> Wie weit die Oberwellen reichen, hängt von der Steilheit der Flanken ab ;-)
bei der Reichweiten-theorie von (Ober)wellen dürfte eine besondere
physikalische Begabung dabei sein, die immerhin ein lächeln hinterlässt
Prokrastinator schrieb:> Mit PDM habe ich schon auf einem 8Mhz Silabs 8051 RGBW mit 10bit / 100Hz ...
mit einem versehentlichen Anschluss eines 14Mhz Quarzes und einpoligen
langen Leitungen käme man bei 50% zumindest grob auf einen DCF77
Störsender, der gleich zwei 48CH-PWM-Boards in der weiteren
Entwicklung stört:
Beitrag "Re: Binäruhr mit STM32 Blue Pill Board"
Ohne Empfang wird fürs diskutieren über die Literatur von Frau Passig
des Berliner BSDM bezahlt:
Beitrag "Re: Quelltext: Lesestoff gesucht"
==> Vorsicht mit solchen PDM
Stefan schrieb:> ==> Vorsicht mit solchen PDM
Vorsicht mit solchen Postings.
Worte aneinanderzureihen die sich fachlich fundiert anhören, mit der
Realität und projektspezifischen Umsetzung aber überhaupt nichts zu tun
haben, sind einfach nur Text. Sonst nichts.
Prokrastinator schrieb:> Worte aneinanderzureihen die sich fachlich fundiert anhören, mit der> Realität und projektspezifischen Umsetzung aber überhaupt nichts zu tun> haben, sind einfach nur Text.
Genau. Und deswegen wäre Klaus Board eine optimale Hilfe für die
Lesestoff-Gruppe die unter:
Beitrag "Quelltext: Lesestoff gesucht"
Worte aneinanderreihen, aber bislang an einer projektspezifischen
Umsetzung scheitern, weil Walter sein PWM-Entwicklungsboard geheim hält.
Das ganze Bord besteht aus einer Platine mit vielen Löchern (Bredbord)
und alle Teile sind einfach draufgesteckt.
Fliegende Verdrahtung? Nennt sich das so?
Klaus schrieb:> Das ganze Bord besteht aus einer Platine mit vielen Löchern> (Bredbord)> und alle Teile sind einfach draufgesteckt.> Fliegende Verdrahtung? Nennt sich das so?
Und was willst Du damit sagen? Es heißt übrigens “Breadboard”. Naja 🤷♂️
Welche Attiny verwendest Du denn? Und wie weit bist Du mit Deinem
Programm?
Zeig’ doch mal was Du bislang implementiert hast
Klaus schrieb:> Oder kennt jemand einen guten Beitrag dazu?
Im Buch von Burkhard Kainka "Lernpaket Mikrocontroller" Ist ein Programm
für den tiny 13 enthalten.
6.6 Seite 100: Der weiche Blinker. Funktioniert mit PWM.
Ist sehr gut als Start für das Kennenlernen von µC's geeignet.