ATtiny2313にはADCが無いから、LM35DZやLM60のようなアナログセンサーがつなげないじゃん、ということで、ADCはもとより、温度センサーまで内蔵かつ8ピンDIPで小さいATtiny45を使ってみた。
↑写真は、Dock Connectorの中にどう納めようかと置いてみただけ。
ちなみに、SOIC版のATtiny2313であるATtiny2313-20SUは、国内ではマルツでしか手に入らないみたいだけど、店頭には置いておらず通販専用商品とのことなのでご注意あれ。
ATtiny45はATtiny45で、ADCや、温度センサーはあっても、USARTが無くてiPhoneとシリアル通信ができないじゃん、と思いきや、ソフトウェアで実装する方法があるとのこと。
ICのblog: Tiny26Lでシリアル通信
オプティマイズ: 最新AVRチップ(ATtiny45等のソフトウェアUARTサンプルコード)
また、BASCOM-AVRにも任意のUSART/UARTポート以外のGPIOをシリアルポートとして機能させることができる、ソフトウェアUART機能があるということを知った。以下のソースを見ての通りすげー簡単だ。
というわけで、ソフトウェアUARTが簡単に書けるBASCOM-AVRで書いてみた。
動作は、ATtiny45内蔵の温度センサーから値を取得し、それをソフトウェアUARTポートとして設定したPB1から「9600bps/8/1/NONE」で繰り返し送信するというもの。
BASCOM-AVRのForumにあったスレッド「ATTiny44 ADC reference selection」を参考にさせてもらった。
$regfile = "attiny45.dat"
$crystal = 8000000
$hwstack = 24
$swstack = 16
$framesize = 32
Dim Lsb_adc As Byte 'ADC least significant byte
Dim Msb_adc As Byte 'ADC most significant byte
Dim Adc_value As Word At Lsb_adc Overlay
Dim I As Byte
Dim Summary As Integer
Dim Offset As Word
Offset = 281
Config Portb.3 = Output 'LED
Open "COMB.1:9600,8,N,1" For Output As #1 'PB1 used for serial output
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
'ADC Ref 1.1V / Use Temperature Sensor
Admux = &B10001111
Start Adc
Do
Summary = 0
For I = 1 To 100
Set Adcsra.adsc 'Start conversion
While Adcsra.adsc = 1
'Wait conversion to complete
Wend
Lsb_adc = Adcl 'Get least significant byte
Msb_adc = Adch
Summary = Summary + Adc_value
Next I
Summary = Summary / 100 'Average
Summary = Summary - Offset
Print #1 , Summary
Set Portb.3 'LED Flash
Waitms 200
Reset Portb.3
Waitms 500
Loop
End
しかし、取れる値がどうも変だ。ADCから来る最下位が1度に相当するとのことでおおざっぱだし。
すzのAVR研究: 内部温度計のキャリブレーション
こちらのページでの検証によると、ATtiny45等の内蔵温度センサーならびに内蔵基準電圧はアテにならないそうだ。確かに変だ。5Vで動作させているときと、iPhoneの3.3Vで動作させているときで値が全然違うし。8MHz動作と1MHz動作でも全然違う。何だかよく分からない。
よく分かってないので、プログラムや自分の操作が変かもしれない(どこか変だったら教えてください)。
しかし、まがりなりにもATtiny45をiPhoneのDock Connectorからの電源供給で動作させ、内蔵の温度センサーから温度を取得して、iPhoneに送信、iPhoneで受信して表示というところまではできた。勉強になった。
精度的に使いものにならないので、基準電圧を外部から供給し、温度センサーを外部につないでどうなるか、それがDock Connectorに内蔵できそうかという模索に逆戻りだね。
Recent Comments