製造技術者のためのディジタル技術 組み込み型制御入門(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):方向注意
© Copyright 2024 ExpyDoc