Forum: Projekte & Code [C] AVR-Lichtorgel per FFT MEGA8 32 644


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lötlackl (Gast)


Angehängte Dateien:

Lesenswert?

Für die ganz Mutigen gibt's mal wieder was von mir.
Im Anhang befinden sich die benötigten Dateien,
um sich eine LED- & AVR-basierte 6-Kanal-Lichtorgel zu basteln.
Die Idee entstand aus der Notwendigkeit heraus,
in einer Modellbahnlandschaft (H0, um genau zu sein) meines alten Herren 
ein dargestelltes Open-Air-Konzert-Szenario (merkwürdiges 
Wörter-Konstrukt) zumindest lichttechnisch mit Leben zu erfüllen.
Naja, was soll ich sagen. Zumindest riesigen Dank an Elm Chan 
(http://elm-chan.org/) , ohne dessen FFT-Routine das ganze wohl nicht 
möglich wäre, freilich Dank auch ans Forum, dort habe ich auch noch 'n 
bisschen geklaut...
Verdammt eng ist's mit der software-basierten 10-bit-PWM. Die 
Prozessorlast ist doch gewaltig, wird aber durch eine relativ geringe 
Zyklenfrequenz von "nur" 60Hz auf ein erträgliches Maß reduziert. 
Ansonsten ist das Ding ordentlich beschäftigt, flüssig sieht's aber 
dennoch aus. Ich hoffe, den Code ausreichend kommentiert zu haben, 
ansonsten gerne Fragen, Wünsche, Anregungen, Gemecker, Gemotze hier 
reinstellen. ;-)

von Peter F. (piet)


Lesenswert?

Lötlackl wrote:
> ansonsten gerne Fragen, Wünsche, Anregungen, Gemecker, Gemotze hier
> reinstellen. ;-)

Ich möchte ein Video vom Blinken! ;-)

Mfg,
Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ich auch!!! Möglichst in HD ;-)

von juppi (Gast)


Lesenswert?

>10-bit-PWM.
Für diesen Zweck reichen auch  4-8 bit PWM.
Eigene Erfahrung, aber Pic.

von juppi (Gast)


Lesenswert?

Habe jetzt erst die Zip gesehen.

Ich lasse immer RxD möglich auch TxD frei.
Damit kann ich alle diese Teile schön fernsteuer.

Gruß

von Juris P. (latvian3dman)


Lesenswert?

I would like to say thankyou for this piece of code. I was looking 
around for microcontroller based color organ (lichtorgel), preferably 
more than 3 channels and with PWM outputs to LEDs. Surprisingly, i dont 
find much like this in Internet. Your simple project seems to be what i 
was looking for. I quickly tried it, without transistors, LEDs directly 
to microcontroller, and it looks promising. One more time - Dankeschon! 
Please share with us if any changes and modernizations in this nice 
device :)

von roman pollak (Gast)


Lesenswert?

Lötlackl,

die Idee ist toll.. bin selber am herum basteln an so was..
Was mir nicht gefaellt resp. sehr viel cpu computing power geht verloren 
in der pwm routine. Je nach dem, kann man damit den avr sehr 
beschäftigen.
Ich persoenlich finde den interrupt on delta Ansatz viel besser. braucht 
mehr cpu power fuer die Vorbereitung aber, der avr braucht dann nur max. 
6 interuppts bei 6 Kanal per pwm Durchlauf. in Deinem code ist die pwm 
60 HZ mit 1024 steps. dh. 60*1024 = 61440 interrupts/s. wie hoert sich 
6*60= 360 interrupts/s an ??
siehe den artikel ueber die soft PWM : 
http://www.mikrocontroller.net/articles/Soft-PWM ->  Intelligenter 
Lösungsansatz


lg roman

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

> http://www.mikrocontroller.net/articles/Soft-PWM

Das als efizient zu bezeichnen ist schon gewagt :-)

Von Fehlern wie
1
#if (T_PWM<(152+5))

mal ganz abgesehen.

von roman pollak (Gast)


Lesenswert?

Hey Johann,

wenn schon von Fehlern schreibst.. schreibe doch auch die Loesung dazu 
?!!
oder noch besser... schreibe dem Autor des Artikels ...

lg roman

von Juris P. (latvian3dman)


Lesenswert?

Hello,
I would like to say big ThankYou to author for posting this project!
I have been searching from microcontroller based lichtorgels for some 
time now, and this one is so far best for my liking. I really like this 
smooth LED brightness changes, instead of jerky blinky lights that 
unfortunately are in some similar projects.
I wonder, is there plans for enhancing this project? Maybe some kind of 
infrared control for balancing channel sensitivities, etc? Maybe some 
color rainbow effect, if N seconds there is a silence? Unfortunately, i 
am not a programmer myself, only some rudimentar Basic and JAL 
experience :(
Speaking of other projects i found, i will post links now, maybe someone 
interested:

http://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=342512
http://negativeacknowledge.com/2008/06/final-lightbar-controller/
http://www.elektroda.pl/rtvforum/viewtopic.php?t=653868&postdays=0&postorder=asc&highlight=rgb&start=0
http://diablo.iiar.pwr.wroc.pl/~rbudzins/?s=p_iluminofonia
http://vrtp.ru/index.php?showtopic=12319&st=0
http://www.remexpert.com/ipb/topic3779.html
http://bascom.at.ua/publ/1-1-0-5

Maybe someone has some interesting similar projects and/or links too? 
:)

Thanks one more time to author of this 6-channel Color Organ!
Best wishes!

von Lötlackl (Gast)


Lesenswert?

@roman pollak
Das mit der PWM ist mir sehr wohl bewußt, einzig für einen MEGA8 gedacht 
(die beiden anderen sind nur "Beiwerk", denn mit denen konnte man schön 
debuggen...) war alsbald nicht mehr genug Speicher vorhanden. Demnach 
fiel http://www.mikrocontroller.net/articles/Soft-PWM das hier leider 
aus.

@Juris Perkons
sorry for my poor english
It should be never a Lightcomputer, but working standalone without 
adjustment in rough Environments like Fairs for Model Railways. Because 
of that there are no plans for enhancing.

mfg Lötlackl

von Juris P. (latvian3dman)


Lesenswert?

Thanks Lötlackl for answer (even it is not optimistic :) )
Just one more little question please. I made Your project on ATMega8. Is 
there any advantages, anything better, if make device on ATMega32 or 
644?
Thanks in advance,
Juris.

von zappie (Gast)


Angehängte Dateien:

Lesenswert?

Danke für dieses schöne Project, genau was ich gesucht hatte...
Ich hab mal ein wenig mit dem Logic-Analyser die pwm spannungen 
visualisiert und diese dann in oszi-daten umgewandelt ;)

von Reiner B. (reiner_b)


Lesenswert?

Kann mir jemand sagen, wie ich am besten die Grenzen der einzelnen 
Bänder berechnen/austesten kann, wenn ich den Code auf 4 oder 8 Kanäle 
umbauen möchte?

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Reiner B. schrieb:
> Kann mir jemand sagen, wie ich am besten die Grenzen der einzelnen
> Bänder berechnen/austesten kann, wenn ich den Code auf 4 oder 8 Kanäle
> umbauen möchte?

Hmm..., berechnen gar nicht. Man sollte, um ein einigermaßen 
zufriedenstellendes Ergebnis zu erhalten, vom niedrigsten frequenzmäßig 
noch berechenbaren Wert (128 errechnete FFT-Werte) ausgehen, und das 
nächste Band doppelt so breit definieren. Also für das niedrigste Band 
nimmt man das Ergebnis der FFT für die niedrigste Frequenz. Dem 2. Band 
weist man nun das Ergebnis der 2 nächsten FFT-Ergebnisse zu, also 
verdoppelt jeweils für das nächsthöhere Band die Anzahl der 
Eingangswerte. Dem 3. Band weist man demzufolge das Ergebnis der 4 
darauf folgenden FFT-Ergebnisse zu, dem 4. Band weist man nun das 
Ergebnis der 8 darauf folgenden FFT-Ergebnisse zu...

Tja, und da die FFT lediglich 128-stufig vorliegt, ergibt sich schon 
rein mathematisch keine sinnvolle Kombination der Ausgangswerte (der 
FFT) auf 4 oder 8 Kanäle. Rein empirisch ermittelt, kann das allerdings 
schon wieder anders aussehen. Wirst Du wohl selber ran müssen. Der ADC 
des AVR macht sich da im übrigen bezüglich seines Fequenzgangs auch noch 
bemerkbar. ;-)
Viel Erfolg!

mfg

von gnurfderzwerg (Gast)


Lesenswert?

danke, mann! nach einigen Spielereien läuft das ganze ziemlich gut, auch 
wenn ichs ein bisschen anpasen musste, weil ich keine 16MHz-Quarze hab. 
In Kombination mit 16000cd-Leds werd ich das ganze mal als 
Lichtinstallation auf ner Party ausprobieren :) wollt das eigentlich 
selber programmieren, war aber nicht so flügge mitm einbinden der fft. 
hast auf jeden Fall nen Bier gut, falls du ma nach Lpz kommst ^^

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

gnurfderzwerg schrieb:
> danke, mann! nach einigen Spielereien läuft das ganze ziemlich gut, auch
> wenn ichs ein bisschen anpasen musste, weil ich keine 16MHz-Quarze hab.
> In Kombination mit 16000cd-Leds werd ich das ganze mal als
> Lichtinstallation auf ner Party ausprobieren :) wollt das eigentlich
> selber programmieren, war aber nicht so flügge mitm einbinden der fft.
> hast auf jeden Fall nen Bier gut, falls du ma nach Lpz kommst ^^

ist gebongt

von A. G. (tipfix)


Lesenswert?

Guten Morgen

Habe mir mal die Schaltung zur Lichtorgel nach gebaut und den Code auf 
den Atmega8 gebrannt. Funktioniert super.
Meine Frage jetzt, kann man das zurück-faden beschleunigen? Bin leider 
in C nicht so bewandert. Komme eher aus der Bascom-Fraktion.
Grund ist das bei den tiefen Tönen der Effekt etwas leidet.
Ich Danke für die Hilfe und wünsche schöne Ostern.

Andreas

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Hi,

ändere folgende Zeilen
1
  if(peak[x]) peak[x]--;
z.B. nach
1
  if(peak[x]) {
2
    if(peak[x]<1) 
3
      peak[x]-=2;
4
    else
5
      peak(x)--;
6
}

Das wird aber den Interrupt gehörig aufblasen, keine Ahnung, ob's dann 
noch reicht.

mfg

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Nachtrag:

Der war Mist
1
    if(peak[x]<1)
sollte heißen
1
    if(peak[x]>1)

noch viel besser:
1
  if(peak[x] > 1) peak[x] -= 2;
2
  else peak[x] = 0;

mfg

von A. G. (tipfix)


Lesenswert?

Tach

Super, Viel besser. Der Atmega scheint damit kein Problem zu haben. 
Hatte in deiner mydefs.h schon mal versuchsweise das eingetragen:

#define PWM_STEPS 256  // PWM-Schritte pro Zyklus

Ist richtig schnell. Sehe keine Verzögerung.
Ich danke für dieses schöne Projekt. Hatte schon lange nach so was 
gesucht.

Andreas

von A. G. (tipfix)


Lesenswert?

Ich nochmal.
Bei mir leuchtet die LED für die hohen Frequenzen immer ganz schwach.
Hast Du eine Idee woran das liegen kann?
Vielleicht irgend welche Störungen?
Ansonsten funktioniert Sie schon, blinkt schön mit.

Andreas

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Hi,

wenn Du das Eingangsfilter mit den im Schaltplan angegebenen Bauteilen 
aufgebaut hast, wüßte ich nicht, warum die LED für die höchsten 
Frequenzen nur trübe funzeln sollte. Mal ein ganz anderes Musikmaterial 
gewählt? (Nicht die ollen Kamellen aus'm 2. Weltkrieg)
Falls es "Störungen" wären, würde dann die betreffende LED eher zu oft 
und zu hell leuchten.
Wenn's in meinen Augen nicht perfekt funktionieren würde, hätte ich das 
nie auf die Öffentlichkeit losgelassen.

mfg

von A. G. (tipfix)


Lesenswert?

Abend

Du hast mich falsch verstanden. Ohne Signal leuchtet Sie schwach. Bei 
Signal ganz normal und auch hell. Und ich habe Musik von vor bis nach 
den 2. Weltkrieg.

MfG

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Hi,

jepp, habe Dich total mißverstanden. Dann ist's wohl doch 'ne Störung, 
vielleicht Rauschen?
Vielleicht hilft's ja, den Wert für die Anzeigeschwelle (THRESHOLD in 
der mydefs.h) nach oben zu biegen.
z.B.
1
#define THRESHOLD  3000

gute N8

von A. G. (tipfix)


Lesenswert?

Guts Nächtle.

von Bernd O. (bitshifter)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich will mir die Lichtorgel auch aufbauen und habe noch ein paar Fragen
zum Analogteil (die SW ist mir soweit klar). Ich habe den Schaltplan aus
dem ZIP des ersten Beitrages angehängt, damit die Diskussion einfacher
wird.

Was ich glaube verstanden zu haben:
1) U1B verstärkt das Eingangssignal um Faktor 11 und beeinflusst den
Frequenzgang nicht nennenswert.
2) R6/C3 ist ein Tiefpass mit einer Grenzfrequenz von ca. 42 kHz.

Hier mein Fragen:
3) Was macht der Schaltungsteil um U1A (der nach dem Tiefpass R6/C3
hängt)?
4) Statt des Line-Eingangs würde ich gerne ein billiges Elektretmikrofon
anschließen. Reicht es aus wenn ich R3 (Poti) entferne und das Mikrofon
nebst 10k "Pullup" zur Speisung des Mikrofons an C1 anschließe? Ggf. ein
Poti für R4 um die Verstärkung einstellbar zu machen, also so ähnlich
wie hier: Beitrag "Re: Nf- Verstärker für Elektretmikrophon an AD 
Wandler des ATtiny84"
oder brauche ich einen weiteren OPV um die nötige Verstärkung von ca.
500-fach (10 mV Mikro auf 5V ADC-Eingang) hinzubekommen?

Gruß,
Bernd

von Bernd O. (bitshifter)


Lesenswert?

... noch eine kleine "Nachfrage":
Wie verteilen sich denn die Frequenzbänder bei der Chan-Bibliothek? Wenn 
ich sagen wir mal mit 5 kHz sample, habe ich dann bei 128 Stützstellen:
5 kHz  2  128 => 20,5 Hz pro Stützstelle äquidistant, also:
19,5 Hz, 39 Hz, 58,5 Hz ... 2500 Hz ?

Gruß,
Bernd

von Bernd O. (bitshifter)


Lesenswert?

Argh - gerade gesehen:
Der Link in meinem Posting von gestern Nacht hat das Copy&Paste nicht 
überlebt. Hier nun der Link:
Beitrag "Re: Nf- Verstärker für Elektretmikrophon an AD Wandler des ATtiny84"

Gruß,
Bernd

von Bernd O. (bitshifter)


Lesenswert?

Weiß wirklich niemand, was die Schaltung um U1A macht?


Gruß,
Bernd

von Alex H. (hoal) Benutzerseite


Lesenswert?

Bernd O. schrieb:
> Weiß wirklich niemand, was die Schaltung um U1A macht?

Der Teil von R6 bis U1A ist ein Tiefpassfilter. Siehe z.B.
http://focus.ti.com/lit/an/sloa093/sloa093.pdf
ab Seite 4 oder wesentlich ausführlicher in
http://focus.ti.com/lit/ml/sloa088/sloa088.pdf

von Bernd O. (bitshifter)


Lesenswert?

Alex H. schrieb:
> Bernd O. schrieb:
>> Weiß wirklich niemand, was die Schaltung um U1A macht?
>
> Der Teil von R6 bis U1A ist ein Tiefpassfilter. Siehe z.B.
> http://focus.ti.com/lit/an/sloa093/sloa093.pdf
> ab Seite 4 oder wesentlich ausführlicher in
> http://focus.ti.com/lit/ml/sloa088/sloa088.pdf

Hallo Alex,

vielen Dank! Die Dokumente sind ja wirklich sehr informativ. Demnach 
handelt es sich also um einen Tiefpass 1. Ordnung (RC-Glied R6/C3) und 
einen nachgeschalteten Tiefpass 2. Ordnung nach Sallen-Key (von R7 bis 
Ausgang U1A). Einfach "durchrechnen" lässt es sich so aber nicht, da der 
Spannungsfolger zwischen dem RC-Glied und dem Tiefpass 2. Ordnung fehlt 
und sich so alles gegenseitig beeinflusst. Aber ich schätze, dass die 
Grenzfrequenz irgendwo zwischen 30 und 40 kHz liegen wird, da sie für 
R6/C3 bei ca. 42 kHz liegt und für R8/C5 nach der Formel aus SLOA093 bei 
ca. 31 kHz liegt (ABER: die Formel aus SLOA093 passt nicht ganz zur 
Schaltung, da C4 nicht 2xC5 ist, sondern eher 20xC5 und der 
Spannungsfolger (== niedrige Impedanz) zwischen den beiden Filterstufen 
fehlt). Vermutlich hilft hier nur eine Simulation wirklich weiter, aber 
so wichtig ist's mir nicht - ich wollte es nur verstehen).

Gruß,
Bernd

von Bernd O. (bitshifter)


Lesenswert?

Bernd O. schrieb:
> ... noch eine kleine "Nachfrage":
> Wie verteilen sich denn die Frequenzbänder bei der Chan-Bibliothek? Wenn
> ich sagen wir mal mit 5 kHz sample, habe ich dann bei 128 Stützstellen:
> 5 kHz  2  128 => 20,5 Hz pro Stützstelle äquidistant, also:
> 19,5 Hz, 39 Hz, 58,5 Hz ... 2500 Hz ?

Zweiter Anlauf - diesmal mit wirklichen Daten:
Der Vorteiler des ADC ist auf 64 eingestellt (ADPS2 und ADPS1 gesetzt). 
Bei 16 MHz Systemtakt ergibt sich ein ADC-Takt von 250 kHz und bei den 
13 Takten pro Wandlung ("free running") eine Abtastfrequenz von 19,2 
kHz.

Damit sollten sich diese Frequenzen für die Stützstellen ergeben:
1
19,2 kHz / 2 / 128 => 75,1 Hz Abstand der Bänder
2
Band 0: 0 - 75 Hz
3
Band 1: 75 Hz - 150 Hz
4
  :
5
  :
6
Band 127: 9540 - 9615 Hz

Passt das so - oder habe ich etwas übersehen?

Gruß,
Bernd

von Alex H. (hoal) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bernd O. schrieb:
> Vermutlich hilft hier nur eine Simulation wirklich weiter, aber
> so wichtig ist's mir nicht - ich wollte es nur verstehen

Wenn ich nicht falsch abgezeichnet habe, sollte die Grenzfrequenz bei 
9kHz liegen.

von Bernd O. (bitshifter)


Lesenswert?

Alex H. schrieb:
> Bernd O. schrieb:
>> Vermutlich hilft hier nur eine Simulation wirklich weiter, aber
>> so wichtig ist's mir nicht - ich wollte es nur verstehen
>
> Wenn ich nicht falsch abgezeichnet habe, sollte die Grenzfrequenz bei
> 9kHz liegen.
Hallo Alex,

danke für die Mühe! Der Schaltplan passt (der 1 nOhm-Widerstand wird 
wohl für die Simulation nötig gewesen sein - oder?). Die 9 kHz würden 
auch gut zur höchsten Frequenz der FFT (9,6 kHz) passen (siehe mein 
Posting zuvor).

Ich hab' mir gleich mal LTspice geholt und Dein Modell geladen. Bisher 
war ich eher bei der SW unterwegs und analog relativ ahnungslos (siehe 
meine Postings zuvor mit geschätzten 30 und 40 kHz Grenzfrequenz ;-). Da 
ist ein solches Tool wirklich Gold wert!

Danke,
Bernd

von Alex H. (hoal) Benutzerseite


Lesenswert?

Bernd O. schrieb:
> der 1 nOhm-Widerstand wird
> wohl für die Simulation nötig gewesen sein - oder?

Nein, keineswegs. Ich hatte noch etwas rumgespielt und schlicht 
vergessen, ihn wieder rauszunehmen.


> Die 9 kHz würden
> auch gut zur höchsten Frequenz der FFT (9,6 kHz) passen (siehe mein
> Posting zuvor).

Genau. Vor allem passt es zu den 19kHz Samplingfrequenz um 
Aliasing-Artefakte zu reduzieren.

von Freed (Gast)


Lesenswert?

Hi!
Mir gefällt das Projekt, und wollte es nachbauen.
Das Problem, was sich bei mir grade auftut ist, dass ich keinen 
Kondensator mit 27nF finde (C4). Wie wichtig ist denn der Wert? zuz e 
sauch einer mit 33 oder 22nF??

Grüße, Freed

von Bernd O. (bitshifter)


Angehängte Dateien:

Lesenswert?

Freed schrieb:
Hallo Freed,

ich hab mal mit der Simulation gespielt. Die Variation der Kapazitäten 
geht eben auf den Amplitudengang und/oder auf die Steilheit des Filters.

Ich würde sagen eher 33 nF als 22 nF. Ansonsten kannst Du auch durch 
Reihen- und Parallelschaltung von Kondensatoren den Wert annähern.

Letztlich handelt es sich hier aber auch nicht um ein HiFi-Gerät, so 
dass es sich vermutlich nicht so krass auf das optische Ergebnis 
durchschlagen wird.


Gruß,
Bernd

von Freed (Gast)


Lesenswert?

Hi!
Danke für die schnelle Antwort.
Dann werde ich wohl einfach den 33nf nehmen :)
Grüße, Freed

von Freed (Gast)


Lesenswert?

Hallo nochmal!
ich habe mir den Plan grade nochmal angeschaut und verstehe nicht ganz 
wozu die ganzen 100nF Kondensatoren sind!
C13 -> Stückkondensator für Mega8
C10 -> Stückkondensator für LM358N
C9 -> ??

wäre nett wenn mich jemand erhellen könnte :)
Freed

von Stephan (Gast)


Lesenswert?

Hallo!
Irgendwie finde ich die Stelle nicht, bei der der Eingangspin 
konfiguriert wird, also an welcher Stelle definiert wird, das genau der 
ADC5 (PC%) als Eingang für die A/D-Wandlung genommen wird.
Kann mir da bitte jmd weiterhelfen?

MfG

von Dennis K. (dkeipp)


Lesenswert?

Freed schrieb:
> wozu die ganzen 100nF Kondensatoren sind!
> C13 -> Stückkondensator für Mega8
> C10 -> Stückkondensator für LM358N

Der Atmega braucht 2 (VCC & AVCC), und schon sind keine mehr über ;-)

von Elektrofreak (Gast)


Lesenswert?

Hallo,

noch eine Anmerkung: ich hatte bei der LED mit den höchsten FFT-Werten 
(ca. 9,6kHz) ab und zu ein kurzes aber intensives Aufleuchten. Ich denke 
das kommt vom "Rauschen des ADC" weil dieser Peak immer zwischen Wert 60 
und 63 liegt (Kann man mal ausgeben lassen).

Falls jemand auch diese Peaks hat, muss man nur die letzten 3 FFT-Werte 
ausschließen, d.h. folgende Zeile
[c]
if((n >= 35) && (n <= 63)) {...}
{/c]
durch folgende ersetzen:
[c]
if((n >= 35) && (n <= 60)) {...}
{/c]

Falls ihr diese Peaks habt oder auch nicht würde ich mich über eine 
Rückmeldung sehr freuen ;-)

von Mats M. (elektrofreak)


Lesenswert?

Gibt es eigendlich eine einfache Variante, das niederfrequente Spektrum 
aus den gegebenen Werten besser aufzulösen? Beispielsweise indem man nur 
die Hälfte der Messwerte nimmt (Werte 0 bis 63) und auf alle geraden 
Arraypositionen verteilt (Bsp. 0, 2, 4, ...) und die Zwischenstellen mit 
Interpolationen auffüllt (gibt natürlich hochfrequente Verzerrungen, die 
sind hier uninteressant)?

Bei mir flackert die niederfrequenteste LED häufig, sodass ich denke, 
dass es Sinn macht, den Bereich z.B. bis 320Hz in 10Hz Schritten 
aufzulösen und dann die Werte im Bereich von 0 bis 150Hz aufsummieren.

Was gibt es noch für Möglichkeiten?

von kleinerkeiler96 (Gast)


Lesenswert?

hallo...ich habe bereits alles fertig...jedoch scheitert das brennen...

fehlermeldung: Error  1  #error T_PWM zu klein, F_CPU muss vergr÷sst 
werden oder F_PWM oder PWM_STEPS verkleinert werden 
D:\Elektronik\avr\Projekte\lichtorgel\main\mydefs.h  30  6  main



was soll ich machen...fehlermeldung durchgegangen, bisschen 
probiert...aber es geschah nichts...


kann mir jemand helfen.?

von Juris P. (latvian3dman)


Lesenswert?

Hello again! I am still enjoying this Lichtorgel, it works so great: 
clean frequency separations, nice fade-in, fade-out. I see here posts 
with pieces of code how can fading parameters changed. Like i posted 
before, unfortunately i am not a programmer guy, but I just have 
question, in principle: could it be possible to make a switch to some 
microcontroller pin, by pressing which, those fading parameters (faster 
fade, slower fade) could be changed? I am not asking anyone to write 
that code (but that would be super :) ), i am just asking, is there 
"room" for that, can it be done?
Thanks, Danke!

P.S.: anyone else here lichtorgel fans that maybe have some links to 
other good projects?

von Tim S. (Gast)


Lesenswert?

Hallo,

Wurde Bernd O's Frage bezüglich eines Mikrofons anstatt des Line-In 
eigentlich schon
beantwortet, oder überlese ich gerade etwas?

Mit einem Mikrofon wäre es (für mich) ein super teil!



Gruß
Tim S.

von c_programmer (Gast)


Lesenswert?

hi...
ich habe genau das gleiche problem wie kleinerkeiler...

folgende fehlermeldung kommt zum vorschein:

#error T_PWM zu klein, F_CPU muss vergr÷sst werden oder F_PWM oder 
PWM_STEPS verkleinert werden

ich habe alles mögliche probiert wie es da steht...was kann man da noch 
machen.?

danke

von Pappnase (Gast)


Lesenswert?

moin,

das sieht so aus, als ob F_CPU nicht definiert ist.
In AVR-Studio zu finden unter
"Project -> Configuration Options -> Frequency", da sollte 'ne 16000000 
stehen.

Bzw. könnte man auch am besten in der "mydefs.h" folgende Zeile 
einpflanzen
1
#define F_CPU 16000000UL
so in etwa
1
#if defined (__AVR_ATmega644__) || defined (__AVR_ATmega168__)
2
#define TIMSK      TIMSK1
3
#endif
4
5
#define F_CPU 16000000UL

Aber eigentlich ist das Konfigurationsmenü vom AVR-Studio
dafür zuständig, denn schließlich stelle ich bei Bedarf noch 'n bisserl 
mehr an den Optionen rum (Optimierung, Lib's einbinden, zusätzliche 
Kommandozeilenoptionen).

mfg

von Karsten (Gast)


Lesenswert?

Hallo Lötlackl,

habe Probleme das Projekt in AVR Studio 6 zu konvertieren. Hast Du eine 
funktionierende Version für das AVR Studio 6?


Gruß

Karsten

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Nö. Atmel-Studio 6 funktioniert bei mir nicht.
(Antiviren-Programm bemäkelt make, wenn's ausgeschaltet ist, kommen 
solch widersinnige Error's wie z.B.
1
Error   unknown opcode `typedef'
)

Ich lasse die Finger von dem Schrott.

von Karsten (Gast)


Lesenswert?

Schade,

aber Danke für die Bemühung.

von Lötlackl *. (pappnase) Benutzerseite


Angehängte Dateien:

Lesenswert?

Kommando zurück! Atmel-Studio hat doch eine Importfunktion.
Damit klappt's. Im Anhang das Ergebnis.

mfg

von Lötlackl *. (pappnase) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mich, insbesondere auf diesen Thread beziehend
Beitrag "ELM Chan FFT mit AVR Studio 6"
genötigt gefühlt, dort erworbene Erkenntnisse in einem
frisch aufgesetzten "Atmel-Studio 6"-Projekt umzusetzen.
Es ergab sich folgendes. siehe Anhang

mfg Lötlackl

von Jano (Gast)


Lesenswert?

Ich hätte eine Frage, du addierst ja jeweils den Bereich der 6 Bänder 
zusammen. Also bei der 1. Anzeige nur einen Wert, bei der letzten 35-63. 
Aber wieso muss man die mit mehr als einem Wert nichtmehr teilen?
Werden die Werte die aus dem FFT kommen kleiner bei zunehmender 
Frequenz?

Danke

von Jano (Gast)


Lesenswert?

Kann mir keiner helfen? Ich stehe gerade etwas auf dem Schlauch...

von Jano (Gast)


Lesenswert?

Nochmal ich, hoffentlich geh ich niemand auf die Nerven...

Aber ich habs jetzt mit 6 LEDs im Betrieb, mit dem Unterschied, dass ich 
das Programm für 8 MHz geändert hab (muss ich da noch was an der 
AD-Wandlung ändern?)

Und dass ich eine Matrix von 6x8 (evtl. später 8x8, ist aber erstmal 
zweitrangig) benutzte.

Funktioniert soweit auch.

Was mich etwas stutzig macht, wenn ich meinen Frequenzgenerator 
anschließe und ihn von 1kHz auf 10kHz langsam hochdreh, dann verläuft 
der Ausschag nicht wie von mir erwartet langsam von links nach rechts, 
sondern in dießem Frequenzbereich ca. 5-10 mal von links nach rechts und 
wieder zurück. Ist das so gewollt? Hab ich da noch wo einen Fehler drin? 
Liegt es an einer anderen AD Wandlungs Geschwindigkeit?

Danke schonmal im vorraus :)

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

soso, 8Mhz..

ändere mal folgenden Abschnitt
1
#if defined (__AVR_ATmega8__)
2
    ADCSRA = _BV(ADEN)|_BV(ADSC)|_BV(ADFR)|_BV(ADIF)|_BV(ADPS2)|_BV(ADPS1);
3
#elif defined (__AVR_ATmega32__) || defined (__AVR_ATmega644__)
4
    ADCSRA = _BV(ADEN)|_BV(ADSC)|_BV(ADATE)|_BV(ADIF)|_BV(ADPS2)|_BV(ADPS1);
5
#endif
nach:
1
#if defined (__AVR_ATmega8__)
2
    ADCSRA = _BV(ADEN)|_BV(ADSC)|_BV(ADFR)|_BV(ADIF)|_BV(ADPS2)|_BV(ADPS0);
3
#elif defined (__AVR_ATmega32__) || defined (__AVR_ATmega644__)
4
    ADCSRA = _BV(ADEN)|_BV(ADSC)|_BV(ADATE)|_BV(ADIF)|_BV(ADPS2)|_BV(ADPS0);
5
#endif
Dann stimmt der ADC-Vorteiler wieder.

von Bernd O. (bitshifter)


Lesenswert?

Jano schrieb:
> Ich hätte eine Frage, du addierst ja jeweils den Bereich der 6 Bänder
> zusammen. Also bei der 1. Anzeige nur einen Wert, bei der letzten 35-63.
> Aber wieso muss man die mit mehr als einem Wert nichtmehr teilen?
> Werden die Werte die aus dem FFT kommen kleiner bei zunehmender
> Frequenz?

Hier steht's:
Beitrag "Re: [C] AVR-Lichtorgel per FFT MEGA8 32 644"

Gruß,
Bernd

von Jano (Gast)


Lesenswert?

@Bernd Danke, habs jetzt mal so nach Gefühl verteilt, mal schauen wie es 
am Ende rauskommt, zur Not könnte man ja die Werte ja noch mit einem 
Faktor anpassen

@Lötlackel jetzt stimmt zwar der Takt, aber das Ergebnis ist noch immer 
das selbe...

Jano schrieb:
> wenn ich meinen Frequenzgenerator
> anschließe und ihn z.B. von 1kHz auf 10kHz langsam hochdreh, dann verläuft
> der Ausschag nicht wie von mir erwartet langsam von links nach rechts,
> sondern in dießem Frequenzbereich ca. 5-10 mal von links nach rechts und
> wieder zurück.

woher kommt das?

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

> wenn ich meinen Frequenzgenerator
> anschließe und ihn z.B. von 1kHz auf 10kHz langsam hochdreh, dann verläuft
> der Ausschag nicht wie von mir erwartet langsam von links nach rechts,
> sondern in dießem Frequenzbereich ca. 5-10 mal von links nach rechts und
> wieder zurück.

Möglicherweise liegt's an der für mich unverständlichen Entscheidung, 
einen 8MHz-Takt verwenden zu wollen. Dir ist hoffentlich klar, daß sich 
damit die Ausführungsgeschwindigkeit der fft-Routinen verdoppelt!
Die dauern nämlich schon ein paar Millisekunden.
Ein sinnvoller Frequenzbereich zum testen wären übrigens so 75Hz - 
9,6kHz.

mfg

von Philipp W. (johnnyflash)


Lesenswert?

Jano schrieb:
> woher kommt das?

Klingt für mich nach Unterabtastung -> Aliasing. Bei FFT und Soft PWM 
hättest du dem Controller ruhig mal die 16 MHz gönnen können.

von Jano (Gast)


Lesenswert?

Das heist, durch die 8 MHz arbeitet der AD-Wandler zu langsam?

Ich hab leider nur einen ATMega32L8 (die Stromsparversion).
Den kann man laut Datenblatt nur mit bis zu 8 MHz betreiben. Ich kann 
natürlich versuchen einen 16 MHz Quarz dran zu machen und hoffen dass er 
da mitmacht.

Ansonsten, externer AD-Wandler? Wobei es einfacher wäre die normale 
ATMega32 Variante zu kaufen.

Ich dachte halt am Anfang, wenn man mit 16 MHz auf 60Hz kommt, dann 
reichen mir die 8 MHz für 30 Hz.

Ich probier das jetzt mal mit dem anderen Quarz.

von Jano (Gast)


Lesenswert?

Update:

Ich hab wohl den dümmsten Anfängerfehler überhaupt gemacht, hatte den 
internen Takt eingestellt :D

Jedenfalls läuft der Controller auch mit 16 MHz ohne Probleme, habs 
jetzt auch auf 8 Kanäle erweitert.
Die Aufteilung hab ich nach Gefühl gemacht und die Kanäle jeweils mit 
einem Faktor noch etwas angepasst.

Funktioniert echt klasse!

Ein kleines Problem gibts noch, manchmal (ca. alle 5-10 sec) gibts 
zufällig auf einem Kanal einen max. Ausschlag, aber nur ein paar ms, 
kaum sichtbar, wird auch nicht "gehalten". Stört kaum, aber ich schau 
trotzdem mal ob ich das noch wegbekomm.

Falls jemand Interesse an Schaltplan und Programm hat lad ichs gern 
hoch.

von Tipfix (Gast)


Lesenswert?

Abend Gemeinde

Bilder und event. Videos wären nicht schlecht.
Würde gern mal sehen wie es so bei anderen funktioniert.

Gruß Tipfix

von Juris P. (latvian3dman)


Lesenswert?

Hello, Jano!
Please, can we have your version schematics and HEX? Thanks in advance!
Sorry that ich spreche deutsch nicht... :(

von Bernd (Gast)


Lesenswert?

Hallo wenn möglich hätte ich gern den Plan.
und das Programm wenn möglich mit etwas erklärung (bin C neuling)

Gruß Bernd

PS weiter so
echt tolle projekte

von Juris P. (latvian3dman)


Lesenswert?

Hello all!
Not sure if Author of this Lichtorgel is even aware, but this "color 
organ" is still quite popular, and considered "a classic", for its high 
quality of operation.
Recently there has been attempts to modifications of this Color Organ. 
New features are button that changes fading speed for channels, with 
status LED what speed is current, there is music pause detection with 
output to pin, also rudimentary attempts to make auto-effects in music 
pause. And all this now exists also in 8-channel version (original has 
6). If anyone interested, all schematics, sources and binaries here:
http://lightportal.at.ua/2015/Lightorgel/LO.zip
Also big article about it all, but in russian:
http://lightportal.at.ua/publ/cvetomuzykalnye_ustanovki/lichtorgel_internacionalnaja_cvetomuzyka/3-1-0-96
We, who made those efforts) certainly hope somebody will modify this 
beatufil device even further and better.

von Breeze (Gast)


Lesenswert?

Sagen Sie mir bitte, wie Sie die folgenden Änderungen an der Regelung 
vornehmen: Ersetzen BC639 Transistoren an die  IRF8313 30V Dual 
N-Channel Power MOSFET Transistoren, und fügen Sie den Audio-Eingang von 
dem Elektret-Mikrofon. Schema mit den Änderungen wäre sehr 
wünschenswert.

von Juris P. (latvian3dman)


Lesenswert?

Hey, Breeze!
bitte entschuldigen Sie mich, ich weiß nicht gut Deutsch sprechen.
Here You modified schematics for electret microphone input:
Hier Sie veränderten Schaltpläne für Elektret-Mikrofon-Eingang:
http://lightportal.at.ua/2015/Lightorgel/Lightorgel-8chan-shema_v1.4.gif
Schematics file in "sPlan" format, and other files for modified 
Lichtorgel You will find is this archive:
Schaltplan-Datei in "sPlan" Format und andere Dateien für modifizierte 
Lichtorgel Sie werden feststellen, ist dieses Archiv:
http://lightportal.at.ua/2015/Lightorgel/LO.zip

von Laswek (Gast)


Lesenswert?

Ich kann nicht finden eine Tabelle der Entsprechungen Kanäle 
(Frequenzen) und Farben. Welche Farbe entspricht jedem der 
Frequenzkanäle? Um in der Lage zu finden, die der MCU Ausgangskanäle, um 
die gewünschte Farbe zu verbinden.

Ist es möglich, die Geschwindigkeit der Signalverarbeitung zu erhöhen, 
um die Verzögerung zwischen Ton und Farbe auf ein Minimum zu reduzieren?

von Andreas (Gast)


Lesenswert?

@Lötlackl,

So ändern Sie den Code mit 4-Kanälen zu arbeiten? (und auch die Leistung 
zu verbessern).

Danke und mit freundlichen Grüßen
Andreas

von Katzen (Gast)


Lesenswert?

Was ist die FFT-Länge und Abtastfrequenz in diesem Projekt?

von Highii H. (highii)


Lesenswert?

Ich habe aufbauend auf dem Code, der für den Atmega gemacht wurde, die 
FFT auf einem xMega (atxmega256a3bu) implementiert. Es funktioniert 
soweit ganz gut.
Den das AVR-Projekt dazu findet ihr in diesem Post:
Beitrag "Re: Lichtorgel nach Elm-Chan mit xMega"

Gruß
highii

von Radan (Gast)


Lesenswert?

Juris P. schrieb:
> Hey, Breeze!
> bitte entschuldigen Sie mich, ich weiß nicht gut Deutsch sprechen.
> Here You modified schematics for electret microphone input:
> Hier Sie veränderten Schaltpläne für Elektret-Mikrofon-Eingang:
> http://lightportal.at.ua/2015/Lightorgel/Lightorge...
> Schematics file in "sPlan" format, and other files for modified
> Lichtorgel You will find is this archive:
> Schaltplan-Datei in "sPlan" Format und andere Dateien für modifizierte
> Lichtorgel Sie werden feststellen, ist dieses Archiv:
> http://lightportal.at.ua/2015/Lightorgel/LO.zip

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.

von Radan (Gast)


Lesenswert?


von PeterZA (Gast)


Lesenswert?

@Juris Perkons

Hello there, why would you not rather use the new Raspberry Pi RP2040 
Micro Controller, that has 16 PWM Channels which are controlled in 
hardware - then you could still add 10 more LEDs.
- This is also used in the Raspberry Pi Pico (board size: 5cm x 2cm), 
which is available at US$4.00.

Reference:
https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html


- The smallest RP2040 board is from Pimoroni, with a 21mm square 
footprint!!

Reference:
https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html#boards-from-pimoroni

von hacker-tobi (Gast)


Lesenswert?

@Peter: Do you see at the last entry of Juris P is from 2015 and the 
project is from 2009?

Anyway, building with a raspberry PI ESP32 ... would be a new project.

von Juris P. (latvian3dman)


Lesenswert?

Hello! :) Believe it or not - I am still around! :-D
Merry Christmas, Everyone!
Yes, activities around this were long ago. But! I still cherish this, 
and spin-offs that people created, by heavy rework and expansion of 
code.
I still have one built right now, right there! Here is it on video:
https://youtu.be/UXTvm5KXCtg
I think this version is on Atmega328.
My main creative hobby now is different - I create game assets in Unreal 
Engine (see other videos on my channel). But, I am actually bookmarking 
music-to-light recent findings I find on youtube, on Github.
I collect because I know at some point I will need "hobby swap", then I 
will build some of those, again :)
Should we swap known links here?
In any case - best wishes to everybody! Stay creative.

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.