シフトレジスター74HC595を交換したら動かなかった話
同じ74HC595
なのに交換したら動かない
#軸の秤はディスプレイやキーパッドを持つ本体と、ステッパーが稼働して重さを測定する測定部が分かれているんですが、その間を繋ぐ線を少なくするため、シフトレジスターの74HC595を2つ、測定部に積んでいます。
秋月で購入したDIPパッケージの74HC595を使ってブレッドボードでのテスト、JLCPCBの部品実装サービスでSOP-16パッケージの74HC595を実装したrev2基板と問題なかったので、rev3基板では別途購入したSOP-16の74HC595を自分でリフローしたんですが、ここに来て動かなくなってしまいました。
最初に秋月で購入したもの(問題ない)
8ビットシフトレジスタ U74HC595AG-D16-T
https://akizukidenshi.com/catalog/g/gI-14053/
U74HC595 PDFデータシート
https://akizukidenshi.com/download/ds/unisonic/u74hc595.pdf
DIPパッケージ。
部品実装サービスで実装してもらったIC(これも問題ない)
Nexperia | Nexperia 74HC595D,118 | Registers - LCSC.COM
https://lcsc.com/product-detail/Registers_Nexperia-74HC595D-118_C5947.html
Datasheet: Nexperia 74HC595D,118
https://datasheet.lcsc.com/lcsc/1811021715_Nexperia-74HC595D-118_C5947.pdf
SOP-16パッケージ。LCSCの部品番号はC5947
。
交換して動かなくなった問題のIC
Shenzhen Fuman Elec | Shenzhen Fuman Elec 74HC595A | Registers - LCSC.COM
https://lcsc.com/product-detail/Registers_Shenzhen-Fuman-Elec-74HC595A_C110383.html
Shenzhen Fuman Elec 74HC595A
https://datasheet.lcsc.com/lcsc/2010160803_Shenzhen-Fuman-Elec-74HC595A_C110383.pdf
これもSOP-16パッケージ。LCSCの部品番号はC110383
。
症状
症状としては、74HC595の出力側から3.3Vが出ないというもの。マルチメーターでテストしたところ、ごくごく僅かな電圧の変化があったりなかったり(マルチメーターの2000mVや200mV辺りで見ても一桁程度の変化)。
症状の確認として、秋月で購入したU74HC595-D16-T
で好きなピンから3.3Vが出力できる事をブレッドボードで確認した後、2.54mmピッチ変換基板に実装した問題の74HC595A
に交換すると、たちまち動かなくなってしまいます。
確認では他の個体を使ったので、#軸の秤の基板に取り付けたICがたまたま壊れていたという可能性もゼロに近くなりました。
こうなるともうお手上げ。
ICに何か問題があるのだろうとか、ラッチやクロックの信号に問題ある(波形とかタイミングとか?)のだろうとか色々考えてはみても、オシロスコープ持ってないし第一使い方もわからない。電子工作初心者にはもーどうしようもありません。
同じ状況と思《おぼ》しき書き込み
Arduinoのフォーラムに一件だけ非常に近い状況と思しきスレッドがあったのですが、残念ながら解決や有用な情報は無いままクローズされています。
74HC595A Shift Register Low Level Output? - Using Arduino / General Electronics - Arduino Forum
https://forum.arduino.cc/t/74hc595a-shift-register-low-level-output/700036
ちなみに、この時点で僕がデータシートから読み取れた当該ICの一番大きな違いは、他の74HC595だとOE
(Output Enable)の13番とSRCLR
(或いはMR
(Master Reset))の10番が、いずれもNCになっている点。このため、これらのピンに関しては未接続、High、Lowと考えうるパターンを全て試してみたけどダメだったことを追記しておきます。
さて、ここまでで手がかりは網羅できたと思います。電子工作に明るい方はなぜ74HC595Aから電圧が出てないのかわかってしまったでしょうか(読者への挑戦風)。
答え
オープンドレイン!!
もうすっかり諦め、ブラックフライデーで購入した第11世代Kindle Paperwhiteで遊んだりしてたんですが、ずーっとひっかかってて気が付くとちょいちょい検索してました。でもやっぱり何も見つからず。
ふと、製造会社もデータシートも中国語だし、中国の情報検索できればいいんじゃねと、とりあえず百度《バイドゥ》で検索してみたんです。そしたらなんと本当に…… あった!
74HC595扩展IO芯片的使用以及例程(74HC595A和75HC595D的区别)_一个做底层的码农的博客-CSDN博客
https://blog.csdn.net/weixin_42316458/article/details/84670816
上記ページの
〈六、74HC595A和75HC595D的区别〉というところに、正《まさ》に知りたかった74HC595Aと一般的な74HC595との違いが!
翻訳すると「6. 74HC595Aと75HC595Dの違い」と書いてあるらしい。ビンゴ!
というわけで、74HC595Aは “オープンドレイン出力”なので出力ピンにプルアップ抵抗が必要だったということのようです。
ちな自分はこのページを見るまでオープンドレインなる言葉を見たことも聞いたこともありませんでした。どういう理屈なのかは下記ページでなんとなく理解できた気がします。
ソフトウェアエンジニアの質問にハードウェアエンジニアが答える - プルアップ/プルダウン編 - - VIVITABLOG
https://blog.vivita.io/entry/2018/07/23/070000
プルアップ抵抗については自作キーボードのキーマトリクスとか、ESP32のEN/BOOTスイッチ周りに使われてるので徐々《じょじょ》にわかってきたところですが、ICの出力ピンでも使うことがあるんですねぇ……
でも、74HC595って出力ピンが8つもあるので抵抗も8つ必要で、なんだか面倒くさい気もするんですが、上記ページのレベルシフタやワイヤードORのように素人には考え及ばない必要なケースがあるのでしょう。
ちなみに、74HC595の場合、カスケード用の出力もあるので計9個の抵抗が必要なのではと最初思ったんですが、テスターで見てみるとカスケード用の出力は抵抗無しでも電圧が出ていました。既にプルアップ抵抗したシリアルデータがそのまま繰り上がってここに出力されるので、電圧もそのままという事でしょうか。いずれにしろカスケード用出力にはプルアップ抵抗は必要なさそう。はーややこしい。
答えがわかってみれば、確かにデータシートの冒頭、最後の行に「数据输出方式为低电平及高阻态。」ってあって、これを翻訳してみると「データ出力モードは、低レベルで高インピーダンスの状態です。」だそうで。
まーでもわからなかったのは仕方ないのです。自分のレベルじゃこれを日本語で読んでも
「あ、抵抗が要るな」ってわからないし、そもそも中国語だし、さらにオープンドレイン自体知らないし。
後記
というわけで、同じ74HC595でもそのままは交換出来ないものもあるという発見でした。
結局のところ、どうせ同じだろうし安いからと実際に動いていたのと違う型番を注文した自分が悪いのです。同じSOP-16パッケージでも、Nexperiaの74HC595Dを注文していればこんなに悩む事にはならなかったわけで。
まーでもオープンドレインというものを知れたし、ICからの出力にもプルアップ抵抗が必要になる事があるという勉強になったからいっか。
あ、あと、中国語でICチップのこと芯片っていうのを知りました(笑)
いじょ。
この記事はここで終わりです。
読んでいただきありがとうございました。
良かったらシェアしてね!
That's all for this article. Thank you for your reading.
Please share this if you like it!