マイコンマニヤックス/スピード・タコメーター製作編

スピード・タコメーター製作編

表示ボード製作

CA380647.JPG

とりあえず取り掛かります。
マイコン部と表示部は分けたほうが賢明だろうから、半田付けがマンドクセー7セグLED部から作ります。
・・・4桁ダイナミック駆動の完成品とか買ったほうがいいんだろうか・・と思う今日この頃。
とりあえずマイコン部の仕様とかは何も考えてません。たぶんAVR2313で作ると思いますが・・・
スピードにするか、タコにするかもかんがえてません。
なんとなく、バーグラフLEDもつけて、普段は7セグが速度、タコがバーグラフ。スイッチ押したらタコが7セグに・・みたいな感じがいいのかなー?
めんどくさいからタコとスピードはマイコン別ですね。
あとサブ表示に液晶もつけたい。

・・・2セグメント分半田付けしたところで電池きれました。寝ます。


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]いいのか?おれは  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



表示ボード製作2

CA380665.JPG

やっと5セグメントまで半田付け終わる。
最高にマンドクセー・・・
・・・盆休み、義実家で暇やったんやからもって行ってコレやればよかった・・・と心が折れる俺であった。


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]みとめたくない物だな  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



表示ボード製作3

CA380673.JPG

やっと全セグメントとコモンの配線が終わりました。
とりあえずブレッドボードに接続してみます。

CA380674.JPG

手配線で全セグメントをテスト点灯させてみる。

CA380676.JPG

DMC映画公開記念!獣の数字666で点灯。


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]うほっ!  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



CPUボード製作

表示部ができたので、マイコン基盤を作ります。
今回は、本番用は別に作ることにして、書き込み機能とブレッドボードへ差し込めるピンヘッダつきのソフト開発基盤をまずつくります。

CA380678.JPG

たいして難しい回路じゃないので、1時間くらいでできました。

CA380679.JPG

とりあえずLEDをつないで点滅するだけのソフトを書き込んで見ます。
動いたからOKとしましょう。


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]みとめたくない物だな  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



ミクミク

とりあえず、LED基盤とCPU基盤をブレッドボード上で結合!!

CA380685.JPG

まず動作確認をしてみます。
簡単なプログラムを書いて数字を各桁に表示してみましょう。
数字じゃおもしろくないので・・・

こんなことしてみました。
ついカっとなってやってしまった。
今は後悔している。
というか、この時点ですべて出来たつもりになって、モチベーションが凍結されているのは公然の秘密だ(w


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]みとめたくない物だな  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



割り込み制御

さて、タコメーターを作るなら避けては通れないのがタイマー処理と割り込み処理です。

CA380692.JPG

ボードにスイッチをつけて、タイマ1のキャプチャ入力に割り込みをかけて制御してみます。

unsigned int jj;

ISR  (TIMER1_CAPT_vect)
{
    jj++;
    if (jj > 8){
        jj = 0;
    }
}

void main(){
    
    TCNT1  = 0x0000;
    TCCR1A = 0x00;
    TCCR1B = 0x85;
    TIMSK = 0x08;
    sei();
    7seg(jj);

みたいにして、スイッチを押すたびに変数jjをカウントアップして、パターンをソレ使って順番に切り替えてみようとしたのですが・・・

ピクリともパターンが変わりません

デバッガつかってみてみると割り込み自体はかかってるみたいなんですが・・・
うーーん、、割り込みがかかってて変数もカウントアップされているのに、この簡単なロジックでなぜに動かないのだ??
というか、、、変数が、、メインループの外でカウントアップ、、って
volatile int jj で修飾しないとダメじゃないですか!
うーん、そうか、こういうマイコンのCコンパイラでもまともに最適化とかしてくれるんですね。

とりあえず外部割込みはかかるようになりました。
同じ要領でタイマ割り込みもかかりました。
次は外部割込みの間隔を計測してRPM表示にしてみます。
・・・やる気が次に出たら・・・・


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]だってこのままじゃ  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



とりあえず回転数表示

グタグタとやってましたが、ようやくタコメーター製作にちょっと近づきました。
スイッチ1回押すのをエンジン一回転と見立ててます。
一応、オープニングに例の画像が何秒か見えるようにしてます。

動画の中身。

1.まず、入力パルスの数を数えます>できた
2.じゃあ、入力パルスの幅をms単位で数えてみます>これもできた
3.では、パルス幅から回転数(RPM)を逆算してみましょう>これもできました。

人力エンジンは500RPMくらいが限界のようです(たぶん半分はスイッチのチャタリ ングです・・・)
次はこないだ作ったDDS回路を入力にして、0から10000RPMくらいまで較正してみないといけませんが・・・

あとはCDIからの信号を拾えば??
問題はそれですね。入力のアナログ回路を作らないといけません。
あと電源部と・・・


コメント
書き込みモードの選択
(SPAM防止のために質問に答えてください)  [Q]いいのか?おれは  [A]
     
コメント欄の使い方の説明(つかる画像一覧や質問の意味がわからない人はこちらを参考に)       カキコミの練習はこちらでどうぞ



「マイコンマニヤックス」に戻る



トップ   リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-27 (日) 22:34:35 (3369d)