エッジコネクタを基板に半田付け

 エッジコネクタを基板に半田付けすることがたまにあったりします。こうやるとある程度ラクに出来るかな、という方法を書いておきます。
 エッジコネクタのピンを曲げてしまうと結構簡単に半田付け出来ます。


 そのまま半田付けしようとすると基板との隙間が大きいため、結構めんどくさいことになります。ここは思い切ってエッジコネクタのピンを下記写真みたいに曲げます。

 写真は不揃いですが、綺麗に合わせると半田付け後の見た目がちょっと良くなります。
 上記状態にした後に基板を挟み込み、1ピンだけを半田付けします。

 その状態で横から見て水平になっているか、を確認しながら調整を行います。

 水平になっていることが確認できたら、全てのピンを半田付けします。写真はなんか上下ズレてますが、大体あってます。

 半田は多めに使って、全体に半田がまわるぐらいまで気持ち長めにハンダコテを当てると良いかもしれません。


 ピン数が多いのでちょっと時間が掛かりますが、簡単に半田付け出来ます。

簡易型電流プローブNYA-01 | NYA manufacturingを使ってみたよ

 twitterのプロモーションで、消費電流の変化をオシロスコープで波形として見る商品が流れてきたので買ってみて使っています。
 たぶんこのツイート

だったと思いました。


 抵抗に電流が流れると抵抗値に応じて電圧が発生(V=I*R)しますが、それを利用して電流を電圧に変換しているはずです。使っているICは性能などからdigikeyで探してみて、たぶんMAX4376では無いかな、と思っています。
 4,5pinに抵抗20mΩを付けて1Aの電流を流すと抵抗値両端の電圧は
20mΩ*1A=20mV
として見えて、上記MAX4376のゲイン50倍の物を使うとこれが50倍されるので
20mV*50=1000mV=1V
の電圧として見えるようになります。そちらをオシロスコープで見ると波形として消費電流を見ることが出来ます。


 ちょこちょこと使っていたのですが、試しにみんな大好きダライアス外伝の基板を動かした時に、+5Vの消費電流がどう変化しているか、が見えるような動画をtwitterに投稿してみました。

 大体2.6A程度で、こちらはクランプメーターとほぼ同じ値になりました。結構大きく電流値は変化していることや、VSync(16.6ms)に同期して変化していることなどがなんとなく分かるのでVSyncをトリガにして波形を見た方が良かったかなとか。消費電流は大きく変わりますので、パスコンなどをきちんと入れましょう。


 VSyncをトリガにして波形を撮り直して、こちらの方が見やすいので追加しておきます。

 ch1が黄色で消費電流値、ch2が青でVSyncです。ch1のXY軸の設定は同じでXが50mA/divでYが5ms/divです。


 こういう電流を見るためのプローブも売っていますが結構高いので、約2000円でここまで見られれば良い物だと思います。
 電流を視覚的に見ることが出来ると、低消費電流の物がどのように電流を消費してどのくらい電池が保つか、などの計算が出来たり、数日に1回だけ起こる不具合があり、それがあるデバイスに過電流が流れて壊れる場合などに過電流が起こった時にオシロのトリガを掛けて、全体を止めてメールを送って…などというデバッグに使ったりしています。


 電圧も電流も何事もそうですが、見えない物が見えるようになるといろいろと分からなかったことが分かるようになったりすることもあります。こういう事象をある程度簡単に安く見ることが出来るようになり、良い時代になったなと。

テキストエディタで編集して表面に付けたシルクを裏面に

 タイトルそのままです。kicadの変更をGUI+マウスではなく、エディタなどでファイルを直接行うと楽な場合があるので簡単な例を。
 Pcbnewで表面のシルクを付けて、裏面にも同じ内容で同じ位置に置きたい場合。マウスで再度入力するのもありですが、エディタを使って編集すると短時間で作業を行えます。


 まず、kicadを全て閉じてプロジェクトを保存しているディレクトリを丸々コピーします。念のために。
 次にプロジェクトを保存しているディレクトリを見て、プロジェクト名+.kicad_pcbというファイルを探して適当なエディタで開きます。
 すでに入力した表面のシルク文字を探してみます。そうすると(gr_text ...)という記述で内容と場所などが記載されています。

 裏面シルクにコピーしたい内容をすべてコピーし、F.SilkSをB.Silksに変更、さらに裏面の場合はミラー文字にしないと反転してしまうので(justify mirror)を追加します。
 vimだとcommand modeでshift+vで範囲選択して、:を押してs/F.SilkS/B.SilkS/で置換して、さらに同じように範囲選択して:を押してs/)))$/)) (justify mirror))/で置換出来ます。簡単。

 上記変換を行ってからPcbnewで開くと表面のシルクが裏面にコピーされていたら変更完了です。


 kicadはテキストファイルで保存されるので編集が簡単です。ある部品を等間隔で並べたい、という時にはperlrubypythonなどで編集するようなスクリプトを書くとラク出来るかもしれません。
 で。そういうのはkicadで出来るのでは無いか、と思って調べたらpythonでscriptを書くと色々と出来るようになっています。"kicad python scripting"とかでググるといろいろと出来ます。ので何か書こうかなと思ってます。

cygwinのruby + fiddleでFT232RLのBit-Bang modeを使う

 いろいろと作業をしていると、ある決まった変化をする信号を出力したくなることがあります。たぶん。そういうときにFTDIのFT232RLというチップを使うと便利です。
 Windowsの場合、C#のライブラリを使ってプログラム書いてもそれなりに簡単に書くことが出来ますが、cygwinrubyで動かせるようになるとよりお手軽かな、と思って試してみたところ問題無く動かせましたので、簡単にメモとして残しておきます。


 FT232RLの実装された基板は秋月電子で販売されているFT232RL USBシリアル変換モジュールキット: 半導体 秋月電子通商-電子部品・ネット通販を使用しています。実験で使用する場合、同じく秋月電子などで販売されているブレッドボードを使うと簡単に実験することが出来ます。


 ruby 2.0から、*.dllや*.soなどのダイナミックリンクライブラリを扱うためのライブラリとしてfiddleが使えるようになっています。こちらを使ってftd2xx.dllを使用するためのコードを作成します。

require 'fiddle/import'

module FiddleFTD2xx
  extend Fiddle::Importer
  dlload "ftd2xx.dll"

  extern "unsigned int FT_Open(int, void*)"
  extern "unsigned int FT_Close(void*)"
  extern "unsigned int FT_SetBaudRate(void*, unsigned int)"
  extern "unsigned int FT_SetBitMode(void*, unsigned char, unsigned char)"
  extern "unsigned int FT_GetBitMode(void*, unsigned char*)"
  extern "unsigned int FT_Write(void*, void*, unsigned int, void*)"
end

class FTD2xx
  attr_reader :handle, :write_length

  def initialize
    @handle = Fiddle::Pointer.malloc(Fiddle::SIZEOF_VOIDP)
    @write_length = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT)
  end

  def open(idevice)
    FiddleFTD2xx.FT_Open(idevice, @handle)
  end

  def close
    FiddleFTD2xx.FT_Close(@handle.ptr)
  end

  def baudrate=(rate)
    FiddleFTD2xx.FT_SetBaudRate(@handle.ptr, rate)
  end

  def setBitMode(ucmask, ucmode)
    FiddleFTD2xx.FT_SetBitMode(@handle.ptr, ucmask, ucmode)
  end

  def getBitMode
    mode = Fiddle::Pointer.malloc(Fiddle::SIZEOF_CHAR)
    FiddleFTD2xx.FT_GetBitMode(@handle.ptr, mode)
    return mode.to_i
  end

  def write(data)
    write_data = [data].pack("C*")
    FiddleFTD2xx.FT_Write(@handle.ptr, write_data, 1, @write_length)
  end
end

 とりあえず必要な関数だけしか書いていません。必要に応じてftd2xx.hを見て追加しています。
 こちらをftd2xx.rbとして保存し、以下のようなソースコードで呼び出してBit-Bang modeでI/Oを制御することが出来ます。

require 'ftd2xx'

ftd2xx = FTD2xx.new

ftd2xx.open(0)
ftd2xx.setBitMode(0xff, 0x0)
ftd2xx.setBitMode(0xff, 0x1)

wait_time = 0.1

1.upto(10) {
  0.upto(6) { |i|
    data = 1 << i
    ftd2xx.write(data)
    sleep wait_time
  }
  7.downto(1) { |i|
    data = 1 << i
    ftd2xx.write(data)
    sleep wait_time
  }
}

ftd2xx.write(0)
ftd2xx.close

 FT232RLのD0~D7に抵抗とLEDを付けて、上記プログラムを実行すると以下のようにLEDが点滅します。

 こんな感じで簡単に信号を変化させることができるので、ちょっと思い付いたことや簡単なICの制御などに使用すると便利です。

レイフォースで連射が不安定になる原因について

 NRS-1という連射基板を作ったのですが、その際にレイフォースの連射が不安定になるということを知り、なぜそうなるのかを調べて原因が分かりましたので簡単に記載しておきます。


 原因はレイフォースは入力を取り込むタイミングが処理内容により変わり、従来のシンクロ連射回路でボタンの更新をするタイミングと入力を取り込むタイミングがほぼ同じタイミングになり、安定してON->OFF->ON->OFF...と取り込めなくなるため、でした。


 簡単にタイミングチャートっぽいのを踏まえて書くと、デモ画面や普通に背景などの処理がある程度ある場合は

 上記のようにボタンの更新タイミングと、入力を取り込むタイミングが異なるため問題無くON->OFF->ON->OFF...とボタン入力が変化します。


 3面冒頭の雑魚が出てくるシーンでは処理が軽くなり、ボタン入力が下記のようになります。

 ボタンの更新タイミングはVSYNCの立ち上がりのため変わりませんが、入力を取り込むタイミングが前後するためON->OFF->ON->OFF...とならず、ON->ON->OFF->ON->OFF...などのようになってしまい、規則正しく入力を行うことが出来なくなります。
 そのためある特定の場面で連射が効かなくなるようになってしまいます。


 NRS-1ではその他基板に関しても調査を行い、問題が無いであろうタイミングで入力の更新を行っています。そのためレイフォースでも連射が途切れるようなことはありません。
 従来のシンクロ連射回路でもタイミングを変更することにより問題無く動作するようになるのではないかと思われます。

起動しなくなったタイトーF3システムマザーボード

 以前から調子が悪く、起動したりしなかったりしていたF3基板が全く起動しなくなってしまいました。ROMを別のマザーボードに差し替えたところ動いたのでマザーボードの故障。
 詳しい方に聞いてみたところ、マザーボード側コネクタの半田が浮いて接触不良に良くなるよ、と教えてもらったので再半田したところ直りました。
 見た目全然問題無さそうでも接触していないようです。この手のコネクタは良く接触不良を起こしますが、見た目で分からないのが厳しい。


 再半田したのは下記画像の4つのコネクタ。念のために全部再半田してあります。かなりのピン数ですが、気長にやればいつかは終わります。

すごく安く買えるホットエアーステーションを使ってみたよ

 ebayなどでhot air stationなどで検索すると、どこかで見たことあるようなSMD等の半田付けに使う機材が売られています。メーカー名が違うので、いわゆるコピー品だと思われます。すごい種類売っていて安いです。
 どんなものなんだろうか、と思っていた物の買うことは無かったのですが、たまたま買ってしまった方がいて、使ってみることが出来たのでちょっとだけ書いておきます。


 とりあえず今回はなぜかamazonでも売っているWEP 858Dという機種を使ってみました。

 使ってみた結果を簡単に書くと、壊れても負けない強い心・使い捨てても全然おっけー、などと思えれば結構使えるんじゃないかな、と思いました。ちょっとしか使っていませんが、触った感触として。


 製品自体の評判はamazon.comの評価を読むのが良いのではないでしょうか。
http://www.amazon.com/WEP-858D-Soldering-Station-Suitable/product-reviews/B0055B6NGE
 まー、買ってすぐに壊れたなどと書かれてます。その他検索するといろいろと出てきます。今回は開けて中を見てませんが、見るといろいろとツッコミ出来そうな中身のように思えます。


 今回は64pinのQFPや24pinぐらいのTSOPなどを外してみましたが、まんべんなく熱を加えるようにすると問題無く外すことが出来ました。ノズルが無いので大きな物を外す時にはコツが必要かもしれません。


 普段温度測定に使っている[HAKKO] | こて先温度計・テスター | HAKKO FG-100温度プローブホットエアー用を使って温度を測定したところ、設定温度300℃の状態で吹き出し口から5mmぐらいのところの温度が270℃ぐらいでした。どこを測って表示しているのか分かりませんが、結構な誤差があるようです。電源on時の液晶表示の温度の上がり方と、吹き出し口の実測値を見ると全然相関性が無いように思えましたが気のせいかもしれません。
 結構誤差があるようなので、天ぷら油の温度を測定する物が300℃まで測定出来るので、吹き出し口の温度を測定しながら使った方が良いかもしれません。300℃以上は…温度変化させてみて勘で…。
 誤差を補正するためにCALという箇所で調整すると思うのですが、マニュアルを見ても何も書いていないためよく分からず、分解すると分かるかなと思いつつも買ったばかりだしということで特に分解などはしていません。


 同じような製品をATTEN,YiHuaなどのメーカーも作っていますが微妙に中身が違うようです。上記メーカーも検索するといろいろと出てきます。youtubeに動画でレビューなども上がっています。いわゆるコピー品なので、オススメ出来ないですが、とりあえず割り切って使うのであれば良い…やっぱ良くないですかね…。