VIH | MIN 0.7VDD | MAX VDDとなっていて5Vを入力するとほんとはまずい。(動くことは動くが…)
「Rの分圧で5V->3.3Vレベルシフト(片方向)続き」で抵抗による分圧をしてみたが、信号波形があまりよくなかったのでもう少し実験してみた。
Arduinoのスケッチは「LCD5110_Basic」ライブラリのArduino(AVR)/LCD5110_Bitmapを使用。
抵抗分圧
↑120Ωと330Ωの抵抗で分圧
バックライトは基板上に電流制限抵抗が入っているので8PINはVDDに直結してよい。
5V * 330Ω / (120Ω + 330Ω) ≒ 3.67V
少し電圧を高めに設定しているのはArduino(今回はaitendoのびんぼうでいいのを使用)のSPI信号の電圧が5V出ていないから。
ArduinoからのSPI信号
ch1:MOSI ch2:SCK
前回は(と言っても1年以上前)10kΩ:20kΩの分圧でうまく動いてくれたが、今回ブレッドボードで実験したところ10kΩオーダーのRではうまく動作せず、1kΩオーダーでもだめだった。
1.2kΩ:3.3kΩで分圧
MOSI(Data)の方は3.3V~GND程度で出力されているがSCK(Clock)のLがGND付近まで落ちていない。LCD5110の入力インピーダンスが低いのかびんぼうでいいのの出力が弱いのかわからないが。液晶にも何も表示されない。
120Ω:330Ωで分圧
抵抗値を下げるとSCKの波形もきれいになり液晶も無事表示された。
ただ120Ω:330Ωの分圧だと1ピン当たり
5V / (120Ω + 330Ω) ≒ 11.1mA
も抵抗だけで電流を流しているのでかなりもったいない。(一応AVRは1ピンあたり20mAまで流せるが)
またマスター側のVCCによってはHの出力電圧が変動してしまうかもしれない。
5VトレラントのバッファICを使う(74HC4050)
5VトレラントのロジックICを使えばロジックレベルの変換ができるので実験してみた。
5VトレラントとはICを3.3V駆動させても5Vの入力を受け付ける。出力は3.3Vになるので5V->3.3Vにレベルシフトできる。(片方向)
74VHCシリーズはすべて5Vトレラントの様だが、HCシリーズでも74HC4050(6回路入りバッファ)が5Vトレラントなのでこれを使った。
74HC4050ピン接続
ブレッドボード図
SPI信号
ch1:MOSI ch2:SCK
SCKも3.3V~GNDできれいな波形が出力されている。
消費電流をテスタで計測してみると6mA程度だった。これはLCD(バックライト含む)と74HC4540の合計。
まとめ
抵抗分圧によるレベルシフトは手軽だが、条件によっては動作しない場合がある。
74HC4050は値段も安いし6回路入っているので5V->3.3Vのレベルシフトにはなかなか使いやすいと思う。
0 件のコメント:
コメントを投稿