ここから本文です

書庫全体表示

記事検索
検索

全3ページ

[1] [2] [3]

[ 次のページ ]

ここに詳しく書きましたが
ヤマハのが使えそうです。
http://moto-dicuration.bbs.fc2.com/?act=reply&tid=7346403

イメージ 1


ここは特殊サイズと聞きましたが、koyoのカタログには載ってました。今も作ってるんでしょうか?
これも在庫のみで廃盤になるようなら流用するのは申し訳ない気持ちもあります。


今日はヤマハコミュニケーションプラザでSDRの30周年ミーティングがあったそうですね。68台集まったそうです。(聞いた話だとYPCで単一車種の記録を持ってるとか...)
SDRって大衆車か何かでしたっけ(笑) 当時の開発者のトークショーなんかもあったようで羨ましい。
実はとある雑誌社から単ガンの雑種取材ミーティングを開かないかと話があります。昔は某オーナーサイトで結構な台数が集まったそうですが、最近はミーティングはやってないですね....
私は幹事はできないので誰か顔の広い人が主催してくれないだろうか(他力本願)
単ガンも70台くらい集まらないかなぁ(笑)

この記事に

部品流用情報の備忘録

前に紹介した知り合いのBBSに纏めておきました。

コック関係
http://moto-dicuration.bbs.fc2.com/?act=reply&tid=7346337

ミッションベアリング

http://moto-dicuration.bbs.fc2.com/?act=reply&tid=7346403

簡単に言えば、コックのパッキンや廃盤になったベアリングの代用案です。

エンジン内部のベアリングなんかはバイクメーカーとベアリングメーカーの間で細かく仕様が決められているようで、同じものでも微妙に違う可能性があります...

BBSは何でも歓迎なスタンスなので、貴重な情報をお持ちの方は頭の中だけに留めず、ぜひ書き込んでいってください....

この記事に

お久しぶりです。
無事車体の方が大丈夫なので多分明日のガンマミーティングには参加できると思います。(投稿してない間にいろんなトラブルがありました)

ソレノイドコントローラーですがまともにキャブセッティングが出ていないのでしばらくしたら取り付けてみようかと。

この記事に

いろいろあって投稿できていませんが進捗を報告します。
タコですが前回とほぼ同じ回路とスケッチで問題なく動きました。
10周期分の時間を計ることで平均化していますが、アイドリング付近では回転数の変動が激しいので値の平均は有用でした。4000rpm以上では変動は少なく1周期分で計算しても問題なかったです。
ソレノイドを動作させる回転数では問題ないので平均化しないか10回ではなく2~3回の平均で十分かもしれません。

ソレノイドの方も周波数とデューティ比が制御できるようになりました。
周波数とデューティ比を変更するにはレジスタの操作等必要ですが、このあたりの話はまだ100%理解できていないのでネットで拾ったプログラムを 丸パクリ 参考にさせてもらってます。
 

20Hz デューティ比0.1〜0.9ぐらいがちょうどいいと思いました。

できるだけ早く完成させます。

スケッチを載せておきます。回路図はスケッチから想像してください(笑)(そのうち回路図CADを使えるようにする予定なので後で追記します。)

#include <avr/io.h>
 
#define PWMPin 10
 
unsigned int frq; //周波数16Hz – 1MHz
float duty=0 ;      //デューティー比
 
void setup() {
  pinMode(PWMPin, OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
  frq=analogRead(0);
  duty=analogRead(5);
  frq=map(frq,0,1023,16,200);
  duty=duty/1023;
 
  Serial.print("duty=");
  Serial.print(duty);
  Serial.print("\t");
  Serial.print("frq=");
  Serial.print(frq);
  Serial.print("\n");
  Serial.flush();
 
 
  // モード指定
  TCCR1A = 0b00100001;
  TCCR1B = 0b00010010;
 
  // TOP値指定
  OCR1A = (unsigned int)(1000000 / frq);
 
  // Duty比指定
  OCR1B = (unsigned int)(1000000 / frq * duty);
 
  
}

この記事に

開くトラックバック(0)

パルスから回転数検出

CDIのパルス(CDI→タコメーターの波形)から回転数を検出するために、サンプルとして回路とスケッチを作ってみました。  
1 arduinoで可変抵抗から読み取った電圧を読み取り、その値を周波数とするデューティー比50%のパルスをtone関数で出力
2 このパルスをトランジスタとバッテリーを使って12Vにする。
3 フォトカプラを使ってarduinoに入力
4 回転数を計算しシリアル通信でPCに出力

回転数はパルスの1周期と10周期の時間で計算しています。これは実機で試してみてバラつきが少なければ1周期でいいかもしれません。


回路図はそのうち載せます....
イメージ 1

フォトカプラ TLP621−2
トランジスター 2SC1815

シリアルモニタの結果です。
input:実際の回転数 output:1周期での計算 mean:10周期での計算
イメージ 2


2000rpm以下の回転数だと正しい値が出ないようなので実機でテストするまでに直しておきます。
→tone関数だと31Hz(1860rpm)以下の周波数が生成できないことが原因でした。

以下プログラム

void setup(){
  Serial.begin(9600);
  pinMode(13,INPUT_PULLUP);
  pinMode(8,INPUT);
}

void loop(){
 unsigned long nowtime,beforetime1,beforetime2,beforetime3,
 beforetime4,beforetime5,beforetime6,beforetime7,beforetime8,
 beforetime9,lasttime,
 rpm1,rpm2,rpm3,rpm4,rpm5,rpm6,rpm7,rpm8,rpm9,rpm10,rpm11;
 int val,val2;
 int n=0;
 
 val2=analogRead(0);
 tone(8,val2);
 val2=val2*60;
 
 while(n==0) {
    val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1; 
    }
 }

 do{
    val=digitalRead(13);
 }while(val==1);
 
 nowtime=micros();  //パルスON
//1
n=0;
while(n==0) {
    val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime1=micros();  //パルスON
//2
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime2=micros();  //パルスON
//3
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime3=micros();  //パルスON
//4
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime4=micros();  //パルスON
//5
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime5=micros();  //パルスON
//6
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime6=micros();  //パルスON
//7
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime7=micros();  //パルスON
//8
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime8=micros();  //パルスON
//9
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 beforetime9=micros();  //パルスON
//10
n=0;
while(n==0) {
   val=digitalRead(13);
    if(val==1){    //OFFまで待つ
      n=1;
    }
 }
 
 do{
   val=digitalRead(13);
 }while(val==1);
 lasttime=micros();  //パルスON
 

 
 rpm1=60000000/(beforetime1-nowtime);
 rpm2=60000000/(beforetime2-beforetime1);
 rpm3=60000000/(beforetime3-beforetime2);
 rpm4=60000000/(beforetime4-beforetime3);
 rpm5=60000000/(beforetime5-beforetime4);
 rpm6=60000000/(beforetime6-beforetime5);
 rpm7=60000000/(beforetime7-beforetime6);
 rpm8=60000000/(beforetime8-beforetime7);
 rpm9=60000000/(beforetime9-beforetime8);
 rpm10=60000000/(lasttime-beforetime9);
 rpm11=60000000/((lasttime-nowtime)/10);
 
/*
 Serial.println(beforetime1-nowtime);
 Serial.println(beforetime2-beforetime1);
 Serial.println(beforetime3-beforetime2);
 Serial.println(beforetime4-beforetime3);
 Serial.println(beforetime5-beforetime4);
 Serial.println(beforetime6-beforetime5);
 Serial.println(beforetime7-beforetime6);
 Serial.println(beforetime8-beforetime7);
 Serial.println(beforetime9-beforetime8);
 Serial.println((lasttime-nowtime)/10);
*/
 Serial.print("input ");Serial.print(val2); Serial.print("rpm"); Serial.print("\n");
 Serial.print("output ");
 Serial.print(rpm1); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm2); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm3); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm4); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm5); Serial.print("rpm");Serial.print("\t");
 Serial.print(rpm6); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm7); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm8); Serial.print("rpm");Serial.print("\t");
 Serial.print(rpm9); Serial.print("rpm"); Serial.print("\t");
 Serial.print(rpm10); Serial.print("rpm"); Serial.print("\n");
 Serial.print("mean ");Serial.print(rpm11); Serial.print("rpm");Serial.print("\n");Serial.print("\n");
 Serial.flush();
 
delay(5000);
 
}

この記事に

全3ページ

[1] [2] [3]

[ 次のページ ]

本文はここまでですこのページの先頭へ
みんなの更新記事