木製RPN電卓の製作

RPN(逆ポーランド記法、Reverse Polish Notation)の電卓をご存知だろうか?現在の電卓はほぼ全て、数式の通りにボタンを押して計算を行う(123 + 456 =のように)。それに対しRPN電卓では、計算対象となる2つの数を入れてから、最後に演算子のボタンを押す。具体的には、同じ計算を 123 [enter] 456 + のように操作して行う。この方式は、途中結果を確認しながら試行錯誤的に計算を進めるのに便利で、世界中に愛好家がいるが、長らくこの方式を採用していた米国ヒューレット・パッカード(HP)が新機種の開発をやめてしまったことで市販品が入手困難となってしまった(金融向けの特殊なものや、個人制作等の少量生産のものはあるが)。また、HPの電卓を含めほとんどが関数電卓などの高機能電卓であったため、ボタンが小さい機種ばかりで、よくある安価な電卓のような「大ぶりで軽いキータッチ」の電卓がほとんどない。そこで自作してしまおうというわけである。
使用する部品


なにはなくともキースイッチと表示部分は必要である。市販の電卓を分解して使用してもよいが、キーの刻印の関係で今回はPC用の外付けテンキーを用いた。というのは、RPNでは先に書いたように = を使うことがなく、一方で数値を確定させる Enter をよく使うため、Enter が大きいほうが良いためである。実際、HPの多くのRPN電卓では縦長もしくは横長の大きな Enter キーを持つものが多い。PC用のテンキーでは大きな Enter を持つものが多いが、余計な刻印(PgUp/PgDnや矢印など)がついているものが多い。それらの中から、安価でシンプルな見た目ということでMac用と謳われたテンキーを購入した。
ディスプレイ部分も、市販の電卓のものを利用するのは少々難しい。というのは液晶の駆動にはいろいろな電圧を小刻みに変化させる必要があるため複雑だからである。また、RPN電卓では計算過程の値(スタックの内容)が見えたほうがよいことや、隠し機能として関数電卓機能も搭載したいためにドットマトリクスタイプの液晶を利用することにした。写真下の2行タイプのほうが小ぶりだが、スタックが多く見えたほうが便利なことから敢えて大きい方(4行タイプ)を使うこととした。
PCB(回路基板)の作成

テンキーは、中身がどんなものでもスイッチから配線を引き出せれば問題ない・・と考えていたが、届いたテンキーを分解するとそうはいかないことがわかった。というのは、スイッチ部分はフィルム状となっており、それの導体部分を基板に圧接することで接続する構造になっていたためである。上の写真で、PCBの左上にある丸っこい2つのネジの間でフィルムと基板が圧接されており、圧接部分にはシリコンラバーが用いられていた。


そこで早速、CNCでPCBを作成することにした。圧接部分のピッチは1mmだったので、それを引き出すPCBを作成し(作成過程はこちら)、圧接用のラバー固定治具を3Dプリンタで作成した。導通を確認し、キーマップも調べた。


これでうまくいくことが確認できたため、直接マイコン(Arduino nano)を固定できるPCBを作成し直す。キーボードの裏板は押し心地に影響するため、剛性の高いプリント基板で裏打ちして、筐体に固定することにした。電源には単3電池を2本使い、これをDCDCコンバータで5Vに昇圧して利用する。
筐体の作成

電卓に必要な回路関係は整ったので、あとは筐体である。最終的には無垢の木材から筐体を切り出すことを考え、切削で造形できるような形状を Blender で作成した。こちらで紹介しているように、厚みのある物体を切り出したり深い穴を掘ったりするには直径4mmという太めのエンドミルを使用する必要がある。そのため、内側の穴(ポケット)の角をシャープにすることはできない。今回の設計では、すべてのポケットの半径を2mmにしてある。


切削には長時間を要し、材料も消費することから、まずは3Dプリンタで出力して確認した。一部で小さなミスはあったが、全体としては良好にすべてが収まり、電卓として使用できるものになった。表面をパテで整えて白で塗装すると、もうこれでいいか、という気分になったが、気を取り直して本来の最終形へ進むことにする。


端材として入手したウォールナット(くるみ)の無垢材を利用した。厚みが31mmあまりあったので、エンドミルが底まで届かないおそれがあり、まずは広めに28mmまでエンドミルで薄くする。次に内部を削り出し、最後に外周を削って切り出すという工程になる。高さ、スペースや固定強度の問題がありワークを固定するのにクランプを使えなかったため、材料に穴を開けて直接、ワークテーブルに固定。1回目の切削では仮止めに用いていた両面テープをエンドミルが巻き込んで、細い部分(キーの間の部分)が折れてしまい、2度目にはキー部分だけ切削条件を緩める(少しずつ削る)ようにして完成させた。
組み立て・完成


窓の部分にはスモークのアクリル板を段差加工(こちらで紹介している)してはめ込んだ。ウォールナット無垢の筐体は紙やすりなどで各部を整え、オイルステインを軽く塗布してから組み立て。裏蓋は3Dプリンタで出力し、回路や電源スイッチを固定して完成した。


いったんは「わざわざ木で作らなくてもいいか」と思ったが、こうしてみると(実際には肉厚3mmの薄い筐体だが)見た目には木の塊に見え、大変満足度が高い仕上がりになった。下部の蓋が少し内側に下がり、下へ飛び出しているが、これは意図したデザインである(少し浮かしたほうが軽快感が出る)。

液晶はバックライト式なので美しく表示される。銀色のボタンはもとは "=" のキーであったが、現在は関数電卓として使用する場合のファンクションキーとなっており、液晶表示に合わせて最上段のキーを押すことで三角関数や指数・対数などの計算ができる(0〜7の長押しでも関数電卓機能が現れる)。動作の様子は以下の通り。
今回の制作で、比較的大きめの木材の加工のほか、PCBやアクリル板の加工のノウハウも学習できた。やはり3Dプリントより見た目に味わいがあり、CNCの面目躍如といったところである。
この電卓はバックライトが光るので消費電力は5V 70mA程度とそこそこで、使用時間はさほど短くないが、電源を切り忘れると1日で電池が切れてしまう。そのたびに裏蓋を外すのも面倒くさいので、USB電源で充電できるように改良した。


充電制御回路は1個あたり67円ほどで性能の良いものが買える。microUSBコネクタから充電し、出力用のUSB Type-A端子は不要なので取り外した。モバイルバッテリー向けの回路なので、リチウムイオン電池の電圧から5Vへの昇圧もこの小さい基板1枚で行ってくれる。この基板の下流で電源を切ると、厳密にはこの基板自身のリーク電流が発生するが、この制御ICはそれが8μAしかないそうで、完全に無視できる(この小さなリチウムイオン電池でも8年分に相当する)。裏蓋にUSB端子の切り欠きと基板ホルダーを作り込んで完成させた。