ピニオン交換


kkpmoからピニオンが届く
8/17発注で8/28着
今までの2mmだとスペースの制約がキツかったが
1mm幅なら丁度よさげ

今回はメタルロックで止めてみる

修理


ルネサス大会で故障したカメラ基板を新調する。
ワイヤーのはんだ付けランドの強化(スルーホール追加)し
ワイヤー自体も根元を接着剤で補強する
基板レジストは、つや無し黒レジスト
接着用スペースの増加による重量増を板厚変更(1mm->0.6mm)で吸収
結果-0.05gで、重量増無し
(にしてもpcbgogoは早い、火曜に発注で、翌週月曜に届いた)

基板の作成は簡単なのだけど、取り替えた後の光軸の調整が本題で、
目視では、カメラが何処を見ているかは分からないため、
カメラのデータを読み込んでは、レンズと基板位置を指先の感覚でズラして合わせ込んでいくことを、延々、行うことになった
たぶん元に戻ったけれど、走行テストで確認必要

続きを読む

ラインカメラをESP-WROOM-32で動かす


あまり早くないICを上手く使いこなすを止めて、早いCPUでサクサク動かす
今回のボードはESP-WROOM-32。
32画素の読み込みだと370us程度、露光時間を1msとすると700Hz以上でサンプリングできそう。
そこまで早いなら、標準的なライントレース制御でもいけるのではないだろうか
適当な画素の値を2値化して出力して、デジタルセンサのポートに繋ぎ、
適当な画素の値をまとめてDACで出力して、アナログセンサのポートに繋げば
そのまま置き換えもできるかもしれない。
といっても、ここからの調整は、実機にカメラと証明を取り付けて現物合わせになるので未検証。

#define CLK 16
#define SI 17
#define AO A0

#define SEN_R 18
#define SEN_MR 19
#define SEN_C 21
#define SEN_ML 22
#define SEN_L 23
#define THER_WHITE 50

#define ANA_R 25
#define ANA_L 26


unsigned char data[32];

void setup() {
  // put your setup code here, to run once:
  
  digitalWrite(SI, LOW);
  pinMode(SI, OUTPUT);
  digitalWrite(CLK, LOW);
  pinMode(CLK, OUTPUT);

  pinMode(SEN_R, OUTPUT);
  pinMode(SEN_MR, OUTPUT);
  pinMode(SEN_C, OUTPUT);
  pinMode(SEN_ML, OUTPUT);
  pinMode(SEN_L, OUTPUT);
  
  pinMode(ANA_R, OUTPUT);
  pinMode(ANA_L, OUTPUT);

  
  Serial.begin(115200);
  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(CLK, LOW);
    for (int j = 0; j < 32; j++){
      data[j]=analogRead(A0)/4;//12bit -> 10bit
      digitalWrite(CLK, HIGH);
      digitalWrite(CLK, LOW);
      digitalWrite(CLK, HIGH);
      digitalWrite(CLK, LOW);
      digitalWrite(CLK, HIGH);
      digitalWrite(CLK, LOW);
      digitalWrite(CLK, HIGH);
      digitalWrite(CLK, LOW);
    }
    
    dacWrite(ANA_R, (data[12]+ data[13]+ data[14])/12);  //data[x]は最大1024までになる
    dacWrite(ANA_L, (data[18]+ data[19]+ data[20])/12);  //DAC は8bit(最大255まで)なので、溢れないよう注意
    
    if(data[ 5]>THER_WHITE){digitalWrite(SEN_R , HIGH);}else{digitalWrite(SEN_R , LOW);}//右端センサ
    if(data[ 8]>THER_WHITE){digitalWrite(SEN_MR, HIGH);}else{digitalWrite(SEN_MR, LOW);}//右中センサ
    if(data[16]>THER_WHITE){digitalWrite(SEN_C , HIGH);}else{digitalWrite(SEN_C , LOW);}//中心センサ
    if(data[24]>THER_WHITE){digitalWrite(SEN_ML, HIGH);}else{digitalWrite(SEN_ML, LOW);}//左中センサ
    if(data[27]>THER_WHITE){digitalWrite(SEN_L , HIGH);}else{digitalWrite(SEN_L , LOW);}//左端センサ
  
    
    //Serial.println (data[15]);
    delay(5);//ココで露光時間調整
  }

}

RMCR2017夏


今回は日程の関係か参加台数は少なめだが、マスタークラスが新設されたRMCR
いつもの連中は自由にやらせといて、Advanceクラスを一新する良い変更だと思う。

さて、競技結果は、
予選を2位で通過するも
決勝Tでは、パターン剥離で走行できず。残念
常に監視していた箇所なのだけど、まさか本番で壊れるとは

築地でご飯


三日目


佐野工科さんに新コースのこけら落としにお邪魔する
公式より精度の高そうな、凄い加工で作られたコースだった。
夏の期間に走りこんで、地区大会に臨むようだ

前日作ったバッテリを使ってみるも、タイム差は無し。
電流を引かない(引けない)標準モータでは、放電特性の影響は微小のようだ
(バッテリは劣化してなければ、わりと何でも良いのではないかと思う)

二日目


鈴鹿に向けて大忙しの紀北工業さんへ
スイカウマイ

徐々にパラメータを開放させて、確認を進める
・左斜線変更の区間直後にコーナがある場合に対応できないバグを見つけて修正。
・よさげなピニオンを試してみる。あまり走行音は変わらないそう
・重いバッテリを求めて、エネループプロを組電池化をさせて頂く
 ニッケルタブのスポット溶接はなかなか怖い

半年振り


春の大会以来、久々にマシンを搬送箱から出す。
管理を忘れていたバッテリは、予備も含めて故障していた。

さすがに未調整は不味いと、淀工さんに
半年ぶりに、操作方法を思い出して、走らすと
無事完走できて、まずは一安心。

次に動きを見ていると、何か音がおかしい。
右後輪が派手にトーアウトになっていた。
春の大会の大クラッシュ時にシャフトが曲がっていたようだ。

エンコーダを固定している樹脂バネも劣化していたようで
すぐに割れてしまった。予備を準備しとかねば。

関西地区大会


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

こつこつ


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