4 8 (DC) Web http://www.mybook-pub-site.sakura.ne.jp/motor Drive note/index.html
1 4 8 (DC) 2 4.1.................................... 2 4.2............................. 6 4.3............... 7 4.4 1....................... 8 4.5 PWM............................ 18 4.6 A/D......................... 27 4.7 DC........................... 34 38
第4章 2 8 ピンマイコンによる直流 (DC) モータ回転数制御 第4章 8 ピンマイコンによる直流 (DC) モータ回転数制御 4.1 組み立て 図 4.1: PIC12HV615 を用いた直流 (DC) モータの回転数制御回路 (全体写真) 本章では PIC12HV615 を用いた直流 (DC) モータの回転数制御回路を紹介する PIC12HV615 は筆者が製作演習付きのパワーエレクトロニクスの講義において使用している PIC マイ コンである 電源に乾電池 4 個を直列 (6[V]) にして用いた場合にはこの高電圧タイプの
4.1. 組み立て 3 マイコンが適している PIC12HV615 の内部では電源用のピンに出力電圧 5 [V] のレギュ レータが接続されていて ここで 6 [V] の電源電圧を 5 [V] に降圧し マイコン内の回路 に供給している 外付け回路は抵抗とコンデンサの簡単な回路でよい 充電池 4 個を直 列 (5[V]) とした場合には PIC12F615 を用いればよい PIC12HV615 と PIC12F615 では ピン配置は全く同じである プログラムの変更は必要なく 同じものがそのまま使える PIC12HV615 を用いた直流 (DC) モータの回転数制御回路の製作例を図 4.1 に示す そ の拡大写真を図 4.2 に示す 第 1 章の PIC16F1825 を用いた回路との違いは マイコンを PIC12HV615 に置き換えたことと 抵抗 R5 コンデンサ C6 切り替えスイッチ SW を 追加したことだけである 図 4.2: PIC12HV615 を用いた直流 (DC) モータの回転数制御回路 (拡大写真) 立体配線図を図 4.3 に示す また その回路図を図 4.4 に示す インバータ回路は第 1 章図 1.3, 1.4 のものと全く同じである インバータ DC モータ 回転数検出回路などの 詳細は第 1 3 章を参照されたい 乾電池を充電池に置き代え 電圧を 5[V] として PIC12F615 を用いた場合の回路図を 図 4.5 に示す 図 4.4 から 電源を 5 [V] とし マイコンを PIC12F615 に置き換え 抵抗 R5 コンデンサ C6 を取り除いてある マイコンのプログラムは PIC12HV615 用のもの を変更する必要はない 図 4.6 は PIC12HV615(PIC12F615) のピン配置図である 2 7 番ピンを汎用入出力ポー ト GP5 GP0 として利用できる また 3, 5 7 番ピンは A/D コンバータの入力 AN3
4 4 8 (DC) 4.3: PIC12HV615 (DC) AN0 PWM 2, 5 P1A 3, 7 P1B PICKit3 4 (MCLR) 6 (ICSPCLK), 7 (ICSPDAT) 8 PIC PIC12F615 PIC12F1822, PIC12F1840 12HV PIC12HV615 (2012 12 )
4.1. 5 4.4: PIC12HV615 (DC) 4.5: PIC12F615 (DC)
6 4 8 (DC) 4.6: PIC12HV615(PIC12F615) 4.2 1 4.7: Microchip MPLAB R IDE (Integrated Development Environment) 1 MPLAB IDE V8.86
4.3. 7 MPLAB IDE MPLAB IDE 1.2 PIC12F1825 4.7 Select a device PIC12HV615 PIC12F1825 PIC12HV615(PIC12F615) 1.17 4.3 4.4 R 5 C 6 PIC12HV615 (PIC12F615/HV615 Data Sheet) RSER LIMITING REGISTER R 5 R 5MAX R 5MIN R 5MAX = R 5MIN = V UMIN 5[V] 1.05 (4[mA]+I LOAD ) V UMAX 5[V] 0.95 50[mA] (4.1) (4.2) V UMIN, V UMAX I LAOD V UMIN = 5.9 [V], V UMAX = 6.3 [V], I LOAD = 10[mA] (4.3) R 5MAX = R 5MIN = 5.9 5[V] = 61[Ω] 1.05 (4[mA] + 10[mA]) (4.4) 6.3 5[V] = 27[Ω] 0.95 50[mA] (4.5) 4.4 R 5 = 50[Ω] C 6 AN1035 AN1035 Web
8 4 8 (DC) C 6MAX C 6MAX = 42[ms] R 5 ln ( ) 2.1 5 = 42 10 3 50 ln ( ) 2.1 5 = 968[µF ] (4.6) 4.4 C 6 = 1[µF ] 4.4 1 4.8: 1 PWM A/D PIC 1 A/D(Analog/Digital) PWM 1 4.8 4.9 PIC12HV615 1 A/D PWM PIC (PIC12HV615) V R 1 ICSP A/D ICSP PICkit3 4 6 [V]
4.4. 1 9 4.9: 1 PWM A/D 4.1: 4.1 PIC (PIC12HV615, PIC12F615) 24 12 ) ICSP PICKit3 1 1.3.2 (PIC12F615/HV615 Data Sheet) Timer0, 1, 2 Modules PIC12HV615 8 (Timer0, 2) 16 (Timer1) Timer1 1 [msec] 4.10 4.16 1 1 1 Web 2 2
10 4 8 (DC) 4.10: 1 (Timer1 Interrupt) PIC 4.10 PIC12HV615 #include < pic12hv615.h > (4.7) HI-TECH C C:\Program Files (x86)\hi-tech Software\PICC\9.83\include HI-TECH C for PIC10/12/16 User s Guide( Web HI-TECH C htc.h (4.8) ( 4.16) ( 4.15) 4.10 #include C : \Program Files(x86)\HI TECH Software\PICC\9.83 \12F615 12HV615\PIC12F615 Files\pic12f615 s.h (4.9) pic12f615 s.h HI-TECH C C : \Program Files(x86)\HI TECH Software\PICC\
4.4. 1 11 9.83 9.83 12F615 12HV615 \12F615 12HV615\PIC12F615 Files CONFIGURATION WORD REGISTER CONFIG (FOSC INTOSCIO & WDTE OFF & PWRTE OFF & MCLRE ON & CP OFF & IOSCFS 8MHz & BOREN OFF); (4.10) CONFIG FOSC INTOSCIO GP4, 5(3, 2 ) MCLRE ON MCLR (4 ) IOSCFS 8MHz 8MHz 4.11: 4.11 PIC12HV615 8MHz FOSC
12 4 8 (DC) 4.12: 1 1 (Timer1 Interrupt) 4.12 1 1.36 timer1 isr(void) timer1 isr timer1 isr isr Interrupt Service Routine pic16f1825.h (PIC16F1825 Data Sheet) GP5 = 1 (4.11) GPIO REGISTER GPIO GP5 1 GP5(PIC12HV615 2 ) 1 GP5 = 0 (4.12) RC1 0 1 set timer1 count down ini num(0x1eb0); (4.13) 4.16 TMR1(Timer1 Register) 0xFFFF 0x1EB0 + 1 (4.14)
4.4. 1 13 (4.13) set timer1 count down ini num SUMMARY OF REGISTERS ASSOCIATED WITH TIMER1 TMR1H TMR1L 8 Timer1 Interrupt 0xFFFF 0x0000 1 0 1 0 1 8MHz 0x1F40 (16) = 8000 (10) (4.15) 0x1F40 0x1F40 T int 1 [ms] 0x1EB0 0 T int 1 [ms] 0x1EB0 clear interrupt flag of timer1(); (4.16) 4.16 PIR1 REGISTER TMR1IF 0 1 0 TMR1IF(Timer1 Interrupt Flag) 1 1 0 1 4.13: 1 (Timer1 Interrupt) 4.13 1.37
14 4 8 (DC) TRISIO = 0x00; (4.17) GPIO TRI-STATE REGISTER TRISIO 0x00 I/OPORT 4.14: 1 set timer1(tmr1 clock source FOSC, T1Clock PreScale 1 1, TMR1 ON, TMR1 Alternate Clock FOSC); (4.18) 4.16 1.44 T1CON(TIMER1 CONTROL REGISTER) CMCON1(COMPARATOR CONTROL REGISTER 1) 1 T1CONbits.TMR1CS = 0b0; (4.19) T1CONbits.T1CKPS = 0b00; (4.20) T1CONbits.TMR1ON = 0b1; (4.21) CMCON1bits.T1ACS = 0b1; (4.22) (4.18) 4.15 T1CON CMCON1 1.41 4.14 1 COMPARATOR CONTROL REGISTER 1 T1ACS(Timer1
4.4. 1 15 Alternate Clock Select bit) 0b1 1 FOSC = 8MHz TIMER1 CONTROL REGISTER TMR1CS(Timer1 Clock Source Select bits) 0b0 1 (FOSC = 8MHz) FOSC CONFIGURATION WORD REGISTER FOSC FOSC T1CKPS(Timer1 Input Clock Prescale Select bits) 0b00 1 1:1 1 8MHz TMR1ON 1 set interrupt by timer1(); (4.23) 4.16 PIE1(PERIPHERAL INTERRUPT ENABLE REGISTER 1) INTCON1(INTERRUPT CONTROL REGIS- TER) 1 PIE1bits.TMR1IE = 1; (4.24) INTCONbits.PEIE = 1; (4.25) INTCONbits.GIE = 1; (4.26) PERIPHERAL INTERRUPT ENABLE REGISTER 1 TMR1IE (Timer1 Overflow Interrupt Enable bit) TMR1 (0xFFFF 0x0000) INTERRUPT CONTROL REGISTER PEIE (Peripheral Interrupt Enable bit) AD PWM GIE (Global Interrupt Enable bit) INTERRUPT CONTROL REGISTER 3 1 SUMMARY OF REGISTERS ASSOCIATED WITH TIMER1 TMR1IF 0 0 for(; ; ) continue; (4.27)
16 4 8 (DC) 4.15: 1 T1CON, CMCON1(Timer1 Interrupt) 1 1 1 [ms] 4.17 4.10 4.12 4.13 1 1 8 [MHz] 1 [khz] 1 2 0 4.18 4.10 4.13 PIC12HV615 GP5(2 ) 5 [µs/div] 5 [µs] 2 [V/div] 1.0035 [khz] 1 14 [µs]
4.4. 1 17 4.16: 1 (Timer1 Interrupt) 4.17: 1
18 4 8 (DC) 4.18: 1 4.5 PWM 1 1 A/D PIC16F1825 A/D PICKit3 PIC12HV615 In-Circuit Debugger Special debugging adapter MPLAB IDE debugger A debug header is required AC162083 Debug header A/D PWM 4.19 PWM duty cycle 2, 3 PWM PWM 2 (TIMER2 MODULE) 2 8 1/4 FOSC/4 = 2 [MHz] PWM 2 10 FOSC = 8 [MHz] PWM 4.20 PWM (SIMPLIFIED PWM BLOCK DIA- GRAM) 2(TMR2) FOSC 2
4.5. PWM 19 4.19: PWM 2 8 PR2 (Timer2 Module Period Register) (8 ) Comparator( ) 2 0 R-S (Q = 1, Q = 0) CCPR1H (Capture/Compare/PWM Register 1 High Byte) (10 CCPR1L (8 8 CCP1CON (CCP1 CONTROL REGISTER) DC1B (2 ) 2 2 0 TMR2 CCPR1H R-S (Q = 0, Q = 1) 4.21 TMR2 0 PWM P1A* = Q = 1, P1B* = Q = 0 TMR2 FOSC TMR2 == CCPR1L 4 + DC1B (4.28) P1A* = Q = 0, P1B* = Q = 1 TMR2 == PR2 4 (4.29)
20 4 8 (DC) 4.20: PWM TMR2 = 0 P1A* = 1, P1B* = 0 TMR2 P1A*, P1B* CCPR1L 4 + DC1B P1A*, P1B* PWM(Pulse Width Modulation ) TMR2 T P W M PWM PWM f P W M = 1/T P W M P1A* = 1 T ON δ = T ON /T P W M FOSC = 8 [MHz] PR2 = 0x3F PWM T P W M T P W M = 1 FOSC (PR2+1) 4 = 32[µs] (4.30) PWM 31.25 [khz] δ 1/((PR2 + 1) 4) = 1/256 4.22 PWM 1.70 CONFIG 4.10 set PWM duty cycle 4.24 PWM δ duty cycle 4.20 CCPR1L 8 DC1B 2 A/D A/D 16 ADRES(ADC RESULT REGISTER) 10 PWM #definepwm period 0x3F (4.31)
4.5. PWM 21 4.21: PWM PR2 TMR2 8 4.20 Comparator TMR2 0b0011111100 TMR2 0 Q 1 A/D ADRES 2 8 4.20 Comparator set PWM duty cycle CCP1CONbits.DCB = (a >> 2) & 0b00000011; (4.32) duty cycle 2, 3 DCB A/D 8 2 DCB CCPR1L = duty cycle >> 4; (4.33) duty cycle 4 4 9 CCP1RL A/D 8 6 CCPR1L 4.23 PWM 1.71 PWM set PWM 4.24 1.72 set timer2 4.25 1.73 4.26 PWM CCP1CON (CCP1 CONTROL REGISTER) CCP Capture, Compare, PWM P1A P1B
22 4 8 (DC) 4.22: PWM (PWM) CCP1FCON CCP1CONbits.P1M = 0b1; (4.34) P1M(PWM Output Configuration bit) 0b1 P1A, P1B CCP1CONbits.CCP1M = 0b1100; (4.35) P1A, P1B (active high) CCP1CONbits.CCP1M = 0b1111; (4.36) P1A, P1B (active low) 4.21 P1A, P1B 1, 0 P1A, P2B 2 P1A 2 5, P1B 3 7 4.6
4.5. PWM 23 4.23: PWM (PWM) APFCON(ALTERNATE PIN FUNCTION CONTROL REGISTER) APFCONbits.P1ASEL = 0b1; (4.37) P1A GP5(2 ) APFCONbits.P1BSEL = 0b1; (4.38) P1B GP4(3 ) PWM 2 4.23 set timer2 2 1 1 2 FOSC 4.20 TMR2 (10 8 PR2 PWM PERIOD PR2(Timer2 Module Period Register) PR2 = 0x3F (4.39) PWM f P W M f P W M = FOSC/4/(63 + 1) = 8[MHz]/4/64 = 31.25[kHz] (4.40)
24 4 8 (DC) 4.24: PWM (PWM) 32.15 [khz] f P W M PR2 = 31.25[kHz]/(FOSC/4) 1 = 31.25[kHz]/8[MHz]/4 1 = 63 (4.41) 4.24 3.20 FUNCTTION REGISTER SUMMARY BANK 0 PWM1CON 0 4.28 4.9 PICkit3 MPLAB PIC12HV615 2, 3 PWM v P1A, v P1B duty cycle = 0x1FF 0.5 PWM PWM f P W M 31.33 [khz]
4.5. PWM 25 4.25: 2 (PWM) 4.26: PWM (PWM)
26 4 8 (DC) 4.27: PWM ( )(PWM) 4.28: PWM
4.6. A/D 27 4.6 A/D 4.29: A/D 4.29 4.19 PWM A/D(Analog/Digital) 5 P1A*, P1B* PWM 4.9 V R 1 PIC12HV615 5 4.29 1 1 [ms] A/D A/D 5 ADRES(ADC RESULT REGISTER) A/D duty cycle ADRES A/D (FOSC = 8 [MHz]) 16 500[kHz] ADC CLOCK PERIOD (TAD) VS. DEVICE OPERATING FREQUENCIES (FOSC) 8[MHz] 2 or 4[µs]( 500 or 250[kHz]) A/D VDD 4.30, 4.31 1.54 1.55
28 4 8 (DC) 4.30: A/D (AD Conv) GP1 start ad conversion(); (4.42) 4.32 ADCON0bits.GO = 0b1 (4.43) A/D ANALOG-TO-DIGITAL CON- VERSION TAD CYCLES A/D 12 TAD TAD A/D 4.31 set AD Converter() TAD = 2[µs] ADRES A/D 24 [µs] ADCON0bits.GO A/D 0
4.6. A/D 29 while(adcon0bits.go) (4.44) A/D A/D read result of ad conversion() ADRES duty cycle 1.54 PWM set PWM duty cycle 4.31: A/D (AD Conv) TRISIO = 0x04 = 0b0000 0100 (4.45) 5 (GP2/AN2) A/D set AD Converter(right justified, pos ref VDD, select AN2, AD ON, clock 1 16, GP2 ANinput); (4.46)
30 4 8 (DC) 4.32: A/D (set ad conver.c)(ad Conv) 4.32 4.33 4.34 4.35 A/D ( ADC BLOCK DIAGRAM) ADCON0 (A/D CONTROL REGISTER 0), ANSEL(ANALOG SELECT REGISTER) (4.46) A/D 10 ADRES 16 ADFM(A/D Conversion Result Format Select bit) ADRES 10 10 right justified ADFM = 1 10-BIT A/D CONVERSION FORMAT ADRES 6 0 pos ref VDD VCFG(Voltage Reference bit) = 0 A/D
4.6. A/D 31 4.33: A/D (AD Conv) + VDD select AN2 CHS(Analog Channel Select bits) = 0b010 A/D AN2(5 ) AD ON ADON(ADC Enable bit) = 1 A/D clock 1 16, GP2 ANinput ANSEL clock 1 16 A/D Conversion Clock Select bits) = 0b101 TAD = 1 FOSC 16 = 1 8[MHz] 16 = 2[µs] (4.47) GP2 ANinput ANS(Analog Select Between Analog or Digital Function on Pins bits) = 0b0100 GP2
32 4 8 (DC) 4.34: A/D (AD Conv) 4.35: A/D
4.6. A/D 33 4.36: A/D PWM 4.36 A/D v in (5 ) PWM v P 1A (2 ) v P 1B (3 ) (a) v in (b) v in PWM
34 4 8 (DC) 4.7 DC 4.37: DC DC 4.37 4.29 PWM 4.4 ω com 5 ω det 7 PIC12HF(F)615 A/D 1 ω com w com ω det w det PI v com 4.4 ICSP PICKit3 SW DC SW 4.38 4.41 DC 1.104, 1.105 #define XTAL FREQ 8000000 (4.48)
4.7. DC 35 4.38: DC (DC Motor Control) 4.39: DC (DC Motor Control) 4.42 4.1 DC 4.38 4.41 K p = 32, K idt = 1 1.107 1 DC
36 4 8 (DC) 4.40: DC (DC Motor Control) 4.41: DC (DC Motor Control)
4.7. DC 37 4.42: DC (K p = 32, K idt = 1)
38 [1] 2008.
39 2012 11