JJ1WKN Log

自作や移動運用関連のログです。

Tanukino 3軸加速度センサーで LED コロコロ

2010-02-22 | Tanukino
秋月で3軸加速度センサーを買ってきたので、8x8LEDマトリクスでLEDコロコロを作りました。
3軸のうちX軸とY軸の出力で8x8LEDマトリクス上の位置を決めてLEDを点灯させます。
基板を傾けるとLEDの点がコロコロと動き回ります。
回路とソフトはエレキジャックNo.12を使用させて頂きました。
ブレッドボード左側の緑の四角い基板が3軸加速度センサーモジュールKXM52-1050です。


Tanukino 3軸加速度センサーで LED コロコロ

MSP430 eZ430-F2013 でLEDピカピカ その2

2010-02-21 | MSP430
その2です。

以前買ったエレキジャックNo.8の付録で付いていたMSP430F2013があったのを思い出したので、ブレッドボードにMSP430F2013を載せて、LEDピカピカのプログラム書き込みのテストをしてみました。

LEDは2つにして、交互に点滅させることにしました。
MSP430F2013は14ピンですが、10本のI/Oがあります。
プログラムはI/Oポートの入出力方向を設定して、ポートに出力すればOKです。


MSP430F2013は秋月で300円とちょっと高めですが、16ビットのADコンバーターが搭載されていますので、お買い得?かも。

MSP430 eZ430-F2013 でLEDピカピカ

2010-02-18 | MSP430
TEXAS INSTRUMENTSのMSP430に手を出してしまいました。

エジソンプラザのお店でで500円でした。激安。


ケースから中の基板を取り出してみました。
右1/3がターゲットボードで、左側がライタ/デバッガです。


裏側です。


ターゲットボードを外してみました。


付属のCD-ROMから開発ツールをインストールして、サンプルのLEDピカピカをビルドしてみました。
開発言語はCです。


ターゲットボードには確認用にLEDが1つ付いているので、お決まりのLEDピカピカのテストができます。
プログラムを書き込めば、電源につなぐだけで、動作します。


ターゲットボードには14ピンのコネクタを取り付ける穴が開いていて、I/Oがいくつか出ているようです。
コネクタを増設しないと、LEDピカピカの他には遊べそうにありませんね。

Charlieplexingの実験 その4

2010-02-15 | Tanukino
その4です。

回路の一部を「ikkeiplexing」に改造しました。

元の回路では、桁がOFFの時、ベースが浮いていますので、薄っすら光るセグメントがありました。
ベースをグラウンドに落とす抵抗を省略したのですが、レイアウトの関係で追加するのも面倒なので、「ikkeiplexing」方式に変更しました。


きたないですが、スケッチを掲載しておきます。
1mSごとにカウントアップするようにしたので、999.999秒までのストップできないウォッチです。
ストップウォッチで測定してみましたが結構正確でした。
<>は半角にしてください。
#include <MsTimer2.h>
/*
Ikkeiplexing 7seg Led 6Digit Demo
2010-02-14 JJ1WKN
Keta 6  5  4  3  2  1  Vcc-[C1]-[C2]-[C3]-[C4]-[C5]-[C6]   
D10  A  A  A  A  A  A  D10-R180-A6-A5-A4-A3-A2-A1 
 D9  B  B  B  B  B  B   D9-R180-B6-B5-B4-B3-B2-B1
 D8  C  C  C  C  C  C   D8-R180-C6-C5-C4-C3-C2-C1 
 D7  D  D  D  D  D  K1  D7-[B1]-R180-[E1]-Acom1-D6-D5-D4-D3-D2
 D6  E  E  E  E  K2 E   D6-[B2]-R180-[E2]-Acom2-E6-E5-E4-E3-E1
 D5  F  F  F  K3 F  F   D5-[B3]-R180-[E3]-Acom3-F6-F5-F4-F2-F1
 D4  G  G  K4 G  G  G   D4-[B4]-R180-[E4]-Acom4-G6-G5-G3-G2-G1
 D3  P  K5 P  P  P  P   D3-[B5]-R180-[E5]-Acom5-P6-P4-P3-P2-P1
 D2  K6 P  G  F  E  D   D2-[B6]-R180-[E6]-Acom1-P5-G4-F3-E2-D1
*/
// 7seg Led Font
unsigned char font[10] = {
//ABCDEFGP 0:on 1:off
  0b00000011, // 0
  0b10011111, // 1
  0b00100101, // 2
  0b00001101, // 3
  0b10011001, // 4
  0b01001001, // 5
  0b01000001, // 6
  0b00011111, // 7
  0b00000001, // 8
  0b00011001  // 9
};

byte Keta,KetaMask;
unsigned char buff[6];
long NumCount;

void setup()
{
  AllInput();
  Keta = 0;
  KetaMask = B00010000;
  NumCount = 0;
  MsTimer2::set(1,Display); // 1mS
  MsTimer2::start();
}

void loop()
{
}

void AllInput()
{
  byte i;
  for(i = 2;i <11;i++) 0;i--)
  {
    s = tmp / div;
    buff[i-1] = font[s];
    tmp = tmp % div;
    div = div / 10;
  }
}

void Display()
{
  byte i,v,mask,FontBuff;
  SetFont();
  AllInput();
  FontBuff = buff[Keta];
  v = FontBuff & KetaMask;
  if(v == 0)
  {
    pinMode(2,OUTPUT);
    digitalWrite(2,LOW);
  }
  FontBuff = FontBuff | KetaMask;
  mask = B00000001;
  for(i = 3;i <11;i++)
  }
  pinMode(7 - Keta,OUTPUT);
  digitalWrite(7 - Keta,HIGH);
  Keta++;
  KetaMask = KetaMask >> 1;
  if(Keta > 5)
  {
    Keta = 0;
    KetaMask = B00010000;  
  }
  NumCount++;
 if(NumCount == 1000000)
    NumCount = 0;
}


Charlieplexingの実験 その3

2010-02-14 | Tanukino
その3です。

7セグLEDを制御してみました。
回路図です。
同じセグメントを並列に繋いでいきますが、アノードコモンで使っている線は使えないので、空いているD2に繋ぎます。
制御方法は、全ポートを入力にして、点灯させるセグメントをLOWにします。
最後に桁のポートをHIGHにすると点灯します。
次の桁も同様にして、グルグル回します。


できた基板です。Tanukinoと繋いでテストするために、ソケットをつけました。
下半分が空いていますが、スタンドアロン版用の空きエリアです。


裏側です。痺れました。
通常の7セグは上下にピンが出ていて、割と配線がし易いのですが、この7セグは通常のICと同じで左右にピンが出ているので、隣合わせで配置すると、隣のピンとの間隔が狭いので配線が大変でした。


固定ですが、表示してみました。


デモ用にカウントUPさせてみました。
ディレイは2msです。目で見ても少しチラついているので、小さくした方がいいかもしれません。
Tanukino 9本の線で6桁の7セグLEDを制御 Charlieplexing方式


  xxx
  iii

Charlieplexingの実験 その2

2010-02-11 | Tanukino
その2です。

手動での実験が終わったので、Tanukinoで制御してみました。

ブレッドボードに4x3のマトリックスを組んでみました。
Fritzingというお絵かきソフトで実体配線図を描いてみました。
ブレッドボードでのプロトタイピングを意識したソフトで、ブレッドボード、Arduinoといった部品が用意されています。
ブレッドボード、回路図、PCBの3つのビューがあり、ブレッドボードに部品を配置すると、回路図や基板のパターンができます。
こんなかんじです。綺麗な絵ですが、部品が重なっているので、実体配線図としては今ひとつです。
見栄えを重視するなら、部品が重ならないようにレイアウトする必要がありますが、実際は配線重視というか、成行きですね。


分かりにくいので、いつもの回路図エディタで描いてみました。
回路は4本から2本を取り出す総当りなので、逆向きに接続したペア(AB,BA)を作って1組として、あとは、AB,AC,AD,BC,BD,CDのペアを配線が短くなるように適当に配置します。


Tanukinoに接続してテストしているところです。
Tanukinoとの接続は10本のケーブルですが、実際に使用しているのは4本です。
ソフトはUziMonkey's blogを参考にしました。

全部のI/Oを入力にします。
pinMode( A, INPUT );
pinMode( B, INPUT );
pinMode( C, INPUT );
pinMode( D, INPUT );

Aを出力にしてHIGH=5V、Bを出力にしてLOW=0VにするとA-|>|-BのLEDが光ります。
このときC,Dは何も繋がない状態になります。
pinMode( A, OUTPUT );
digitalWrite( A, HIGH );

pinMode( B, OUTPUT );
digitalWrite( B, LOW );



動画をUPしました。

Tanukino 4本の線で12個のLEDを制御 Charlieplexing方式


Charlieplexingの実験

2010-02-08 | Tanukino
ノンノさんに教えて頂いたマキシム方式(Charlieplexingというらしい)の実験をしてみました。

Charlieplexingの原理です。

N=2から。
A、B2本のI/O線にLEDをつなぐ繋ぎ方は2通りあります。
A>BとB>Aですね。
A=Hi、B=Loで左側のLEDが、逆にすると右側のLEDが点灯します。
LEDはダイオードなので、逆の電圧が掛かっていますが、点灯しません。
2本のI/O線で2つのLEDの制御ができました。
同時には光りませんが、高速に切り替えてやれば、両方点灯しているように見えます。

N=3では、
A,B,Cの3本になりました。
AB,AC,BA,BC,CA,CBの6通りの繋ぎ方があります。
A=Hi、B=Loで一番左のLEDが点灯します。
このときCには何もつなぎません。
このように3本の線のうちどれか2本を選んで、Hi/Loを出力すれば任意の1つを点灯することができます。
何も繋がない状態にするには、ポートを入力に設定します。


ブレッドボードで6個のLEDで実験をしてみました。
3本の抵抗をポートA、B、Cに繋ぎますが、電源からミノムシクリップで、5Vをかけてテストしました。
今回は手動でテストしましたが、Tanukinoでこの操作をプログラムします。


N=4でも考え方は同じです。12個のLEDを制御できます。
Nを増やしていくと、N*(N-1)個のLEDを制御できます。


N=9の回路図です。大きいのでクリックしてください。
8個づつ区切って、a,b,c,d,e,f,g,pと名前をつけてみました。
8個のLED単位でみると、アノードコモンの7セグLEDに見えます。
カソードコモンの場合はLEDの向きを反対にすればOKです。
この回路で72個のLED=9桁までの7セグを制御することができることになります。

TanukinoのI/Oは最大20本あるので、20*19=380個のLEDを制御できそうですが、配線が大変そうですね。
巨大LedCubeは作るのが大変なので、7セグ4桁くらいの表示器でも作ってみようと思います。
パラに接続された2桁LEDは使えませんので、1桁のLEDが必要になります。
同じピンを繋ぐわけではないので、配線が大変そうですね。


MC34063A DCDCコンバータの製作

2010-02-04 | 電源
100円ショップで買った充電器から部品取りをして、ステップアップ方式のDC-DCコンバータを作りました。

元の基板です。


部品取り完了です。殆ど流用できます。


完成した基板です。
3.6VのLiイオン充電池を入力にして、Tanukinoを動かすための5Vを作ります。
回路はデータシート通りです。
VRを調整したら10Vまで出ました。


あとはいつものケースを作って入れます。




Tanukino 一人旅

2010-02-03 | Tanukino
ArduinoはIDEでスケッチをコンパイル(ベリファイ)して、TanukinoなどのArduino互換ボードへUSB経由のシリアル通信で書き込んで実行します。

あまり知られていないのですが、コンパイルするとHEXファイルが生成されます。
アップロードすると、このHEXファイルをAVRに書き込まれているブートローダーが受信して、フラッシュメモリに書き込み、実行されます。

ここで、HEXファイルをAVRライタで直接AVRに書き込むとどうなるでしょう?
なんということでしょう。ブートローダー無しでそのまま動いてしまいます。
つまりArduinoの開発環境で、Arduinoのブートローダーが書き込まれていない素のAVRで動作するアプリが作れるのです。

試しに、4x4x4LedCubeのHEXファイルを書き込んでみたところ、無事動作しました。
さすがにシリアル通信はブートローダー内のルーチンを利用しているので、動作しないかもしれません。

ブートローダーのソースを見て見ましたが、追いかけ切れません。
試してみるのが手っ取り早いので、やってみました。

AVRライタで書き込んだATMega168をTanukinoに差し込んで電源を入れてみました。
この通り、問題なくシリアル通信ができました。


というわけで、試用版のコンパイラとは異なりサイズ制限の無い開発環境になりました。
Arduinoの標準や寄贈ライブラリや、山のようにある作例スケッチのオマケ付きです。

AVRはATMega8,168,328などに限られますが、秋月価格で200円、230円、250円なので、I/Oポートも沢山あるし、どんどん利用していこうと思います。
7セグ8桁(16I/O)なんて簡単に実現できますね。配線が大変ですが。
シリアル入力の表示器でも作ろうかな。きっと誰かが作っているでしょうね。

Tanukino で周波数カウンタの製作

2010-02-01 | Tanukino
Arduino互換?機のTanukinoで周波数カウンタを作りました。
作ったといってもデジタルの5番ピンにリード線を刺しただけです。

Arduinoで周波数カウンタを作れないかと捜していたら、周波数カウンタ用のライブラリがありました。
さすがArduino。思いつきそうなテーマは既にどなたかが手がけているようです。

「なんでも作っちゃう、かも。」のサイトの例をそのまま書き込んでみました。

カウントした周波数はシリアル通信でArduinoからPCに送られてきますので、IDEに付属の通信ソフトで表示します。
Arduinoはシリアル通信が標準でできるので、出力部分のハードを作らなくていいので、便利です。


Tanukinoのデジタル5番ピンにリード線を刺して、ファンクションジェネレータにつなぎました。
入力アンプは省略して、カウントするまで、ファンクションジェネレータの出力を上げていきました。


ファンクションジェネレータで2MHz付近を発振させてカウントしました。


あとは適当な入力アンプを付けて、LCDか7セグダイナミック点灯すればOKです。
ちなみにカウント周波数の上限はAVRなのでクロック周波数の半分で8MHzです。
これ以上はプリスケーラが必要です。