ArduinoにLCDキャラクタ・ディスプレイ・モジュールを接続する(6)A-Dコンバータの基準電圧
■超小型LCDキャラクタ・ディスプレイ・モジュールをArduinoで使う(3)A-Dコンバータの基準電圧を変更して分解能を上げる
Arduinoのアナログ入力のA-D変換を行う際の「基準電圧」は、デフォルトの電源電圧以外に、マイコン内部にある1.1Vの基準電圧、またはArduino外部端子のVref端子に接続された電源電圧以下の基準電圧素子からの電圧を用いることができます。
●基準電圧の設定
基準電圧の設定は、次に示すようにanalogReference()命令で行います。パラメータはDEFAULT、INTERNAL、EXTERNAL のいずれかを設定します。
analogReference()
アナログ入力の基準電圧を設定する。設定値により次のようになる。
DEFAULTで電源電圧
INTERNALで1.1Vの内部の基準電圧
EXTERNALで0から電源電圧の範囲内の外部基準電圧となる
●基準電圧を1.1Vにすると
基準電圧をINTERNALの1.1Vにすると、アナログ入力で入力できる電圧の範囲は0Vから1.1Vまでとなります。アナログ入力の最小単位は次のとおりです。
1.1V / 1024=1100mV / 1024= 1.07421mV |
基準電圧が電源電圧の場合は、次のようになります。
5.0V / 1024=5000mV /1024=4.882mV |
基準電圧をINTERNALにして1.1Vにすると、Arduinoのアナログ入力の約4.88mVの最小単位が約1.074mVになり、より細かい電圧の変化を調べることができます。
●基準電圧を1.1VにしてLM35DZの温度センサを利用する
室温などの温度測定にLM35DZを利用する場合は、2℃から高くても熱湯の100℃の範囲で利用するとしたら、20mVから1000mVの出力です。この範囲は、基準電圧1.1Vでカバーできます。
温度測定の分解能が、4.88mVの0.488℃から1.07mVの0.107℃と、細かな温度変化がArduinoのアナログ入力で検知できるようになります。
●実際のプログラムの修正
プログラムの修正は、setup()関数に、
analogReference(INTERNAL); |
の命令を1行追加しました。
基準電圧が電源電圧の5Vから1.1Vに変わったので、
aindv=aind * 5000.0/1024; |
を、
aindv=aind * 1100.0/1024; |
に変更しました。プログラムの変更はこの2か所で、変更したプログラムの全体は次のようになります。
プログラム名をardlcd05020.insに変更しArduino Unoにアップロードして室温を測定した結果です。温度の変化は0.1℃くらいの刻みで変化しています。
V=183.6と表示されるのは、その右側にもう一ケタ表示されるはずのものが見えないためです。各行64文字(3FH)の大きさの表示文字を書き込むためのメモリを持っています。そのうち16文字分が表示されています。1文字ごとにスクロールして順番に表示していくこともでき、そのためのArduinoの各種の関数もLiquidCrystal Libraryに用意されています。
tmp=18.37と表示されているのは、小数点以下2桁の表示で3桁目を四捨五入して6が7になっているためです。
次回からは、SPI、I2Cのセンサからのデータ表示を検討します。
(2016/4/17 V1.0)
<神崎康宏>
バックグラウンド
LM35DZ;室温での確度は 0.5℃です。