www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Beschaltung um AudioSignal in uC zu bekommen


Autor: BaumPaul (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich teste gerade eine Schaltung, die ich im Netz gefunden habe. Es wird 
ein Audiosignal über eine Vorbeschaltung in einen uC gebracht (Bild im 
Anhang).

Die Software dazu löst dann Interrupts aus etc....da tut sich aber 
nichts.
Auf den ersten Blick konnte ich keine Fehler erkennen (bin allerdings 
nicht so Basic bewandert).

Hier mal der Code:
$regfile = "m88def.dat"
$crystal = 8000000


Ddrd = &B00010000
Portd.2 = 1


Config Timer1 = Timer , Prescale = 1 , Capture Edge = Rising , Noise Cancel = 1
Config Aci = On , Compare = On , Trigger = Rising

On Icp1 Oncapture
Enable Icp1

On Int0 Ontaster
Config Int0 = Falling
Enable Int0

Enable Interrupts

Dim Zaehler As Word
Dim Icr_neu As Word
Dim Icr_alt As Word
Dim Frequlong As Long
Dim Frequenz As Word
Dim A(5) As Word
Dim Frequsumme As Word
Dim Adizaehler As Integer
Dim Durchschnitt As Word
Dim Grenzeo As Word
Dim Grenzeu As Word
Dim Ton As String * 1
Dim Tonalt As String * 1
Dim Folge As String * 5
Dim Timeout As Word


Main:

Waitms 2

Frequlong = 8000000 / Icr_neu
Icr_neu = 1
Frequenz = Frequlong

Incr Timeout
Rem Portd.4 = 0

If Timeout > 40 Then
   Folge = ""
   Tonalt = ""
   Timeout = 0
End If

A(5) = A(4)
A(4) = A(3)
A(3) = A(2)
A(2) = A(1)
A(1) = Frequenz

Frequsumme = 0

For Adizaehler = 1 To 5
   Frequsumme = Frequsumme + A(adizaehler)
Next

Durchschnitt = Frequsumme / 5
Grenzeo = A(1) + 10
Grenzeu = A(1) - 10

If Durchschnitt > Grenzeu And Durchschnitt < Grenzeo Then

Portd.4 = 0
Select Case Durchschnitt
   Case 1050 To 1070 : Ton = "1"
   Case 1150 To 1170 : Ton = "2"
   Case 1260 To 1280 : Ton = "3"
   Case 1390 To 1410 : Ton = "4"
   Case 1520 To 1540 : Ton = "5"
   Case 1660 To 1680 : Ton = "6"
   Case 1820 To 1840 : Ton = "7"
   Case 1990 To 2010 : Ton = "8"
   Case 2190 To 2210 : Ton = "9"
   Case 2390 To 2410 : Ton = "0"
   Case 2590 To 2610 : Ton = "w"
   Case Else : Goto Main
End Select
   Else : Goto Main
End If

If Ton = Tonalt Then Goto Main

Tonalt = Ton
Folge = Folge + Ton
Timeout = 0

If Len(folge) = 5 Then

Rem Print Folge
Rem Portd.4 = 0

   If Folge = "29104" Then
      Portd.4 = 1
   End If

   Folge = ""

End If

Goto Main

Ontaster:

   Portd.4 = 0

Return

Oncapture:

Rem   Portd.4 = 0

   Zaehler = Timer1
   Icr_neu = Zaehler - Icr_alt
   Icr_alt = Zaehler

Return

Das ganze soll dann einen 5-Ton Decoder darstellen. Getestet wird mit 
einem Testprogramm für 5Tonschleifen, das eben so eine 5Tonfolge auslöst 
und über die Vorbeschaltung in den uC gelangt. Das einzige was bei mir 
passiert, dass die LED an PD4 an geht und an bleibt. Der Controller 
Mega88 läuft mit 8Mhz int. Takt.

Hab auch schon versucht vorher die LED auszuschalten um zu sehen wo es 
hackt (siehe 'Rems').
Kann ich irgendwie überprüfen ob die Vorbeschaltung richtig 
funktioniert? Da kann man zwar nicht viel falsch machen aber sicher ist 
sicher.

Danke schonmal

BPaul

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, die Schaltung ist nicht gerade perfekt.
Ich würde beide Pins auf halbe Betriebsspannung legen, und an einem der 
beiden das Signal über den Kondensator einkoppeln.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C8 läd sich auf. Und dann? Die Schaltung ist murks. Da der 
Analog-Comparator benutzt wird, muß außerdem die Spannung genug Hub 
haben, um die Schaltschwelle von x.xx Volt, die intern von der Referenz 
kommt oder extern bereitgestellt wird, zu über- und auch wieder zu 
unterschreiten.

Autor: BaumPaul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

danke für die Antworten. Wie sollte man dann deiner Meinung nach die 
Hardware aufbauen?

BPaul

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da müßte ein OV mit veränderlicher Verstärkung und veränderbarer 
Ruhespannung. Dessen Ausgang kommt an den Analog-Komparator. Auf die 
Weise kann man verschiedenste Eingangssignale auf ein genügend starkes 
und somit für den µC auswertbares Signal anpassen.

Autor: BaumPaul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

kannst das mal zeichnen wie du das meinst? Bin elektronisch nicht soooo 
bewandert. Es sind natürlich auch noch andere Möglichkeiten erwünscht!

Danke, BPaul

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Etwa so (Bild ist hier aus dem Forum aus Elektronik allgemein -> 
Operationverstärker). R3 und R5 stellst Du leicht unter die 
Referenzspannung des Analogkomperators so daß dieser noch nicht 
umschaltet. Mit R2 und R4 stellst Du die Verstärkung ein, könnte hier 
wohl schon so bleiben. Als OV nimmst Du den OPA340, der kommt mit 5V aus 
und beherrscht den rail-to-rail-Betrieb.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5-Ton-Decoder wie lustig habe gerade meinen 5-Ton-Codierer fertig.
Heißt: 5 Zahlen rein->5 Töne wieder raus^^

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. wrote:
> C8 läd sich auf. Und dann? Die Schaltung ist murks.

Eben, da kommt doch nichts durch - oder verstehe ich da etwas falsch?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, C2 in der oben geposteten OV-Schaltung muß prinzipbedingt 
entfallen. Hatte ich noch vergessen.

Autor: BaumPaul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

> R3 und R5 stellst Du leicht unter die
> Referenzspannung des Analogkomperators so daß dieser noch nicht
> umschaltet.

Das sagst du so leicht :-) Bin kein Elektroniker, kannst du mir da auf 
die Sprünge helfen?

Danke, BPaul

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du die interne Referenz von 1.1V nimmst, stellst Du den 
Spannunsteiler auf 1V ein. Du kannst ihn auch leicht über die 
Schwellspannung stellen, also 1,2V. Hauptsache, der Analog-Komparator 
kippt ohne Signal nicht ständig um. Im einfachsten Fall ersetzt Du R3 
und R5 durch einen Trimmwiderstand, dann kannst Du den Umschaltpunkt 
durch Drehen ermitteln und dann drehst Du wieder ein kleines Stück 
zurück.

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.
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.

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