投稿者「pidream」のアーカイブ

関西地区大会


最短走行できず。
まさかのゴール区間に壁を置いている。
斜め走行の調整より先に、探索をどうにかしないと。

カテゴリー: マイクロマウス | コメントする

こつこつ


急ぎ組み立てる
致命的なミスは無さそうだが
・ギヤボックスはPOMで作り直したい(壊れたら置き換える)
・ピニオンは厚さ1mm位で良い(要発注)

カテゴリー: マイクロマウス | こつこつ はコメントを受け付けていません。

PCBGOGOから基板が届く


PCBGOGOさんから基板が届く、
紫や、つや無し黒のレジスト色が選べて、安くて、早い
5/7(日) 見積もり
5/8(月)朝 ガーバ確認完了
5/8(月)夜 入金
5/9(火)朝 入金確認
5/13(土)朝 出荷
5/15(月) 着

データはPCBEで、この手順で作成したもので問題なかった。

//////////
スルーホールはティアドロップ処理したが良さそう
穴0.3mm ランド0.7mmだと穴ズレがちょっと不安

カテゴリー: マイクロマウス | PCBGOGOから基板が届く はコメントを受け付けていません。

どたばた


マイクロマウス関西支部総会がGW前に行われ
7月9日(日)に行われる関西地区大会の計画を立てる

完全に大会時季を忘れていた
とにかく、32×32の迷路を走れる機体を作らねば
基礎となるソースコードの入手や、在庫整理と追加注文、アートワークやらを進める。
仕様も割り切る
マイコンはRX631の64pin、リポ1セル、ジャイロは今回はアナログ、壁センサはφ③3に変更、エンコーダは使いまわす。

/////
・digkey,マルツの1回目発注完
・PCBガーバ確認返信待ち

カテゴリー: マイクロマウス | どたばた はコメントを受け付けていません。

R8C側に続く

実機が無いので、確認しようが無いがR8C側の受信処理検討。
こんな感じの接続を想定

プロトタイプ宣言に追加

void CamCommProcess( void );

グローバル変数追加

/* カメラとの通信用等*/
unsigned char cam_read_u ; /* 同期信号上りエッジフラグ保存用 */
unsigned char cam_trace ; /* トレースデータ保存用 */

関数を追加する(P7_0とP7_1がデジタルとして取得できるかは未確認)

void CamCommProcess( void )
{
 unsigned char cam_tmp=0;
 /*センサデータ取得(トレース) 上りエッジ*/
 if(cam_read_u==1 && (p0_3 & 0x01)==0x00 ){cam_read_u=0;}
 if(cam_read_u==0 && (p0_3 & 0x01)==0x01 ){//ポート0 bit3の立上りで取り込み
 cam_read_u=1;
 
 cam_tmp= (p1_6 & 0x01) + (p1_7 & 0x01)*2 + (p7_0 & 0x01)*4 + (p7_1 & 0x01)*8 +
 (p0_0 & 0x01)*16 + (p0_1 & 0x01)*32;
 
 cam_trace=cam_tmp;
 }
}

mainループで関数を常に呼ぶ。

while( 1 ) {

CamCommProcess();

switch( pattern ) {

getAnalogSensor関数を書き換える

int getAnalogSensor( void )
{
    int ret;

    if(cam_trace!=63){
        ret = cam_trace - 31 ;//中心が31の場合
    }else{
        ret = 0;//とりあえず今回は0にしておく
    }
    
    if( !crank_mode ) {
        //なんか処理追加
    }

    return ret;
}
カテゴリー: RMCR 2017 | R8C側に続く はコメントを受け付けていません。

続き

・エッジ検出によるライン位置推定
・CPU間用パラレル通信

#define LED 13
#define AO A0
#define SI 11
#define CLK 12

#define BIT_7 9
#define BIT_6 8
#define BIT_5 7
#define BIT_4 6
#define BIT_3 5
#define BIT_2 4
#define BIT_1 3
#define BIT_0 2

//エッジ検出閾値
#define MIN_EDGE 3
unsigned char data[32];

void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT);

digitalWrite(SI, LOW);
pinMode(SI, OUTPUT);
digitalWrite(CLK, LOW);
pinMode(CLK, OUTPUT);

ADCSRA = ADCSRA & 0xfd;//Division Factor 128->32

pinMode(BIT_7, OUTPUT);
pinMode(BIT_6, OUTPUT);
pinMode(BIT_5, OUTPUT);
pinMode(BIT_4, OUTPUT);
pinMode(BIT_3, OUTPUT);
pinMode(BIT_2, OUTPUT);
pinMode(BIT_1, OUTPUT);
pinMode(BIT_0, OUTPUT);

Serial.begin(9600);
while (!Serial);
}

void loop() {
// put your main code here, to run repeatedly:
signed char min,max,dif;
unsigned char maxad,minad,out;

delay(500);

while(1)
{
digitalWrite(BIT_7, LOW);
digitalWrite(SI, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(SI, LOW);
delayMicroseconds(10);
digitalWrite(CLK, LOW);
for (int j = 0; j <32; j++){
 data[j]=analogRead(A0)/4;
 digitalWrite(CLK, HIGH);
 digitalWrite(CLK, LOW);
 digitalWrite(CLK, HIGH);
 digitalWrite(CLK, LOW);
 digitalWrite(CLK, HIGH);
 digitalWrite(CLK, LOW);
 digitalWrite(CLK, HIGH);
 digitalWrite(CLK, LOW);
}

min=-MIN_EDGE;
max= MIN_EDGE;
minad=0;
maxad=0;
for(char j=0;j<31;j++){
 dif=data[j]-data[j+1];
 if(j<30 && dif<min){min=dif;minad=j;} //黒→白エッジ検出
 if(j>1  && dif>max){max=dif;maxad=j;} //白→黒エッジ検出
}
if(min==-MIN_EDGE || max==MIN_EDGE ||(minad>maxad)){
 out=63;
 //63:検出エラー
}else{
 out=(minad+maxad);
 //out=31位が中心に白線がある状態 15~45位の範囲で横ズレ量を示す
}
Serial.println (out);
if(out>=32){digitalWrite(BIT_5, HIGH);out=out-32;}else{digitalWrite(BIT_5, LOW);}
if(out>=16){digitalWrite(BIT_4, HIGH);out=out-16;}else{digitalWrite(BIT_4, LOW);}
if(out>= 8){digitalWrite(BIT_3, HIGH);out=out- 8;}else{digitalWrite(BIT_3, LOW);}
if(out>= 4){digitalWrite(BIT_2, HIGH);out=out- 4;}else{digitalWrite(BIT_2, LOW);}
if(out>= 2){digitalWrite(BIT_1, HIGH);out=out- 2;}else{digitalWrite(BIT_1, LOW);}
if(out>= 1){digitalWrite(BIT_0, HIGH); }else{digitalWrite(BIT_0, LOW);}
digitalWrite(BIT_7, HIGH);

delay(10);//露光時間
}
}
カテゴリー: RMCR 2017 | 続き はコメントを受け付けていません。

ラインカメラをArduino Nanoで動かす


カメラ誘導マシンでよく使われているTSL1401をArduinoで動かしてみる
とりあえず128画素を読んでみると

1フレームの読み込みに15.4ms程度かかっている。遅すぎる。
ので、高速化を検討。
まず、128画素も使わないので4画素に1回のみ取り込むことにしてAD変換の回数を1/4にする。
ライントレースに使うデータとしては、32画素もあれば十分だろう。

4.38ms位になった。これで、露光時間を含めると150fps~160fps位になりそう。
でも、Advanceのセンサ置き換えには、もう少し欲しいところ。

遅い画素の読み取り(AD変換)に手をつける。
analogRead()を早くしたい。
garretlabさんを参照すると
Arduinoの初期化関数init()内でADCの変換時間を決めるADCSRレジスタを設定しているようだ。
早速、hardware/arduino/avr/cores/arduino/wiring.cを覗くと

と書いてある。Arduino Nanoは16MHzなので、ADCSR=0b111(分周比128)になってそうである。
ので、スケッチに戻り、void setup()に下記コードを追記して分周比を32に変更する。
ADCSRA = ADCSRA & 0xfd;//Division Factor 128->32
と、

1.892msとなった。露光時間が2msなら 250fps相当になる。

#define LED 13
#define AO A0
#define SI 11
#define CLK 12

unsigned char data[32];

void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT);

digitalWrite(SI, LOW);
pinMode(SI, OUTPUT);
digitalWrite(CLK, LOW);
pinMode(CLK, OUTPUT);

ADCSRA = ADCSRA & 0xfd;//Division Factor 128->32

Serial.begin(9600);
while (!Serial);
}

void loop() {
// put your main code here, to run repeatedly:
delay(500);

while(1)
{

digitalWrite(SI, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(SI, LOW);
delayMicroseconds(10);
digitalWrite(LED, HIGH);
digitalWrite(CLK, LOW);
for (int j = 0; j < 32; j++){
data[j]=analogRead(A0)/4;
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
}
digitalWrite(LED, LOW);
Serial.println (data[15]);
delay(5);
}

}
カテゴリー: RMCR 2017 | ラインカメラをArduino Nanoで動かす はコメントを受け付けていません。

RMCR2017春

逆境からのスタートでしたが、その後は幸運に恵まれ
予選、部門とトーナメント優勝できました。
皆様の助言と、各所で、調整させて頂いたおかげです。
ありがとうございました。

大会を運営してくださったルネサスの皆様や参加者の皆様。
楽しい時間をありがとうございました。

カテゴリー: RMCR 2017 | RMCR2017春 はコメントを受け付けていません。

東海大学 Challenge Cup 2017


東海大学熊本キャンパスで行われた東海大学 Challenge Cup 2017に参加してきた。
参加台数が90を超える大きなイベントとなっていた。


N氏のカメラ誘導マシン。アッカーマンに進化していた


小中学生によるマイコンレーサーの走行回。

大会は
前日試走から色々やらかすもギリギリ部門優勝。
しかしタイムで適わず。エキシビジョンでも追いつけない。

大会を開催して下さった東海大学の皆様、熊本の先生の皆様、お疲れ様でした。

カテゴリー: RMCR 2017 | 東海大学 Challenge Cup 2017 はコメントを受け付けていません。

第7回福岡県マイコンカーラリー技術交流会・競技会


マシンは持たず、見学のみ
Basicクラスがメチャ速かった

カテゴリー: RMCR 2017 | 第7回福岡県マイコンカーラリー技術交流会・競技会 はコメントを受け付けていません。