PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SD / MMC an Atmega, Schaltplan



andieh
13.02.2009, 17:41
Hallo!

Ich habe heute den ganzen Tag schon im Internet und hier im Forum gesucht, bin aber mit dem Ergebnis nicht so recht zufrieden. Ich möchte mit einem Atmega WAV Dateien von einer SD / MMC Karte lesen.

Auf der Seite von Ulrich Radig gibt es ja eine recht simple Bibliothek zum Lesen von SD-Karten. Auch ein Schaltplan ist dabei, jedoch nur einer mit Dioden und Spannungsteiler. Und je mehr ich darüber lese, umso öfter lese ich "das ist nur zum Testen gut, mach das mit nem Spannungsregler". Für die 3.3 Volt ist das auch klar, aber wie mache ich das auf den Datenleitungen. Gibt es da besser Lösungen als die Spannungsteiler?

Wäre schön, wenn jemand einen guten und soliden Schaltplan hätte.
Als Mikroprozessor würde ich gerne einen Atmega8 benutzen, da ich lediglich lesen möchte von der Karte. Aber ich habe auch einen Atmega32 hier, was meint ihr? Wenn ich später Schreibzugriff möchte, ist der kleine eher überfordert, oder?

Danke für eure Tipps.

pyr0skull
13.02.2009, 18:58
Einen Schaltplan kann ich dir zwar nicht liefern, die Pegelwandlung wird aber mit einem Bustreiber funktionieren.

andieh
13.02.2009, 19:12
Hmm, das sagt mir jetzt mal so rein gar nichts. hab auch nur bei Reichelt etwas gefunden. (http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A316;GROUPID=2946;ARTICLE=39 907;START=0;SORT=user;OFFSET=16;SID=28RfKvbqwQARwA ABuyPxwe94880c48306c51b095e673e56db27bb)

Aber wie schließ ich die an und brauch ich da für jeden atmega-sdkarte port einen?

pyr0skull
13.02.2009, 19:31
Ich meine sowas: Reichelt (http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A2231;GROUPID=2930;ARTICLE=3 177;START=0;SORT=user;OFFSET=16;SID=296-g0PqwQAR0AAFE3ymw8f283082d92cd062ef409f544bd1983e)

Zu der Verwendung kann vielleicht jemand anders noch etwas sagen, da ich noch nicht genug mit Bustreiber rumgebastelt habe um da eine wasserdichte Anleitung verfassen zu können.

Besserwessi
13.02.2009, 21:08
Bei den Bustreibern sind oft 4 bis 8 Kanäle in einem Chip. Die 74 HCT... Serien geht gut, um von kleinen Spannungen auf 5 V Logik zu kommen. Für die andere Richtung z.B. ein die 74HC4050.

Für die Richtung von der hohen zur niedrigen Spannung reicht oft auch ein Spanungsteiler aus. Die andere Richtung geht noch so, wenn der Unterschied in der Spannung nicht zu groß ist.

Am einfachsten ist es natürlich den µC auch mit 3.3 V laufen zu lassen.

Der Mega8 ist vor allem dann überfordert, wenn man die Daten auf der SD-Karten mit Filesystem betreiben will. Ohne Filesystem sollte lesen und schreiben gehen. Mit Filesystem wird es vor allem langsam, denn der Mega8 sollte knapp RAM haben, um die FAT zu puffern.

andieh
14.02.2009, 02:24
joah der Atmega läuft auf 5 Volt, weil alle anderen Atmegas im System auch 5 Volt haben, das wird sonst da wieder kompliziert.

Wie kann ich denn für eine Datenleitungen zwei ICs benutzen? Ich mein, da ist doch nur eine Verbindung, da kann doch dann nur ein Modul hängen. Gibts keinen Baustein von 3,3 auf 5 volt und zurück?

Primär soll auch erst mal nur lesen gehen, und das sollte der Atmega schaffen. Wenn die Schaltung gut ist, ist das auch später überhaupt kein Problem, den achter gegen nen 32 zu wechseln.

chientech
14.02.2009, 08:54
Hi
schau dir das mal an.
Ist einfach und sollte funktionieren.

andieh
14.02.2009, 13:33
Den Schaltplan hatte ich schon einmal irgendwo gesehen, aber der hat eben genau das, was ich nicht wollte. Die Dioden für die 3,3 Volt und einen Spannungsteiler zwischen Atmega und SD-Karte. Was ich dort ebenfalls nicht verstehe sind die i2c Leitungen (mit Pullup) zur SD-Karte?

Besserwessi
14.02.2009, 14:01
Die 2 Leitungen mit Pullup sind wohl kein I2C bus, sondern vermutlich zum Abfragen von Tastern fürs erkennen der Karte und für den Schreibschutz.

Das mit den Dioden ist nicht so ideal, denn bei wenig Last ist die Spannung vielleicht dich etwas hoch. Etwas besser wäre ein Spannungsteiler und eine Transistor als Emitterfolger dahinter. Wenn der Strom nicht allzu knapp ist wäre eine Grundlast (z.B. LED) für die "3.3 V" auch nicht schlecht. Zumindestens sollte man noch einen Kondensator für die Versorgung der Karte spendieren.

Bernhard667
14.02.2009, 15:04
Hallo,

für die Richtung 5V Logikpegel runter nach 3.3V kannst Du den 74LVX04 verwenden, der hat 5V tolerante Eingänge.
Für die Gegenrichtung tut es jeder 74HCTxx. Die haben TTL Eingangsschwellen.

Die Betriebsspannung 3V oder 3.3V einfach mit einem Spannungsregler erzeugen.

Anbei ein Ausschnitt aus einem Schaltplan.

Bernhard

Besserwessi
14.02.2009, 18:30
Die Lösung mit den Widerständen um den Pegel runterzu kriegen hat im wesenlichen 2 Nachteile: Es wird einiges an Strom verbraucht, bei der gezeigten Schaltung etwa 1 mA wenn der Ausgang high ist. Das Ausgangssignal ist etwas hochohmiger und damit langsamer. Bei dem noch eher langsamen Signal vom AVR sollte das aber noch nicht wirklich stören. Man könnte auf Kosten von mehr Strom das ganze aber auch etwas schneller machen.

Die Signalrichtung vom SD zum AVR ist etwas knapp, da wäre ein HCT Gatter nicht schlecht. Meistens wird es aber auch ohne gehen, zumindest wenn die Spannung wirklich 3.3 V sind und nicht nur 3 V.

andieh
14.02.2009, 18:34
Die ganze Geschichte find ich halt nur deshalb komisch, weil das schon so viele Leute gemacht haben, aber scheinbar keiner so Richtig. Das mit dem Spannungswandler für die 3,3 Volt ist mir auch klar, das ist kein Problem.

Nur auch die Lösung von Bernhard667 ist mir nicht ganz klar. Wieso sind da 2 von den Bustreibern in Reihe geschaltet? Und hatte ich nicht gelesen, das die mehr als einen Eingang haben?

Will da halt jetzt nicht wieder etwas bauen, was dann so halbwegs läuft, schließlich brauch ich auch etwas Performance, da ich schließlich .wav Dateien von der Karte abspielen möchte!

X-917
14.02.2009, 20:35
Könnte man da vielleicht etwas mit einem max232/3232 machen?
Wenn man ein bisschen an den Kondensatoren herumprobiert...?
MfG

Besserwessi
14.02.2009, 21:04
Das mit den 2 Treibern hintereinander ist einfach: das sind keine echten Treiber, sondern inverter.

Den max232 oder so kann man vergessen, die sind zu langsam.

Wenn man genug Strom zur verfügung hat, ist der Weg von 5 V nach 3 V über die Spannungsteiler kein wirkliches Problem. 5-10 mA an Strom kann es aber schon brauchen, wobei das CS Signal auch langsamer/sparsamer betrieben werden kann.

andieh
14.02.2009, 21:58
ok, also von den 5V runter auf die 3.3V sollte kein Problem mehr sein jetzt, das ist mir klar. Da nehme ich den hier: LT 1086 CT3,3 (http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A216;GROUPID=2913;ARTICLE=39 524;START=0;SORT=user;OFFSET=16;SID=28RfKvbqwQARwA ABuyPxwe94880c48306c51b095e673e56db27bb) mit 2 Angstkondensatoren 100nF.

Aber welchen Wandler nehme ich zwischen Atmega und der Karte für die Datenleitungen? Das muss doch schon mal irgendwer aufgebaut haben?

Besserwessi
14.02.2009, 22:22
Für die Richtung zum AVR würden mit spontan 2 Gatter vom 74HCT04 oder 74HCT14 einfallen. Eine Alternative wäre es die Masse um etwa 0,6-1 V anzuheben. Dann würde es ohne Anpassung von 3 V nach 5 V. Nur müßten die Spannungsteiler für die andere Richtung dann 3 Widerstände haben.

Der Spannungsregler sollte übertrieben groß sein. Ein LP2950-3.0 sollte auch reichen, sind aber nur 3 V. Aufpassen, die low drop regler brauchen oft mehr als 100nF hinter dem Regler. Oft wird ein 22 µF Elko gebraucht.

andieh
14.02.2009, 22:31
seh ich das Richtig, das ich zwei 74HCT04 brauche, weil die die Signale invertieren? Kann ich alle 3 Leitungen an einen 74HCT04 anschließen oder brauch ich dann 3 * 2, also 6 von den Teilen?

Puh, wasn Uffwand, wie man hier in Hesse sacht.

Geht auch dieser Spannungsregler, der kostet ja nur einen Bruchteil:
reichelt (http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A215;GROUPID=2912;ARTICLE=39 452;START=0;SORT=user;OFFSET=16;SID=28RfKvbqwQARwA ABuyPxwe94880c48306c51b095e673e56db27bb)

Besserwessi
14.02.2009, 23:04
Der 74HCT04 hat 6 Gatter, davon braucht man 2. Man hat also noch 4 frei für die ich jetzt keine Verwendung sehe. Deshalb wäre eventuell der 74HCT14 interessant wenn man Schmidttrigger brauchen kann. Es gibt von einigen Logic ICs auch kleinere Versionen mit 8 Pins, sind aber nicht so leicht zu bekommen.

andieh
16.02.2009, 15:09
Joah also so teuer ist das Bauteil jetzt auch nicht. Also kaufe ich einfach den 74HCT04 und eben den Spannungsregler. Benötige ich da noch andere Teile dafür? Beim Spannungsregler sinds ja noch 2 Mal 100nF Kondensatoren, aber brauche ich noch etwas für den Treiber?

Danke auf jeden Fall schon mal für eure Hilfe

MeckPommER
16.02.2009, 15:21
Ich habe bisher *nachdenk* 5-10 Schaltungen mit ner SD am Atmega32 bis Atmega128 aufgebaut.
- Die Spanungsversorgung ganz einfach mit einem Spannungsregler, da mir das mit den Dioden nicht so behagt. Nen 3,3V-Regler kostet ja nun wirklich nicht die Welt
- Spannungsteiler zwischen µC und SD.

Alle Schaltungen laufen bisher zuverlässig und problemlos, von der 64MB SD bis zur 2GB microSD-Karte. Ich sehe keine Notwendigkeit, größeren Schaltungsaufwand zu betreiben.

Gruß MeckPommER

andieh
16.02.2009, 15:27
Hallo MeckPommER.

Dich wollte ich schon direkt anschreiben, aber dachte mir dann, du hast bestimmt besser zu tun. Dein Projekt fasziniert mich sowieso und du machst ja genau das, was ich ohne hin vorhabe: WAV Dateien von der SD-Karte abspielen.

Joah hatte dann nur gesehen, das du alles in Bascom programmiert hast, also kann ich dich eh nicht einfach nach dem Code fragen. Aber das ist ohnehin ne andere Geschichte. Mir gehts jetzt primär erst mal nur darum, Daten von der SD-Karte zu lesen. Greifst du auf die SD-Karte mit FAT zu oder haste das ohne Dateisystem realisiert?

Grüße
Andieh

MeckPommER
16.02.2009, 16:48
Ich habe es mit Dateisystem realisiert, da ich dann einfach ganz normale Wav-Dateien per PC auf die Karte spielen kann um sie später per µC abspielen zu können.

andieh
16.02.2009, 17:27
Kann man fragen, welche "lib" du dafür verwendet hast, oder haste die selber gebaut? In Bascom oder C?

Werd jetzt erst mal ne Bestellung bei Reichelt machen. Danke für eure Hilfe.

MeckPommER
16.02.2009, 20:58
Bascom lib ... ich glaube avrdos oder so, kann grade nicht nachschauen. Wollte das Rad nicht ein zweites Mal erfinden.