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

satto.v11のブログ一覧

2013年01月23日 イイね!

最近よく使っているA/D変換について…

最近よく使っているA/D変換について…今回「自作ブースト計を作ってみた」の全ての表示は「A/D変換」で得たデータを表示しています。

A/D変換」とは、アナログデータをマイコンが読めるデジタルデータに変換する事だけど、実際にPICマイコンでのアナログデータ換算は、「電源リファレンス」に対する割合で換算を行っています。

例えば、PICマイコンでよく使う「10bit分解能」での測定の場合…(10bit = 1024の分解能)

あるアナログデータを5Vの「電源リファレンス」でA/D変換を行って、その変換結果が512という値が返ってきた場合、5Vで1024の分解能をもっているということなので、
5(V) X 512 / 1024 = 2.5(V) だという事。

ってことは、この「電源リファレンス」ってのが計算のベースになっており、この電圧が計算には重要であるって事がわかります。この「電源リファレンス」の簡単な設定方法の一つに「マイコンに入力されている電源を使う」という設定にする事です。ですが、この方法は電圧の変動によって計算結果も顕著に変わってしまいます。そこで今回使った「PIC16F1938」には「固定電圧リファレンス」ってのがあって、あらかじめ校正されたリファレンス電圧が機能として用意されています。「1.024V」「2.048V」「4.096V」から電圧を選ぶ事ができて、マイコンに入力されている電源以下の電圧ならどれでも使用できます。これなら、回路を組んで電圧の実測をしてプログラムを書き換える必要もなく、他の電源に繋げても正確な結果が得られます。
今回の回路は「4.096V」の電圧を使ってデータを計算させています。


以下のような場合、A/D変換をする時にはちょっと工夫が必要です。
「電源リファレンス」よりも大きな電圧を測定する場合
…そもそもマイコンに大きな電圧をかけるのはNG
「電源リファレンス」に比べ極小の電圧を測定する場合
…上の計算だと分解能は4.9mV程度の分解能しかない


まず、①の「電圧が大きすぎる」場合ついては今回の「自作ブースト計を作ってみた」での「電圧計」測定は、バッテリー電圧を測るので12〜14Vと高い電圧を測定します。このままマイコンには入力できません。このような場合、今回は上の図のような「抵抗分圧」回路を組んでやって電圧を分圧してやりマイコンに入力しました。上の回路では…
10kΩ / (10kΩ + 40kΩ) = 1 / 5(倍)となって14Vの電圧でマイコンへは2.8Vが入力されます。これなら5Vのリファレンスでもまだ約0.02Vの分解能なので小数点第一位表示としても十分な分解能となります。

次に②の「電圧が小さすぎる」場合についての対策として前のバージョンでは、「オペアンプ」を使って増幅させました。「非反転増幅回路」ってやつで入力電圧を数倍に増幅させてやります。「使用した電子部品たち(オペアンプ)」で少しふれています。
例えば、温度センサ「LM61BIZ」は使用領域0〜30℃だとして0.4〜0.6Vの範囲しか電圧の振り幅がありません。1024の分解能でリファレンスが5Vだとして0.6℃の分解能しかありません。そのままでは、0.5℃刻みでも表示できないってことになります。

んで、図の「オペアンプ」ってICを使用してやってR1に10kΩ、R2に30kΩの抵抗を付けると、
(1 + R2 / R1)倍という式が成り立つので、約4倍の増幅ができます。OUTPUTには1.6〜2.4Vの範囲が出力されることになります。これで分解能も0.2℃までアップします。


クルマのECUから信号を拾う場合、市販のセンサを使う場合はアナログデータでの換算が必要な場合が多いです。
マイコンでは気軽に使える「A/D変換」ですが、分解能のことやリファレンス電圧のことを考えながら計算しなければならないのでややこしいです。

私はこういう類いの計算が好きなので性に合っていますが…w
Posted at 2013/01/23 19:12:05 | コメント(1) | トラックバック(0) | 電子回路 | 趣味
2013年01月18日 イイね!

使用した電子部品たち2(I2C機器)

使用した電子部品たち2(I2C機器)前のブログ内で、I2Cの通信を使って「日付・時間表示」や「圧力表示」させてみました。
 I2C通信とは、比較的低速な周辺チップとの接続に使われる接続方法です。マイコンで扱えるモジュールとして他には、「EEPROM」や「温度センサー」や「A/Dコンバーター」等があります。この接続の最大の利点は、GNDあわせて接続が3本で済むことで、私みたいにハンダでちまちまと回路を組んでいるひとには接続が楽になります。
 通信の送受信は、「マスター」と呼ばれる通信を制御する側(マイコンなど)と、「スレーブ」と呼ばれるI2C機器側に分かれていて、実質2本の配線を使って双方向やり取りを行います。
 図はマイコン(マスター)で制御をして2個のI2C機器(スレーブ)と通信する場合の接続例です。2本の信号線は電源から抵抗でプルアップさせるだけの接続です。この方法で最大100個もの接続か可能となるらしいです。

 実際のプログラムの実装は、「マスター」側が全て通信の主導権を握って送受信を行います。「スレーブ」のI2C機器はそれぞれに「スレーブアドレス」を持っていてそのアドレスを送ってI2C機器を指定してやります。

機器との送受信方法はチョット複雑なので大雑把にイメージだけ…
データの受信」は…
  1. マスター側からI2C機器のアドレスを送ってやって通信を行う機器を指定してやる。
  2. マスター側が欲しいデータのレジスタアドレスを送ってやる。
  3. スレーブ側からそのレジスタアドレス対応するデータを送ってくれる。


データの送信」は…
  1. マスター側からI2C機器のアドレスを送ってやって通信を行う機器を指定してやる。
  2. マスター側から送信したいデータのレジスタアドレスを送ってやる。
  3. マスター側から送信したいデータを送る

実際は、読込み・書込みのモードをいちいち切換えたり、送受信の信号を確認しながら通信を行うので、プログラムはもうチョット複雑です。

んで…今回使ってみたI2C機器は以下の2つです。


①RTC-8564…リアルタイムクロック
自作 時計 & 外気温をルームミラーに映してみた」や「クルマによく使用するPIC達 3」で使いました。
日付・曜日・時間はもちろんのこと、指定時間に信号を出す「アラーム機能」や「タイマー」なども設定したりと機能は充実してます。
 うるう年などの日付の管理も自動でやってくれるので時間を扱うにはプログラムの書く手間が減ります。結構使えるICだと思います。
外部へクロックを出してくれる機能もあるので、今回のプログラムではそのクロックに乗せて1秒ごとにグラフィックLCDの更新をしています。
肝心の時間誤差は、バックミラーに表示させているプログラムは1ヶ月くらい連続使用していますが、思ってたよりも時間は狂ってません数秒程度です。



②MPL115A2…大気圧センサー
クルマによく使用するPIC達 3」で使いました。
大気圧(圧力)のセンサーです。けっこう本格的なセンサーで中には気圧補正用の温度センサーまで内蔵されています(実際には補正用のセンサなので実測しても実際の温度とは誤差があるらしいですけど…)。
本格的という事は結構大変な計算が必要となります。計算用に8個の測定係数がありその係数をI2Cでやり取りをして取得し複雑な変換をしないと実際の気圧が出ません。計算時に浮動小数点を使用するのでプログラム容量が大きくなります。複雑だったので何度も心が折れそうになりましたw
実際の測定値は他に調べるすべがないので確認できませんが、ネットで調べる限りでは妥当な計算値が出ていると思います。


最近では他にもいいセンサもあるので無理してI2C通信を使用しなくてもいいのですが、I2C通信ってのが何?って事を知りたかったので今回無理矢理使った感じです。
確かに配線はシンプルになるし、細かい測定や計算はICおまかせとなるのでプログラムが小さくて済みます。
マスターとなりうるマイコンは、相性や性能がある程度必要なので選択には注意が必要ですね。
Posted at 2013/01/18 05:22:51 | コメント(1) | トラックバック(0) | 電子回路 | 趣味
2013年01月13日 イイね!

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

クルマによく使用するPIC達 3前のブログでPIC24Fシリーズの紹介をしました。でも、回路を考えてクルマに使う程度の処理だと、PIC16Fシリーズで必要にして十分です(私のスキルが低いからか?)

今、PIC16Fシリーズで最近よく使用しているのは「PIC16F1938」というPICです。「自作デジタルモニターを作ってみたVer.2」辺りから使い始めました。ちょっと古いPICですが、前に紹介した「PIC16F88」と比較するとこんな感じ…


「PIC16F88」は古いので一概に比べると性能の差は歴然ですが、最近では同じ18ピンでもっといいPICは探せばあるともいます。
この中でこのPICは、プログラムメモリ容量が大きいです。少々大きめのプログラムを書いてもへこたれませんw
以下紹介する回路では、1,500行(C言語では行数とプログラムの大きさは関係ないですけど…)程度のプログラムを書きましたが、まだメモリが30%の余裕があります。今まで使っていたPICだとメモリがパンクしていると思います。
他のスペックを見ても、ひとクラス上の性能を持ったPICです。値段も安いしお気に入りのPICです。

今回、正月に暇の合間をみて、この「PIC16F1938」を使って、「卓上時計」を作成しました。クルマネタではないのですが、マイコンネタという事で…w
その名の通り「机に置く時計」です。電子部品を色々通販で購入していると破損も考え一回に結構多めに注文してしまって多くの電子部品達が余ってます。
今回はその余りを使って、そして「自作 時計 & 外気温をルームミラーに映してみた」で使ってみた機能のPIC16への移植する勉強もかねて…。

表示は、リアルタイムクロックRTC-8564NBをI2C接続して「カレンダー」「時刻」を表示させて、LM60BIZの温度センサA/D変換でデータを読み取りながら「室内温度」、大気圧センサMPL115A2をI2C接続でデータを読み取り「大気圧」を測定し表示させます。
グラフィックLCDは、クルマに付けようと思って大きさも見ずに購入して思いっきり失敗した横幅が70mmもあるLCDですw
このような用途では液晶部分が大きいため視界性抜群ですw

裏面はこんな感じです…。

スパルタンに基板丸出しですw

回路は、こんな感じです…。

電源は、5Vとし携帯の充電用のアダプターを適当に見つけて電源としてます。
電源アダプターを抜いても時間を忘れないようにするためにバックアップ電源として「CR2032」のボタン電池を取り付けています。
I2C接続は同導線上に複数のモジュールを追加する事ができるので今回は2つのモジュール「リアルタイムクロック」と「大気圧」センサを繋げて制御してみました。


ただの時計表示する回路ネタですが、コンパクトに作れたんじゃないかと思います。
「大気圧計」なんて気圧なんて変化するもんじゃないし、どうかな?と思ったけどI2C接続できるモジュールってあまり種類がなくて卓上時計で表示させてもおかしくないモジュールってことで表示させてます。
値は「991hPa」を示してしますが、測定点(自宅)はちょっと標高が高い位置にあって計算してみると妥当な数字みたい。

次回のクルマネタは圧力計を使って何かできないかと、妄想してますw
Posted at 2013/01/13 19:24:10 | コメント(2) | トラックバック(0) | 電子回路 | 趣味
2013年01月10日 イイね!

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

クルマによく使用するPIC達 2最近クルマに付ける電子工作を作るときにはマイコン(PIC)が手放せなくなっています。
リレーやトランジスタなどでメカ的(?)に動かすのも楽しいのですが、マイコンを使用すると細かい制御もできますし部品点数を少なくする事もできます。

専門的な勉強もした事ない、まだマイコンを初めて触って半年とちょっと若輩者ですが、色々なPICを試食してきました。
クルマによく使用するpic達」で8ビットマイコンであるPIC16シリーズを紹介しました。このシリーズは値段も安く、機能も限定しているPICが多く入門向けの位置づけですがちょっとした処理に使うのには重宝しています。
いままでこのシリーズをたくさん使ってステップアップしてきましたが、
この度、「自作 時計 & 外気温をルームミラーに映してみた」で家庭用テレビ等にNTSC規格で映像作ろうとしたときPIC16シリーズでは限界がありました…。
NTSCの映像を癖の多いPICで作ること自体無理があるかもしれないのですが、面白そうだったので…w

NTSC規格」についてはWebに詳しい情報が、たくさん転がっているので探してみてください。
今回作ったプログラムはこの規格を極簡略化したものです。

簡単に言うと映像作成は「輝点を左から右、上から下へと動かして映像をつくる」です。この左から右への軌跡は「ラスタ」と呼ばれていて今回の回路ではラスタの表示時に0.3Vで「黒色」、1.0Vで「白色」のそれぞれを出力すると映像の白黒色が変わります。文字や図の書きたい位置で電圧の出力を変えてやるイメージです。
ですので横方向に描画している時間内に何回0.3Vと1.0Vを繰り返せるかによって横方向の解像度が変わります。
縦方向は、ラスタが何本描けるかによって縦の解像度が決定します。
ちなみに、ラスタ一本の描画時間は63.5μ秒です(=100万分の63.5秒)。

以上からも、この映像を表示させるには「スピードとタイミングが命」である事が分かります。
PIC16シリーズでこの処理にトライしてみました。いつも使っているプログラム「C言語」で書くとプログラムに無駄が生じるので全てを「アセンブリ」で書き直したりやってみたのですが、作成した映像は文字認識はできるのですがドットが荒く表示として納得のいくものではありませんでした…。

そこで、今回はPIC16シリーズに見切りをつけてPIC16Fに比べ3倍近く速度のでるPIC24Fシリーズに手を出してみました。16ビットのマイコンです。中でも今回試食したPICは「PIC24FJ64GA002」といものでピン数も28ピンと今まで使っていた開発環境をそのまま使えるということでこのPICをチョイスしました。コンパイラは今までのPIC16シリーズのものは使えませんので別途用意が必要です。フリーですけどね…。

まず、このPICを使って最初に面食らったのが電源の違いで3V以下で動作する事でした。今まで使っていた5Vが使えないんです…。低電圧化するのは歓迎ですが、5Vも使えるようにしてもらえたら今までの回路にも移植できるのに…。
んで、今回からは3Vと5Vが両方扱える電源を「車載用」と「卓上用」に別途作りました。写真は「卓上用」の電源です。12Vの家庭用アダプタから「3端子レギュレータ」で5Vと3Vに電圧を降下させてます。


今回このPICを使った回路、「自作 時計 & 外気温をルームミラーに映してみた」でPIC24Fにやらせた仕事(機能)は以下です。

①I2C
I2C対応機器である『RTC-8564」(リアルタイムクロック)との通信に使いました。I2C(アイ・スクエアド・シー)と読むらしい。これは同期シリアルポート(SSP)の一つで、I2C周辺機器とマイコンを通信する規格です。マイコン同士の通信も可能です。たった3本の電線で周辺機器との送受信がが可能となり配線が簡素になります。今回使ったマイコン「PIC24FJ64GA002」はこのRTCの機能は備わっていますが、I2Cを使った事がなかったので勉強のために使用してみました。
まずは…、
I2C通信でRTCモジュールから日時データを取得します…

②A/D変換
温度センサーである「LM61BIZ」の電圧(アナログ)をマイコンで扱えるデジタルデータに変換する機能です。計算方法は「自作デジタルモニターを作ってみたVer.2」の「外気温」と全く一緒なので参照ください。
次に…
温度センサの電圧をA/D変換し温度データを計算する…

③Timer1〜3
「PIC24FJ64GA002」には、5つのタイマーが備わっています。今回は3つの「タイマー割込み」を使いました。「タイマー割り込み」とは、簡単に言うと指定時間が来るとプログラムを中断して指定した処理を割込ませて処理をさせる機能です。前述しましたが、今回の回路は「タイミングが命」だったので3つのタイマーを使って画面作成のタイミングを取っていました。今回のプログラムで一番短いタイマーで4.7μsec(=100万分の4.7秒)毎に処理をさせたりしてます。タイマー割込みは概ねどのマイコンにも備わっている機能です。
そして…
画面に表示させるために3つのTimerをつかってNTSC規格に則ってタイミングを取ります…

④SPI
これも同期シリアルポート(SSP)の一つで、一昔前まではよく使われていたらしいのですが、今はSDカードの読み書きで頑張ってるくらいらしいです。SPIもデータの送受信に使われますが、今回はこのSPI本来の使い方ではなく、画面の画素データを送る手段として使いました。一回の命令で16bitのデータが一気に送れます。この部分は某Webページの考え方を拝借しました。
次に…
タイミングに合わせて表示したいグラフィックデータをSPI通信に乗っけてで出力してやる

⑤外部割込み
これも割込み機能で、あるピンが0V→5Vまたは5V→0Vになったときに指定した処理をさせる機能です。今回は、時刻合わせ用にボタンを3つ付加したので、押されたら各割込み処理ができるようにしました。「青」ボタンを押すと項目の選択で押すごとに分、時、日、月、年が順番に点滅し、「橙」ボタンで数字を進める、「黄」ボタンで数字を戻す。みたいな処理をさせて時間合わせをしています。

以上のようなマイコンの持っている機能を使って、トライ&エラーを繰り返しながら何とか形にしました。

今回使用したマイコンは機能が多彩でまだまだ本来の力を持て余してると思います。
結構使える面白いPICだったのでどんどん使っていきたいですね…。

初めての試食するマイコンはやはり習得するまでに時間がかかりますw
この回路も、構想から考えると仕事の合間を縫って3ヶ月近くかかっています。

ま〜思った通りにうまく動いてモノになったときの楽しさが自作電子工作の醍醐味でしょうねw
Posted at 2013/01/10 18:03:47 | コメント(0) | トラックバック(0) | 電子回路 | 趣味

プロフィール

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

ユーザー内検索

<< 2013/1 >>

  12345
6789 101112
1314151617 1819
202122 23242526
2728293031  

リンク・クリップ

バンパー、グリル、ネット取り付け 
カテゴリ:その他(カテゴリ未設定)
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