午後の部 準受動ロボット作り 電子回路編
午後の部
準受動ロボット作り 電子回路編
部品の確認
NO 品 名 個数1 ブレッドボード 12 PIC12F675 13 単連式ボリューム B特性 10kΩ 14 低ドロップ電圧レギュレータTA4805S(5V1A) 15 電解コンデンサー47uF16V 16 セラミックコンデンサー0.1uF 17 BH-9V-3A型電池ホルダー【BH-9V-3A】 18 9V 006P電池 19 GWSサーボモータ S03T/2BBMG/F(フタバ) 110 サーボ 延長ケーブル 3色並列・平行線 1
他に ジャンパー線数本,コマンドタブ2枚を使います.
部品番号と照合します
1
2
3
4
5
6
78
9
10
行と列の確認と初期配線ブレッドボードは行は1から63、列はアルファ
ベットA~Jが割り当てられています。
配線を手際よく進めるために+は赤ジャンパー線、マイナスは黒ジャンパー線接続しましょう。
三端子レギュレータTA4805Sの設置
表面が凸側(出っ張っている側)が中央の溝を向くように59行E列~61行E列に差し込みます。
表面が凸側(出っ張っている側)が中央の溝を向くよ
うに59行E列~61行E列に差し込みます。
IN端子へ電源供給
レギュレータの表面が平らな面側の61行C列と+端子とをジャンパー線を刺して回路を組みます。
確認用
GND端子をアース(マイナス)へ接続
IN端子のときと同様に60行C列と-端子をジャンパー線を刺して回路を組みます。
電解コンデンサーの設置
電解コンデンサー足の長い端子を59行C列に短い方を-ラインに刺
し込みます。参考までに電解コンデンサの-側は表面が白い帯に塗ら
れています。
PICマイコンの設置
最初に、PICの「切欠き」を確認します。1番ピンは53行E列、8番ピンは溝をはさんで
は53行F列に丁寧に刺します。また自分の指に指さぬよう注意して回路を組みます。
ここに「切欠き」といいます。
PICを動作させるための配線
1番ピン側は53行B列と+ライン、8番ピン側は53行J列と-ラインに丁寧に刺します。
PIC1番ピン側は53行C列と59行D列、PIC8番ピン側は53行J列と-ラインに丁寧
に刺します。
Servoモータ用端子の設置
1番ピン側を56行H列、以下順番に 57行H列、 および58行H列の三か所にサーボのピンを丁寧に刺します。
白、赤および黒の順番が大変重要です。
最初はサーボがつながってなくてもよいです。
Servo用の電源供給配線
57行J列と+ラインをジャンパー線でつなぎます。ここではオレンジ色の線です。
コントローラ接続の準備
58行J列と-ラインをジャンパー線でつなぎます。
54行H列と33行H列をジャンパー線でつなぎます。
コントローラの設置
30行G列~35行G列まで合計6ピンをブレッドボードに刺し込みます。
コントローラの設置(2)(3ピンタイプの場合)
33行F(Gでもよい)列 35F(Gでもよい) 列 37F(Gでもよい) 列まで合計3ピンをブレッドボードに刺し込みます。
セラミックコンデサとGND接続
セラミックコンデンサとGND用のジャンパー線
(ここでは黄色)を、ブレッボード青ライン側にしっかり差し込みましょ
う。
ツマミの装着の注意点
• 中立点とサーボの動きをあわせましょう.
ツマミの白いラインが左右回転の中立位置になってますか?
オレンジジャンパー線は31行J列とプ
ラス+を結びます.
全体のイメージ図
最終確認用
電池の固定方法
コモンドタブ2枚を利用します。{かべ側}同士を貼りあわせてブレッドボードと電池ボックスを強
力に固定します。
アルカリ9V電池接続
プラスは赤、マイナスは黒の配線を間違わないよう注意深く丁寧に差し込んでください。
完成したら!!
• いきなりロボットに接続しないこと!!大学生の出番です!!
• 大学生からRCサーボモータ単品
を借りて回路の確認をしましょう.そうしないと,折角のロボットが壊れてしまいますよ!!
問題なければ
• 自分のロボットへ大学生立会いの元,接続します.
• 静かにボリュームを回し動作を確認しましょう.
• 操作練習,レースの相談をしましょう.
参考 さらに研究を推進したい方へ
1
2
A B C
1
2
A B C
GND
GNDGND
単三×4 V
GND
VDD1
GP5/CKI2
GP4/AN3/CKO3
GP3/RES4
GP2/AN25
GP1/AN16
GP0/AN07
VSS8
PIC12F675U
123
servo0
orange
123
CN0
GND
IN GN
DO
UT
TA4805SU
47μ16VC1
0.1μC2
GND
10kVR1
GNDGND
0.1μC3
BROWNRED
4-legs-Robot
Remote type
PIC12F675 or PIC12F683
ロボット動かすプログラム 1/4• ;------------------------------------------------------------------------• ; SERVO CONTROL TEST Program• ; • ; Microchip PIC12F683• ; Version 0.00 2004.DEC.28 PIC12F629 • ; Version 1.00 2005.JAN.16 PIC12F675 ADC• ;• ; Copyright 2000-2005 YS Design Studio.• ;------------------------------------------------------------------------• ; PIN Assign• ; <I>GPIO-0 ANALOG IN• ; <O>GPIO-1 NC • ; <O>GPIO-2 PWM PULSE OUT TO SERVO• ; <O>GPIO-3 NC• ; <O>GPIO-4 NC• ; <O>GPIO-5 NC • ;---------------------------------------------------------------------------
• list p=12f675• #include <p12f675.inc>•
• __CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF
• ;---------------------------------------------------------------------------• ; Define• ;---------------------------------------------------------------------------• WORK_H EQU 0x20 ; WORKING COUNTER(H)• WORK_L EQU 0x21 ; WORKING COUNTER(L)
• WAIT1 EQU 0x22 ; • WAIT2 EQU 0x23 ;
• #define IO_PORT 0X01 ; GPIO5-0 {HSB} 01010 [LSB} 0=OUT / 1=IN
使用するPICを指定します.
ロボット動かすプログラム 2/4
• ;---------------------------------------------------------------------------• ; Power On vector• ;---------------------------------------------------------------------------
• ORG 0x00• goto main
• ;--------------------------------------------• ; Main• ;--------------------------------------------• ;----------------------------• ; Initialize PIC Microchip• ;----------------------------• main• movlw b'00000111' ;コンパレータ OFF CM2:CM0=111
• movwf CMCON ; CMCON = CM0/CM1/CM2 ON (COMPARATOR OFF)•
• bsf STATUS,RP0 ;バンク1を選択
• call 0x3FF ; OSCCAL• movwf OSCCAL ;
• movlw IO_PORT• movwf TRISIO ; Port I/O Set
• movlw B'10000001' ;• movwf OPTION_REG ;
• movlw B'01100001' ; • movwf ANSEL
• bcf STATUS,RP0 ;
• movlw B'00000000' ; • movwf ADCON0
• clrf GPIO ; Clear GPIO Port
PICを初期化します.
ロボット動かすプログラム 3/4
• ;-----------------------------------• ; Main Loop • ;-----------------------------------• main_loop•
• call WAIT20MS•
• call ADC• call HIGH_WIDTH
• goto main_loop
• ;--------------------------------------------• ; Sub Routine• ;--------------------------------------------
• ;--------------------------------------------• ; ADC• ;--------------------------------------------• ADC• bsf ADCON0,ADON ;ADC_ON
• call WAIT20US• call WAIT20US ;
• bsf ADCON0,GO ;ADC GO• ADC_WAIT• btfsc ADCON0,GO• goto ADC_WAIT
• bcf ADCON0,ADON ;ADC_OFF•
• movf ADRESH,W ;• movwf WORK_H ;
• movlw 0x00 ;IF =0 then =1 • subwf WORK_H,W• btfsc STATUS,Z• INCF WORK_H,1 ;
• return
AD変換をします
Main文です.サブルーチンが2個あ
ります.
ロボット動かすプログラム 4/4• ;--------------------• ; HIGH WIDTH• ;--------------------• HIGH_WIDTH
• movlw b'00000100'• movwf GPIO ;high
• movlw 0xF0 ;0x8C• movwf WORK_L
• high_width_loop2• decfsz WORK_L,F ;• goto high_width_loop2
• high_width_loop1• goto $+1• NOP• decfsz WORK_H,F ;• goto high_width_loop1
• clrf GPIO ;low• return• ;-------------------------• ; 20uS WAIT (CLOCK 4MHZ)• ;-------------------------• WAIT20US• movlw 0X04 ; 0X04(4Mhz)• movwf WAIT1 ;• wait_loop1• decfsz WAIT1,F ;• goto wait_loop1 ;• nop• nop• NOP• return ;
パルス幅を決めます.
20μsecのタイマー