Moin
Ich wollte eine SD-Karte mit nem AVR nutzen und dabei ist für mich ne
Frage aufgetaucht:
Wenn ich mit meinen 5V des AVR ein Signal an die Karte senden will, die
ja ca. 3 V erwartet, was kann ich da außer einem Pegelwandler-IC
benutzen. Nicht weil ich ums Verrecken keinen Pegelwandler nehmen will,
sondern nur aus Interesse:
-Kann man einen Spannungsteiler dafür nutzen?
-Ich habe ein Mal gelesen, dass man auch den Spannungsabfall an einer
Diode (oder mehreren in Reihe) dafür nutzen kann. Wieso wird einem nicht
öfter zu der Lösung geraten?
-Taugt eine Transistorschaltung, in der der µC einfach einen Transistor
einschaltet, der dann die 3 Volt erzeugt? Oder sind Transistoren (npn
oder pnp, kein FET) dafür zu langsam?
Würde mich über ne kleine Erklärung freuen.
Gruß
Joschua
Joschua C. schrieb:> -Kann man einen Spannungsteiler dafür nutzen?
Würde ich als erstes andenken.
> -Ich habe ein Mal gelesen, dass man auch den Spannungsabfall an einer> Diode (oder mehreren in Reihe) dafür nutzen kann. Wieso wird einem nicht> öfter zu der Lösung geraten?
So gut ist die Lösung auch wieder nicht. Wie lieferst du bei dieser
Variante eine LOW an deine Senke?
> -Taugt eine Transistorschaltung, in der der µC einfach einen Transistor> einschaltet, der dann die 3 Volt erzeugt? Oder sind Transistoren (npn> oder pnp, kein FET) dafür zu langsam?
Ich verstehe die Frage nicht.
Aber wenn du von Geschwindigkeit redest, dann können ev. alle Ansätze
außer einem Pegelwandler unbrauchbar sein. Welche Geschwindigkeit willst
du denn verwenden?
Danke für die Antwort. Jetzt weiß ich schon mal wie ich das lösen kann
(SPannungsteiler)
Mit den Dioden meine ich die Schaltung
µC -> Diode -> Diode -> Eingang der SD-Karte
Ich hab gelesen, dass bei einem High-Pegel, den der µC ausgibt, 0,4 bis
0,8 Volt an einer Diode abfallen. Somit soll man mit mehreren Dioden in
Reihe einen so großen Spannungsabfall erzeugen, dass dann nur 3,0 V
übrig bleiben. Das Problem mit dem LOW-Pegel habe ich jetzt erst
gerafft. Aber ließe sich das nicht mit einem Pulldown-Widerstand am Pin
der SD-Karte beheben?
http://www.uni-koblenz.de/~physik/informatik/ECC/sd.pdf
Der Vorschlag ist in der PDF auf Seite 6
Ist der Vorschlag sinnig?
Zum Transistor:
Er soll ja die Datenleitung eines SPI-Interfaces steuern. Der
Schiebetakt kann bei meinem ATMega8A maximal die Hälfte von fOsc
betragen. Das wären bei mir 2 MHz. Die Frage wäre dann glaube ich also,
welche Transistoren sich mit 2 MHz an- und ausschalten lassen.
Joschua C. schrieb:> http://www.uni-koblenz.de/~physik/informatik/ECC/sd.pdf>> Der Vorschlag ist in der PDF auf Seite 6> Ist der Vorschlag sinnig?
Das mußt du nochmal lesen (etwas sorgfältiger diesmal). Die schlagen
dort mitnichten Dioden für die Konvertierung der Logikpegel vor. Hint:
eine SD-Karte braucht auch eine Versorgungsspannung.
> Er soll ja die Datenleitung eines SPI-Interfaces steuern. Der> Schiebetakt kann bei meinem ATMega8A maximal die Hälfte von fOsc> betragen. Das wären bei mir 2 MHz.
Du mußt das serielle Interface ja nicht mit der maximal möglichen
Geschwindigkeit betreiben.
Aber Spannungsteiler und Seriendioden sind alles alberner Bastelkram. Es
gibt kleine 3V Spannungsregler mit denen man die SD-Karte aus 5V
versorgen kann. Und für die Pegel hin zur SD-Karte nimmt man einen
74HC4050 o.ä. Von der Karte zum µC braucht man meist gar keinen
Pegelkonverter.
XL
SD Karten brauchen je nach Modell zeitweise ziemlich viel Strom. Rechne
mit maximal 500mA und minimal 0mA.
Dioden sind ungeeignet, wie der Spannungsabfall vom Strom abhängt. Die
Ausgangsspannugn wäre nicht stabil genug.
Weiterhin sollte eine Strombegrenzung vorgesehen werden, damit deine
Schaltung nicht ausfällt, wenn eine SD Karte eingesteckt wird. Ein
kleiner 3,3V Regler mit etwa 500mA Strombegrenzung ist daher sinnvoll.
Jede Transistorschaltung wäre aufwändiger, selbst wenn Du auf die
Strombegrenzung vezichtest.
Die daten- und Takt Leitungen kannst Du nicht über Spannungsteiler
ansteuern. Da fließen (wie je nach Karten-Modell) zu hohe Ströme. Die
Karten brauchen saubere digitale signale mit steilen Flanken und
"ordentlich" Strom.
Wenn Du einen AVR mit 3,3V betreibst, kannst Du die SD Karte direkt
anschließen.
Versuche nicht, den SPI Bus mit anderen Geräten zu teilen. Das haben
schon andere mit mäßigem Erfolg versucht.
Lesestoff incl Beispielschaltung und Erfahrungswerte dazu:
http://www.mikrocontroller.net/articles/AVR_FAT32
Und hier zeigt ein Händler mit Oszilloskop-Bildern, warum seine Adapter
mit Pegelwandler nötig sind und Spannungsteiler nicht taugen:
http://www.shop.display3000.com/elektronikmodule/sd-speicherkartenplatine.html
Axel Schwenke schrieb:> Das mußt du nochmal lesen (etwas sorgfältiger diesmal). Die schlagen> dort mitnichten Dioden für die Konvertierung der Logikpegel vor. Hint:> eine SD-Karte braucht auch eine Versorgungsspannung.
Sorry
@ Stefan
Dein zweiter Link ist Gold wert. Hätte nicht gedacht, dass ein
Spannungsteiler das Signal so schlimm verzieht. Ich dachte die Eingänge
der Karte haben einen so hohen Widerstand, dass ein Spannungsteiler da
funktioniert.
Die Eingangspins von Controllern haben doch auch einen hohen Widerstand.
Kommt der hohe Strom am Eingangspin der Karte dadurch zustande, dass
beim Wechsel des Pegels am Dateneingangspin eben auch der Pegel der
ganzen Datenleitung gewechselt werden muss und man quasi einen
Kondensator mit kleiner Kapazität aber eben auch kleinem Innenwiderstand
umladen muss, was ja kurz viel Strom braucht? Bitte pöbeln wenn das
unverständlich war.
Und wofür benutzt man den klassischen Spannungsteiler dann überhaupt
noch in einer ordentlichen nicht hobbymäßig zusammengeschusterten
Anwendung? Außer bei der Anpassung von Messsignalen fällt mir da jetzt
nichts mehr ein...
Schonmal an einen simplen Serienwiderstand gedacht (paar 100 Ohm)?
Das Problem ist doch meistens die ESD-Beschaltung des Zielschaltkreises
(in dem Fall SD-Karte) mit Dioden nach VDD und VSS, die leiten wenn die
Spannung an den Eingängen zu hoch/niedrig wird. Die eigentliche
Eingangsschaltung (meist irgend ein CMOS-Gate) ist erfahrungsgemäß recht
tolerant für höhere Spannungen (z.B. für 180nm CMOS-Prozesse mit 1.8V
die ich so kenne ist typischer Gate-Durchbruch z.B. bei 7V).
Der Serienwiderstand begrenzt den Strom durch die Schutzdioden und ist
verglichen mit Spannungsteiler auch schneller. Und wenn man es ganz
schnell braucht, dann platziert man den Serienwiderstand nah an den
Treiber und wählt den Wert in Höhe der Impedanz der nachfolgenden
Leitung.
Joschua C. schrieb:> Hätte nicht gedacht, dass ein Spannungsteiler das Signal so schlimm> verzieht.
Kein Wunder, bei den Widerstandswerten im Spannungsteiler ;-)
Danke. Ich setze dann wohl mal auf die Lösung mit dem Serienwiderstand
und verbanne den Spannungsteiler aus dem Kopf, bis ich das nächste Mal
ein Poti benutzen will oder eine 9V Spanung mit 5V µC messen will...
Joschua C. schrieb:> Dein zweiter Link ist Gold wert. Hätte nicht gedacht, dass ein> Spannungsteiler das Signal so schlimm verzieht.
Tut er auch nicht, schließlich muss der auch seinen Adapter verkaufen.
Der AVR ist meist nicht so schnell wie ein PC-Interface.
Bis ein oder auch wenige Mbit/s geht das mit einem Widerstandsteiler
selbstverständlich und ist keine Bastellösung, nur darf er nicht im
zig-Kiloohmbereich dimensioniert sein. Ein AVR kann ohne weiteres 500Ω
treiben und diese 500Ω so aufzuteilen, dass noch 3.3V übrig bleiben,
ergibt niemals so ein Bild wie in dem Link angeführt (bei 2,5MHz, wenn
ich das Bild richtig interpretiere).
Auch mit Transitorschaltungen kann man Pegelwandler bis einige wenige
MBit/s problemlos erzeugen - wenn man es richtig macht.
Ich habe das vor Jahren mal so gemacht für eine JTAG-Kette (3.3V auf
1.8V und zurück). Knapp 10MBit/s wurden erreicht.