J-Writer注文

デッドタイムロジックを標準ロジックで作るのもありだったが、そろそろ自分でPLDが使えるようになりたいので、特殊電子回路の「J-Writer」を注文した。Altera、Lattice、XilinxCPLD/FPGAに書き込めるのに、9800円と安いのが魅力。日昇テクノロジーのライタは安いとはいえ、3社用に別々だったのと、Xilinx用が9800円だったのが残念。それならとJ-Writerを買ってしまった。

さすがにLatticeのGALはJTAGがついていないので書き込めない?

とりあえずしばらくはユニバーサル基板上で遊びたいので、PLCCパッケージ品を購入する。

ハイサイドNチャネルゲートドライバ

工作環境を実家から持ってきてようやく作業できるようになった。
現在、以下のようなディスクリートでHブリッジを製作中。

  • 12V動作
  • フォトカプラでパワー側と制御側を分離
  • ハイサイドNチャネルMOS FET型
  • 電流センサでフィードバック可能
  • その他の仕様は出たとこ勝負

これまでに、ハイサイドNチャネルMOS FETゲートドライバ回路のテストを行った。
回路はIR社のデザインチップス「簡単なハイサイドドライブによる高周波スイッチングおよび連続オンタイム」に掲載された回路を応用した。

この回路は、FETがON/OFFで動作が切り替わる。今は図が無いので分かりにくいが、以下の動作により、フォトカプラの電源に並列に接続されたコンデンサの両端は、大体12Vの電位差を維持することになる。FETがONでも電位差を維持できる。これにより、ブートストラップで必要だったリフレッシュ動作(ブートストラップコンデンサ電荷を蓄えなおす)が不要となる。

  • FET:OFF
  • FET:ON

この回路のメリットは、タイマICの出力の振れ幅分だけVgsを作れるという点にある。ちなみに、突入電流がタイマIC下の抵抗で制限される仕組みになっている。制限抵抗をタイマICの出力に付けた回路を作ってテストしたところ、Vgsが結構下がってしまうことが分かった。

以下は、電源投入時のタイマICのV-電位(黄)と、出力波形(赤)を表したもの(12V/div, 50us/div)。具体的な定数は図ができてから。

TLP351は通常動作で2mA必要なので、5.1kOhm(12Vなので)の抵抗を付けてテストした。以下は上記とは別条件で、フォトカプラのコンデンサと、その上のダイオードの波形を表したもの(5V/div, 500ns/div, 下から1マス目が0V)。タイマ出力がHighのときチャージが移動するが、回路図が無いのでどこのことか分かりにくい...

とりあえず、ダイオードの電圧降下を除けば、ちゃんとチャージポンプっぽい動作をしていることが分かる。

Redmine(cygwin上)やMediawikiを構築

プログラムやメモを残すためにRedmineSubversionMediawiki等の環境を作る。サーバも一応持っているが、2台起動していると発熱がひどいので使いたくない。メインはPC上に用意しておき、サーバ機は補助に使うことにする。

以前Cygwinを消してしまったので再インストール。Cygwinとホームディレクトリの格納先を別ドライブにするために、「Cygwin for professionals」を参考にする。
別ドライブにしておかないと、Cygwinがおかしくなったとき、再インストール前にデータを退避することになり面倒。

この後は、ApacheCygwin上で動かし、Subversionの動作を確認、最後にRedmineを入れることにする。

Mediawikiに使うPHPMySQLCygwin用のが無いので、Windows用を持ってきて使う。これは簡単。

Power Glitter 2のコネクタ

Sofmapで購入。ATX関係のコネクタは、20ピンが1つ、4ピンが3つという構成だった。4ピンの1つは20ピンとセットで24ピンとなるので、同じ12V系のはず。残りの4ピン2つは別の12V系だと思う。

Excelで2階層のメニューを作る

家計簿を付け始めたのだが、Excelの使い方がいまいち分からない。リボンインターフェースにイライラさせられるのはどうしようもないけど。

支出を「食費」や「交通費」のようにカテゴリで分けられれば、どんな生活をしているか分かる。しかし、これらの項目をセルごとに入力すると以下の問題がおこる。そのため、列挙項目として一箇所で管理しておきたい。

  • 間違いのためにフィルタから漏れる
  • 変更する際に漏れが生じる


また、列挙項目は将来増えるかもしれないので、自動的に選択肢が増えるようにしたい。更に、食費なら「間食」や「飲み会」のように階層化もしたい。

例として、シートの1行目にカテゴリを列挙し、2行目以降にサブカテゴリを列方向に列挙する場合について、2階層のメニューを作る方法を調べた。

    • カテゴリ表始点: $A$1
    • カテゴリ行: $1$1

[1] セルの値を選択式にするには入力規則を使う
セルに対して入力規則(データメニュー)を適用することが分かった。入力規則の設定において、値として許可するものに「リスト」を選択し、リストの範囲を指定してやればよい。こうすることで、リスト範囲内のセルの値が、セル上でプルダウンメニューから選べるようになる。

ただリスト範囲を直接指定してしまうと、変更の際に面倒なことになる。リストの項目を増やしたり移動したときに、無効な値の入ったリストを選択肢としてしまう。こうならないためにも、間接的な参照方法を活用すべきらしい。INDIRECT関数や、名前定義がその手段と分かった。

[2] カテゴリ数を可変にするためにはCOUNTAで数え、OFFSETで範囲を返す
リスト範囲を自動的に変更するためには、関数を使って範囲が設定されるようにしておく必要がある。
INDIRECT関数は、セルの中身を範囲とするC言語でいうポインタ的な役割。これは範囲を書いたセルか名前(あらかじめ名前定義する)が必要なので、今回は使わない。

ここでは、OFFSET関数とCOUNTA関数を用いる方法を採用する。以下のリンクに方法がそのまま載っている。

  • 参考: OFFSET関数
  • COUNTA関数: 選択範囲(列、行全体も可能)にある空でないセル数を数え上げる
  • OFFSET関数: 基準範囲とオフセット、(基準範囲の始点からの)幅と高さを指定することで、選択範囲を返す


これを使うと、以下のようにカテゴリリスト範囲を求められる。

  • カテゴリリスト範囲: OFFSET( カテゴリ表始点, 0, 0, 1, カテゴリ数)
  • カテゴリ数: COUNTA( カテゴリ行)
  • 最終的なカテゴリリスト範囲: OFFSET( $A$1, 0, 0, 1, COUNTA( $1:$1))


[3] リストを多階層化するには
これには方法がいくつかあるはずだが、MATCH関数を使う方法をとる。


これを使うと、以下のようにサブカテゴリリスト範囲を求められる。重複があるのが気になるけど。

  • カテゴリ始点: 実際のデータにおける、カテゴリ列のラベル
  • サブカテゴリ列基準: $A:$A ...こうするとOFFSET関数の戻り値が有限範囲ではなく列となる
  • カテゴリセル: OFFSET( カテゴリ始点, ROW() - 1)
  • サブカテゴリリスト範囲: OFFSET( カテゴリ表始点, 1, カテゴリ列オフセット, サブカテゴリ数, 1)
  • カテゴリ列オフセット: MATCH( カテゴリセル, カテゴリ行, 0) - 1
  • サブカテゴリ数: COUNTA( サブカテゴリ列) - 1
  • サブカテゴリ列: OFFSET( サブカテゴリ列基準, 0, カテゴリ列オフセット)

最終的なサブカテゴリリスト範囲:

=OFFSET( 分類!$A$1, 1, MATCH( OFFSET( $C$1, ROW() - 1, 0), 分類!$1:$1, 0) - 1,COUNTA( OFFSET( 分類!$A:$A, 0, MATCH( OFFSET( $C$1, ROW() - 1, 0), 分類!$1:$1, 0)-1))-1))

こんな感じでやったら、サブカテゴリも自動で増減するようにできた。

半田ごて新調

半田ごて
研究室にHAKKO製のステーション型半田ごてがあった。立ち上がりが速いし、こて先交換がしやすいし、持ちやすいしと、かなり使いやすかったので欲しかったが、さすがに高い。

温度表示が無いものの、8,000円弱で手に入るgoot製のPX-501を検討中。シビアな温度管理は必要なく、表面実装とリード部品で使い分けできれば良い程度なので充分。
あまり散財してはいけないけど...

[rakuten:auc-partsland:10008661:detail]

こて台
goot製のセラミック半田専用のこて台に、半田リールの取り付けられるST-53があった。PX-501と適合する。これまで半田リールの置き場が定まっておらず、作業中よく行方不明になっていた。セットならそんなことは起きないし、しまいやすそうなのでこちらも検討。
[rakuten:auc-partsland:10002443:detail]

ATX電源

ATX電源の価格を調べたところ、425Wで3,000円程度(送料込)の「PowerGlitter2」が目に留まった。

電源はATXメイン 24ピン(20ピン + 4ピン)と、ATX12V 8ピン(4ピン x 2)となっていた。12V電源は2系統あり、それぞれ電流容量は連続18A。突入電流にさえ気をつければある程度のモータなら扱えると思う。電圧の質は、ちゃんとした電源装置と比べると劣悪(5%から10%の変動がある)とはいえ、アナログを扱うわけではないので気にしない。

2系統というのが良く分からなかったが、下記のページによると、ATXメイン側の12Vがまとめて1系統らしい。記述は無かったが、ATX12V 8ピン側がもうひとつの系統なのかもしれない。これは現物で調べる必要がある。

この電源を使用するには、24ピンと8ピンが必要となる。コネクタについてはまた今度。