Forum: Projekte & Code Arduino Tongenerator musik machen


von gfl (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
anbei ein Tongenerator für den Arduino. Die ino-Datei ist nur ein 
Anwendungsbeispiel mit zwei Musikbeispielen und einem Rechteckgenerator, 
die .h-Datei ist die eigentlich interessante. Das ganze benutzt keinen 
Timer des Arduino wie in einem Beispiel hier vor einiger Zeit 
vorgestellt wurde.

Achtung: Da der Arduino 5V ausgibt, baut vor euren Verstärker einen 
Spannungsteiler oder macht ihn beim ersten probieren ganz, ganz leise, 
sonst schießt ihr euren Lautsprecher durch. Eure Verstärker erwartete im 
Lineeingang einen Nominalspannung von 0,75V.

Hat jemand eine einfache Schaltung, wie ich aus den 0V - 5V des Arduino 
einen -2,5V - 2,5V basteln kann, jedoch ohne eine negative 
Speisespannung zu haben? Das Problem wird dann natürlich sein, dass bei 
Arduino 0V eine -2,5V Spannung verstärkt wird, was jeden Lautsprecher 
nach Sekunden killen wird (hab ich schon mal gesehen, stinkt 
fürchterlich).

von HildeK (Gast)


Lesenswert?

gfl schrieb:
> Hat jemand eine einfache Schaltung, wie ich aus den 0V - 5V des Arduino
> einen -2,5V - 2,5V basteln kann, jedoch ohne eine negative
> Speisespannung zu haben?
Einen Kondensator und einen Widerstand? Oder sogar zwei Widerstände, 
dann hast du auch gleich deinen Spannungsteiler ....

> Das Problem wird dann natürlich sein, dass bei
> Arduino 0V eine -2,5V Spannung verstärkt wird, was jeden Lautsprecher
> nach Sekunden killen wird (hab ich schon mal gesehen, stinkt
> fürchterlich).
Das müsstest du genau erklären. Nach dem Kondensator gibt es nur für 
höchstens 100ms die -2.5V, genauso wird es höchstens für 100ms die +2.5V 
geben, auch wenn der Arduinoausgang dauerhaft auf 0 oder 5V stehen 
sollte.
Wo ist also das Problem?
Außerdem: so gut wie kein Audioverstärker kann DC dauerhaft übertragen, 
da ist immer ein Hochpass drin. Somit ist nicht mal der o.g. Kondensator 
unbedingt erforderlich.
Was du da gesehen und gerochen haben willst, würde mich schon 
interessieren ...

von Ralph S. (jjflash)


Lesenswert?

gfl schrieb:
> Das ganze benutzt keinen
> Timer des Arduino wie in einem Beispiel hier vor einiger Zeit
> vorgestellt wurde.

... und worin besteht nun der Vorteil KEINEN Timer zu verwenden (ausser 
dass du jede einzelne Note in einem Funktionsaufruf mit ewig vielen 
Parametern hintereinander schreiben musst).

Ich stelle mir gerade vor, ich möchte eine WAV-Audio Datei abspielen und 
würde hierfür jeden einzelnen analogen Spannungswert in einer 
Ausgabefunktion schreiben müssen und dazu angeben, wie lange dieser 
Spannungswert anstehen soll.

Gängige Praxis seit Contrad Zuse ist, dass ich ein Programm habe, dass 
Daten verarbeitet (heißt das nicht auch "elektronische 
Datenverarbeitung" - EDV ?)

Also generiere ich Daten (die Noten) die ich meinem 
Datenverarbeitungsprogramm - oder meiner Datenverarbeitungsfunktion - 
übergebe und diese dann abspielt.

By the way: worin besteht der Vorteil, Notenfrequenzen als float 
anzugeben, wenn diese beim Abspielen (nach einer Verrechnung) wieder in 
einen int ueberführt werden ?

gfl schrieb:
> Hat jemand eine einfache Schaltung, wie ich aus den 0V - 5V des Arduino
> einen -2,5V - 2,5V basteln kann, jedoch ohne eine negative
> Speisespannung zu haben?

Warum nimmst du, wenn du sowieso einen Verstärker am Portpin 
anschließend magst, nicht einen Spannungsteiler (vorzugsweise einen 
Trimmer) an dessen Knotenpunkt du einen Auskoppelkondensator hängst der 
dann zum Verstärker geht (so wie das 10000de Schaltungen auch machen)?
1
  o---+
2
      |
3
     ,-,
4
     | | R1
5
     '-'
6
      |
7
      +-----||----+-----o Out
8
      |           |
9
     ,-,         ,-,
10
     | | R2      | | RL
11
     '-'         '_'
12
      |           |
13
      |           |
14
     ---         ---

Steht eine 1 am Eingang des Spannungsteilers an, lädt sich der 
Kondensator auf und es fließt dieser Ladestrom durch R1 und RL. Durch 
diesen positiven Strom durch RL entsteht eine positive Spannung an 
diesem.

Steht eine 0 am Eingang des Spannungsteilers, liegen R1 und R2 
(praktisch, aber nicht ganz) auf Masse und sind somit parallel 
geschaltet !!!. Der Kondensator stellt nun eine Spannungsquelle dar und 
es entsteht ein Stromkreislauf in dem sich der Kondensator über R1//R2 
in Reihe mit RL entlädt. Der Strom in RL ist nun negativ und es entsteht 
hierdurch eine negative Spannung an RL.

von Ralph (scouter)


Lesenswert?

Hallo und guten Tag zusammen.

Ich hohle den Fred wieder raus, da ich vor dem gleichen Problem stehe 
und einige Fragen zu dem Spannungsteiler habe.

Ich würde ein 10k Trimmpoti als Spannungsteiler nehmen und einen 
Folienkondensator mit 2,2nF. Allerdings frage ich mich, wie groß RL sein 
sollte?
Steht dieser in Zusammenhang mit der Eingangsimpedanz vom genutzten 
Verstärker?

von Enrico E. (pussy_brauser)


Angehängte Dateien:

Lesenswert?

Ralph schrieb:
> Allerdings frage ich mich, wie groß RL sein sollte?

RL kann sogar ein 8 Ohm Lautsprecher sein. Eine Gegentaktschaltung mit 2 
Transistoren kann das schaffen. 2,2nF sind für die Übertragung von 
tieferen Frequenzen zu wenig. 470nF sollten es schon sein.

von Ralph (scouter)


Lesenswert?

Danke für deine Antwort.

Mit dem Kondensator habe ich mich schon impierisch herangetastet. Bin 
aktuell bei 1,5 uF und der scheint recht gut zu passen.

Der Trimmer ist mit 10k vielleicht etwas groß gewählt, werde noch andere 
ausprobieren.

Wenn ich RL verkleiner, wird auch die Signalspannung kleiner 
(logischerweise). Bei 10k liegt die Spannung bei rd. 200mVrms. Ich muss 
mal gucken wie es aussieht, wenn das geplante Verstärkermodul dranhängt.

Danke schonmal für die Hilfe.

Gruß

von Enrico E. (pussy_brauser)


Angehängte Dateien:

Lesenswert?

Ralph schrieb:
> Ich muss mal gucken wie es aussieht, wenn das geplante Verstärkermodul
> dranhängt.

Es gibt auch einen 8 Beiner, den TDA2822M mit einem fik und fertig 
integrierten Stereoverstärker. Dafür genügt tatsächlich ein 
vorgeschaltetes 10k log. Poti um die Lautstärke einstellen zu können.

Wenn du sowieso nur den AUX-Eingang deiner Stereoanlage verwenden 
willst, dann genügt auch nur das 10k Poti mit Koppelkondensator und 
sonst nix dahinter.

von Wastl (hartundweichware)


Lesenswert?

Ralph schrieb:
> habe ich mich schon impierisch herangetastet.

Nein! Allerhöchstens hast du das empirisch getan.

von Maxim B. (max182)


Lesenswert?

gfl schrieb:
> Hallo
> anbei ein Tongenerator für den Arduino. Die ino-Datei ist nur ein
> Anwendungsbeispiel mit zwei Musikbeispielen und einem Rechteckgenerator,
> die .h-Datei ist die eigentlich interessante. Das ganze benutzt keinen
> Timer des Arduino wie in einem Beispiel hier vor einiger Zeit
> vorgestellt wurde.

Leider fehlt hier die Möglichkeit, a1-Tonhöhe zu ändern. Die Musik 
beschränkt sich nicht auf die Tonhöhe a1=440 Hz.
Auch sehe ich hier nur gleichschwebende Stimmung, das ist auch eine 
Beschränkung.

Als Beispiel kann ich bekannte TLA-Stimmgeräte nennen, wo man die 
Tonhöhe in Schritt 0,01 Hz ändern kann und wo man neben vielen fertigen 
Stimmungen auch eigene Stimmungen einprogrammieren kann (Angabe in 
Cent-Abweichungen). Sehr bequem.

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.