午後の部 準受動ロボット作り電子回路編
部品の確認 NO 品 名 個数 1 ブレッドボード 1 2 PIC12F675 1 3 単連式ボリューム B 特性 10kΩ 1 4 低ドロップ電圧レギュレータTA4805S(5V1A) 1 5 電解コンデンサー 47uF16V 1 6 セラミックコンデンサー 0.1uF 1 7 BH-9V-3A 型電池ホルダー BH-9V-3A 1 8 9V 006P 電池 1 9 GWSサーボモータ S03T/2BBMG/F( フタバ ) 1 10 サーボ延長ケーブル 3 色並列 平行線 1 他にジャンパー線数本, コマンドタブ 2 枚を使います.
部品番号と照合します 7 8 9 3 6 1 2 4 10 5
行と列の確認と初期配線 ブレッドボードは行は 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 を動作させるための配線 PIC1 番ピン側は53 行 C 列と59 行 D 列 1 番ピン側は53 行 B 列と+ライン 8 番ピン PIC8 番ピン側は53 行 J 列と-ラインに丁寧側は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 でもよい ) 列 37 F(G でもよい ) 列まで合計 3 ピンをブレッドボードに刺し込みます
セラミックコンデサと GND 接続 セラミックコンデンサと GND 用のジャンパー線 ( ここでは黄色 ) を ブレッボード青ライン側にしっかり差し込みましょう
ツマミの装着の注意点 中立点とサーボの動きをあわせましょう. オレンジジャンパー線は 31 行 J 列とプラス + を結びます. ツマミの白いラインが左右回転の中立位置になってますか?
全体のイメージ図
最終確認用
電池の固定方法 コモンドタブ 2 枚を利用します { かべ側 } 同士を貼りあわせてブレッドボードと電池ボックスを強力に固定します
プラスは赤 マイナスは黒の配線を間違わないよう注意深く丁寧に差し込んでください アルカリ 9V 電池接続
完成したら!! いきなりロボットに接続しないこと!! 大学生の出番です!! 大学生から RC サーボモータ単品 を借りて回路の確認をしましょう. そうしないと, 折角のロボットが壊れてしまいますよ!!
問題なければ 自分のロボットへ大学生立会いの元, 接続します. 静かにボリュームを回し動作を確認しましょう. 操作練習, レースの相談をしましょう.
参考さらに研究を推進したい方へ A B C 4-legs-Robot Remote type PIC12F675 or PIC12F683 IN GND OUT U TA4805S 1 1 単三 4 V C2 0.1μ GND C1 47μ16V GND GND GND GND BROWN RED orange 1 2 3 servo0 CN0 1 2 3 1 2 3 4 VDD GP5/CKI GP4/AN3/CKO GP3/RES U PIC12F675 8 VSS 7 GP0/AN0 6 GP1/AN1 5 GP2/AN2 VR1 10k C3 0.1μ 2 GND GND 2 GND A B C
ロボット動かすプログラム 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 使用する PIC を指定します. ;--------------------------------------------------------------------------- ; 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
ロボット動かすプログラム 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 ; PIC を初期化します. movlw B'01100001' ; movwf ANSEL bcf STATUS,RP0 ; movlw B'00000000' ; movwf ADCON0 clrf GPIO ; Clear GPIO Port
ロボット動かすプログラム 3/4 ;----------------------------------- ; Main Loop ;----------------------------------- main_loop call WAIT20MS call ADC call HIGH_WIDTH goto main_loop ;-------------------------------------------- ; Sub Routine ;-------------------------------------------- Main 文です. サブルーチンが 2 個あります. ;-------------------------------------------- ; ADC ;-------------------------------------------- ADC bsf ADCON0,ADON ;ADC_ON call WAIT20US call WAIT20US ; bsf ADCON0,GO ;ADC GO ADC_WAIT btfsc ADCON0,GO goto ADC_WAIT AD 変換をします 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
ロボット動かすプログラム 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 のタイマー