PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lautsprecher an Portt mit TBA820M



PCMan
16.05.2007, 14:20
Hi Forum,
ich möchte an einen Mega8 (1Mhz intern getaktet) einen Lautsprecher (4Ohm) anschließen. Wie mach ich das?
Ne schmarrn, so wollte ich die Frage garnicht stellen ;)
Ich habe schon folgendes Versucht: Ich erzeuge an einem Port ein Signal:


#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <math.h>

#define SND_A_PORT PORTB
#define SND_A_DDR DDRB
#define SND_A_DD DDB0
#define SND_A_PIN PB0

void _delay_s(uint8_t sek){
for (int i=0; i!=sek; i++){
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
}
}


int main(void)
{
SND_A_PORT &= ~(1<<SND_A_PIN);
SND_A_DDR |= (1<<SND_A_DD);
_delay_s(1);
for(;;){
SND_A_PORT |= (1<<SND_A_PIN); //high
_delay_ms(3);
SND_A_PORT &= ~(1<<SND_A_PIN); //low
_delay_ms(3);
}
}

1) Wenn ich das Signal an eine Emitterschaltung mit einem Transistor gebe klappt das zwar, aber der Ton ist viel zu leise.

2) Gemäß dem Datenblatt des TBA820M (NF Amplifyer) (http://www.fieros.de/philips/tba820m.pdf) habe ich eine Testschaltung aufgebaut. CB=220pF, RF=33Ohm, R2=100Ohm. Zu R1 in Reihe habe ich noch einen 10µF Elko geschaltet. Das klappt auch prima, aber ich höre, bevor ich ein Signal ausgebe ein deutliches Rattern oder Schwingen im Lautsprecher. Woher kommt das? Wahrscheinlich irgendwo vom µC. Gibt es eine Möglichkeit, solche ungewünschte Geräusche abzudämpfen? Weiterhin würde ich auch gerne die Lautstärke etwas herabsetzen, wenn ich R1 aber modifiziere ändert sich nicht merklich was. Habt ihr da auch eine Idee?

Viele Grüße,
Simon

Hubert.G
16.05.2007, 15:32
Das Rattern und Schwingen könnte auch über die Stromversorgung kommen, müsstest du dir aber mit einem Oszi ansehen. Ansonst den µC mit entsprechenden Kondensatoren an den Spannungspin versorgen.
Die Lautstärke einstellen kannst du mit einem Poti 10k. Eine Seite auf den Ausgang des µC, die andere Seite auf GND und den Schleifer auf den Eingang des TBA.

Hubert

PCMan
17.05.2007, 14:57
Ah bin ich trottelig. Ich brauche ja, um die Lautstärke variieren zu können nicht verschiedene Wiederstände sondern einen Spannungsteiler da wo R1 ist. Poti.
Das Geräusch: also die Spannungsversorgung des µC habe ich wie im Wiki vorgenommen, mit dem Spannungs-IC 78S05. Könnte ich das Geräusch auch unterbinden, wenn ich beim Systemstart den Poortpin einfach gleich auf High/Low ziehe und ihn in dem Zustand lasse?
vG Simon

Hubert.G
17.05.2007, 15:49
Das mit den Kondensatoren am 7805 habe ich erwähnt weil es sehr oft vergessen oder unterbewertet wird.
Den Pin fix auf Low legen könnte was bringen.
Hubert

PCMan
17.05.2007, 20:55
Hi Hubert G.,
ich werde es mal testen und das Ergebnis dann hier posten.
VG Simon

PCMan
18.05.2007, 12:10
Hi,
mit dem Poti und dem Ausgang auf Low das klappt. Aber eines verstehe ich überhaupt nicht: ich verwende zur Erzeugung eines Signals folgenden Code:


#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <math.h>


void _delay_s(uint8_t sek){
for (int i=0; i!=sek; i++){
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
}
}



/*SND_A_PORT &= ~(1<<SND_A_PIN); //EN auf Low
SND_A_DDR |= (1<<SND_A_DD); //Ausgang*/




int main(void)
{

DDRB |= (1<<DDB0); //PB0 als Ausgang
PORTB &= ~(1<<PB0); //PB0 auf Low


_delay_s(5);
for(;;){
PORTB ^= (1 << PB0); //Toggle
_delay_ms(2);
}
}
Der Ton klingt nicht sauber.
Wenn ich aber DDRB |= (1<<DDB0); auskommentiere, dann klingt der Ton wunderbar. Unlogisch?

Hubert.G
18.05.2007, 15:50
Nein, nicht unlogisch. Wenn der Pin als Ausgang gesetzt ist, dann wird er hart von 0 auf 1 und zurück gesetzt. Kommentierst du das aus ist der Pin als Eingang gesetzt und du schaltest nur den PullUp mit etwa 50k ein und aus. Dadurch ist das Signal etwas runder und klingt schöner. Wenn du dir das mit einem Oszi ansiehst, wäre dir das sofort klar.
Hubert

PCMan
18.05.2007, 16:11
Hi Hubert,
würde mir das gerne ansehen, leider verfüge ich nicht über einen Oszi. Kannst du mir so ein Bild irgendwie erstellen? Okay, wenn's viel zu umständlich ist, dann musst du das nicht machen :-)
Die Geschichte mit den Pullups habe ich mir scxhon gedacht, aber mir war nicht klar, dass das ein "schöneres Signal" erzeugt. Wenn ich wie gesagt ein paar mal piepsen lassen möchte, *MUSS* ich den Port dann als Ausgang benutzen, oder kann ich ihn quasi über diese Pullup-Variante vergewaltigen, ohne dass der µC kaputt gehen könnte? Oder mal 50k Widerstände einbauen und die "Ausgangs-Variante" versuchen?
Viele Grüße,
Simon