Archive for the '電子回路' Category

半田付け系機材追加

Posted by ゆのじ on 8月 12th, 2012

最近よく構っていただいている知り合いに、「HAKKOの900系、900Lとか900Mは熱量違うよ、HAKKO951とはだいぶ違うよ」、と唆されて暫く、某所に出物があったので入手してきたのがHAKKO928、ちょっと前のアナログ温度設定なコテが2本付くステーションだ。

それなりに使い込まれた機体で、片方のコテ先が歪むほど熱にさらされた様子ではあったもののさすがHAKKO、本体側にはなにも問題なく。Mコテが2本という構成だったので、歪んだコテ先の代わりに900M-2.4Dだけ買ってきてうちの子に。使ってみると聞いていた話の通り持っている熱量が違うのか、ごつい端子でもスルスル溶ける。これはありがたい。話によればさらに大きい900Lのコテを使えば板金いけるんじゃないかと思えるほどパワーがあるらしい、これもいずれ入手してみたいと思う。

同じ知り合いに同じように唆されて、吸煙器のHAKKO421も入手した。半田ヒュームに鉛がふくまれるわけはないと思うものの、少なくともヤニの煙はたばこの煙と比べて遙かに無害だぜ、と思えるわけもなく以前から気になっていたところに「出物あるよ〜」と唆されて購入したのだが、これも騒音レベル60dBと数字だけ見るとだいぶ大きいわりには静か(騒音はかなり低音に偏っているので気にならない)なので非常に快適に半田付け出来るようになった。

某印刷所の胆管癌ではないが、こういう工業系の排出物による健康被害は原因の特定が難しい上に影響範囲がせまいせいで発覚しづらい構造なのではないかと思っているところ、少しでも気休めでも、気をつかったほうが良いのではないかと思う次第。よく使うフラックスクリーナーもシクロヘキサン系の有機溶媒を使っていたりして、そのうち排気ダクト作った方がいいのかなと思いつつも現状そのままになっていて気になっている。水溶性フラックスを使った半田を買ってみたりして色々試しているが今のところ結論は出ず、難しい問題である。

道具を使いこなすにはウデがいるが、ウデの足りないのは道具で補えるのも確か。いい道具に助けられながらウデを磨こう、そしてせっかく磨いたウデが無駄にならないようにリスクヘッジも少しずつ。

cronosさんの電子負荷をテスト

Posted by ゆのじ on 8月 11th, 2012

cronosさんの電子負荷(こちらで書かれているもの)を先日購入させていただいて、ケースやらなにやら周辺のものを作っている。

作っている中で、どの程度の応答特性なのか気になったので見てみることにした。電源やらケーブルのL成分も細かいことは気にしないで見ているので、ある一つの例としてこんな風になる、ということで見ていただければ幸い。

測定環境は、電源はKENWOODのPA18-3A、電流測定治具は自分ちの物作りプロジェクトNYAMFGで作ったNYA-01を使っている。リンク先に載っているのは0-500mA仕様だが、ちょっと抵抗を変えて0-5A仕様にして、0-5Aが0-5Vで直読できるようにしたものを利用した。

以下結果のみ。

0mA – 100mA / 100mA – 0mA


50mA/div、上段: 1mS/div, 下段: 200uS/div


50mA/div、上段: 1mS/div, 下段: 200uS/div

0mA – 1000mA / 1000mA – 0mA


500mA/div、上段: 1mS/div, 下段: 50uS/div


500mA/div、上段: 1mS/div, 下段: 50uS/div

0mA – 3000mA / 3000mA – 0mA


1000mA/div、上段: 1mS/div, 下段: 20uS/div


1000mA/div、上段: 1mS/div, 下段: 20uS/div

1000mA – 3000mA / 3000mA – 1000mA


1000mA/div、上段: 1mS/div, 下段: 20uS/div


1000mA/div、上段: 1mS/div, 下段: 20uS/div

追記(2012/08/12):
誤解のないように言うと、価格からしても個人的にはこれは全く十分だと思っているのです。ただ特性を知らない道具で色々やるのは後で面倒なことになるので、その調査の一環ということで。

そして70%値でトリガかけるようにしていたつもりで立ち下がりエッジのほう、30%値でトリガかけてしまっている。今更作り直すのも面倒なのでこれで勘弁。

lpc1114 -> lpc11u24とYAGARTOとOSXと

Posted by ゆのじ on 2月 18th, 2012

mbedを買ってその便利さに感動したものの、それが非常にmbedという枠に閉じ込められていているという気がしてしまい、結局LPCXpressoを買い足してきた。すでに持っているLPC1769版とLPC1343版もあるのだが、ちょっと目的もあるのでCortex-M0なLPC1114版。半ば意地でOSX環境で開発したいので、買ってきておもむろに真ん中で切り離した。

そしてノリノリでUSBで繋ぐべく、MiniUSBのコネクタを付け、プルアップ抵抗を付け、USBの配線をしてLDOを付けて。ここまでやってから大きなミスに気づいた。シルクスクリーンにUSB_DP, USB_DMという記載があったのでろくに調べずUSBでMass Storageでの書き込みが出来るだろう、と思っていたら、実はそれは出来なかったのだ。だからMARYもわざわざUSB-Serial変換チップが載っていたわけで。よくよくLPCXpressoのデータシートを見てみたら、

なるほど。もちろんLPC1114のデータシートにもUSBなんて文字はなく、思い切りウッカリしていた形になった。

ということでこれじゃUSBが使えないのだが、それでは色々進まないので、ホットエアを持ち出してチップの張り替えをしてしまった。ちょうど石はちょっと前にdigikeyから仕入れておいたLPC11U24で、ピンアサインもほぼ一緒(細かいところは違うが肝心なピンは同じ)なので、そのまま剥がして付け替えただけ。

さて、付け替えたはいいが、今度はどうやって中身を書くか。まずtoolchainだが、MacPortsだけでなんとかしようと試行錯誤したのだがどうしても駄目(これはさらに追って調査するつもりだが、newlibの新しい版の都合でarm-none-eabi-gccがちゃんとビルド出来ない)で、とりあえずはYAGARTO toolchainを使うことにした。頂いてきて展開してパスを通す。

次、ソースコードを書く方。CMSISなんていう胡散臭いものに手を出すのは結局mbedからエクスポートしてくるのと殆ど同じでブラックボックスが残って気持ち悪いし、とはいえ世の中には何故か「まずはどこそこからライブラリをコピーしてきて展開して」だとか「LPCXpressoを使って」ばかりでこれも落ち着かない。32kしかフラッシュがないM0クラスごとき、本当ならアセンブラで書いたって良いはず。とおもって調べていたら、同じような意図でChaNさんが32bitへの誘いというコンテンツで余計なライブラリに触れないで済む生っぽいコードを公開してくれているのを見付けた。これ幸いとこれを頂いてきてビルド、ビルドは通るけれどうまくいかない。なんでだ。

追って調べていくと、メモリアドレス先頭の0x0000 001c(割り込みベクタの頭から8つめ)にチェックサムがないとユーザプログラムがvalidとされないらしい。gccさんにここら辺やってもらう方法もあるのかもしれないが、これも調べていたらmicrobuilderさんのlpc1343codebaseをgoogle codeからチェックアウトしてきて、tools/lpcrc/以下でMakeしてlpcrcツールを入手。ちなみにこのときに

gcc -Wall -O4 -std=c99 -o lpcrc lpcrc.c
ld: lto: could not merge in /var/folders/6f/j0df6rz90jxbpfgg053_k0l80000gn/T//cc6uDMQK.o because Invalid ALLOCA record for architecture x86_64
collect2: ld returned 1 exit status
make: *** [lpcrc] Error 1

みたいなエラーがでたら、Makefileをいじって-O4を-O3にすれば回避できる。

ここまでやって、生成されたbinファイルをlpcrcに食わせることでその辺まで正しいバイナリを作れるようになったんじゃないかと思うのだけど、、、まだ動かないので結局まだ調査中。無念。調べて何かわかったら随時反映の予定で。

2012/2/20 うごいたー!

ポイントはいくつか。

  • ファームを動かすときはPORT0_1/FTOGGLEを解放するだけでなく、VBUSも解放してあげないと駄目
  • LPC11xxとLPC11UxxはGPIOレジスタがてんで違う。ばらっばら。
  • ChaNさんの公開してくださっているstartup.c最強。ちょっとだけいじったので後ほどコピーライト無し権利主張無しライセンス無しで公開予定。ありがたやありがたや・・・

複合要因すぎる。

次の調査は、CRP(Code Read Protection)を設定したときの隙間埋め。CRPは0x2fcにあるのだが、LPC11Uxxの割り込みベクタは0x00c0まで。普通に書いたらその間は00で埋めるしかなくて、572bytesほど無駄がでてしまう。0x2fcに入るのがマジックワード(32bit値4つ)でなければ良いとはいえ気持ち悪いし、そもそもCRPを使いたいときにそれでは使えない。どうもLPCXpressoなんかは頭から0x2fcまでの間に初期化コードを突っ込んだりして使ってるみたいなのだけど、そちらも調べなければわからない。これは追って別のポストに。ひとまずこの話完結。何かの参考になれば幸い。