Eine andere Sache, die Sie berücksichtigen sollten, ist, ob Sie überhaupt eine Pegelverschiebung benötigen. Viele Chips haben 5-V-tolerante Eingangsstifte, selbst wenn sie mit einer niedrigeren Spannung betrieben werden, z. B. 3,3. Die atmega-CPU interpretiert auch alles über 0,6 * Vcc oder 3V für ein Arduino als logisches Hoch, sodass ein 3,3-V-Signal einen Arduino-Pin ohne Pegelverschiebung direkt ansteuern kann.
Angenommen, Sie verwenden ein 5-V-Arduino und müssen mit einem 3,3-V-Teil sprechen. Wenn das Teil 5-V-tolerante Eingänge hat (viele heutzutage), schließen Sie es einfach an, und es funktioniert. Wenn Ihre bidirektionale Leitung ein Open-Collector-Design ist, wie z. B. i2c, bei dem die Geräte die Leitung nur nach unten ziehen, schließen Sie einfach die Pull-up-Widerstände an 3,3 V anstelle von 5 V an, und es funktioniert.
Andernfalls müssen Sie nur sicherstellen, dass die Leitung nicht über 3,3 V hinausgeht. Sie können dies mit einem Widerstand und einem Zener tun. Legen Sie einen Widerstand auf die Arduino-Leitung und dann einen Zener, um die Spannung auf 3,3 V zu begrenzen. (Quelle: repetae.net )
Sie könnten versucht sein, gefährlich zu leben und nur den 10k-Widerstand und sonst nichts zu benutzen. Der Grund dafür (manchmal!) Ist, dass sich im empfangenden Chip eine Klemmdiode befindet, die die Überspannung auf Vcc oder 3,3 V ableitet. Diese Diode brennt durch, wenn Sie versuchen, die gesamte 3,3-V-Leitung bis zu 5 V durchzuziehen (zusätzlich zu den Schäden, die durch das Ziehen dieser Leitung auf 5 V verursacht werden). Mit dem Widerstand fließt jedoch nicht viel Strom und es wird die 3,3-V-Leitung angenommen hat eine nicht triviale Last, die den Pegel Ihrer Stromleitung nicht wesentlich ändert, aber es gibt viele Vorbehalte. Tun Sie dies also im Allgemeinen nur, wenn Sie einen lokalen, isolierten 3,3-V-Bus haben und die zusätzlichen zwei Cent für den Zener wirklich nicht sparen können. Ich erwähne es nur, weil Sie es in Schaltplänen für spottbillige Breakout-Boards sehen, die Sie bei ebay bekommen und vielleicht versucht sind, es zu kopieren. lass es einfach nicht am Steckbrett vorbei in ein Produktionsdesign schleichen. :)
Edit hat gerade bemerkt, dass Sie das neuere 3,3-V-Arduino verwenden, also invertieren Sie einfach das, was ich oben gesagt habe. Der Zener-Widerstandstrick funktioniert immer noch, obwohl anscheinend einige der E / A-Leitungen auf der fälligen 5-V-Toleranz sind und es einige Meinungsverschiedenheiten zu geben scheint in den Foren. Das teensy 3.1 ist auch ein nettes kleines ARM-Board, das alle 5-V-toleranten Pins hat und weniger als die Hälfte der Kosten des IMHO http://www.pjrc.com/store/teensy31.html ausmacht