CAmiDionのハードウェアを最適化しました

昨年終わり頃の無限音階の発想から形にしたCAmiDion4号機では、部品数をかなり減らすことができました。特にICはATMEGA328だけで済ませたという究極の小型化を実現しました。ただ、ICのピンをめいっぱい使っているため、あとから液晶を外付けする余裕がない状態です。

これをきっかけに、今まで作った CAmiDion 2号機、3号機も含めた見直しを行いました。実はこの両者、シフトレジスタを使うことによってATMEGA328のピンをかなり余らせていました。増設を見込んでそうしたのですが、逆に余ってしまったもったいない気がしてきました。

そこで、部品点数の最小化による低コスト構成を目指すことに。プリント基板化やキット化へ少しでも近づくために、安く作りやすいことが必要かなぁ…と思ったのです。こんな方針で見直しました。

まずは、PISO(パラレルIN/シリアルOUT) 74HC165 の撤去。
パラレル入力のところにプルアップ抵抗を並べる必要があったのですが、ATMEGA328では内蔵プルアップ抵抗を使うことができるので、直結することに。8×6=48ボタンマトリクスの 6 のほうを PORTB(ArduinoでいうD8~D13)の6本を入力として使うよう統一しました。このために2号機~4号機を改造。

次は SIPO(シリアルIN/パラレルOUT) 74HC595の撤去。実はこれのLEDアノード側出力には、LEDにかかる逆電圧を緩和するためにダイオードを入れたりトランジスタでON/OFFできるようにするといった工夫をしていましたが、これもATMEGA328を入力ピンに設定することでOFF(Hi-Z、ハイインピーダンス)の状態を作り出せば、外付け部品を使わずに逆電圧がかかるのを防げます。必要なのはLEDの電流制限抵抗だけで済みます。

シフトレジスタを外すだけでもかなり違いますね。シリアル伝送だと直接 PORTB |= 0b00010000 みたいなパラレル伝送よりも遅くなり、エンベロープ時間が間延びすることもありましたから。

3 to 8 のアドレスデコーダとして使う74HC138は撤去せずそのまま残しました。
キーマトリクススキャンは、どれか一本の列だけを違う信号(LOW)にしてスキャンするのですが、そのまま直結するとAVRマイコンのピン8本を消費してしまいます。それよりも74HC138でピン3本の消費に抑えた方が、貴重なピンを有効活用できます。

余ったピンは PORTC で活用。I2C対応液晶出力、オクターブ調整VRによるアナログ入力に使うには PORTC が必要だからです。ここに74HC164を使えば16×2液晶もつなげられます。

以上のことを踏まえて、スケッチや回路図を修正しました(いつもの作業部屋に置いてあります)。元が EAGLE だったので EAGLE で修正したのですが、CAmiDionの大きさの横幅のある基板はどうも作れないようなので、DesignSpark PCB での書き直しも考えています(これでキット化やプリント基板化へまた一歩近づいたらいいのですが…)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です