//#device PIC16F648A
#include <16F648A.h>
#fuses INTRC_IO,NOWDT,NOLVP,NOMCLR
#use delay(CLOCK=8000000)
#byte portb=6 //6番地をportbと名付ける
#use fast_io(B)//TRIS設定なしでIO実行
long kekka;
// LCD_Lib設定
#byte db=6
#define mode 0
#define input_x input_B
#define output_x output_B
#define set_tris_x set_tris_B
#define stb PIN_B0
#define rs PIN_B1
#include <lcd_lib.c>
#define LED PIN_A6
#define GATE PIN_A7
void main()
{
set_tris_a(0b00000111); //portA設定
set_tris_b(0b00000000); //portB設定
setup_comparator(A0_A2_A1_A2);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
while(1)
{
output_high(LED); //LED消灯
delay_ms(500);
output_low(LED); //LED点灯 .
output_high(GATE); //discharge
delay_ms(500);
output_low(GATE);
while(C1OUT==0);
set_timer1(0); //タイマ1をクリア
while(C2OUT==0);
kekka=get_timer1()/68*8;
lcd_init();
lcd_clear();
printf(lcd_data,"DenkaiSokutei");
lcd_cmd(0xc0);
printf(lcd_data,"Capa=%LuuF",kekka); //結果表示
set_tris_b(0x00);
}
}
PICで電解コンデンサの容量測定
部品を使って製作している中で,一番気になるのは電解コンデンサの容量です。抵抗やインダクタ、セラコン等にはあまり疑問を持ちませんが、電解については表面に○○μFと記載されているのですが、ついつい疑ってしまいます。テスターで抵抗値が簡単に測ることができるように気軽に電解も測ることができれば、安心して製作にいそしむことができます。
電解の測定についてはJIS C5101に規定されていますが、ここでは測定精度を要求せず、PICのコンパレーターとタイマー機能を利用して静電容量を概略測定します。使用するのはPIC16F648Aです。
上の右の図はコンデンサを充電するときの電圧特性です。コンパレータの電圧がv1になるt1でタイマーをスタートしv2になるt2でストップさせt2-t1を得ます。その過程が下の数式になります。写真は全体の構成になります。
ソースリスト
回路の電源電圧はガラケーのACアダプタを用いましたので5.8Vです。RA1,RA0にはコンパレータへの比較電圧を抵抗分割で供給し、RA2の電圧と比較することになります。RA2の電圧はコンデンサの充電特性のカーブに沿って上昇していきますが、この電圧が0.28Vになったときにタイマー1が起動し、3.05Vになったときに停止します。このt2-t1をもとに演算し、結果を液晶に表示します。この測定器は電解コンデンサを測定するので、時定数が比較的大きいためタイマーには1:8のプリスケーラ―を使用しています。
結果としてタイマーの値を68で割ったものが容量値になります。単位はμFです。下の写真は2200uFの電解を測った結果をLCDに表示しています。
回路説明