2.4GHz版プロポ作製-ADCテスト編
アクセルとステアリング用のVRの読み出しに使うADCのテストを実施。
マイコンの電源(USBパワー)-GND間にVRを2個繋いで、AN0とAN1に入力しました。
1.概要
2つのVR値(電圧)をAD変換を通して読み出しては、USBを通じてPCへ送り続けるアプリです。
PIC18F4550は、AD入力は10チャンネルほどありますが、変換は1チャンネルずつしかできないので、AN0とAN1の入力を切り替えては変換して読み出すという手順となります。
2.メインルーチン部
void main(void)
{
int ADread0,ADread1;
InitializeSystem();
while(1)
{
#if defined(USB_INTERRUPT) // See HardwareProfile.h
if(USB_BUS_SENSE && (USBGetDeviceState() == DETACHED_STATE))
{
USBDeviceAttach();
}
#endif
SetChanADC(ADC_CH0);
ConvertADC(); //AD変換開始
while( BusyADC()); //AD変換待ち
ADread0 = ReadADC(); //AD読込み
SetChanADC(ADC_CH1);
ConvertADC(); //AD変換開始
while( BusyADC()); //AD変換待ち
ADread1 = ReadADC(); //AD読込み
PrintADC(ADread0,ADread1); //USBへAD値を出力する処理
}//end while
}//end main
2.ADC初期化部
※adc.hをインクルードしておく必要があります。
config=ADC_FOSC_64 & // 変換クロック 500nsec×64=3.2μsec
ADC_RIGHT_JUST & //
ADC_20_TAD; // 蓄積時間 3.2μsec*20=60.4μsec
config2=ADC_CH0 & // チャンネル
ADC_INT_OFF & // 割込み未使用
ADC_VREFPLUS_VDD & // リファレンス電位* VDD
ADC_VREFMINUS_VSS; // リファレンス電位- VSS
portconfig=0b1011; // ADCON1のPCFG
OpenADC(config,config2,portconfig);
3.出力
ターミナルソフトで無事にVR値を確認できました。
VRを回すと0~1023までフルに変化はしますが、USBバスパワーなのでノイズが乗っている様で、1.5LSB程度のブレが発生しています。
次回は、無線の送信モジュールへ送るPPM信号を作成する為、タイマー割り込みとCCP機能の制御にチャレンジです。
マイコンの電源(USBパワー)-GND間にVRを2個繋いで、AN0とAN1に入力しました。
1.概要
2つのVR値(電圧)をAD変換を通して読み出しては、USBを通じてPCへ送り続けるアプリです。
PIC18F4550は、AD入力は10チャンネルほどありますが、変換は1チャンネルずつしかできないので、AN0とAN1の入力を切り替えては変換して読み出すという手順となります。
2.メインルーチン部
void main(void)
{
int ADread0,ADread1;
InitializeSystem();
while(1)
{
#if defined(USB_INTERRUPT) // See HardwareProfile.h
if(USB_BUS_SENSE && (USBGetDeviceState() == DETACHED_STATE))
{
USBDeviceAttach();
}
#endif
SetChanADC(ADC_CH0);
ConvertADC(); //AD変換開始
while( BusyADC()); //AD変換待ち
ADread0 = ReadADC(); //AD読込み
SetChanADC(ADC_CH1);
ConvertADC(); //AD変換開始
while( BusyADC()); //AD変換待ち
ADread1 = ReadADC(); //AD読込み
PrintADC(ADread0,ADread1); //USBへAD値を出力する処理
}//end while
}//end main
2.ADC初期化部
※adc.hをインクルードしておく必要があります。
config=ADC_FOSC_64 & // 変換クロック 500nsec×64=3.2μsec
ADC_RIGHT_JUST & //
ADC_20_TAD; // 蓄積時間 3.2μsec*20=60.4μsec
config2=ADC_CH0 & // チャンネル
ADC_INT_OFF & // 割込み未使用
ADC_VREFPLUS_VDD & // リファレンス電位* VDD
ADC_VREFMINUS_VSS; // リファレンス電位- VSS
portconfig=0b1011; // ADCON1のPCFG
OpenADC(config,config2,portconfig);
3.出力
ターミナルソフトで無事にVR値を確認できました。
VRを回すと0~1023までフルに変化はしますが、USBバスパワーなのでノイズが乗っている様で、1.5LSB程度のブレが発生しています。
次回は、無線の送信モジュールへ送るPPM信号を作成する為、タイマー割り込みとCCP機能の制御にチャレンジです。
コメント
コメントを投稿