ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示
ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示

2014年12月5日金曜日

atmega8 + 100円ショップLEDケーブルでクリスマスイルミネーション

実に10ヶ月ぶりの投稿。

そろそろクリスマスなシーズンなので去年作成したイルミネーションをアレンジしてみた。

  • 白色LEDケーブルを3本追加→計6本LED60個
  • オルゴールはなし
  • LED点灯パターンを点滅のみにして10秒毎に点滅時間をランダムに(100ms~2000ms)
簡単な回路とプログラムの割にはいい感じ。
このままツリーにまとわりつかせて飾る予定。


回路


  • atmega8
  • aitendo USB-UART変換モジュール(電源として使用)
  • トランジスタx6
  • 抵抗100Ωx6
  • 100円ショップLEDx6


動画


コード


久々にatmegaやらはんだごてやらさわったけどもわりと楽しめた。

2014年2月11日火曜日

74HC138NとNJU3711Dを使用したマトリクスLED

以前USBマトリクスLEDディスプレイを作成したのだけど、Atmega8とUSB-UART変換基板を使用していて若干もったいない感じだったので取り外して前回のDHT11の動作確認に使用していた。

ブレッドボードに実装していたのだが、デバッグ用としてなかなか有用なことがわかったので改めてユニバーサル基板に実装しなおした。

74HC138NのA0、A1、A2とNJU3711Dの^CLR、^STB、CLK、DATAの7ポートでマトリクスLEDを制御できる。




サンプルプログラム
----
----

2014年2月9日日曜日

100円ショップLEDキャンドルを常夜灯に改造

部屋の常夜灯のナツメ球が切れた。 

たまたま部品取り用に買っていた100円ショップLEDキャンドルがあったのでそれを使ってみる。

が、チラチラして嫌だとのクレームが。 

仕方ないので分解してなんとかならんかと調べてみた。

キャンドルの底面のネジをはずすと以下のように。コンデンサマイク入っとる。


チラツキの秘密はマイクか!?

ちゅうことでハンダごてではずしてみたがチラツキは止まらない。

どうも基板中央の白い部分になにかありそう(コンデンサかなにかが入ってるんだろうか)だがどうしようもない。

マイクの入力でコンデンサのタイミングをどうこうするような仕組みなんだろうか?

。。。と考えていてもわからんので、LEDを取り出してブレッドボードに繋ぐ。

LED直接だと指向性つよすぎるのでセロテープぐるぐるまいたらいい感じに。


で、翌日ナツメ球買ってきてお役御免。 というオチのない話。

タミヤ リモコンロボット製作キット クローラータイプ

タミヤ リモコンロボット製作キット クローラータイプを作成してみた。
レビューで多くの人が言うように思ったより手間がかかる。

特に不安定な部品をネジで止めつつナットを締める作業が大変であった。

デフォルトのアームタイプを作成したのだけどアームはたいして役に立たない割りには邪魔なのではずして遊んでいる。

うにうに動かすだけで割と楽しい。

完成後は3歳児から60代までと幅広い支持を集めた。

無線化の要望があがったがそれは今後の課題。


----

2014年1月13日月曜日

16x8マトリクスLEDでbitman表示(3)

前回ブレッドボードに作成した回路をユニバーサル基板に実装した。




  • 左のピンソケットにaitendo USB USART接続して電源供給と同時に、USART可能
  • 右のピンソケットにAVR ISPライタを接続してプログラム転送可能
  • 8x8のマトリクスLED2個ということでかなりのカオス配線
  • 結構気をつけたつもりでも配線間違いが発生→4箇所ほどハンダ付け直し
  • 序盤はなるたけ綺麗に実装するんだけど中盤から後半にかけておざなりになってしまうところは性格によるものだろうなぁと
次はMDF材でカバーをつけます。

2014年1月5日日曜日

16x8マトリクスLEDでbitman表示(2)

前回のプログラムを組み合わせてさらにUSARTによるビットパターン更新を加えたものを作成した。



  • 待機モードとUSARTモード
  • 待機モードではbitman run,dance,ランダムパターンスクロールの3種類を10秒ずつランダムに切り替え
  • USART読み込みがあるとUSARTモードに移行し転送されたビットパターンを表示
  • 最後の転送から10秒経過すると待機モードに移行
動作風景



プログラム
----

----

2014年1月4日土曜日

16x8マトリクスLEDでbitman表示

前回のマトリクスLED回路をAtmega8で制御してbitmanを表示してみた。
  • bitmanのパターンはここを参考
  • runで巡回スクロールするのにかなり脳みそを使った
  • runのパターンとMSB,LSBが逆になっていてスクロール方向が右シフトになってる状況でさらに巡回とか
  • danceも同様にスクロールのシフト演算がややこしかった
  • 十数回はトライアンドエラーを繰り返してようやく思い通りのパターンに
  • プログラム変更して試すのに毎回4分かかるのがやはりキツイ
動作風景



プログラム
----
----

2013年12月30日月曜日

74HC595と74HC138Nで16x8(8x8x2)マトリクスLED点灯

シフトレジスタ74HC595とデコーダ74HC138Nで8x8のマトリクスLED2個を動かしてみた。
  • マトリクスLEDのアノードを74HC138Nの出力に接続(行)
  • マトリクスLEDのカソードを74HC595の出力に接続(列)
  • 74HC595を連結(1個目のQ7Sを2個目のDSに接続)
  • 74HC138N、74HC595ともに入力はジャンパーピンでHL切り替え
  • 74HC595のクロックはスライドスイッチで行う
  • いわば手動ダイナミック制御
  • 簡単な回路なのに手持ちのジャンパーピン全部使用
  • とくにマトリクスLEDの下部に配線するのに腐心した
  • 次はAtmega8で制御予定


動作風景

2013年12月29日日曜日

秋月PINフォトダイオードガイガー制作(2)

秋月の回路図を改めて確認したところ、アナログ部の出力をPICマイコンのAD変換ピンに挿してるっぽいことに気づいた。

アナログ部の出力を外部割り込みするんじゃなくてAD変換するのが正解っぽい。

ということでAtmega8でAD変換してみた。

  • アナログ部出力をADC0に接続し、その結果をLEDに出力
  • Atmega8のAD変換は10bitなのだが上8bitのみを使用(ADLAR)
  • 連続AD変換と割り込みを利用してLED表示用バイト領域を更新
  • 200kHzを超えると変換精度が下がるらしいのでAD変換用タイマーをck/8にする
  • 基準電圧に内部2.56Vを使用
----
----

で、実験結果。

  • PINフォトダイオードのアルミ遮蔽が不十分らしく太陽光があたると電圧低下する様子
  •  →簡易照度計完成(アレ!?)
  •  →AD変換はできてるっぽい
  • やはり手を近づけるとLEDがチラチラする
  •  →静電気に弱し
  • マントルを近づけるとチラチラするものの静電気のせいかどうか判別不能


ふーむ。PINフォトダイオードのアルミ遮蔽をしっかりやって再実験の必要がありそうだ。

2013年12月24日火曜日

秋月PINフォトダイオードガイガー制作(1)

秋月のPINフォトダイオードガイガーキットの回路をサイトのマニュアルを元にブレッドボード上に作成してみた。


マニュアルの回路図のアナログ部を作成してテストポイントをAtmega8のINT0に接続。

ハイインピーダンスモードで割り込み。

割り込みがあったらLED点灯というシンプルなもの。


なのだが。うまく動作しない。

マントルを近づけても反応なし。

指を近づけると静電気のせいか光る。
マニュアルにあった静電気対策(PINフォトダイオードのアルミカバーをアース)していないせいかも。

あと色々試したところスマホのカメラ用フラッシュを利用したライトに反応する。

強力な光なのでアルミ箔を通過するんだろうか?

原因としては回路のC3(1pF)が入手できなかったので代わりに2pFを挿してるせいが有力。

他の抵抗だとかを調整してやれば動きそうだが回路の動作原理を全く理解していないので困難。

どうしたものか。OPアンプとかの勉強すべきだろうか。すべきだろうなあ

2013年12月9日月曜日

マトリクスLEDでライフゲーム

というわけで定番のライフゲームを実装してみた。

動作風景


ソース
----
----

まあどうってことない。

で、動作確認してて気づいたのだけど、光らない列が1列あった。

調べたらハンダ剥がれとった。ぐむぅ。修正。

2013年12月5日木曜日

USBマトリクスLEDディスプレイ(1)

以前、ブレッドボードに作成したUSBマトリクスLEDディスプレイをブレッドボードに実装してみた。

左がUSB-UART変換モジュール、中央にマトリクスLED、右にAtmega8、上部にISPコネクタ

基板ウラ面
動作風景

感想など


どう考えても結線がクロスするので最初から細めの耐熱ワイヤを使って繋いでいったのだけど、

Atmega8のポートとマトリクスLEDの端子をもう少し考慮して、

マトリクスLEDの端子間にAtmega8を配置すればもっと綺麗に配線できた気がする。。。

プログラムは以前作成したものを使ったが、なぜだか特定のビットパターンをUSARTで受信すると暴走するので少し直した(簡単なパターン送信Rubyスクリプトも追加)。

直した点は
  • USART_RXC_vectの中でフレームエラーをチェックしてる部分を削除
  • UCSRBの送信フラグTXENを0に
フレームエラーが一度発生した際にUDRを読み込まずに延々とフレームエラーで割り込みがかかり続けたのではないかと想像。

次はプログラムを修正して待機モードを作成しようかと、

  • 待機モード中は幾何パターンとかビットマンとかライフゲームとか適当に表示
  • USART受信したらしばらく受信パターン表示
  • 最終受信から適当な時間経過したら待機モード移行

2013年11月16日土曜日

100円ショップ クリスマス用デコレーションLEDライト=スライドスイッチ付き電池ボックス+LED10球ケーブル

100円ショップシルクに大変お買い得な商品があったので買ってみた。

クリスマス用デコレーションライト。



たった105円でスライドスイッチ付き電池ボックスとLED10個付きケーブルが手に入るのだ。

これは大変お得。

LEDは赤、白、青の3色があるので3つともゲット。

単体では電池を入れるとスイッチオンオフで点灯、消灯するだけのシロモノだが。

分解してLEDをマイコンに繋げば点滅パターンは思いのままに。

よーし。パパ、クリスマスツリー用オリジナルデコレーションライトでも作っちゃうぞー。

秋月電子ブレッドボード電子オルゴールキット(2)

ベースのキットに以下の変更を加えてみた。
  • 電源を1.5V単四電池から3.3Vブレッドボード電源モジュールに変更
  • メロディICをUM3482からUM3481に変更
  • 圧電ブザーを8Wツイーターに変更

動作風景

圧電ブザーよりツイーターの方が音が断然いい。

昔のファミコンのような音で懐かしい感じ。

UM3481はUM3482よかエフェクトに拘ってる感じではあるけども、ジングルベルとか音量小さくなるのが☓だなぁ。

UM3482のように素朴で良かったのに。


あとUM3481をブレッドボードからはずすときにピンをあからさまにねじ曲げてしまった。

指で直そうとしたけど下手にすると完全に折れてしまいそうなので、ねじれたまま(´・ω・`)ショボーン



なんか綺麗にはずせるうまい方法はなきものか。

2013年11月15日金曜日

機材追加 秋月電子ブレッドボード電子オルゴールキット等

マトリクスLEDので大量のジャンパーピンを消費したこともあって、秋月でジャンパーピンを追加することにした。

せっかくなのでメロディICを使った電子オルゴールキットも購入。てかこっちがメイン!?
送料込みで\2,500なーりー。



その他は

  • 8Wスピーカー(よくわからないけど買ってみた。)
  • クリスマスソングメロディIC(シーズンなので)
  • スペーサー+プラネジ
  • マイクロUSBDIP化キット(便利かなと)


で、早速オルゴールキット組み立ててみた。

親切丁寧なマニュアルがあるので20分くらいで完成。



動作風景


圧電スピーカーのチープな電子音が物悲しい感じ。


にしても0Ωの抵抗=ジャンパーピンって電子工作以外に何のために使うのだろうか。

抵抗と同じラインで作れるから安い!とかそんな?

2013年11月10日日曜日

Atmega8-16PUでマトリクスLEDのダイナミック制御

前回確認したマトリクスLEDをAtmega8-16PUでダイナミック制御してみた。

単純なパターンを一定間隔で反転するだけ。



回路はAtmega8-16PUの16ポートにマトリクスLEDを直結しただけ。

一応アノードに100Ωの抵抗かましてある。

当初はシフトレジスタとデコーダ使おうかと思ってたけどAtmega8の出力ポート数足りてたので直結してみた。

割り込みとか入力とかする場合はシフトレジスタが必要になるかも。

プログラムについては、ポートに対応したビット操作だけなんで簡単だろうと思ってたけど以外と手間取った。

特定のビットだけ書き換えたりとか。いや基本なんだろうけど。普段ビット操作なんかしないから。
あとは行表示の前に一度LEDオフにしとくとか、ディレイの入れ方とか。

それとプログラムのバイナリが650バイトで転送に180秒かかる。
ちょっと直しては転送を繰り返すと結構待ち時間がガガガ。

今時のフラッシュメモリデバイスと比べると桁違いに遅い。のはデバイスなのか、ドライバというか転送プロトコルのせいなのか。まあいいや。

作成したプログラム
---- ----


2013年11月8日金曜日

マトリクスLED LD-1088BGY の動作確認

aitendo 8x8マトリクスLED LD-1088BGYの動作確認をした。

サイトにある以下のデータシート?だとピン配置が不明なので、実際にブレッドボードに繋いで確認した。




側面に1088BGと書いてある辺を左として上からpin1、下まで行ってまた左からpin9と定義する。

                    1 2 3 4 5 6 7 8
1  pin01  1 o o o o o o o o pin09
0  pin02  2 o o o o o o o o pin10
8  pin03  3 o o o o o o o o pin11
8  pin04  4 o o o o o o o o pin12
B  pin05  5 o o o o o o o o pin13
G  pin06  6 o o o o o o o o pin14
     pin07  7 o o o o o o o o pin15
     pin08  8 o o o o o o o o pin16
pin01 ... col4
pin02 ... col2
pin03 ... row2
pin04 ... row3
pin05 ... col1
pin06 ... row5
pin07 ... col3
pin08 ... col6
pin09 ... row8
pin10 ... row7
pin11 ... col7
pin12 ... row1
pin13 ... col5
pin14 ... row6
pin15 ... row4
pin16 ... col8

column ... アノード
row ... カソード

       05 02 07 01 13 08 11 16
12  oo oo oo oo oo oo oo oo
03  oo oo oo oo oo oo oo oo
04  oo oo oo oo oo oo oo oo
15  oo oo oo oo oo oo oo oo
06  oo oo oo oo oo oo oo oo
14  oo oo oo oo oo oo oo oo
10  oo oo oo oo oo oo oo oo
09  oo oo oo oo oo oo oo oo

ええとアノードコモンなので、column=列が共通であると。
てことはrow=行毎に描画して、表示する行をLOW、表示しない行をHI。
点灯する列をHI、点灯しない列をLOWとすると。

1行目の描画
    H L L L L L L L
L  o x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
2行目の描画
    H H L L L L L L
H  x x x x x x x x
L   o o x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
H  x x x x x x x x
....
という感じかな。

次はプログラム作ってダイナミック駆動の確認ですな。

しかしこのマトリクスLED、ピンの長さが微妙に足らずにブレッドボードにうまく刺さらん。

グッと押し込んでもビョンと跳ね返る。なんかいい方法ないかなぁ。

2013年11月6日水曜日

AVRプログラマ自作(2) Ubunutu + avrdude + 自作回路 + RS232C USB変換ケーブル

前回作成した回路をユニバーサル基板に実装してみた。





早速、試した見たところ、以下のように途中でエラーとなった。
$ avrdude -p m8 -c ponyser -P /dev/ttyUSB0 -U flash:w:blink2.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.58s
avrdude: Device signature = 0x000102
avrdude: Expected signature for ATMEGA8 is 1E 93 07
         Double check chip, or use -F to override this check.
avrdude done.  Thank you.
どうもデバイス識別コードがうまくPC側に伝わってない様子。

たぶんPCへの入力はMOSIだと思うんだけど、
MOSIの部分の配線を間違えたのかなぁと何度も確認するがやはり正しい。

2,3日悩んでふと回路を触ってみたところ、GNDのラインで一部ハンダがはがれて接触不良を起こしていることがわかった。

その部分をハンダ付け直したらうまく動作した。

基盤裏、一番下がGND
やれやれ。

あー。一応使った部品リストを載せておこう。

2013年11月1日金曜日

AVRプログラマ自作(1) Ubunutu + avrdude + 自作回路 + RS232C USB変換ケーブル

前回、aitendoのAVRプログラマでAtmega8-16PUにプログラム転送できることは確認した。

したんだけど、いちいちWindows起動してプログラム転送するのが面倒。

なんとかLinuxでプログラム転送できないかなぁということで調べてみた。

で、RS232Cと簡単な回路でできそうなことがわかった。


  1. Serial programmer
  2. Simple Serial Programmer for AVR

1.と2.では微妙に回路が違うんだけど、2.の方は~RESETになってるので1.の回路をブレッドボードに作成。

RS232Cの方はUSB変換ケーブルを持っていたのでそれを使用。

回路全体

回路拡大

RS232C変換ケーブル

そして2.のサイトを参考に以下のコマンドを実行したところ、無事転送成功。
$ avrdude -p m8 -c ponyser -P /dev/ttyUSB0 -U flash:w:blink2.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.58s
avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "blink2.hex"
avrdude: input file blink2.hex auto detected as Intel Hex
avrdude: writing flash (104 bytes):
Writing | ################################################## | 100% 20.37s
avrdude: 104 bytes of flash written
avrdude: verifying flash memory against blink2.hex:
avrdude: load data flash data from input file blink2.hex:
avrdude: input file blink2.hex auto detected as Intel Hex
avrdude: input file blink2.hex contains 104 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 19.97s
avrdude: verifying ...
avrdude: 104 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done.  Thank you.
動作確認は出来たのでユニバーサル基板に本番回路を実装しよう。