電子工作

自作基板でI2C液晶

IMG_5649c

Lチカは無事終わっていた自作基板、お次はI2Cの動作確認です。秋月電子で売っているI2C液晶用のパターンを作ってありますので、そこに接続。

ちょっと設計時に考慮不足で、LCDのピンを曲げれば基板上のピンヘッダのパターンが全部生かせる(設計上は右上がLCDに被ってしまう)ということがわかり、無理やり実装しています。
横から見ると下の写真のような感じ。プルアップ抵抗はマイコン内蔵のでもよかったのかもしれませんが、外付で10kΩをつけています。

IMG_5651

ATmegaシリーズは初めて使うし、TWIも初めて。インターネット上の先人の知恵で勉強しながら、fleuryさんという人が作ったライブラリを使わせていただきました。
以前Tinyシリーズでの表示をやった時の経験があったので、割とあっさり表示することができました。LCD表示のライブラリがイマイチなので、もう少し整備しないといけません。

さあ、これで何をやるか、ですね。今のところはいったんこれで満足してしまってます。
ホントはこれからがアイデアの出しどころなんでしょうけど...

| | コメント (0) | トラックバック (0)

自作基板でLチカ

発注して届いた基板、無事にAVRISP mkIIと接続できて、LEDチカチカ(Lチカ)できました。

IMG_5644

スルーホール基板にしているので、写真のようにLEDを差し込むだけで点灯の確認はできます。電流制限抵抗もなしで、乱暴ですけど。

せっかくなので、動画も。
ただ光ってるだけですが...

次はI2C周りの配線があってるかどうか、かな。(それ以外はほとんどストレートに外に出てるだけ)

| | コメント (0) | トラックバック (0)

リング照明の作製

IMG_1905

白色LEDでリング照明作りました。

10kΩの可変抵抗で明るさを変えられるようにしています。
フルアナログ回路かタイマIC(555とか)で作ることができるんでしょうけど、楽な道を選んでAVRマイコンを使いました。可変抵抗をADC変換してマイコンのPWM出力でトランジスタをオンオフさせています。
LED8個なのでリング照明と呼べるかどうかわかりませんが、ひとまずきれいに見えています。

IMG_1906

これでチップ部品でも余裕!?

| | コメント (1) | トラックバック (0)

FusionPCBに挑戦

FusionPCBという、海外の安いPCB試作メーカがあると知って、PCBを作ってみたくなりました。
電気系のCADは全く使ったことがなく、PCBの知識もかなりゼロに近い状態でしたが、先人の記録がたくさん検索に引っかかるので、なんとかかんとか完成まで持ってくることができました。

CADはEAGLE日本語チュートリアルで一通り練習して操作を覚えました。本当に基本的なことだけ。50×80mmのサイズまでは無料なのがうれしいです。

で、Paypalのアカウントを作って発注。
2/19にデータを送って、3/7の今日、届きました。

IMG_1889c

当たり前ですが、しっかり設計通り出来上がっています。これはなかなか楽しい。
小さい文字がかすれ気味だったり、設計ルール通りにしてもギリギリだと厳しいところがありそうです。

IMG_1888c

10枚で発注しましたが、おまけで1枚ついてきて、合計11枚でした。
これで基板代9.9ドル、送料8.2ドルです。すごい安さ。

作った基板は写真の通り、45mm角くらいのサイズ(9.9ドルなのは50×50mmまで)で、3枚割り付けしてあります。線を引いて割り付け、自分で切断するのなら、多面取りOKだそうです。
メインはATmega328とI2C液晶が乗る基板。実験用に時計用水晶のパターンもつけてあります。

さてさて、ちゃんと動くでしょうか。

| | コメント (0) | トラックバック (0)

XBEEのレジスタが勝手に...

こんな感じで家の内外に温度センサーを散りばめていますが、XBEEの設定がよくないのか回路的によくない部分があるのか、電池が持ちません。
単三乾電池4本も使っているのに、eneloopを使って屋外だと3か月弱。真冬で最低気温がマイナス10度になる日が続いたり、今シーズンは特に寒いのでその影響もあるでしょうけど、3か月は短い。
せめて1年くらいは持つかな、と期待をしていたのですが...

その屋外のノード、先日電池切れになったので電池を取り出して充電して再び電池を入れました。
が、記録がされない!
XBEEモジュールと秋月の変換基板しか使っていないのでCommissionボタンもついておらず、リード線でボタン代わりに4回押し(ネットワークから離脱)、1回押し(ネットワークに参加)、親ノード(Raspberry Pi)側も二回押し(子機受け入れ。そもそも常時受け入れにしてるんだけど)してみたり、電源入れる順番を変えてみたり、いろいろやってみましたがどうにも計測されません。
うまくすると1度だけは温度が取れるのですが、その1度だけ。

困ってしまったので設定ツールであるX-CTUを使って見てみたら、レジスタが1個だけ変更されていました。勝手に変わるものなんでしょうか?
屋外の気温測定は昨年7月半ばから始めて7か月ちょっとになります。今回のトラブルで5日ほど無記録が続いてしまいました。

yearly

電池切れまで放っておくと深放電になって2次電池には悪そうなので、これからは定期的に充電するようにしようかな。

| | コメント (0) | トラックバック (0)

ブレッドボード用 AVRISP変換ボード

IMG_5496

AVRマイコンの書き込みには、AVRISPmkIIを使っています。この書き込み器の端子(ISP端子)は、6pinでそのままではブレッドボードにさせません。
なので今まではユニバーサル基板にICソケットとISP端子を並べて書き込み基板を作っていましたが、配線が煩雑になってしまってやりにくくて仕方ありませんでした。

そこで写真のように変換基板を作製してみました。

拡大すると、こんな感じ。

IMG_5497


二階建てというか、基板を一枚はさんでいる様子がわかるでしょうか。

IMG_5498

ISP端子の部分はこのような様子。

IMG_5499

基板の裏は当然、ISP端子に行く配線がぎゅうぎゅうとあります。あまり美しくないです...

IMG_5500

対象がATtiny861A用だけですので、ほかのIC(手持ちだと13Aと10)は従来の書き込み基板を使わないといけません。

なんだか、実用(?)品を作るより、こういった便利グッズ作って遊ぶのが好きかも...

| | コメント (0) | トラックバック (0)

I2C液晶

Untitled

I2C液晶をAVRで動かしてみました。なかなか時間がかかりました。

マイコンはAVR ATTiny861Aで、I2Cを持っていないので、USIを使ったI2Cライブラリを使わせていただき、LCDドライバは頑張って作りました。(といっても、持っている機能は、初期化、1文字表示、n文字表示、クリア、カーソル位置移動、だけ)
LCDは秋月電子で購入したAQM0802A-RN-GBW。シトロニクスの(ST7032i)というドライバICを使ったキャラクタ液晶です。シトロニクス!個人的には大変懐かしい!

仕事でI2CやSPI通信するデバイスの設計をしているのに、電気部分は担当ではないので全然知らないで来ました。それではなんだかもったいないので、少し勉強をしようと思ってやってみています。

I2Cについて、もう少しハイレベルな取り扱いはRaspberry piを使った気圧の記録で、気圧センサーからの測定値読み込みはしていますが、もう少しローレベルな部分を覗いてみたかったので。
それだったらI2Cドライバを作るところからやらないといけないのですが、そこまでのプログラミング能力がないので、今回は先人の成果を使わせていただきました。

| | コメント (0) | トラックバック (0)

AVRISP mkII をWindows8.1(64bit)で使う

PCを新しくしてAtmelStudioの起動の早さに感動していたのもつかの間、AVRISP mkIIが認識されず、書き込みができないことがわかりました。USBポートにつないでもLEDが一瞬付くだけですぐ消えてしまいます。

あれこれ調べて、AVR freaksを読んで回答を見つけました。同じ悩みの人がいて、そのスレッドの頭から解決法をまねていたのですが、うまくいかず、ずっと下のほうにあった「新しいUSBドライバ出てるよ」という書き込みに行き当たり、無事解決しました。

更新の仕方は、AtmelStudioからExtension Managerを開き、〝AtmelUSB"を検索して出てきたものでアップデートすればOK(のはず。僕の場合は試行錯誤して新規インストールという形になったみたい)。

すると、AVRISP mkIIのLEDが点くようになり、無事、書き込みができるようになりました。

| | コメント (4) | トラックバック (0)

Frisk level (フリスク水準器)

IMG_5311

AVRマイコン工作第二弾は、加速度センサを使った水準器の製作です。写真のようにLEDが並んでいて、水平だと中央の緑色のみが光るようになります。

IMG_1440

書き込み基板とブレッドボードで検証中の様子。以前購入した加速度センサー(ブレッドボードの奥のほうにあるDIP化されたIC)で水平を検出します。アナログ出力のセンサーなので、AVRのA/Dコンバータを使いました。ADCは初めて使い、ゼロから試行錯誤だったので、動いたときはうれしかったですねぇ。(Arduinoでは使ったけど、何も考えずに使えるようになってますからねぇ)
ブレッドボード中央にあるのはオペアンプ。ボルテージフォロアで使うと出力が安定するかと思って実験したのですが、違いがわからなかったので使わないことにしました。

マイコンにはAVRのATtiny861。手持ちの中ではLEDを7つ点灯させるにはこれしかなかったので、少し大きいし、プログラム容量はオーバースペックですが、861を使いました。

IMG_1438

ブレッドボードで動くようにしたら、フリスクのケースに組み込みます。
電池はCR2032。

IMG_5306

LEDの輝度をタクトスイッチでHiとLoの2段階で切り換えできるようにしました。手作業のPWMでデューティー比を変えただけ。2mAも流すと赤色LEDは十分な明るさになりますね。

基板の裏面はこんな感じ。配線ぎゅうぎゅうで修正するのもイヤになりますが、LEDとの配線を2カ所間違えていて泣く泣く修正しました。

IMG_5307

これであとは加速度センサーを水平になるようにしっかり固定すれば出来上がり。

だったんですが、電池を入れて二晩経ったらどうもLEDが暗くなっている感じ。プログラムでは当然しばらく放置すると(スイッチを押すと30秒は水準器としてLEDが点灯)、すべての出力をオフにしてMPU自体はスリープにする、という動作をさせているつもりでした。
が、消費電流を測ってみると消灯時でも2mAちょっとの電流が流れています。点灯時は4mAちょっとの消費電流なので、そこはまあ狙い通りなんですが、どうもうまくスリープしていないようです。LEDが消えたから設計通りスリープしているもんだと思ってデバッグをおろそかにしてしまったのが失敗でした(ソフト書いてるよりハンダ付けしてるほうが楽しいので、早く基板に実装したかった、ってのが最大の理由(^^;)。

フリスクのケースに入れるためにマイコンはソケットを使わずハンダ付けしてしまっています。なので、修正は大変面倒。ちょっと直す気が失せていて、電池からのコードの途中にスイッチでも入れるか、という気分です...

| | コメント (0) | トラックバック (0)

Frisk Light 化

IMG_5282

結局、フリスクのケースに入れました。(前回の続き)

電池は、単四乾電池を使いたかったので、HT7750Aを使って5Vを作ってTiny10を動かしています。まずはブレッドボードで動作確認。

IMG_5281

HT7750はなかなかうまく動いてくれません。負荷のないときなら安定して5Vになりますが、LEDに10mA流すくらいでも4V割っちゃうくらいに。手持ちのインダクタやコンデンサをとっかえひっかえしてみましたが、どの組み合わせでもそれほど大きな差は出ませんでした。なので、小型化優先でインダクタはマイクロインダクタ、コンデンサも出力側はセラミックコンデンサにしてしまいました。
で、フリスクケースにぴったり入るように基板を切り出して、部品を並べてハンダ付け。一番時間がかかったのが、電池が収まる部分をくりぬくところでした。

IMG_5296c

それほど実装密度は高くないですね。
少しでも広い範囲から見えるように、と考えて、赤LEDは斜めに付けました。

IMG_5288

マイコン周辺はこんな感じ。ATtiny10、小さいですねぇ。

フリスクのケースは簡単な回路を入れるにはちょうどいい大きさだと思うのですが、最大の欠点は、単四乾電池がそのままでは入らないことですね。そんなことを想定したケースじゃないので文句も言えませんけど...

IMG_5289

こうやってケースに穴を開けてなんとか電池を収めています。なので、平らなところに置いたときに座りが悪い...
フラ板2枚で蓋を作ろうかな...

IMG_5283

タクトスイッチで操作しますが、なんと、出っ張りません。すこし使いにくい。背の高いスイッチもあったのに、選ぶときに高すぎるかと思ってこちらにしてしまいました。ちょっと失敗です。

IMG_5286

赤LEDのほうはこんな見た目。

ブレッドボードで動作検証しているときに機能追加したくなって、Low→Highから、Low→Mid→Highの3段階点灯にして、白LED点灯時は30秒で消灯、白赤の点滅点灯のときは10分で消灯するようにしました。カバンやポケットの中で押されて点きっぱなしになるのは電池がもったいないですから。
そうしたらファームウェアのサイズが976バイト。かなりギリギリでした。

実用になるかどうかは若干疑問ですが、しばらく持ち歩いてみようかな。

| | コメント (0) | トラックバック (0)