« 2017年4月 | トップページ | 2017年7月 »

2017年6月

2017/06/18

ロボットカー備忘録

 補強情報は下記フォーマットでWifi配信されます。

・BINEX(マルチGNSSのOBSデータ)
・RTCM(GPS/GLOのOBSとNAVデータ)

| | コメント (0) | トラックバック (0)

2017/06/12

NMEAとは

 GPSからOpenLogに送られるデータはNMEAと呼ばれるナビゲーション機器との通信に利用するプロトコルらしい。

 今回はこんなデータが取れている。

【GPSのデータ】
$GPGGA,015708.000,3538.4942,N,13951.3947,E,2,9,0.88,29.3,M,39.4,M,0000,0000*6B
$GPGLL,3538.4942,N,13951.3947,E,015708.000,A,D*57
$GPGSA,A,3,23,09,16,21,26,31,08,27,29,,,,1.18,0.88,0.78*09
$GPGSV,3,1,12,26,63,021,37,16,57,318,35,31,50,129,47,27,49,222,33*73
$GPGSV,3,2,12,42,48,171,28,21,35,090,38,23,28,293,30,08,14,223,28*7F
$GPGSV,3,3,12,09,10,319,23,14,10,179,23,29,08,042,35,193,,,19*72
$GPRMC,015708.000,A,3538.4942,N,13951.3947,E,4.51,50.85,110617,,,D*58
$GPVTG,50.85,T,,M,4.51,N,8.37,K,D*0C
$GPZDA,015708.000,11,06,2017,,*5F


 フォーマットについてはググるといくつか出てきますのでそちらを見ていただくとして・・・

 緯度と経度がわかるのはこのあたり

 "3538.4942,N,13951.3947,E"

 たぶんこのフォーマットの下一桁が表せるのはおおまかに20cmくらいの距離ということで良いのだろうか。
 データが表す正確な距離感を確認する必要がある。

 "$GPVTG"を見ると、8.37km/hで移動していたことがわかる。
  自転車でたらたら移動してたらそれくらいの速度なのですね。
  あと方向とかは、地磁気センサーと比較とかしたら面白いのかな。

 という感じで、結構色々な情報が含まれております。

| | コメント (0) | トラックバック (0)

2017/06/11

GPSとOpenLogで簡単ロガー

 某ロボットコンテストに参加したいと思っているので、GPSについて勉強しております。
 まあ、やってみないとわからないこともあるので、GPSモジュールを買ってデータを取ってみることにしました。


Img_3738

 秋月で購入したGPS受信キットとOpenLogをシリアル接続し、モバイルバッテリーから5Vを共有する超シンプルGPSロガー。
 プログラム不要で半田付けも不要のお手軽工作です。

 
 取れたデータをGoogle Earthに表示したのがこちら


D008


 周りに高い建物が少ないせいか、綺麗に取れています。


 ただ誤差が無いわけではないようなのですが、Google Earthがずれている可能性もあるので判断はつきません。 行と帰りでずれている部分などは完全に誤差ですけど。


D009


 コンテストのためには誤差1~2m位の正確な測位をしたいところです。

| | コメント (0) | トラックバック (0)

2017/06/07

【Arduino】OpenLogを使ってみる

 OpenLogはオープンソースの小型ロガー。
 シリアル通信でログを送信しておけば、勝手にSDカードに書き込んでくれる優れもの。


Img_3713


 
 
 手前の赤い部品がOpenLog。
 少し古いやつで2GBまでのSDカードしか使えないけど十分。

 
 

D006
 


 ファイルはこんな感じで出力されます。

 通信速度は、CONFIGファイルを書き換えればよいらしい。

 ひとまず、GPSのログを取ることにしてみよう。


 



| | コメント (0) | トラックバック (0)

2017/06/04

【Arduino】ブラシレスモーター回転数を計測

 ブラシレスモーターのホールセンサーを問題なくArduinoで読めたので、ブラシレスモータの回転数を計測してみます。

 今回の実験装置はこちら。

Img_3707

 ヨコモのBL-RS2のコンボセットを使って、モーターの回転数を計測してみます。

 プログラムはこちら。

◇MSTimer_rpm_test01

 

#include  <MsTimer2.h>

volatile long cnt = 0; //カウント用の変数
int val = 0;  //電圧値格納用
boolean state  = false; //状態判定用

void flash() {    //タイマー割り込みで回転数を表示させる
  cnt = cnt*100;        // cnt*100 = rpm
  Serial.print(cnt);
  Serial.println("rpm");  
  cnt = 0; 
}

void setup() {
  pinMode(14, INPUT);           // ピンを入力に設定
  digitalWrite(14, HIGH);       // プルアップ抵抗を有効に

  MsTimer2::set(600, flash); // 600msごとに出力
  MsTimer2::start();

  Serial.begin(9600) ;
}

void loop() {
  val = analogRead(0);  //ホールICの電圧を読む

  if (val > 512 && state == false){
    state = true;
    cnt++;
  }
  if (val < 256 && state == true) {
    state = false;
  }
}

   

◇結果

D004

   


 モーターの回転数は17800rpmくらい。  このモーターのKV値が2700なので、リフェだとおおよそ妥当な値。


 ということで、ブラシレスモーターの回転数は簡単に計測できることがわかりました。

| | コメント (0) | トラックバック (0)

2017/06/03

【Arduino】ブラシレスモーターのホールICを読む

 Arduinoを使い始めました。  と言っても使ったことが無いので使ってみようという程度のスタートです。

 ひとまずセンサーを繋いでみようと思ったのですが手持ちに良いセンサーが無いのでブラシレスモーターのホールICを読んでみます。

参考にしたサイトは以下。 (ありがとうございます!)

▼RC zigzag Laboratory
ラジコン用ブラシレスモーターの調査

GND、VCCと各センサーをAnalogピンの0~2番につなげます。

Img_3705

 

◇Hall_effect_test01


int val[3]; //ピンの出力を格納する配列を宣言
void setup() {
  pinMode(14, INPUT);           // ピンを入力に設定
  digitalWrite(14, HIGH);       // プルアップ抵抗を有効に
  pinMode(15, INPUT);           // ピンを入力に設定
  digitalWrite(15, HIGH);       // プルアップ抵抗を有効に
  pinMode(16, INPUT);           // ピンを入力に設定
  digitalWrite(16, HIGH);       // プルアップ抵抗を有効に

  Serial.begin(9600) ;
}

void loop() {
  for (int i=0;i<=2;i++){
  val[i] = analogRead(i); //アナログピンから値を読み込む
  Serial.print(val[i]); //シリアルに出力
  Serial.print("\t");
  }
  Serial.println();

  delay(10) ; // 10ms待つ
}

 

◇結果

D003

0~5Vを0~1023の数字に変換しているらしく、3つのホールICの状態がわかります。

ひとまず今日はここまで。

| | コメント (0) | トラックバック (0)

« 2017年4月 | トップページ | 2017年7月 »