2023/03/17(金曜日) 曇り
マイコンで何か処理をさせるときに、開始時刻とか処理間隔時間とかを
指定したいこともあります。
その目的のためにテンキー入力装置?を工作しました。
回路は数値キーに相当したバイナリコードを生成してマイコンに伝える
という簡単なものです。
ただ、あり合わせの部品での工作なので思うようにはいきません。
そこを何とかやりくりして一応組立ました。
テンキー装置単体でテストしてみましたが、動作が不安定です。
「1」とか「2」、「4」、「8」の2進bitが1つだけの数値のとき
出力電圧が低くて「High」レベルにならないのです。
「3」とか「5」「6」「7」「9」の2進ビットが2つ以上の数値は
正常に「High」レベルになります。
マイコンは電源電圧として3.3Vを使用しています。
テンキー装置にもこの電源を用いていますが、これが低すぎるのかもしれません。
試しに5Vを電源にしてみたところ、正常に動作します。
2進コードはダイオードを使ったOR回路で生成しています。
使用しているダイオードは何十年も前(半世紀以上前?)の大型コンピュータから
取り外されたジャンクプリント基板(秋葉原のジャンク屋にゴミとして売られてた)に
ハンダ付けされていたものです。
それにダイオードOR回路を結合するバス?はCMOSゲートICでバッファリング
していますが、このICも相当の年代物です。
こんなジャンク品や旧式ICを3.3Vで駆動するのが無理なのでしょうか・・・・・
でも、マイコンは3.3V、テンキーは5Vなんてするとうっかり5Vをマイコンに
加えてマイコンを壊しそうです。
なんとか3.3Vで動かしたい・・・
「2進コードのビットが2つ以上はOK」ということはOR回路に接続するダイオードを
2個以上にすればいいのかな?
でもこの基板は小さくて(以前のラジオ工作でIFアンプ回路を組むために買ったもの)
もうダイオードを増設するスペースはありません。
何とかOR回路の出力を大きく(高く)する方法は無いかな?
ダイオードと電源(3.3V)に直列に入った2.2KΩを大きな抵抗値にしてみたらどうだろう?
その2.2KΩを「510KΩ」に変更してみました。
ダイオードOR回路のプルアップ抵抗2.2KΩを510KΩに変更しました。
これでCMOSゲートICの入力値は0.2Vぐらい高くなりました。
テンキー装置単体でのテスト結果もOKになりました。
マイコンに接続してデーターが判定できるかテストしてみました。
プログラムはテンキーから送られてくる2進コードに相当するLEDを点滅させるだけの
簡単なものです。
先ずこれが動作しなくては先には進めません。 上手くいってくれ、と念じながらスタート
させました。
おーっ、テンキーの指示通りLEDが点滅します。
テンキーからの信号をマイコンのGPIO端子に接続して簡単なプログラムを組んでテスト
しました。
テンキーの指示通りLEDが点滅しています。
GPIOの出力をおもちゃオシロスコープで観察してみました。
テンキーのキーの押し方によっては相当なチャッタリングが出ます。
まぁーこれは仕方がないかなぁ・・・
さぁ、次は数値を取り込むプログラムの勉強です。
どうやればいいんだろう???