TZKさんによると和歌山のSDRは今週末も岡山国際で練習との事。
この間送った定格600VのRCDIはYPVSが動作しなかったって事で、先ほどまたRCDIを桑原エンジニアリングさんのところに送付。
うーん、、、そんな事あるんかいな、、、、。
あそこはPICマイコン→IC→電線というとってもシンプルな構造なので、あんまりトチる事って考えられないんだけど、なんかポカしたんやろか。
圧縮が高いエンジンなので昇圧回路は今後も使いたいとの事でしたが、定格外のCDIで利用するのはちょっと気にはなります。
この間送った定格600VのRCDIはYPVSが動作しなかったって事で、先ほどまたRCDIを桑原エンジニアリングさんのところに送付。
うーん、、、そんな事あるんかいな、、、、。
あそこはPICマイコン→IC→電線というとってもシンプルな構造なので、あんまりトチる事って考えられないんだけど、なんかポカしたんやろか。
圧縮が高いエンジンなので昇圧回路は今後も使いたいとの事でしたが、定格外のCDIで利用するのはちょっと気にはなります。
シマユウ選手のSDRが参戦する「モトレヴォwithモトルネ Rd.3」は8月14日。お盆前。
東西ガチンコSDRのレースが見れる貴重なイベント。
関西、中部の方々は二台のSDR、応援よろしくお願いします。
自分的には2次試験直前なのでやばいです。
1次試験通れば、、、の話ですが。
閑話休題。
ソレノイドコントローラの話。
勉強せな、勉強せな、、、と思いながら、
あぁなんで俺はオシロを握ってるんや!
あぁなんで俺はガンマのソレノイドをカポカポ言わせてるんや!
そしてソレノイドにホースを突っ込んで吸ったりしてるオッサン。
アホですな。
動画みてもなんかをイジイジしているだけでサッパリ意味わかりません。
これはパルスエミュレータから疑似入力をして、回転数を変更、3千、6千、9千回転での動きを確認してます。
カチカチ音がしているのがソレノイドの動作音です。
動画では10Hz位で動かしてみたけれども、やっぱりちょっぴり荒いので、あとから20Hzに変更。
それでも吸ってみるとソコソコ脈動を感じますね〜。
ガンマのエアソレノイドへの配管は必要以上に長いんだけど、このソレノイドのオンオフの脈動を吸収する為に長いんだと思います。
しばらく放置して熱を持つかどうか等を確認。
まぁ、、、熱もって壊れたところで、このソレノイド自体はミクニがスズキやヤマハの原チャリにもつけてた位出回っているので入手性が高く、たいして問題はありません。
今回のテスト用ソフト、動作は簡単。
ソレノイドのDuty比を簡単に調整できる様に3つのダイヤルがついており、それぞれ3000rpm、6000rpm、9000rpmでのDuty比を設定する。
それ以外の回転数は3つの値から補完する。
例えばこんな感じ。
FETは手持ちの2N7000使ってますけど、本来ならば5Vで0.5A程度駆動できる奴があればそれで良いかなと思います。
パルス入力回路は、CDIのマイナス電圧を使って感知するヤマハの電タコと同じ方式で組んでみてます。
東西ガチンコSDRのレースが見れる貴重なイベント。
関西、中部の方々は二台のSDR、応援よろしくお願いします。
自分的には2次試験直前なのでやばいです。
1次試験通れば、、、の話ですが。
閑話休題。
ソレノイドコントローラの話。
勉強せな、勉強せな、、、と思いながら、
あぁなんで俺はオシロを握ってるんや!
あぁなんで俺はガンマのソレノイドをカポカポ言わせてるんや!
そしてソレノイドにホースを突っ込んで吸ったりしてるオッサン。
アホですな。
動画みてもなんかをイジイジしているだけでサッパリ意味わかりません。
これはパルスエミュレータから疑似入力をして、回転数を変更、3千、6千、9千回転での動きを確認してます。
カチカチ音がしているのがソレノイドの動作音です。
動画では10Hz位で動かしてみたけれども、やっぱりちょっぴり荒いので、あとから20Hzに変更。
それでも吸ってみるとソコソコ脈動を感じますね〜。
ガンマのエアソレノイドへの配管は必要以上に長いんだけど、このソレノイドのオンオフの脈動を吸収する為に長いんだと思います。
しばらく放置して熱を持つかどうか等を確認。
まぁ、、、熱もって壊れたところで、このソレノイド自体はミクニがスズキやヤマハの原チャリにもつけてた位出回っているので入手性が高く、たいして問題はありません。
今回のテスト用ソフト、動作は簡単。
ソレノイドのDuty比を簡単に調整できる様に3つのダイヤルがついており、それぞれ3000rpm、6000rpm、9000rpmでのDuty比を設定する。
それ以外の回転数は3つの値から補完する。
例えばこんな感じ。
FETは手持ちの2N7000使ってますけど、本来ならば5Vで0.5A程度駆動できる奴があればそれで良いかなと思います。
- そんなに速度が必要な訳でもありませんので、AD変換のAcquisiton時間は100usとってます。
可変抵抗を10K程度にすれば10usもあればお釣りがくると思ってます。 - float変数使ってるのでメモリが逼迫してます。
PIC12F1822のまま何か機能を追加するにはちょいと考える必要があります。 - Dutyサイクルはメインループの__delay_ms(5)で変更できます。
あんまり早くするとソレノイドの動作が追いつかない可能性があります。 - メモリ不足につき、優雅さがあんまりありません(笑)
パルス入力回路は、CDIのマイナス電圧を使って感知するヤマハの電タコと同じ方式で組んでみてます。
まぁなんでもいいんですけど、誰かにポイって渡すにはこれが都合がよく。
一般的なCDI方式ならAC/DC関係なく問題無く動作しますし。
それよりも大きな問題が。
今日のTM32SSのセッティングですが、
となってます。
MJをちょっと絞って結局以前の一番良かったセッティングにほぼ収束してしまいました。
違いはO-9とO-8の筒の違い位。
これで1速パワーバンドの引っかかりも殆どなくなり、(ちょいと濃い目で)調子よく走ることが出来ています。
ま、つまりソレノイド不要な状態になっちゃってるんですね・・・。
恐らくMAJが0.9と大きめなので、これを0.6に戻して、中間域をソレノイド制御すると、とても幸せになれそうだとは思うのですが・・・。
パトラッシュ僕はもう疲れたよ
テストもあるし・・・。
ソースコードはこちら。
何時ものBSDライセンス、つまりご自由にドゾーというやつです。
こんな子供の夏休みの様なものでライセンスとかアレなんですが、自由に改変、配布を保証する為の著作者としての権利を行使しないといけないのでライセンスが必要なんです。メンドクサー。
[コードを表示する]一般的なCDI方式ならAC/DC関係なく問題無く動作しますし。
それよりも大きな問題が。
今日のTM32SSのセッティングですが、
MJ:260 → 250
MAJ:0.9
PJ:27.5
PAJ:1.1
NJ:O-8
JN:6GH8-55-3
PWJ1:100
PWJ2:0.6
MASJ:全閉じ
PASJ:全閉じ
となってます。
MJをちょっと絞って結局以前の一番良かったセッティングにほぼ収束してしまいました。
違いはO-9とO-8の筒の違い位。
これで1速パワーバンドの引っかかりも殆どなくなり、(ちょいと濃い目で)調子よく走ることが出来ています。
ま、つまりソレノイド不要な状態になっちゃってるんですね・・・。
恐らくMAJが0.9と大きめなので、これを0.6に戻して、中間域をソレノイド制御すると、とても幸せになれそうだとは思うのですが・・・。
パトラッシュ僕はもう疲れたよ
テストもあるし・・・。
何時ものBSDライセンス、つまりご自由にドゾーというやつです。
こんな子供の夏休みの様なものでライセンスとかアレなんですが、自由に改変、配布を保証する為の著作者としての権利を行使しないといけないのでライセンスが必要なんです。メンドクサー。
/* ------------------------------------------------------------------ PIC12F1822 Pinout +--------+ Vdd |1 8| GND Captre>- RA5 |2 7| RA0 <- AN0 RPM3 Solenoid <- RA4 |3 6| RA1 <- AN1 RPM6 MCLR -> RA3 |4 5| RA2 <- AN2 RPM9 +--------+ -------------------------------------------------------------------*/ #include// include standard header file // set Config bits #pragma config FOSC=INTOSC // Oscillator Selection bits #pragma config PLLEN=OFF // PLL Enable bit #pragma config WDTE=OFF // Watch dog timer enable bit #pragma config MCLRE=OFF // MCLEAR enable bit #pragma config CLKOUTEN=OFF // Clock Out Enable bit #pragma config IESO=OFF // Internal External Switchover bit #pragma config FCMEN=OFF // Fail-Safe Clock Monitor Enable bit #pragma config CP=OFF // Code Protection bit #pragma config CPD=OFF // Data Code Protection bit #pragma config BOREN=ON // Brown-out Reset Enable bits #pragma config WRT=OFF // Flash Memory Self-Write Protection bits #pragma config STVREN=ON // Stack Overflow/Underflow Reset Enable bit #pragma config BORV=LO // Brown-out Reset Voltage Selection bit #pragma config LVP=OFF // Low-Voltage Programming Enable bit // Definitions #define _XTAL_FREQ 8000000 // this is used by the __delay_ms(xx) and __delay_us(xx) functions #define OUTSOL LATA4 #define INPULSE RA5 unsigned int gRPM; /* ------------------------------------------------------------------ PIC Interrupt -------------------------------------------------------------------*/ void interrupt Interrupt() { // Interrupt from Input capture if(CCP1IF) { unsigned int ccpr1; // Reset Timer1 TMR1H=0; TMR1L=0; // RPM ccpr1 = ((CCPR1H * 0x100)|CCPR1L) + 1; gRPM = (unsigned int)(600000UL/ccpr1); CCP1IF = 0; } // Timer1: Timeout means engine stop if(TMR1IF) { gRPM = 0; TMR1IF = 0; } } /* ------------------------------------------------------------------ Analog converter -------------------------------------------------------------------*/ unsigned int adconv100(unsigned int ch) { unsigned int temp; ADCON0bits.CHS = ch; __delay_us(100); // Acquisiton delay GO_nDONE = 1 ; // Start conversion while(GO_nDONE) ; // Is conversion done? temp = ADRESH ; // Store value by 10bits temp = ( temp << 8 ) | ADRESL ; // 0-1023 temp /= 10; if(temp > 100) temp = 100; return 100 - temp ; } /* ------------------------------------------------------------------ main -------------------------------------------------------------------*/ void main ( ) { OPTION_REG = 0b00000000; // WPUA = 0b00000000; // diable week pull-up pins // set up oscillator control register OSCCON= 0b01110000; // 8Mhz // Set up I/O pins // PORT A Assignments APFCON= 0b00000001; // CCP1 function is on RA5 TRISA= 0b00101111; // Set I/O mode PORTA= 0b00000000; // Reset port ANSELA= 0b00000111; // Disable analog input ADCON1= 0b10010000; // Right justify, FOSC, Vdd and Vss Vref ADCON0= 0b00000001; // Select channel to AN0 __delay_us(100); // Acquisiton delay // Timer1 Clock Source Select bits T1CONbits.TMR1CS=0; // 00 = Timer1 clock source is instruction clock (FOSC/4) T1CONbits.T1CKPS=0x01; // Timer1 Input Clock Prescale Select bits 1:2 Prescale value T1CONbits.T1OSCEN=0; // Dedicated Timer1 oscillator circuit disabled T1CONbits.nT1SYNC=1; // 1 = Do not synchronize external clock input T1CONbits.TMR1ON=0; // Timer1 On bit // Set up Capture input CCP1CON= 0b00000100; // Capture mode: every falling edge // Reset CCP1/Timer interrupt flag CCP1IF=0; TMR1IF=0; // Enable Interrupt PEIE=1; // Enable peripheral interrupt GIE=1; // enable global interrupt CCP1IE=1; // enable the CCP1 interrupt TMR1IE=1; // enable Timer1 intterupt on TMR1ON=1; // Timer1 On float duty30, duty60, duty90; unsigned int duty; int ii; // Indication for(ii=0; ii<5; ii++) { OUTSOL = 1; __delay_ms(200); OUTSOL = 0; __delay_ms(200); } while(1) { duty30 = adconv100(0); duty60 = adconv100(1); duty90 = adconv100(2); // Leveling duty value if (20 < gRPM && gRPM < 30) {duty= (unsigned int)(0 +((duty30- 0.0)/10)*(gRPM-20));} else if(30 == gRPM) {duty= (unsigned int)duty30;} else if(30 < gRPM && gRPM < 60) {duty= (unsigned int)(duty30+((duty60-duty30)/30)*(gRPM-30));} else if(60 == gRPM) {duty= (unsigned int)duty60;} else if(60 < gRPM && gRPM < 90) {duty= (unsigned int)(duty60+((duty90-duty60)/30)*(gRPM-60));} else if(90 == gRPM) {duty= (unsigned int)duty90;} else if(90 < gRPM && gRPM < 100) {duty= (unsigned int)(duty90+(( 0.0-duty90)/10)*(gRPM-90));} else duty = 0; // Duty max = 90% if( duty > 90 ) duty = 90; // Solenoid duty control OUTSOL = 0; for(ii=0; ii<10; ii++) { if(ii < duty/10) { OUTSOL = 1; } else { OUTSOL = 0; } __delay_ms(5); } } } /*--------------------------------------------------------------------------------- Copyright 2012-2016 Rilassaru All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Rilassaru nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
コメント
コメント一覧 (2)
ご迷惑をお掛けして申し訳ございません。
点火タイミングやYPVSの作動設定を試すところまでたどりつけていないのが悔しいです。
今シーズンは日曜に走行枠があれば ほぼ全て練習に出掛けています。
こんなに頻繁に練習するのは何年ぶりだろう。
テストする機会が欲しいなぁチラッチラッという素振りに 津村選手が応えてくれているのか、本人のやる気が高まっているのか。
練習の機会は多くてもあと2回、結果を残せるよう頑張ります。
そもそも当初の目的は点火時期を変える事では無くて、ちゃんと走るようにすることでした。
今現在その目的が達成されているので、RCDIのセッティングなどはプラスアルファの話です。
・・・などと、思っています。
いや〜往年のタイムが戻ってまずは一安心ではないですか!