ここに

製造技術者のためのディジタル技術
組み込み型制御入門(2)
中京大学情報理工学部
伊藤 誠
数字表示
7素子表示は、電卓などでおな
じみの数字表示器
棒状の発光体を7本を 日 の字
型に組み合せる
数字表示の内部回路と
点灯パターン
0
1
1
1
1
1
1
0
1
0
1
1
0
0
0
0
2 7 のパターンを作成してください
PICとの接続回路
B7を0にすると、
7素子の g が
点灯する
int segment_data[]={0x7E,0x0C,0xB6,0x9E,0xCC,0xDA,
0xFA,0xE,0xFE,0xCE}; // 0~9のパターン
output_b(~segment_data[vs]) ;数字vsを表示
センサー
光の強さにより、抵抗が変わる物質
(CdS:硫化カドミウム)利用
光が殆どないときは、数十Kオームの高抵抗
室内照明程度で、数Kオームまで抵抗が低下
光センサー回路
CdS の抵抗値変化で出力
電圧が変化する
光があたる>
抵抗が低くなる>
電圧が低下する
AD:アナログディジタル変換
A0端子をアナログ入力として利用
setup_adc_ports(AN0);
クロックは内部クロックの1/32
setup_adc(ADC_clock_div_32);
0チャンネルを選択
set_adc_channel(0);
変換結果を読む
vd=read_adc();
小型DC(直流モータ)
電圧1.5V~3V、電流百mA
回転数は約2000(rpm)、トルクは120g
負荷が一定なら、回転数は注入する電力で定まる
(電力エネルギー=機械エネルギー)
PWM制御
(Pulse Width Modulation)
一定区間の中で通電する割合(時間幅)を変更
平均的な電力を調整する
PWMの設定
////PWMモードに設定
setup_ccp1(CCP_PWM);
//タイマー2で繰り返し期間
setup_timer_2(T2_DIV_BY_1,prd,1);
//周期の中の通電期間を設定
set_pwm1_duty(pwt1);
モータ接続回路
トランジスタでスイッチ制御
左からE,C,B
ダイオード:
コイルの逆起電力を軽減
黒い帯を右にして
左から右へ流れる
実習回路
アナログ
信号
CdS
センサー
PIC
16F88
PWM信号
7素子
数字表示
DCモータ
制御
制御プログラム
#include <16f88.h>
#fuses INTRC_IO,NOWDT,NOLVP,NOMCLR,NOBROWNOUT//16F88設定
#use delay(CLOCK=4000000) //クロック4MHz
int prd;
int vd,vs;
int segment_data[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xE6};
void main(){
set_tris_a(0xFF);//AD変換設定
setup_adc_ports(sAN0);
setup_adc(ADC_clock_div_32);
set_adc_channel(0);
set_tris_b(0x01); //数字表示設定
output_b(0xFF);
setup_ccp1(CCP_PWM); //PWM設定
prd=100;
setup_timer_2(T2_DIV_BY_1,prd,1);//pwm周期設定:100u
while(1){
繰り返し部
}
}
繰り返し部プログラム
vd = read_adc()/20; //明るさを取得、
if(vd > prd/2 ) vd = prd/2;//PWMの幅は半分以上にする
vs = vd/3;//表示する値 0..9
if(vs>9) vs=9; //9以上にしない
output_b(~segment_data[vs]);//7セグ出力
set_pwm1_duty(prd-(int)vd);//pwmの幅設定
delay_ms(100);//お休み
回路制作
1.CdS,PIC、7セグ,Tr挿入 2.PIC7セグ電源 3.CdS抵抗、配線
4. 7セグ下から上段左、7セグ上から下段右へ、配線
5.下段抵抗、上段抵抗
6.Tr左(E)>グランド、右(B)>下段抵抗>PIC6
7.電源>モータ>Tr中(C)、ダイオードを電源とTr中(C):方向注意