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

satto.v11のブログ一覧

2012年10月28日 イイね!

グラフィックLCDを使ってみた

グラフィックLCDを使ってみた今回「「自作デジタルモニターを作ってみた Ver.2」で、グラフィックLCDを使ってみました。
写真のLCDの型番は「TG12864B」と言うものです。

前回ご紹介した「キャラクターLCDモニター」と何が違うか?

キャラクタLCDはあらかじめ文字(キャラクタ)がLCDに保存されていて、それを使って表示領域に表示させます。あらかじめ登録されている文字は、アルファベット、カタカナ、数字、記号などがありマイコンと結線してしまえば比較的簡単に描画できます。登録文字だけでなく自分で好きなキャラクタが作成できますが、ドットが粗いためどうしても表示(見た目)に限界を感じてしまいます。

対して、今回のグラフィックLCDは、横128ピクセルX縦64ピクセルの表示領域に文字図形など自由に描画できるというものです。点の集まりで「文字」や「図形」を表現しています。

「自由に描画できる」ってことは、プログラムはキャラクタLCDに比べ格段に複雑になります。

写真のような画像(TTのつもりですよ…)を、表示させようとするとプログラムでは、あらかじめ右のようなBITMAP形式の画像を用意して、その画像からどの場所に点を打つのかを数値化してデータを作成します。プログラムではデータを参照してLCDに点を打っていくイメージ。


今回クルマに取り付けたLCDは、上記のものより一回り小さい「TG12864E」ってやつです。表示領域は同様128X64ピクセルです。
ハンドル下のスイッチで3ページの項目を切換えて表示させています。
文字については、フォントデータを丸ごとデータ数値化する方法もあるけど、プログラム領域を圧迫するのと、今回は表示内容が決まっているのでこれも、上のようなやり方と一緒のような考えでやりました。

例えば「水温計」って文字は好きなフォントのBITMAP形式の画像を図のように作ってやって、それを数値化して表示させてます。

BITMAP画像からポイントを数値化するソフトはネットにフリーとしてあったのでそれを使用しました。

BITMAP画像を作ってやって数値化してプログラムを組む…結構骨の折れる作業でしたが…
好きに表示領域に文字・図形が描けるので表現力がアップします。
でも、モノクロだし、ドットが粗いので表示に限界はあるんですけどね…。


他に、試しで「SG12232」ってLCDも試してます。これはグラフィックLCDとは何ぞや?って思ったとき安かったので買い物のついでに買ったものです。それなりに表示はできます。表示領域は122X32ピクセルです。表示方法は、上記のものと大差ありません。

こうして、また新しい電子部品が使えるようになりました。こんな風に、新しい電子部品を見つけては試しに遊んでいます。だんだん、クルマの電子工作のネタがなくなってきたな…。次はバイクの何かを作ろうかな…?w
Posted at 2012/10/28 11:05:19 | コメント(1) | トラックバック(0) | 電子回路 | 趣味
2012年09月17日 イイね!

たまにはAudiの事を…

たまにはAudiの事を…いつも、ちっちゃいクルマ(スクラム)の事ばかりなので、たまにはAudi TTのこと書きましょ。
って言ってもこのクルマほとんど純正で乗ってます。グレードはクアトロ S-lineです。

唯一他と替えてるって言ったら、ライトをTTSのやつに替えてるくらいです。Audiと言えばやっぱりライトのLEDでしょって事で、納車間もなくライトのみ交換しました。値段はディーラーでビックリの20万弱です。

日本仕様のコンピューターは、ライトの交換だけだと、ヘッドライト点灯時しかLEDは点灯しません、でも、どっかの国の仕様に弄るとデイライト実装できるので、とあるショップでコーディングしてもらいました(5000円)。この手のはディーラーではやってもらえません。


うちの年式(2009年式)は、コーティングするとインパネにデイライト「ON/OFF」のメニューが表示され選択できるようになります。


デイライトを点灯させると…

  • 昼間に点灯すると結構明るいので、パッシングをしてくれて消し忘れを知らせてくれる親切な方がいっぱいいます。

  • 高速道路で、追い越し車線走行中に、こちらは望んでもないのに道をあけてくれる方がいっぱいいます。


などの付帯機能がもれなく付いてきます。そんなときは、こちらも悪い気がするのでデイライトを気軽に「OFF」が選べるのが良いです。

点灯中は、顔つきがグッと変わるので気に入ってます。おすすめだけど値段がね…。
Posted at 2012/09/17 19:37:57 | コメント(0) | トラックバック(0) | クルマ | クルマ
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) | 電子回路 | 趣味

プロフィール

「[整備] #ロードスターRF オートリトラクタブルトップを自作(まずはハッキング) https://minkara.carview.co.jp/userid/1540421/car/3779299/8476631/note.aspx
何シテル?   12/19 16:47
satto.v11です。 機械を弄るのが大好きですw クルマ・バイク・パソコン多趣味な人間です。
みんカラ新規会員登録

ユーザー内検索

<< 2025/12 >>

 123 456
78910111213
14151617181920
21222324252627
28293031   

リンク・クリップ

1年後の反省:新型ロードスター電装改造 
カテゴリ:その他(カテゴリ未設定)
2025/11/10 08:20:01

愛車一覧

マツダ ロードスターRF マツダ ロードスターRF
学生の頃に新車で購入したNAロードスター以来、久々のマツダの新車です。あの頃とイメージが ...
ホンダ N-ONE ホンダ N-ONE
N-ONE RSに乗り換えました。 通勤用として久しぶりの新車購入。 "通勤中も楽しく" ...
ホンダ ゴールドウイング (GL1800) GL1800 (ホンダ ゴールドウイング (GL1800))
ホンダ Gold Wing Tour DCTに乗っています。 水平対向6気筒1800c ...
ホンダ モンキー ホンダ モンキー
モンキーを作りました。 10年前に所有していたモンキーフレームの残骸からナンバーを取得 ...

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
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