3チャンネル10bitアナログコンバータ "豆AD"

Topics PICC Pro lite mode PICC Lite Actual use AD convert Software USART PIC12F675 PIC12F1822   PIC12F1501 Snap 

概要

ハードウェアを極限まで切り詰めた3チャンネル10ビットADコンバータです。秋月電子などで扱っているFT234X 超小型USBシリアル変換モジュールと組み合わせればCSV形式で簡単にデータを取得することができます。



回路図

ソフトウェア

PIC12F1501

比較的安いマイコン(秋月電子で2024/12/9現在140円)

Date version Build Folder note
New!
2024/12/9 
3.00 MPLAB X IDE v6.20
MPLABXC8 v2.50
adc4ch_12f1501.X MPLABX対応、MPLAB Snap対応。

PIC12F1822

Date version Build Folder note
New!
2024/12/8 
3.00 MPLAB X IDE v6.20
MPLABXC8 v2.50
adc4ch_12f1822.X MPLABX対応、MPLAB Snap対応。

PIC12F675

Date version Build Folder note
New!
2024/12/8 
3.00 MPLAB X IDE v6.20
MPLABXC8 v2.50
adc4ch_12f675.X MPLABX対応
ボーレートは9600でのみ検証しています。


SNAPを使用するにあたり、一度でも高電圧書き込みを行ったPICマイコンには書き込みができないため、新品のPICマイコンを使用するか、PICkit4などの高電圧書き込み可能PICプログラマでプログラムすることになります。

説明

TeraTermなどと組み合わせます。起動するとオープニングメッセージが出力されます。Hキーを送信すると、ヘルプ表示になります。

a : 全てのADコンバータの値を表示
0〜2:各チャンネルの値を表示
c :コンソールのクリア
l :全てのADコンバータの値を永久表示(一度実行すると電源断かリセットスイッチ押下までまで止まらない)
コマンドの送信は続けて送信しても、マイコンの処理が終了するまでは受け付けませんので、次の送信まで最低でも約60ms以上の間隔を開けてください。

データの形式はCSV(comma separated values)形式ですので、表計算ソフトなどで簡単に取り込めると思います。

回路は必要最低限の構成です。VR1〜VR3はテスト用の半固定抵抗器です。ICSPによる書き込みを行う場合は半固定抵抗器を中点にしておいてください。

シリアル通信は、ハードウェアによる通信を使うと、ADCのポートと競合するため、ソフトウェアにて通信を実現しています。ビルドは9600bps、STA1, Data8, STP1の10ビット構成です。なお、19200と9600で検証しております。


その他

RS232Cを代表するレガシーなシリアル通信は、今ではほとんど使用されなくなりましたが、USBシリアルの存在や組み込み系マイコンでは今でも使用されている通信です。PIC16F1459や1455などのUSBポートを搭載したマイコンであれば一つで事足りるのですが、USBのベンダーIDなどの扱いを鑑みると、USBシリアルモジュールと組み合わせた方が、すぐに応用が利くと思い、10年以上放置していたこのADコンバータをリニューアルした次第です。

4チャンネルを標準とすることを検討しましたが、MPLAB Snapを使う場合は低電圧書き込み&外部電源必須のため、MCLRピンが必然的に汎用ポート入力として利用できない事、また、PICKit4などの高電圧書き込み可能なツールを使用する場合、MCLR端子はPICへの書き込み時に12V程度の電圧が印可されて、ユーザーの用意するシリアル通信のデバイスを壊す恐れがあったことから、ADコンバータのチャンネルを一つ減らしました。
4チャンネルにしたい場合は、プログラムのピン割り当てと入出力レジスターを変更し、CONFIGではMCLR=IOモード、LVP=OFFとし、PICKit4等を使用して高電圧書き込みを行い、書き込み時にはPICマイコンを別書きにするか信号を分離すれば対応が可能です。


以下は、PIC12F675を使用した過去記事になります。


LCD機能を追加し、チャンネル拡張したバージョンを公開しました

概要

もう、これでもかというほど簡単なアナログ入力の値をRS232Cにコンバートする装置です。実験なのでボリウムをつけていますが、0〜5ボルトの入力で10ビットデータが4系統使えます。アナログ測定において、センサーの近くでこの回路を構成して、即時にデジタル信号に変換後伝送することは、精度や伝送コストにおいて大きなメリットがあります。

PIC12F675の機能の一つであるADコンバータを使いました。HITECH-Cのサンプルライブラリにあるソフトウエアのserial.cを改造して実現しています。このソースは、12F629や16F84Aなどの、ハードウェアSCIの搭載されていないPICマイコンでもHi-tech PIC C言語で簡単にシリアル通信を実現することが可能です。通信スピードの上限は、内蔵4MHzで19.2kbpsまでです。



以前作成した超ローコストRS232Cにも表示する事ができます。チャンネル0をテスターでも計ってみました。LCDでは1.520と表示され、テスターでは1.52Vを表示しています。(テスターのマイナス表示はテスタープローブを逆につけた為です)
製作はブレッドボードを使いました。


そのままターミナルソフトにも使用できます。(改行などは、ソフトを変更して使用してください)

データロガーとしての応用例(別のページに移動しました)

ソフトウェアのダウンロード

Date Download MPLAB
Ver.
PICC
対応Ver.
Folder Comment
2008/11/11 ターミナルソフト用4チャンネルADコンバータ変換

ver2.01
8.10以降 PICC Pro lite mode
9.60PL4b2729
以降
C:\picsrc\piccpro\adc_uart2 PICC Pro liteモード対応版。

通信フォーマット 19200bps 8bit パリティなし ストップビット1
このサンプルは、RS232Cより受信したキャラクターにより、表示方法を指定できます。
a : 全てのADコンバータの値を表示
0〜3:各チャンネルの値を表示
c :コンソールのクリア
l :全てのADコンバータの値を永久表示(一度実行すると電源断まで止まらない)
2005/2/5 232エクセルロガー用豆ADCソフト一式 6.xx以降 PICC Lite v8.05以降 C:\picsrc\bean_ad3 ターミナルソフト用に区切り文字の変更と送信電文の変更を行ったものです。
232エクセルロガーのスプリクトファイルとしてこれ(txt)もメモ帳などでコピーして、エクセルのファイルと同一の名前.txtとして同じフォルダに保存してください。
2004/6/29 ターミナルソフト用ソフト一式(ZIP圧縮) 6.xx以降 PICC Lite v8.05以降 C:\picsrc\bean_ad 通信フォーマット 19200bps 8bit パリティなし ストップビット1
このサンプルは、RS232Cより受信したキャラクターにより、表示方法を指定できます。
a : 全てのADコンバータの値を表示
0〜3:各チャンネルの値を表示
c :コンソールのクリア
l :全てのADコンバータの値を永久表示(一度実行すると電源断まで止まらない)
2004/6/29 超ローコストRS232Cモニター用ソフト一式(ZIP圧縮) 6.xx以降 PICC Lite v8.05以降 C:\picsrc\bean_ad2 通信フォーマット 19200bps 8bit パリティなし ストップビット1
スケール表示を電圧表示に対応。受信は使っていませんので、伝送を3本にする事もできます。
この組み合わせであれば、LCD側の74HC14を省く事もできます。その場合は12F675側のソフトのserial.cのpolarityを1にして、且つお互いのPICを同じ電位で動かす必要があります。
2004/6/29 ソフトウエアシリアル通信ソース
(2004/6/29)
6.xx以降 PICC Lite v8.05以降 - 12F629,675,16F84,16F627Aに使用できます。16F627A等はSCIをハードウエアで持っていますが、外付けのRS232Cドライバーを省きたい時や簡単な通信に威力を発揮します。使用方法は、ソースの中をご覧ください。このソースは、上記2つの圧縮ファイルへ既に入れてあります。

※Folderで指定されているフォルダにmain.c等の全てを解凍すれば、プロジェクトがそのまま使用可能です。

これらをビルドする時は、コンパイラオプション Enable assembler optimizationsにチェックが必要です。

※このソフトは、内部クロックを使用しており、そのクロックを使用して通信タイミングを生成している為、OSCCALデータが大変重要になります。OSCCALデータ値は(BGも含む)チップより予め読み出しておいて、PICの裏あたりにマジックなどで数字を控えておいた方が良いと思います。万が一OSCCALを消して不明になってしまった場合は、PICKit2などで、OSCキャリブレーションなどの処理を行い、適正な校正値にしてください。

回路図


※ボリウム(VR1〜VR4)は10KΩ(B)を使います

部品代と入手先
抵抗は1本1〜5円の世界です。半固定抵抗 50円位x4=200円程度(実験用ですので、実際には使用したいアナログの装置を繋げる事になります)、PIC12F675 150円(秋月),DSUB9メスコネクター 200円(秋月)、ダイオード 1S1588相当品 30円、電解コンデンサ30円、セラコン0.1μファラッド 10円、その他部材(基板、配線材、ICソケットなど)で300円程度。1000円でお釣りが来ると思います。

通信の電気レベルについてはRS232Cのレベルではありませんが、パソコンとのやり取り程度の実験としては十分な性能が出ます。
入力は100KΩで十分電流を抑え、電圧はローサイドはPICの保護ダイオード、ハイサイドは外付けダイオードにてクランプされます。出力は、パソコン側のレシーブが2Vくらいを境に判断しているものが多いのでこれで実用になります。
真のMAX232Cなどのレベルコンバータを使用して通信する場合は、serial.cのdefine文にシリアルの極性をすぐに変えられるようにpolarityを設けてあります。

電流はボリウムを省いた場合の実測値で約0.87ミリアンペア@5Vでした。(PICのスペックシートの通り)
ボリウム4つを繋げると2.69mAまで上昇します。
回路図中のダイオードは、MCLRの部分のポートである為、これがないとRS232Cの信号によって9V以上の電圧が掛かる場合があり、そのときにプログラムモードになるなどの誤動作を避ける為にいれてあります。外付けダイオードは、Vfが0.6V程度の一般的なシリコン小信号用ダイオードで十分です。

AD変換の精度をあげる場合は、電源を精度の良い電源にしたり、Vref端子に高精密の比較電源回路を入れるなどをすれば可能です。もっとも、サーボ等のボリウムの角度の位置検出を目的に使用する場合は、その電源の電圧比が変わりませんので、電源の精度もそんなに気にする必要も無いでしょう。

応用として、ストロベリーリナックスのUSBシリアルを組み合わせれば、USBでデータが取れるし電源も取れるので大変便利です。

ビルドの方法

インストールについては、既に古い記事になったため、手順を割愛させていただきます。


2024/12/8 PIC12F1822を使ってMPLABX v6.20とXC8に対応。旧ビルドの方法を削除。
2008/11/6 Hitech PICC Pro Lite mode に対応したバージョンを公開
2005/2/5 232エクセルロガー対応版ソフト公開
2004/6/29 serial.cのバージョンアップの為、説明文を修正
2004/6/13 超ローコストRS232Cモニターにも使えるようにしました。
2004/6/3 ファイルのビルド方法を追加
2004/6/2 初版

(C)2004-2024 air variable All Rights Reserved..

ホーム