AVR - 最初のライタ製作(MINI-EZUSB)
AVRに興味を持ったはいいが、まずライタをどうするか
調べてみると、USBのみの使用であれば、EZUSBがライタになるということだそうで、早速ITプラザで MINI-EZUSB と ATmega168 を購入
組み立てたらPCと接続してループバックテスト
無事に動作確認出来たら、今度はAVRに書き込むためのISPライタ部を製作
MINI-EZUSBは別の用途にも利用できるので、そのうち専用のライタを作るつもりでいる
取り敢えずオプティマイズさんのISPライタの回路図を元に作ってみた
ついでにAVRを組み込んだ回路テスト(温度センサ・LCD表示)まで一気に挑戦
見た目が悪い、というかジャンパが何かの模様に見えてきた![]()
あとはATmega168の回路を組んで、ISP経由で書き込むだけ
適当な回路図を参考に、ブレッドボードを使ってATmega168とLEDとスイッチを含んだ回路を組んでみる
配線をチェックして、ISP端子に間違いがないか確認したら、先ほどのライタを接続
そしてUSBを接続して印加
電源ランプ(緑のLED)が点灯し、通電はしているようだ
ここからはPC側にうつって、ライタソフトを起動
DOSプロンプトから、
>avrezusb -rf
と入力して、無事にATmega168が認識してくれた
ここまでくればもう楽なもんで、なにはともあれLEDピカピカのプログラムを作ってコンパイルし、出来上がったHEXファイルを転送
>avrezusb test.hex
フラッシュの消去、書き込み、ベリファイとなって、書き込み完了
ちゃんとLEDが点滅した
そこで、今度はいきなりステップアップし、LCDと温度センサを使ってみることにした
センサは 秋月で売っていた S-8100B というもので、本当は LM35 の方が仕様的に楽なのだけれど、測定範囲が -40 ~ +100℃ ということにつられて選んでしまった
おかげで計算方法を調べるのに四苦八苦
3端子なので、写真のようにブレッドボードに挿せるように加工
温度算出について調べた結果、使用している電圧値に対して、基準となる実測温度を設定し、温度係数を掛けて、0℃時の電圧値を割り出しておくと楽にいけそう
求まった電圧からセンサからの電圧値を引いて、その値を温度係数で割ると温度が求まる・・・らしい![]()
何はともあれ計算
現在の実測温度が約20℃(正確ではない)で、センサの出力が1.59Vだとする
このセンサの出力は-8mV/℃なので、温度係数は0.008
20℃ * 0.008V = 0.16V
よって0℃の時の電圧は、
0℃ = 1.59V + 0.16V = 1.75V
これで基準が決まったので、読み取った値を当てはめていくだけである
上記の20℃=1.59Vというのは、
(1.75V - 1.59V) / 0.008V = 20.0
となり、約20℃となる
たぶん式はこれであっていると思うのだけど、実測温度が正確ではないのでなんともいえないような・・・このためにちゃんとした温度計まで買っていたらシャレにならないしなあ
というわけで、センサの値から前述の式で温度を求め、結果をLCDに表示してみた
DがセンサからのAD値、Vが電圧にした値、計算した結果がTempの温度となる
計算部分のソース
ad_get()はセンサからのAD値を取得する一般的な自前関数(INPUTされた値をそのまま返しているだけ)
最後のシフトしている部分は、0.008を1000倍にして整数計算の精度を上げているので、8で割っているだけ
17500-(adv*10) として10,000倍にしているが、最終的に小数点以下1ケタを出すための帳尻あわせ
取り敢えずこんなところだろうか・・・間違っていたらごめんなさい![]()
| 固定リンク
「電子工作」カテゴリの記事
- Arduino - ArduinoによるAVRライターとATmega328P再換装(2009.03.07)
- Arduino - SparkFun マイク・モジュール(2009.02.15)
- Arduino - Arduino用容量倍化ATmega328P到着(2009.01.07)
- Arduino - ブレッドボードでArduino(2008.04.05)
- Arduino - モノホンTENGUとECM再考(2009.02.06)







コメント