Forum: Mikrocontroller und Digitale Elektronik Wecker mit MP3 (vs1011) und SD-Card


von Nadine F. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

mein wecker geht mir mit sein gepiepse auf die nerven.

Also hab ich mir gedacht... baue ich mir ein mp3-wecker.
Das ist mein erstes großes projekt und nun hab ich noch ein paar fragen.

Schaltung ist soweit schon fertig (siehe Anhang), die schaltung wurde 
aus verschieden mp3-playern-projekten (man findet da ja ein paar im 
netz) zusammengestellt.
Zeichne zum ersten mal mit eagle, also bitte nicht meckern ;)

Nun ein paar fragen:
Der atmega läuft ja mit 5V und die SD-Karte + VS1011 laufen ja mit 3,3V.
Der pegel von 5V auf 3V wurde mit einen Spannungsteiler gemacht.
Beim VS1011 sind DREQ und SO (SDKarte DataOut) ohne Spannungsteiler, ist 
das richtig so?

Hinterm VS1011 soll ein kleiner Verstärker der 2 lautsprecher betreibt. 
Dazu wollt ich den TDA1552 nehmen und die Schaltung vom Datenblatt 
übernehmen (siehe anhang). Geht das so?

Als Spannungsregler wird es ein LF33 für die 3,3V und LM7805 für die 5V.

Ein grafik-display kommt dann auch noch hinzu und später bekommt mein 
wecker auch noch dcf77 spendiert.

Sieht noch jemand Fehler in der Schaltung? oder hat noch ein paar 
verbesserungsvorschläge?

danke,
liebe grüße
nadine

von Nadine F. (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch die verstärkerschaltung.

von holger (Gast)


Lesenswert?

Da frag ich mich ja wie das mit der ISP Programmierung
noch funktionieren soll. Gut, die SD-Karte kann man
rausziehen. Den VS wohl eher nicht.

von kaffeetas (Gast)


Lesenswert?

Hallo Nadine,

wenn du die 5V nur für den Mega brauchst würd ich nen "moderneren" Typ 
z.B 324P bzw gleich 644P nehmen, der bis 20Mhz spezifiziert ist und 
diesen dann bei 3,3V betreiben. Ist bei 16Mhz dann etwas ausserhalb der 
spec wird wahrscheinlich aber auch funktionieren.

Grüße
 kaffeetas

von Nadine F. (Gast)


Lesenswert?

Hmmm... stimmt.
Wie kann man das am besten lösen?
Mir würde da nur folgendes einfallen: den vs1011 mit jumper vom isp 
trennen.

von Nadine F. (Gast)


Lesenswert?

@ kaffeetas

hab mir mal den 644P angeguckt. Der gefällt mir :) dann hab ich mehr 
speicher für menü usw.

aber den mit 3,3V @ 16mhz betreiben? meinst du das geht wirklich gut?
die schaltung sollte ja stabil laufen.

von kaffeetas (Gast)


Lesenswert?

ich hab nen 644 auf meinem AVR-NET IO läuft derzeit bei 14,xxx MHz 
stabil bei 3,3V. Kanns morgen mal für Dich mit 16Mhz testen. Heißt aber 
dann noch nicht das es bei Dir dann auch funktioniert ist aber ein 
Indiz.

Grüße
 kaffeetas

von Sebastian (Gast)


Lesenswert?

Dein Wecker wird sich auch auf 8 MHz noch langweilen. Mit 16MHz schaff 
ich hier wav von HDD auf nen VS1011 und es ist sogar noch luft. Habs 
nicht genau gemessen, aber knapp 2Mbit durchsatz bekomm ich ungefähr 
hin. Ich glaube nicht, dass dann 8MHz bei mp3 ein Problem sein sollte. 
Auch wenn du von SD holst.

Zumal du ja die Daten eh direkt von der Karte zum dekoder schieben 
kannst. Bei meiner HDD MÜSSEN sie einmal durch den Controller.

Also: Den AVR auch auf 3,3V betreiben und du bist wieder ein paar Sorgen 
los.

Wegen Programmierbarkeit: Die Slaves brauchen natürlich einen Pullup auf 
der CS-Leitung, damit sie still sind, wenn der Controller sie nicht 
ansteuert. Außerdem kann man in die MISO-Leitungen einen Serien-R 
einbauen. Dann geht das Programmieren meist sogar, wenn der Slave auch 
was sendet.

DREQ würd ich auf nen Interrupt-pin des AVR legen. Wenn du richtig 
programmierst läufts sicher auch so, aber interruptgesteuert dürfte es 
wohl einfacher werden.
Ich komme dank ineffizienter HDD-Zugriffe nicht ohne Interrupt aus :-(

AVDD und DVDD des VS solltest du trennen. Z.B. durch eine Spule in der 
Zuleitung von AVDD. Du krigst sonst die Störungen des Digitalteils in 
die Analogsignale rein. Außer dir ist's für nen Wecker sowieso egal.
Außerdem braucht der VS noch einiges an Kapazitäten: Jeder VDD-Pin 100nF 
und analog- und digital-zweig nochmal ein paar µF (Steht im Datenblatt 
oder Appnote wie viel genau, aber 1-10 solltens tun).

Die Cs in den Ausgängen des VS sind etwas groß für mein Empfinden. Zumal 
der Eingang des TDA gerademal 220nF in Serie hat. Da sind die 100µF am 
VS dann wirklich unnötig groß.

Der SD-Karte solltest du auf jeden Fall auch noch 100nF an VCC 
spendieren. Hab gehört, dass die teilweise recht giftig reagieren, wenn 
der C nicht vorhanden ist.

Am AVR gilt das gleiche wie bei allen anderen ICs auch: An JEDEM Vcc-Pin 
muss ein 100nF Kondensator. Gibt sonst lustige Abstürze die man sich 
nicht erklären kann...

Ansonsten schaut das eigentlich schon ganz gut aus. Soll das geätzt 
werden? Dann würde ich noch Stiftleisten vorsehen auf die du die freien 
AVR-Ports legst. Das erleichtert es, später erweiterungen hinzubauen.

Gruß, Sebastian

von Nadine F. (Gast)


Lesenswert?

Vielen dank sebastian.

Wenn wirklich 8Mhz locker reichen, werd ich den atmega644 dann auf 10MHz 
@ 3,3V laufen lassen. Dann hab ich noch genug reserven für display, 
dcf77 und sonstige erweiterungen die mir noch einfallen.

Deine anderen verbesserungen hab ich jetzt im schaltplan geändert.

Nur mit der Spule in AVDD, weiß ich nicht wie ich das machen soll.

ich denke mal so:
+3,3V <--------(~~~)------> AVDD

was soll ich da für eine Spule nehmen und welchen wert? und muss bei 
reichelt zu bekommen sein.

von Malte _. (malte) Benutzerseite


Lesenswert?

> Wenn wirklich 8Mhz locker reichen, werd ich den atmega644 dann auf 10MHz
> @ 3,3V laufen lassen. Dann hab ich noch genug reserven für display,
> dcf77 und sonstige erweiterungen die mir noch einfallen.
8Mhz reicht locker: Ich habe hier einen AVR mit 16MHz laufen, und der 
kopiert damit 100KB/s von einer MMC Karte auf eine Netzwerkkarte.
Für eine 128kbit/s mp3 bräuchtest du 16KB/s. Selbst wenn deine 
Implementierung nicht so effizient ist, reichen 8Mhz problemlos. Und 
display + DCF77 sind da vernachlässigbar.

von Nadine F. (Gast)


Lesenswert?

Noch eine frage.

Wie ist das mit der isp-schnittstelle bei 3,3V?

Hab das AVR-Evaluations-Board von pollin zum programmieren.

Also strom auf schaltung... dann isp-kabel zum pollin-board... dann 
seriell zum computer.

Funktioniert das mit 3,3V?

liebe grüße nadine.

von tim (Gast)


Lesenswert?

Hallo

ICh habe auch einen VS1011 mit SD-Karte am laufe schaffe auch locker 
320kbit/s MP3 datein.
ICh habe ein AtMega644 @ 5V 14,7 MHz angeschlossen und die Pegelwandlung 
erfolgt mit eine 74HC4050 (5V -> 3,3V) und zurück mit einem 74HCT125.

Mal eine frage dazwichen ich habe den Vs1011 mit 12.288Mhz am laufen. So 
weit so gut aber da der SPI-Takt mit dem Quarz zusammen hängt wollte ich 
mal fragen ob man auch einen 24.576Mhz 3. OBerton von z.B. Reichel 
nehmen kann?

von Nadine F. (Gast)


Angehängte Dateien:

Lesenswert?

So hab mal die änderungen jetzt alle im schaltplan drin.

änderungen:
   - ISP schnittstelle mit einem 74HC4053 vom vs1011 getrennt
   - am vs1011 die fehlenden blockkondensatoren hinzugefügt
   - am vs1011 avdd und dvdd getrennt und mit spulen 10µH
   - DREQ liegt nun am INT0
   - 100n am sd-slot hinzugefügt
   - output-elkos auf 10µF umgestellt

Bleibt nur noch die frage wegen dem programmieren über die 
isp-schnittstelle mit 3,3V?

danke schonmal an alle,
mfg nadine

von Sebastian (Gast)


Lesenswert?

10µH solltens tun. Passt also, wie du das eingeplant hast. Allerdings 
braucht nur der Analogteil des VS so eine Entkopplung.
Schau dir das hier mal an. Da wird denk ich klar, wie ich das genau 
meine:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

Deine SPI-Slaves brauchen auf jeden Fall noch einen Pullup auf der 
CS-Leitung. So wie's jetzt ist geht der AVR beim Programmieren in Reset 
-> die Pins werden hochohmig -> deine Slaves suchen sich aus, ob sie 
lieber aktiv oder passiv sind und treiben dann unter Umständen gegen 
deinen Programmer.
Der 74HC4053 kann auch wieder raus. Das was du damit bezwecken wolltest 
macht er so sowieso nicht.
Setz lieber in die SPI-Leitungen der Slaves noch ca. 1kOhm in Serie. 
Dann wird der Strom von Slave zu Programmer auch dann nicht zu groß, 
wenn doch mal was schief geht und die beiden gegeneinander treiben.

Wegen Programmierbarkeit bei 3,3V: Das hängt von deinem Programmer ab. 
Wenn man's ganz korrekt machen will muss man einen levelschifter 
dazwischen schalten. Meist genügen aber auch Serien-Rs (470 Ohm oder 
so). Dann fließt halt ein Bischen Strom über die Clamping-Dioden des 
AVRs. Allerdings sehe ich diese lösung in Zusammenhang mit deinem 
SPI-Bus etwas kritisch. Ich würde mich mal nach levelshiftern umschaun.


Oberton-Quarz geht am VS10xx nicht. Es gibt spezielle Beschaltungen für 
diese Quarze, die du halt nachbauen müsstest, aber einfach tauschen geht 
nciht. Du kannst aber einen Quarzoszillator ranhängen. Das läuft bei mir 
einwandfrei.
Aber so weit ich mich erinnere ist die SPI-Frequenz sowieso nur direkt 
nach dem Booten durch die 12MHz begrenzt. Sobald man den Clock-Doubler 
eingeschaltet hat zählt die interne Frequenz, also 24Mhz. Aber schau 
besser nochmal im Datenblatt nach.

Was ich grad noch seh:
Der Pullup am Reset des AVR ist etwas klein. Der darf ruhig 4,7k oder 
auch 10k haben. Bei mir läuft alles mit 10k pullup und 100nF gegen 
Masse. Das Problem ist, wenn der Pullup zu stark, kann der Programmer 
den Pin nicht mehr gegen Masse Treiben. Hängt halt auch wieder vom 
Programmer ab.

Mehr hab ich jetzt nicht gefunden. Sollte dann soweit erstmal laufen :-)

Sebastian

von tim (Gast)


Lesenswert?

>Oberton-Quarz geht am VS10xx nicht. Es gibt spezielle Beschaltungen für
>diese Quarze, die du halt nachbauen müsstest, aber einfach tauschen geht
>nciht. Du kannst aber einen Quarzoszillator ranhängen. Das läuft bei mir
>einwandfrei.

Ok danke für deine Info da muss ich mich wohl mal nach einen Grundton 
umsuchen.

>Aber so weit ich mich erinnere ist die SPI-Frequenz sowieso nur direkt
>nach dem Booten durch die 12MHz begrenzt. Sobald man den Clock-Doubler
>eingeschaltet hat zählt die interne Frequenz, also 24Mhz. Aber schau
>besser nochmal im Datenblatt nach.

Stimmt laut datenblatt:
SPI Input Clock Frequency² CLKI/6
² Value for SCI reads. SCI and SDI writes allow CLKI/4

Und CLKI steht ja für Internal Clock Frequency also die schon durch den 
Clock-Doubler durch ist.

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Hallo,

ich lese hier schon ziemlich lange mit, und habe mich jetzt auch mal 
angemeldet.

Im Anhang ist mein Player, der seit einigen Monaten mehr oder weniger 
zufriedenstellend in meinem Autoradio läuft (Kassettenlaufwerk 
rausgeschmissen), und dort den CD-Wechsler ersetzt.

Der Prozessor läuft mit 12,288 MHz, und der gepufferte Prozessortakt 
geht dann an den MP3-Chip.

Ansonsten habe ich mich bei der Beschaltung des VS1011 an die 
Application Notes von VLSI gehalten 
(http://www.vlsi.fi/en/support/applicationnotes.html). In den dort zu 
findenden "Layout Considerations" wird übrigens von einer Induktivität 
an AVCC abgeraten.

Leo

von Nadine F. (Gast)


Angehängte Dateien:

Lesenswert?

Nochmal vielen dank, sebastian.
hab schaltplan geändert.

änderungen:
  - den 74HC4053 weg
  - 1kOhm in den spi-leitungen der slaves
  - pullup in der cs-leitung von der sd-karte
  - spule in dvdd entfernt


muss sonst noch irgendwo ein pullup?

Sry, bin schaltungstechnisch nicht so begabt. ich löte und programmiere 
lieber :)

Werd mir dann nen usb-isp-programmer holen der umschaltbar ist auf 3,3V. 
Wollt ich mir eh schonmal holen, damit ich auch auf mein lappi 
programmieren kann.

Und noch ne ganz ganz kleine frage:
Hab mir folgenden quarz bei reichelt ausgesucht: 24,576000-MQ
Der hat 4 pins. 1 und 3 wie ein ganz normales quarz anschließen.. aber 
was ist mit den pins 2 und 4? einfach an ground oder frei lassen?

danke,
mfg nadine

von tim (Gast)


Lesenswert?

>Und noch ne ganz ganz kleine frage:
>Hab mir folgenden quarz bei reichelt ausgesucht: 24,576000-MQ
>Der hat 4 pins. 1 und 3 wie ein ganz normales quarz anschließen.. aber
>was ist mit den pins 2 und 4? einfach an ground oder frei lassen?

Die Zwei Pins kannste weg lassen bzw sind nur Löt punkte

von Leo C. (rapid)


Lesenswert?

> muss sonst noch irgendwo ein pullup?

Ja, an XCS. Und ein Pulldown an XRESET. Dann können die 
SPI-Serienwiderstände wegfallen.

GPIO0..3 sollten Pulldowns haben.
TEST an DVDD statt AVDD.

> Hab mir folgenden quarz bei reichelt ausgesucht: 24,576000-MQ
> Der hat 4 pins. 1 und 3 wie ein ganz normales quarz anschließen.. aber
> was ist mit den pins 2 und 4? einfach an ground oder frei lassen?

Schau Dir nochmal die Produktbeschreibung auf der Reichelt-Seite an:
"Pad 2 & 4: Metal lid and ground"
Also auf GND hängen.

Leo

von Nadine F. (Gast)


Angehängte Dateien:

Lesenswert?

So ich hoffe der schaltplan ist jetzt korrekt.

änderungen:
   - xcs 10k pullup
   - gpio 100k pulldown
   - xreset 10k pulldown
   - spi serienwiderstände entfernt

danke an alle die mir geholfen haben.

werd dann später mal bilder online stellen wenn der wecker fertig ist.
soll ein gehäuse aus gfk werden... hab schon nen schönes design im kopf 
:)

von tim (Gast)


Lesenswert?

Könnstet du die Board datei mit rein hängen? oder sogar die *.sch und 
die *brd das wäre echt super!

von holger (Gast)


Lesenswert?

AREF lässt du einfach offen. Der gehört nicht an VCC.
Zwischen AVCC und AGND noch einen 100n. Das der immer
wieder eingespart werden muss... Kosten doch nix die Dinger.
An AREF am besten auch gleich noch einen 100n falls
der ADC später doch mal benutzt wird.

von Nadine F. (Gast)


Lesenswert?

> AREF lässt du einfach offen. Der gehört nicht an VCC.
> Zwischen AVCC und AGND noch einen 100n. Das der immer
> wieder eingespart werden muss... Kosten doch nix die Dinger.
> An AREF am besten auch gleich noch einen 100n falls
> der ADC später doch mal benutzt wird.

die 100n an avcc und agnd hätt ich schon reingemacht, hatte ich nur im 
schaltplan vergessen.
und warum ich aref an vcc gepackt, weiß ich nicht... dummer fehler.


> Könnstet du die Board datei mit rein hängen? oder sogar die *.sch und
> die *brd das wäre echt super!

hab die *.sch datei rangehangen mit den obrigen korrekturen. nen board 
hab ich nicht erstellt, weil die schaltung auf lochraster kommt.
nur für den vs1011 wird ne platine gefräst wo dann auch die blockkondis, 
elkos und quarz zum vs1011 raufkommt... und dann alles auf stiftleisten 
rausgeführt wird. Das board für den vs1011 macht mein dad auf arbeit, 
davon hab ich keine ahnung.

von Nadine F. (Gast)


Angehängte Dateien:

Lesenswert?

sry anhang vergessen :(

von tim (Gast)


Lesenswert?

>Aber so weit ich mich erinnere ist die SPI-Frequenz sowieso nur direkt
>nach dem Booten durch die 12MHz begrenzt. Sobald man den Clock-Doubler
>eingeschaltet hat zählt die interne Frequenz, also 24Mhz. Aber schau
>besser nochmal im Datenblatt nach.

>>Stimmt laut datenblatt:
>>SPI Input Clock Frequency² CLKI/6
>>² Value for SCI reads. SCI and SDI writes allow CLKI/4

Das hier meinte ich:

Note: As tWL and tWH, as well as tH require at least 2 clock cycles, the 
maximum speed for the SPI
bus that can be used for read operations is 1/6 of VS1011e’s external 
clock speed XTALI. For write
operations maximum speed is 1/4 of XTALI.

von Humpe (Gast)


Lesenswert?

Hallo Leute

Hab auch mal ein bisschen mitgelesen und einige Tips verwenden können. 
Danke dafür an alle.
Hab nun mein Layout bestellt und bin nun an der SW.

Noch eine Frage: Wie funktioniert das genau mit dem direkten Übertragen 
der Daten von der SD-Karte auf den VS1011?
Hab eine FAT16-Bibliothek, in der ich das File suche und öffne 
(funktioniert hoffentlich :) ).
Wie wären nun die weiteren Schritte?
Hab eben auf dem Prozi noch weitere Interrupts die zur gleichen Zeit 
auftreten, und da wärs natürlich schön wenn ich nicht noch mit 
Audio-Daten hantieren muss.

Gruss
Humpe

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.