Weblog
05/12/15(木) : 今日は作業なし
今日は雑用や指導などで作業を進められず・・・。そのうえ、今日の中間発表では12チーム中11チームがライントレース部分を走破。
これは、TAチームが一番遅れているような気がw
05/12/01(木) : USBメモリとの同期をとるバッチファイル
プログラムを書き始めると、バックアップをどうやって取るか悩み始めます。そのなかでも一番手軽で便利なのは、やっぱりUSBメモリでしょう。
GCCでプログラムを始める前、及びプログラム後に、
ハードディスクとUSBメモリのファイル内容を同一にする操作をバッチファイルにて行います。
同期を取るフォルダは
ハードディスクが
D:\teamTA
USBメモリが
G:\teamTA
としていますので、適当に置き換えて下さい。
それと、GCCのインストール先は
D:\BestTech
です。
echo off
IF EXIST G:\teamTA\nul GOTO BOOT
echo USBメモリがありません
echo USBメモリを接続後、何かキーを押して下さい
PAUSE
GOTO BOOT
:BOOT
echo _
XCOPY D:\teamTA G:\teamTA /D /E /H /R /Y
echo _
XCOPY G:\teamTA D:\teamTA /D /E /H /R /Y
echo _
"D:\BestTech\GCC Developer Lite\GCCDevL.exe"
XCOPY D:\teamTA G:\teamTA /D /E /H /R /Y
echo _
XCOPY G:\teamTA D:\teamTA /D /E /H /R /Y
echo _
GOTO END
:END
PAUSE
EXIT
05/11/19(土) : サーボモーターをPWM波で制御
サーボモーターを動かすべくプログラムに取り掛かる。DCモーターを回転させるだけなら、極論すればPWMは「てきとー」でも何とかなる。
しかし、サーボモーターはそうは行かない。
サーボモーターには角度を保持してくれるという大事な機能があり、
その角度をPWMで指定してあげなければならないからだ。
モーターの仕様に従ったPWMの波形を得るべく、まずは計算。

使用しているサーボモーターは「(忘れた)」である。
仕様は以下の通り。
T = 4〜30ms
W_min = 0.9ms
W_max = 2.1ms
Tの値はとりあえず T=5ms としておく。
H8/3404は16MHzで動作するが、ITUはプリスケーラを用いて8分の1周期で動かしている。
よって、
16 MHz * (1/8) = 2 Mhz = 2 * 10^6 Hz
と考え、ITUの1クロックは
1 s / 2 MHz = 1 s / (2 * e6) Hz = 0.5 * e(-6) s = 0.5 μs
である。
よって、
RGA
= T / ITUの1クロック
= 5000 / 0.5
= 10000
RGB_min
= W_min / ITUの1クロック
= 900 / 0.5
= 1800
RGB_max
= W_max / ITUの1クロック
= 2100 / 0.5
= 4200
従って、RGB_midは2つの中間を取って3000!
いやー、案外簡単に計算できたな。
ところが、いざ動かしてみると・・・
真ん中が合わない!
既にロボットにモーターを取り付けた後で気付いたので、
(ロボットに対しての)センターは計測値を入れるしかなさそうですw