Hi,
letzes Jahr habe ich eine Schaltung gebaut, die am Köpfhörer-Ausgang des
PC hört und je nachdem ob L oder R ein Signal ankommt, wird etwas
anderes vom µC ausgeführt (Lichtschaltung). Das Signal am PC trenne ich
mit DJ-Tool und einem Mischpult dahinter.
Leider ist meine Schaltung ziemlich anfällig was Störungen auf der
Leitung angeht. Hin und wieder denkt die Schaltung, dass auf L ein
Signal anliegt obwohl es auf R ist (durch Rückkopplungen meiner
Verstärker etc.).
Das Ziel damals war: Über das DJ-Tool wird die Schaltung gesteuert je
nachdem auf welchem Kanal (R/L) ein Signal/Musik ankommt.
Gibt es eine sinnvolle Möglichkeit dies umzudrehen? Also, dass die
Schaltung die Musik im DJ-Tool steuer? Wohl eher nicht aber wenigstens,
dass die Entscheidung/Ermittlung welcher Kanal (R/L) gerade angesteuert
wird über den PC läuft und dieser das ganz klar mit einem digitalen
Signal (0/1) an den µC weitergibt?
Habt ihr eine Idee?
Viele Grüße und Danke
Klause
Den habe ich nicht mehr. Es war aber eine ganz einfache Erkennung eines
Audio-Signals über Transistoren. Würde aber gern etwas zuverlässigeres
oder über den PC steuerbares haben.
> Würde aber gern etwas zuverlässigeres oder über den PC steuerbares haben.
Dann trenne dich am besten von der Idee, den Audio Ausgang zum Steuern
digitaler Sachen zu missbrauchen.
Nimm lieber USB. Ein USB-UART Adapter liefert topsaubere serielle Daten,
die du direkt mit dem seriellen Eingang des Mikrocontrollers verarbeiten
kannst.
> Aber mit welchem Programm kann ich denn über USB am> besten Daten an den µC senden?
Mit einem selbst geschriebenem!?!?!
Nahezu jede Sprache bietet die Möglichkeit seriell zu quatschen.
Ausnahme: PHP unter Win. Da klappt das schreiben nicht.
Little Basdart schrieb:> zum Beispiel mit Java und der jSSC klasse,> um mit einem RS232 zu kommunizieren
wenn er schon µC schreibt denke ich unter win an LCC32 in C
aber man könnte ja auch turbo pascal unter DOS (duck und wech)
Naja an sich brauche ich eine Möglichkeit irgendwie das Signal von
meinem DJ-Tool in L/R zu unterscheiden. Das geht aber sicher auch mit
Software auf meinem PC selbst oder?
Wäre doch eine gute Idee und dann das jeweilige "neue" Signal mit 0 oder
1 anstatt analog über USB an den µC senden.
VG
> das Signal von meinem DJ-Tool in L/R zu unterscheiden.
Ich bin gebürtiger deutscher, aber das verstehe ich trotz Wiederholung
nicht. Formuliere den Satz doch mal anders und erkläre, was denn genau
"das Signal" ist.
Also das DJ Tool (Trakstor Studiu) spiel Musik ab. Es ist so
eingestellt, dass auf Kanal 1 ein Gewitter und auf Kanal 2 eine
gruseliges Lachen abgespielt wird. Weiterhin ist eingestellt, dass das
Gewitter nur ein R-Stereosignal und das Lachen nur auf das
L-Stereosignal geht.
Am Ende läuft das so: Gewitter für 10 Sekunden, Lachen 30 Sekungen,
Gewitter 10 Sekunden, Lachen 30 Sekunden usw...
Das Ziel war nun, dass sobald das Gewitter kommt, meine Stroboskope
angehen. Sobald das Lachen kommt: Keine Strobos mehr aber grünes Licht.
Das steuer ich über einen µC, der mit ein paar Transistoren versucht zu
erkennen, ob gerade das Gewitter abgespielt wird oder nicht. Sollte dies
so sein werden die Strobos angeschaltet. Ansonsten das grüne Licht.
Sowei so gut. Leider habe ich aufgrund meiner Verstärker, wo am Ende das
Gewitter raus kommt bzw. das Lachen ein paar "Fehlsignale" oder eine
Rückkopplung oder was auch immer. Jedenfalls erkennt der µC hin und
wieder Gewitter, obwohl Lachen abgespielt wird.
Jetzt würde ich die ganze Schaltung gern etwas ändern oder
professioneller aufbauen. Ich dachte mir, dass die Erkennung, ob das
Gewitter abgespielt wird oder das Lachen auch am PC selbst erfolgen
kann, dieser könnte dann ein digitales 1-0-Signal an den µC senden. Dann
muss der µC nicht "versuchen" zu erkennen.
Ach so, jetzt hab ich's kappiert.
Da würde ich bei der analogen Schaltung mit Transistoren bleiben.
Anscheinen ist die verbesserungsbedürftig.
Dafür einen PC zu verwenden, erscheint mir reichlich unsinnig. Du
müsstest dazu ja einen AUdio-Eingang nutzen, das Signal per Software
auswerten und dann per USB mit dem Mikrocontroller kommunizieren.
Da ist der Weg über eine Transistorschaltung sicher viel naheliegender.
Poste mal den Schaltplan, dann schauen wir mal, was man da verbessern
kann. Und teile uns mit, welche Signalpegel am Ausgang deines DJ Tools
zu erwarten sind.
Stefan Us schrieb:> Dafür einen PC zu verwenden, erscheint mir reichlich unsinnig.
Naja, liegt Nahe einen PC zu verwenden, da...
> welche Signalpegel am Ausgang deines DJ Tools zu erwarten sind.
...dieses ominöse "DJ Tool" anscheinend ganz einfach PC-Software ist.
Weswegen man da jetzt unbedingt eine "Audio-Signalerkennung" braucht,
erschleißt sich mir nicht, zwei Lichtquellen kann man wohl auch anders
mitm PC schalten.
Ja,
da ich noch nie den µC mit dem PC über USB usw. gesteuert habe würde ich
das auch gern mal zwecks Weiterbildung ausprobieren.
Also am besten ein kleines Programm schreiben mit bspw. C# / VB.NET /
JAVA (die kann ich alle zumindest etwas) und dort Audiosignal abhören
(also das, was der Mediaplayer des DJ Tools an den Audioausgang des PC
sendet // wie das auch immer gehen mag) und in L/R trennen (geht das
denn mit Java etc?). Die Kommunikation mti dem µC ist ja dann denke mal
nicht mehr der Hit.
VG
* Speicher die Sounds als mp3.
* Schreibe ein PC-Programm (Python, etc.) was folgendes in Schleife
macht:
* Sende einem arduino über rs232 welcher effekt drann ist.
* Spiele zum effekt passenden Sound ab (funktionsblockierend oder
"warte in einer Schleife bis sound zu ende gespielt ist" programmieren)
entwickel arduino programm:
* buchstabe a empfangen -> grünes licht aus, blitzen
* buchstabe b empfangen -> blitzen aus, grünes licht
entwickel arduino programm:
* buchstabe a empfangen -> grünes licht aus, blitzen
* buchstabe b empfangen -> blitzen aus, grünes licht
Diese part zuerst ans laufen bringen, damit man wei das das geht und der
fehler dann beim pc-programm sein muss wenn es dann auf mal mit dem
pc-programm nicht mehr geht...
Siehe:
Arduino Tutorial Serielle Kommunikation
http://blog.openptv.org/?p=513
Kann dieses DJ Tool zufällig auch MIDI?
Wenn ja, einen MIDI-USB-Adapter kaufen, eine MIDI Spur dazu anlegen und
darüber die Kommunikation mit einem Mikrocontroller aufbauen.
Ist flexiebel und später einfach erweiterbar.
Christian_RX7
Also ich habe das so verstanden, er möchte ein Audiosignal
detektieren ob es vorhanden ist oder nicht.
Das geht so:
Audiosignal mit einem NF-Verstärker verstärken,
dann gleichrichten, dann folgt noch ein Schmitt-Trigger, fertig.
Dieses Problem wurde schon öfters hier im Forun
besprochen.
Bedenke, dass nicht jede Soundkarte mit einem Programm Audio aufnehmen
kann, was von einem anderen Programm erzeugt wurde.
Wer mal versucht hat, den Ton einer DVD-Wiedergabe aufzuzeichnen kennt
das womöglich.
Das solltest du erstmal ausprobieren, bevor du Geld für irgendwelche
Schaltungen ausgibst.
Wozu denn mit der Soundkarte Sound aufnehmen?
Er will nur detektieren, ob ein Audiosignal am Soundkartenausgang
anliegt oder nicht. Die ursprüngliche Schaltung scheint dahingehend
nicht zuverlässig zu funktionieren, also muss dort einfach der Fehler
gesucht und behoben werden. Oben wurden bereits NF-Verstärker als
Stichwort genannt.
Fertigen Schaltplan aus dem Internet saugen, nachbauen, fertig.
Dazu muss man doch keine Software schreiben und 'a' oder 'b' auf die
serielle schicken.
> Wozu denn mit der Soundkarte Sound aufnehmen?
Das hat der TO geschrieben - ich hatte auch schon vorher davon
abgeraten:
>"Also am besten ein kleines Programm schreiben mit> bspw. C# / VB.NET / JAVA ...und dort Audiosignal abhören> (also das, was der Mediaplayer des DJ Tools an den Audioausgang> des PC sendet // wie das auch immer gehen mag)
Und genau das geht eben nicht immer so einfach, wie man sich das denkt.
Vielleicht kann der DJ-Tool Traktor Studio scripting ja schon von Haus
aus, dann wäre es ja ein Leichtes, mit diesen billigen FTDI-USB-Dongles.
Sowas in der Art:
Start:
Stroboskop ON
Play Gewitter.mp3
Stroboskop OFF
Gruenlicht ON
Play Dummlache.mp3
Gruenlicht OFF
GOTO Start.
Günter Lenz schrieb:> Also ich habe das so verstanden, er möchte ein Audiosignal> detektieren ob es vorhanden ist oder nicht.> Das geht so:> Audiosignal mit einem NF-Verstärker verstärken,> dann gleichrichten, dann folgt noch ein Schmitt-Trigger, fertig.> Dieses Problem wurde schon öfters hier im Forun> besprochen.
Könnt ihr mir einen Tipp geben wie das geht oder wie man so eine
Schaltung nennt damit ich googeln kann?
Klaus schrieb:> Gibt es eine sinnvolle Möglichkeit dies umzudrehen? Also, dass die> Schaltung die Musik im DJ-Tool steuer? Wohl eher nicht aber wenigstens,> dass die Entscheidung/Ermittlung welcher Kanal (R/L) gerade angesteuert> wird über den PC läuft und dieser das ganz klar mit einem digitalen> Signal (0/1) an den µC weitergibt?
entweder du sendest L 1 oder R 1 per serielle an den µC
oder dein µC (Atmel?) nimmt per ADC L und R an und entscheidet nach dem
Pegel was zu tun ist.
Bei L1 oder R1 habe ich das Problem, dass ich am PC irgendwie erkennen
müsste, was am Audioeingang gerade passiert. Ich glaube mit einem Atmega
bekomme ich das eher hin (habe sonst keine Ahnung davon).
Okay also den A/D Wandler nutzen ja? Ich denke mal, dass ich ca. 0,2 V
maximal am Audioausgang haben werde (hatte das letztes Jahr gemessen).
Hatte dann eine einfache Schaltung mit gleichrichter und zwei oder drei
Transistoren hintereinander, um den Pegel auf 5V zu bekommen, damit es
der Atmega erkennen kann.
Ich denke mit einem NF Verstärker ist das einfacher oder? Habe nur
leider noch nie einen gebaut.
Phillip schrieb:> Okay also den A/D Wandler nutzen ja? Ich denke mal, dass ich ca. 0,2 V> maximal am Audioausgang haben werde (hatte das letztes Jahr gemessen).>> Hatte dann eine einfache Schaltung mit gleichrichter und zwei oder drei> Transistoren hintereinander, um den Pegel auf 5V zu bekommen, damit es> der Atmega erkennen kann.
alles ne Frage der AREF einige bieten ja intern 1,1V da sollten 0,2V
schon reichen, musst das nur positiv ansteuern, ggffs. eine
Transistorstufe vorschalten, der klemmt auch gleich die neg. Halbwellen
weg.
Audio, Trennkondensator, Transistor in Emittergrundschaltung, V ca. um
5-fach.
Also 0,2V am AREF klappt bei mir nicht.
Naja ich muss ja auch auf 3-5 V kommen, damit der µC alles auch als
Signal erkennt.
D.h. alles ab 0,1 V muss auf mind. 3-5V verstärkt werden.
Habe schon etwas im Forum gesucht aber die "richtige" Schaltung habe ich
noch nicht gefunden.
Bin gerade auf der Suche nach dem NF-Verstärker.
Hatte das hier gefunden:
http://www.pollin.de/shop/dt/NjA4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_NF_Verstaerker.html
Funktioniert aber wohl erst ab 1V am Eingang.
Benötige also erst einmal einen NF, der ab 0,2V funktioniert.
ODER
"Audio, Trennkondensator, Transistor in Emittergrundschaltung, V ca. um
5-fach." (von Post von Joachim B) Sollten aber 0,2 auf 1V verstärken
oder?
Nach dem NF dann einen gleichrichter (einfach). Danach einen
Schmitt-Trigger
(http://www.mikrocontroller.net/articles/Schmitt-Trigger).
Funktioniert das denn alles so?
Phillip schrieb:> Okay also den A/D Wandler nutzen ja?
Das bietet sich förmlich an.
> Ich denke mal, dass ich ca. 0,2 V> maximal am Audioausgang haben werde (hatte das letztes Jahr gemessen).
Kein Problem. Viele AVRs (praktisch alle Megas und auch einige Tinys)
bieten einen eingebauten Verstärker für die diffentielle Betriebsart der
ADC. Welchen AVR willst du denn verwenden?
Man braucht bei nicht allzu hohen Forderungen an die "Qualität"
jedenfalls nur ein paar Widerstände und Kondensatoren, um Audio-Ausgänge
da dran zu frickeln.
Für Stereo sieht das dann ungefähr so aus:
10k
1µ -|===|-oVcc
R || |
o--||-----*----------------oADC0
|| | | differentieller Kanal 1
-|===|--*-------oADC1
L || 100k |
o--||-----*----------------oADC2
|| | | differentieller Kanal 2
GND 1µ -|===|--*-------oADC3
o- 100k |
| -|===|-
| 10k |
--- ---
Welche ADC-Kanäle sich mit welchen anderen zu einem differentiellen Paar
koppeln lassen und welche Verstärkungsfaktoren verfügbar sind,
unterscheidet sich von AVR zu AVR. Datenblatt->ADMUX-Register. Da steht,
was geht. Und auch wie es geht.
Aufpassen: in der differentiellen Betriebsart liefert die ADC
vorzeichenbehaftete Werte. Bei 8Bit kein Problem, bei 10Bit aber schon,
man muß die nämlich vorzeichenrichtig auf 16Bit erweitern, wenn man dann
damit rechnen will.
Phillip schrieb:> Ich plane einen Atmega8 da der für meine bisherigen Wünsche immer> ausreichend war.
Der kann das aber nun gerade nicht. Wenn du auf solche Methusalems
abfährst: der Mega16 kann es. Bei dem stehen dann 10x und 200x als
Verstärkungsfaktoren zur Verfügung.
Oder ein wenig nach unten: der Tiny 84 kann es ebenfalls. Der hat
allerdings nur 20x zu bieten.
Phillip schrieb:> Also 0,2V am AREF klappt bei mir nicht.
kein Wunder du hast ADC noch nicht verstanden.
Was sind deine 0,2V überhaupt, Ueff, Up, Upp ?
nehmen wir mal den schlechtesten Fall, 0,2V peak
das wären an V Ref mit 1,1V und max. 1023 digits 0,2/1,1 * 1023 über 180
ADC Wert, das kann jeder deutlich von 0 unterscheiden.
Phillip schrieb:> Naja ich muss ja auch auf 3-5 V kommen
wieso das?
Phillip schrieb:> Ja ADC habe ich noch nicht kapiert.
ADC ein Wert von 0 bei 0V und 1023 bei Ref Spannung, die kann je nach
Atmel intern 1,1V oder 2,56V oder VCC oder eine externe Spannung sein.
Du könntest glatt eine Schwellspannung theoretisch Schottkydiode in
Durchlassrichtung mit 0,2-0,5V anlegen und dann sollte der ADC Wert 1023
bei Vref sein.
Phillip schrieb:> 3-5 V weil High ja erst ab ca.3 bzw. 3,5V
digital
Danke für die viele Hilfe.
Habe noch eine Verständnisfrage:
Da ich gerade keinen Atmega16 habe und etwas rumspielen wollte kann ich
nur einen Atmega8 verwenden.
Deshalb kurz so, wie ich alles verstanden habe:
- Grundsätzlich würde einfacher ADC funktionieren. Geht auch mit
Atmega8. Wenn 0 = 0V und 1023 bei Aref. Wenn ich einfach Aref = intern
2,56V nutze sollte ich gut die 0,2 von den 0V unterscheiden können.
- Besser wäre eventuell noch bei Atmega16 die Verstärkung um 200x. Dazu
müsste ich dann den differential mode nutzen. Damit wäre das noch
genauer oder?
Stimmt das so?
Das der Wert 1023 ist aufgrund der Schottkydiode habe ich nicht
verstanden. Hier würde ich doch nur den Wertebereich auf 0 bzw. 0,2 bis
Aref anstatt 0 bis Aref ändern oder? Durch die Diode habe ich doch
entweder 0 oder ab 0,2V Durchlass.
VG
Phillip schrieb:> Das der Wert 1023 ist aufgrund der Schottkydiode habe ich nicht> verstanden. Hier würde ich doch nur den Wertebereich auf 0 bzw. 0,2 bis> Aref anstatt 0 bis Aref ändern oder? Durch die Diode habe ich doch> entweder 0 oder ab 0,2V Durchlass.
ich verstehe nicht mal deinen Satz......
male mal ein Schaltbild, dann reden wir weiter.
Also ein einfacher ADC am Atmega8 bekommt das gut hin.
Habe noch ein Problem, dass der ADC in der Luft hängt, wenn ich nichts
angeschlossen habe aber ich denke der Anschluss muss nur mit einem
Widerstand auf Masse gezogen werden oder?
Zudem ist die Auflösung noch nicht so gut aber das wird mit dem
vorgeschlagenen Differential Mode sicher besser. Der Atmega16 ist aber
noch nicht da.