Forum: Mikrocontroller und Digitale Elektronik Arduino Sheild 3.3 und 5 Volt


von Mr D. (Gast)


Lesenswert?

Hallöchen
Ich baue ein Shield für den Arduino, welcher mit Uno und Due 
funktionieren sollte. Der Shield sollte kompatibel sein mit 5V und 3.3 
Volt, wählbar via Jumper oder automatischer Schaltung. Ein Sound IC gibt 
es leider nur mit 5 Volt.

Da ich kein Profi bin frage ich zur Sicherheit lieber einmal nach...

- Sind die BSS138 mit 2x 10k R ok für I2C und anderen Ein/Ausgängen?

- Gibt es Level Schifter Chips (keine gefunden der BI arbeitet und I2C 
komp. sind) mit 8 Bit oder 4 Bit welche auch gerade die Wiederstände 
beinhalten?

- Wenn ich den Sound IC (5Vol, 8 Bits Daten + 3 Steuerung) mit einem 
MCP23017 betreibe und die I2C via BSS 138 mit einem Level Schifter 
versehen sind (MCP 23017 + LCD) , erübrigt sich die Datenleitungen auch 
zu konvertieren, da der MCP23017 auch mit 5 Volt betrieben wird. Sollte 
so ok sein?

- Da ich ein ULN2004 benutze, nehme ich an, dass dort CD (Pullup 10k) 
mit der Spannung des 5V versorgt werden muss? Ansteuerung mit 3.3V 
funktioniert und der Aushang liefert dann den GND zu 5Volt.

- Eingange die mit Masse geschaltet werden haben intern einen Pullup, 
also benötige ich hier kein Level Schifter, ich denke das ist richtig?

Danke für die Hilfe.

von Stefan F. (Gast)


Lesenswert?

> Sind die BSS138 mit 2x 10k R ok

Du meinst hoffentlich den berühmten Levelshifter-Schaltungsvorschlag von 
Philips (heute NXP). Die Schaltung funktioniert mit den meisten Chips.

> Gibt es Level Schifter Chips

Sicher, aber die Pull-Ups werden da nicht drin ein, weil es keine festen 
Werte gibt die in allen Umgebungen optimal sind. Manche Schaltungen 
(z.B. Lego Mindstorms) erfordern viel größere Widerstände. Andere 
wiederum laufen besser mit kleineren Widerständen - vor allem bei hoher 
Taktfrequenz.

> Wenn ich den Sound IC

Welcher ist das?

> Da ich ein ULN2004 benutze, nehme ich an, dass dort CD (Pullup 10k)
> mit der Spannung des 5V versorgt werden muss?

Das ist der Anschluss für die Freilaufdioden. Den brauchst du nur bei 
kapazitiven Lasten (z.B. Relais) und er muss dann an die + 
Versorgungsspannung der Lasten angeschlossen werden.

>  Eingange die mit Masse geschaltet werden haben intern einen Pullup,

Dann wohl auf 5V. Wie reagieren sie wohl, wenn der High Pegel nur 3,3V 
ist?

von Dieter (Gast)


Lesenswert?

Mr D. schrieb:
> Ein Sound IC gibt
> es leider nur mit 5 Volt.

Was soll der machen?

Je nach Anwendung kann man sich auch einfach überlegen, ob das Ganze 
sinnvoll ist und man nicht einfach einen ESP8266/ESP32 einsetzen sollte, 
die können z.B. die Aufgabe des Sound IC genauso übernehmen (wenn meine 
Annahme richtig ist dass du etwas wiedergeben möchtest). Die kann man 
auch schön mit der Arduino IDE programmieren.

Am besten wäre natürlich ein Schaltplan, den musst du so oder so 
zeichnen und dann kann man sicherlich den einen oder anderen Fallstrick 
sofort erkennen, ist nur in deinem Interesse. ;)

von Stefan F. (Gast)


Lesenswert?

Wie gibst du denn mit einem ESP8266 Sound aus? IMO hat dieser Chip nicht 
einmal Hardware-PWM.

von Dieter (Gast)


Lesenswert?

Stefan U. schrieb:
> Wie gibst du denn mit einem ESP8266 Sound aus? IMO hat dieser Chip
> nicht
> einmal Hardware-PWM.

https://github.com/espressif/ESP8266_MP3_DECODER
https://github.com/MrBuddyCa sino/ESP32_MP3_Decoder

von Stefan F. (Gast)


Lesenswert?

Ui, die haben einen ganz schön hohen Aufwand getrieben. Sogar die I2S 
Schnittstelle belebt, das war im Arduino Core noch gar nicht drin.

von Mr D. (Gast)


Lesenswert?

Der Sound Chip ist ein SN76489 (old style, Dil 16)
4 Mhz Clock

Data 0-7, NCE, NRD, NLE

NRD und NLE sind zusammen und werden als !Ready gelesen.
NCE is Chip Enable. Soweit funktioniert das bereits jedoch mit 5 Volt.

von Mr D. (Gast)


Angehängte Dateien:

Lesenswert?

Levelshifter-Schaltungsvorschlag von
Philips?

SND IC

von Stefan F. (Gast)


Lesenswert?

Dieser Chip hat keine bidirektionalen Leitungen, daher würde ich nicht 
so eine bidirektionale Levelshifter Schaltung einsetzen. Die hat nämlich 
auch eine Menge Nachteile.

Nimm lieber 74LVC Gatter als Levelshifter.

von Mr D. (Gast)


Lesenswert?

Stefan U. schrieb:
> Dieser Chip hat keine bidirektionalen Leitungen, daher würde ich nicht
> so eine bidirektionale Levelshifter Schaltung einsetzen. Die hat nämlich
> auch eine Menge Nachteile.
>
> Nimm lieber 74LVC Gatter als Levelshifter.

Ne brauche die LS ja für I2C und der MCP23017 ist direkt an 5 Volt genau 
wie das LCD. Somit erübrigt es ja ein LS für die Datenleitungen...

Neopixel funktioniert nun auch mit dieser Schaltung.

Habe das getestet mit Breadboard Aufbau.

Brauche nur noch einen für eine TX Leitung die reinkommt mit 5 Volt. 
Aber sollte auch gehen mit dieser Schaltung, da nur 19200 Baud.

Danke für den Tip mit dem Gatter wird es mal anschauen.

von Stefan F. (Gast)


Lesenswert?

Ich glaube nicht, dass du für I²C Levelshifter brauchst. Denn wenn da 
alles mit rechten Dingen abläuft, haben alle Busteilnehmer 
Open-Collector Ausgänge. Der High Pegel wird ausschließlich durch die 
Pull-Up Widerstände definiert. Die hängst du einfach an 3,3V und gut 
ist. Damit sollten auch 5V IC's klar kommen.

Serielle UART Leitungen bringst du mit einem Spannungsteiler (1k Ohm + 
2,2k Ohm) von 5V runter auf 3,3V.

Beitrag #5192040 wurde von einem Moderator gelöscht.
von Manfred (Gast)


Lesenswert?

Stefan U. schrieb:
> Ich glaube nicht, dass du für I²C Levelshifter brauchst. Denn wenn da
> alles mit rechten Dingen abläuft, haben alle Busteilnehmer
> Open-Collector Ausgänge.

Gilt oC auch für den AT-328? Ich hatte mir neulich einen TXS0108E 
gegönnt, um eine 3,3V-Platine am 5V-Nano zu betreiben.

von Stefan F. (Gast)


Lesenswert?

> Gilt oC auch für den AT-328?

Ja, aber nur an den I²C Pins. Bei einer Software Emulation muss man 
genauer hinschauen.

von Mr D. (Gast)


Lesenswert?

- Danke für den Tipp mit dem Spannungsteiler, spart ein Transistor. :)

- mit dem I2C bin ich mir da nicht ganz sicher, zumal ja der 5V chip 
dann mit 5 Volt sendet, clock und Daten... oder sehe ich das falsch?

von Stefan F. (Gast)


Lesenswert?

> zumal ja der 5V chip dann mit 5 Volt sendet

Nein tut er nicht. Die High Pegel kommen ausschließlich von den Pull-Up 
Widerständen und deren Spannung hast du selbst im Griff.

Schau Dir diese Bilder an:

http://ece353.engr.wisc.edu/wp-uploads/2014/11/Open-Collector.jpg

http://www.mosaic-industries.com/embedded-systems/_media/sbc-single-board-computers/freescale-hcs12-9s12-c-language/instrument-control/iic-i2c-bus-pull-up.png

von Mr D. (Gast)


Lesenswert?

Stefan U. schrieb:
>> zumal ja der 5V chip dann mit 5 Volt sendet
>
> Nein tut er nicht. Die High Pegel kommen ausschließlich von den Pull-Up
> Widerständen und deren Spannung hast du selbst im Griff.
>
> Schau Dir diese Bilder an:
>
> http://ece353.engr.wisc.edu/wp-uploads/2014/11/Open-Collector.jpg
>
> 
http://www.mosaic-industries.com/embedded-systems/_media/sbc-single-board-computers/freescale-hcs12-9s12-c-language/instrument-control/iic-i2c-bus-pull-up.png

Hi
Ach so, ja verstehe, weil das alles nur auf Masse gezogen wird...

Verstehe dann aber nicht warum mir jemand gesagt hat ich müsse für das 
LCD 5V mit I2C einen LS benutzen sonst sei es hin.

Und einige I2C Chips haben intern ja auch Pullups, was ist den damit?
Diese sind dann ja bei 5V angeschlossen...

von Stefan F. (Gast)


Lesenswert?

> Verstehe dann aber nicht warum mir jemand gesagt hat ich müsse für das
> LCD 5V mit I2C einen LS benutzen sonst sei es hin.

Keine Ahnung was er damit meint. Die allermeisten LCDs kann man auch mit 
3,3V betreiben, wenn man an den Kontrast-Eingang eine negative Spannung 
von 1-2V anlegt. Sonst sieht man nichts.

> Und einige I2C Chips haben intern ja auch Pullups, was ist den damit?

Ja die gibt es. Wenn es wirklich nur Widerstände oder 
Konstantstromquellen sind, erledigen die ESD Schutzdioden der 3,3V Chips 
das Problem für dich. Die begrenzen dann die Spannung auf ca 3,6V.

Wenn die die Leitungen aber hart auf 5V ziehen, dann brauchst du 
Pegelwandler. Dann sind das aber genau genommen keine richtigen I²C 
Anschlüsse. Solange im Datenblatt kein eindeutiger Hinweis darauf steht, 
würde ich hier erstmal davon ausgehen, dass du keine Pegelwandler 
brauchst.

Hast du ein Oszilloskop?
Du könntest 100 Ohm Widerstände in Reihe schalten und dann am 
Oszilloskop-Bild sehr deutlich erkennen, ob der Chip die Leitungen auf 
5V zieht, oder nicht.

von Mr D. (Gast)


Lesenswert?

Stefan U. schrieb:
> Hast du ein Oszilloskop?
> Du könntest 100 Ohm Widerstände in Reihe schalten und dann am
> Oszilloskop-Bild sehr deutlich erkennen, ob der Chip die Leitungen auf
> 5V zieht, oder nicht.

Nein, leider habe ich das nicht, ansonsten ich das ja selber ausknobeln 
könnte. Bin aber am überlegen, es fehlen mir halt ein paar 100 
Teuronen...

Ich werde das mal ausprobieren mit meinem billigen LCD aus China (2€).
Danke.

von Stefan F. (Gast)


Lesenswert?

Bei Aliexpress gibt es derzeit Spielzeug-Oszilloskope mit TFT Display 
für 15 Euro incl. Versand.

https://www.aliexpress.com/item/Assembled-DSO138-2-4-TFT-Handheld-Pocket-size-Digital-Oscilloscope-Kit-DIY-Parts-Electronic-Learning-Set/32803186608.html

Wenn du die Takfrequenz deiner I²C Kommunikation niedrig genug 
einstellst, kannst du damit schon ganz gut was sehen. Das Ding ist jetzt 
kein Profi Equipment aber immer noch viel besser, als gar keins zu 
haben. Ich wäre als Teenager sehr glücklich gewesen, wenn es das damals 
schon gegeben hätte.

Stattdessen arbeitete ich 5 Wochenenden hart in der Montage, um ein 
altes analoges als Lohn zu bekommen.

Ich sehe gerade: Der Fotograf hätte wenigstens das Display gerade rücken 
können, bevor er es ablichtet. Denen ist auch nix peinlich. Tsss

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.