• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

satto.v11のブログ一覧

2012年08月31日 イイね!

使用した電子部品たち(オペアンプ)

使用した電子部品たち(オペアンプ)今回、「自作デジタルモニターを作ってみた(其の四)」で「オペアンプ」なるものを使ってみました。使える電子部品なんで自分への備忘録…。

オペアンプ」とは要は増幅器のこと。「外気温計」では「LM61BIZ」ってセンサを使って温度を測定してました。
このセンサで外気温計として使うとしたらせいぜい使用範囲が−10〜40℃までとして、0.3〜0.7V程度の電圧しか出力しません。それを、A/D変換をして5Vの尺度で測定すると多少の電圧の振れ幅で大きな温度の振れ幅となっていました。ならば、出力電圧を増幅してやって、精度を上げてやろうと考えて「オペアンプ」を使用しました。

この部品いろいろな使い道があるのだけれど、今回組んだ増幅の回路は「非反転増幅回路」と呼ばれるもので、言葉はややこしそうだけど簡単に書くとこんな感じ…。


真ん中の、三角の部分が「オペアンプ」です。特徴を簡単に言ってしまえば「入力端子の電圧差を大きく増幅して出力する。」です。
V+には電源、GNDを接続します。この回路だと、Inputから入ってきた電圧は、(1+R2/R1)倍されてOutputへ出力されます。今回は、増幅を5倍としたかったのでR2を40kΩ、R1を10kΩの抵抗を付けました。これで0.3〜0.7Vだった電圧が1.5〜3.5Vにまで増幅されます。単純に5倍の分解能に向上します。比較的少ない部品で簡単に増幅できました。

増幅できる出力は電源以上の出力はできません。例えば、電源に5Vつないだら5V以上は増幅できないということです。ほぼ電源近くまで出力できるオペアンプは「フルスイングオペアンプ」と呼ばれます。

「オペアンプ」にも様々な種類が存在します。お気軽で定番なら「LM358N」という部品らしいのですが、今回は「フルスイングオペアンプ」を使用したかったので、「NJM2732D」なるものを使いました。ちょっと高級品で1個100円です。
これの、回路図は以下です。

ピン8番には電源「V+」をピン4番には「GND」を接続します。回路中に2個の三角がありますが、この部品は2回路分の増幅が行えます。この品番は「フルスイング」タイプなので電源近くの電圧まで増幅を使用できます。

今回は、「デジタルモニター」を使って勉強してい(遊んで)ますが、ECUやセンサーから出てくる信号はどれも数Vの小さな電圧です。またいつか作り直すときがあると思いますが、そのときには精度向上のためにも、こんな部品も使っていこうかなと思っとります。
このデジタルモニター遊び…面白いのでしばらく続きそうですw
Posted at 2012/08/31 20:58:36 | コメント(0) | トラックバック(0) | 電子回路 | 趣味
2012年08月21日 イイね!

LCDモニターについて

LCDモニターについて今回「LCDモニターを使ってみた」で二種類のキャラクターLCDモニターを使ってみました。巷にはいろいろなLCDが存在し、まだまだ奥の深い電子部品です。今回使ったLCDのご紹介と自分への備忘録w

これらのLCDは使い方が比較的簡単でプログラムのデバッグ等に気軽に使えて重宝しています。マイコンへの接続は後述しますが、マイコンへのI/O本数を節約するために「4bitモード」を使用しています。以下の説明(備忘録)は、4bitで動かす時の設定です。

写真上は「ACM0802C-NLW-BBH」(500円)です。8文字X2行で表示状態は「ここ」を参照ください。バックライト青色で白色抜きの文字。

LCDの下準備として…


①基盤裏の「R7」に100Ω程度の抵抗をつける(多分バックライト)。
②「R8」には何も付けない。
③「R9」には0Ω。即ち短絡させる。
④【Vo】は10kΩ程度の半固定抵抗を【Vss】と【Vdd】と接続する(コントラストの調整)
⑤LCDからの読込みを行わないのであれば【R/W】は0V(GND)へ。
⑥「4bitモード」を使用するので、【DB0】〜【DB3】は0V(GND)へ。
⑦【Vss】を+5V、【Vdd】をGNDへ・・・。
⑧マイコンへの接続は【RS】・【E】と【DB4】〜【DB7】の合計6本。


※【 】内の記号はそれぞれのピンに対応したシンボルです。データシート等を参照してください。

写真下は「SD1602VBWB-XA」(800円)です。16文字X2行で表示状態は「ここ」と「ここ」を参照ください。このタイプもバックライト青色で白色抜きの文字。

これもLCDの下準備として…


①バックライトは3.2Vで20mAなので【A】に+5Vを100Ω程度の抵抗を介して接続する。
②【K】は0V(GND)へ。
③【Vo】は10kΩ程度の半固定抵抗を【Vss】と【Vdd】と接続する(コントラストの調整)
④LCDからの読込みを行わないのであれば【R/W】は0V(GND)へ。
⑤「4bitモード」を使用するので、【DB0】〜【DB3】は0V(GND)へ。
⑥【Vss】を+5V、【Vdd】をGNDへ・・・。
⑦マイコンへの接続は【RS】・【E】と【DB4】〜【DB7】の合計6本。


2タイプとも似たような配線です。ここまでくれば、あとはマイコンで操作してやれば表示することができます。表示できる文字は、8bitなんで最大256種類ですね。だから漢字の表示は当然できません。基本的な文字はASCII文字コードと互換性があるのでコード調べなくてもプログラムC言語の標準ライブラリで文字を打てば普通に表示できます。

両者のLCDはあまりにも表示形態が似ていたので、C言語でのプログラムでは表示用のライブラリをつくって、プログラムにインクルードしてやってます。こうすれば、プログラム毎に同じプログラムを書く必要もなく様々な場面で気軽にLCDが使えてます。下手なプログラムですが、表示用ライブラリの内容はこんなの…




/******************************************************
LCD表示用ライブラリ(4bitモード)
対応LCD:ACM0802C、SD1602
******************************************************/


//接続ポートの定義
#define LCD_PORT    PORTB     //DBピンの接続ポート
#define LCD_RS        RB5        //RSピンの接続ポート
#define LCD_E        RB6        //Eピンの接続ポート

void init_LCD(void);
void char_LCD(char *str);
void data_LCD(short data,short cmd);
void send_Signal(short code,short flag);

//**************************************************
//LCDの初期化 (モニタ種類により場合分け)
//**************************************************

void init_LCD(void) {
//ACM0802Cの選択
#ifdef ACM0802C
    //Function設定
    __delay_ms(30);        //30ms待ち
    send_Signal(0x02,0);    //4bit
    send_Signal(0x02,0);    //4bit
    send_Signal(0x0C,0);    //2Lines 5X10dots
    //Display On/Off設定
    __delay_us(40);        //40us待ち
    send_Signal(0x00,0);    //
    send_Signal(0x0C,0);    //Brink-Off Cursor-Off Display-On
    //Display Clear設定
    __delay_us(40);        //40us待ち
    send_Signal(0x00,0);    //
    send_Signal(0x01,0);    //
    //Entry Mode Set設定
    __delay_ms(2);        //2ms待ち
    send_Signal(0x00,0);    //
    send_Signal(0x06,0);    //
    
    __delay_ms(10);
#endif
    
//SD1602の選択
#ifdef SD1602
    __delay_ms(15);        //15ms待ち
    send_Signal(0x03,0);    //8bit
    __delay_ms(5);        //5ms待ち
    send_Signal(0x03,0);    //8bit
    __delay_us(100);    //100us待ち
    send_Signal(0x03,0);    //8bit
    __delay_ms(5);        //100us待ち
    
    send_Signal(0x02,0);    //4bitモード
    __delay_us(100);    //40us待ち
    
    //Function設定
    send_Signal(0x02,0);    //
    send_Signal(0x08,0);    //2Lines 5X8dots
    __delay_us(40);        //40us待ち
    
    //Display On/Off設定
    send_Signal(0x00,0);    //
    send_Signal(0x0C,0);    //Brink-Off Cursor-Off Display-Off
    __delay_us(40);        //40us待ち
    
    
    //Display Clear設定
    send_Signal(0x00,0);    //
    send_Signal(0x01,0);    //Clear Display
    __delay_ms(2);        //2ms待ち
    
    //Entry Mode Set設定
    send_Signal(0x00,0);    //
    send_Signal(0x06,0);    //I/D Increment
    __delay_us(40);        //40us待ち
#endif
}

//**************************************************
//LCDにデータを送信
// cmd=0 : データ送信 cmd=1 : 文字表示
//**************************************************

void data_LCD(short data,short cmd) {
    send_Signal(data>>4,cmd);    //上位4bit送信
    send_Signal(data,cmd);        //下位4bit送信
    
    __delay_us(40);            //40usec待ち
}

//**************************************************
//LCDに文字列を表示
//**************************************************

void char_LCD(char *str) {
    for(;*str != 0x00;) {
        data_LCD(*str,1);
        str++;
    }
}

//**************************************************
//ポートに信号を送る
//**************************************************

void send_Signal(short code,short flag) {
    //ポートの使用状況により以下内容変更要
    LCD_PORT = (LCD_PORT & 0xE1) | ((code & 0x0F)<<1);
    LCD_RS = flag;
    __delay_us(40);
    LCD_E = 1;
    __delay_us(1);
    LCD_E = 0;
}



突っ込みどころ満載なプログラムかもしれませんが、こんなプログラムでうまく表示できています。
このライブラリをインクルードしてやってプログラムの冒頭で、「#define モニタ名」みたいにマクロ定義してやって、ライブラリ上のポートの定義をちょいちょいと変えてやれば動きます。都度プログラムを書かなくてもいいので便利です。
ポート定義のところはもうちょっとライブラリらしく弄る予定ですw

文字の送り方や、コマンドの送り方は両モニタ共に同じ。違うのは初期化処理です。
プログラム上のinit_LCD( )の部分で、LCD表示させる前にオプション設定の為に、おまじないみたいなデータをいっぱい送らなければならない。「データ送って、ちょっと待って、またデータ送って、また待って…。」見たいな美しくないルーチン。これを実装させるのに試行錯誤の連続…。マニュアル通りにやってもうまく行かない…。苦労しました。

クルマでの様々なデータ表示に使うにはキャラクターLCDではちょっと味気ないので、時間があれば、いろんなモニターに手を出してみようと思ってますw
Posted at 2012/08/21 07:17:34 | コメント(1) | トラックバック(0) | 電子回路 | 趣味
2012年08月14日 イイね!

クルマによく使用するPIC達

クルマによく使用するPIC達クルマで電子工作を行うときによく使うPIC(マイコン)群は、現在のところ3つです。

左から…
「PIC16F84A」 「PIC16F88」 「PIC12F675」です。
それぞれ、特徴があって用途によって使い分けています。





【PIC16F84A】 250円
もう古い機種のPICですが、何と言っても、インターネットや書籍でやたらと情報の多いPICです。比較的機能は少ないです(A/D変換・PWM・内部クロック全てなし、タイマーは一つ)。その分扱いやすく書籍等で対象としているのだと思います。私もこのPICでデビューしました。
ワンショットウィンカー」や「偽装ステアリングスイッチ」で使用してます。

【PIC16F88】 200円
「PIC16F84A」とピン互換があり、「PIC16F84A」の強化版っぽい位置づけです。内部クロックも内蔵されており、精度を必要としなければ発振器を使用する必要がなくその分、I/Oとして使用できるので、「PIC16F84A」に比べ2つI/Oが増えるのも魅力です。プログラムメモリもEEPROMも「PIC16F84A」に比べ4倍の容量を持っています。現在は、価格とA/D変換もよく使用するのでこのピン数のPICはこいつがメインです。
デジタルモニター」で使用してます。

【PIC12F675】 80円
これも、古い部類のPICですが、こいつもインターネット情報の多いPICです。ほかと比べ足数が8本と少ないのですが、内部クロックが内蔵されているので電源の2本をのぞけば6本をI/Oとして使える優れものです。省スペースにしたいときや、I/O数が少ないときはこのPICを使ってます。
車速パルス」で使ってます。

世の中にはAVRっていうマイコンも存在しますが(PICよりも高性能?)、日本ではPICがメジャーとなっています。PICの種類も様々に存在しますが、クルマで遊ぶのはこのくらいのもので大概いけるんじゃないでしょうか??
Posted at 2012/08/14 22:36:47 | コメント(0) | トラックバック(0) | 電子回路 | 趣味
2012年08月09日 イイね!

我が家の電子回路工作環境(PIC)

我が家の電子回路工作環境(PIC)PICとは、マイクロチップ・テクノロジー社が製造している。マイコンの総称で回路構成が容易で、インターネットで情報がゴロゴロ転がっていて日本では人気のあるマイコン群です。

PICを使ったら色々な制御が簡単にできちゃいます。
「何かの信号が入ったらこのスイッチをオンにする・・・。」 「何秒ごとに、この信号をオンにする・・・。」 「電圧を測定して、数値を計算する・・・。」
などはPICにとってはお手のものです。
このPICを使った回路をクルマに搭載してますので「整備手帳」を見てください。

クルマにPICを使ったら、電子制御の幅が格段に広がりました。楽しいですw

PICで制御するにはまずは、プログラムの知識が必要です。プログラム開発には同社の「MPLAB」という統合開発環境が無償で提供されているのでそれを使っています。

写真は、「MPLAB」の画面です。使っているバージョンはv8.83なので今ではもう古いものです。現在はv10.0以上は行っているのかな?我が家のPC環境で不具合なく動いてくれているのでバージョンアップはしてませんw

PICは、プログラムが保存できるメモリ領域がとても小さいので実行ファイルを極力小さく作る努力が必要です。

なので・・・プログラム言語は、「アセンブラ言語」のように機械語に近い低級言語を使うのが一般的みたいですが、私知りませんw

なので・・・学生時代から(かなり前ですが・・・)趣味でいじってた「C言語」を使って開発を行っています。

ソースから実行ファイルへのコンパイラは、「HI-TECH PIC C Compiler」を使っていてLiteモードで使用しているのでこれまた無償です。

パソコンとかでソフトを作るときは記憶する媒体の容量(ハードディスク等)がでかいので、プログラム容量なんかは気にせずガンガン変数を使ったりしてプログラムしていますが、PICのプログラムはそうはいきません。
例えば、float型(浮動小数点型)などを使っちゃうとそれだけでPIC内のかなりの容量を使っちゃうんで、うかつにこんな変数は使えません。だから、下一桁の小数点を使いたいときは、10倍したint型(整数型で1バイト)を使って後で10で割ったりしてます。繰り返し出る式は関数化してみたり、使用する文字列はPICの中の記憶領域EEPROMに入れてみたりと容量を押さえるために工夫が必要です。

でも、プログラムって言ってもかなり基礎的な範囲で作成は可能なので、知らない人もチャレンジしてもいいかも・・・。PIC特有のレジスタの設定には面食らうかもしれませんが・・・。

ちなみに、コンパイラはお金を払ってLiteモードを解除してやれば最適化を行って実行ファイルが小さくコンパイルできるPICもあるみたいです。私は無償で行きますが・・・。

そうして、作った実行ファイルを写真の「PICKit3」を使って、PICにプログラムを書き込みます。PICライタってやつで、これが4,000円くらいだったか??左側についている基盤は「PICKit3」から送られてくるプログラムをPICに流し込んでやる回路です。簡単な構造だったので自作品でつくりました。8本足と18本足のPICに対応しています。

長々と書きましたが、PICライタが4,000円するくらいで後は無償のソフトですべて賄っています。PICも1個200円とかで売ってて、電装系のDIYにはうってつけのパーツです。一度ハマれば抜け出せなくなりますよ〜。開発は理解するまでが難しいですが根気と根性があれば何とかなりますw
Posted at 2012/08/09 05:49:32 | コメント(1) | トラックバック(0) | 電子回路 | 趣味

プロフィール

「[整備] #N-ONE メッシュグリルにしてみる https://minkara.carview.co.jp/userid/1540421/car/3584390/8101874/note.aspx
何シテル?   02/01 13:30
satto.v11です。 機械を弄るのが大好きですw クルマ・バイク・パソコン多趣味な人間です。
みんカラ新規会員登録

ユーザー内検索

<< 2012/8 >>

   1234
5678 91011
1213 1415161718
1920 2122232425
2627282930 31 

リンク・クリップ

バンパー、グリル、ネット取り付け 
カテゴリ:その他(カテゴリ未設定)
2025/02/06 06:05:02

愛車一覧

ホンダ N-ONE ホンダ N-ONE
N-ONE RSに乗り換えました。 通勤用として久しぶりの新車購入。 "通勤中も楽しく" ...
アウディ TT クーペ TT (アウディ TT クーペ)
メイン車です。 これは自分では弄りません。 全てディーラーにお任せw
ホンダ ゴールドウイング (GL1800) GL1800 (ホンダ ゴールドウイング (GL1800))
ホンダGold Wind Tour DCTに乗っています。 水平対向6気筒1800ccを ...
ホンダ モンキー ホンダ モンキー
モンキーを作りました。 10年前に所有していたモンキーフレームの残骸からナンバーを取得 ...

過去のブログ

2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation