Forum: Projekte & Code Arduino Tongenerator musik machen


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 gfl (Gast)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)?
  o---+
      |
     ,-,
     | | R1
     '-'
      |
      +-----||----+-----o Out
      |           |
     ,-,         ,-,
     | | R2      | | RL
     '-'         '_'
      |           |
      |           |
     ---         ---

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.