Japan Car

Version complète : [Info ED] VSS Comment fonctionne-t-il ?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Voila, je voulais savoir de quel type de capteur s'agissait le "Vehicul Speed Sensor" Sur nos bonne vielles ED...

Donc pour résumer, on a derriere le tachymètre le cable (normal) qui fait tourner un tambour (qu'on ne voit malheureusement pas sur la photo) qui lui même actionne l'aiguille.

Le tambour est entouré du plastique ici présent en photo, qui prend l'info, et la réstitue à l'ECU...

[Image: tachymetremodzj3.jpg]
Shot with Canon PowerShot A700 at 2007-07-11

Je pense donc que c'est un capteur inductif, cependant, a-t-il besoin, de ce même tambour, ou peut il etre accouplé à un autre qui n'en est pas équipé ?

Je pose la question parceque je ne peux pas tester à l'heure actuelle, si vous avez des infos avant, merci de m'en faire part, ça m'intéresse Wink
Bonne question ... D'ailleurs il me fait bien chier ce truc. Et il fait chier tous les gens (comme toi) qui n'ont pas le cluster ED !!!
En plus il est tout pourri ce capteur, quand on log au PLX on se rend compte que parfois (souvent) il devient fou, genre une vitesse de 1000 km/h d'un coup, puis il se recale et recommence. Confused
Tiens dis voir, tu ne saurais pas quelle tete a la sinusoidale du signal de 0 à 230km/h ?

J'ai vu qu'il y avait des kit (universel) qui se montaient autour du cable de tachymètre ([Image: 6646325.jpg] Pour le montage, voir plus bas, seulement, il faudrait que les deux signaux, aient sensiblement la même fréquence, période etc etc Confused

Tu penses pouvoir relever ça ? Smile

Fil (au tdb ou ecu): Jaune/rouge (je ne te l'apprend pas Mr Green)
et masse...

J'avais vu qu'il faisaient ça chez GT2i et Oreca, mais pour le montage de Tachymètres "Aftermarket" c'est un signal "universel" ???

PS: ça engage le fait que tu dois prendre 230 Oops!

L'avantage de ce systeme, c'est qu'il concerve le cable d'origine, et donc, l'info au TdB... Ce pendant, comme dit plus haut, faut voir la compatibilité éléctrique avec l'ECU Confused

[Image: speed-sensor.jpg]

EDIT: plus d'info sur les capteur ==> ici (premiere page google pour "Tachymètre Inductif" Neutral :top:
Oui, j'avais vu ce système chez GT2i/Oreca effectivement.
Y a pas besoin de prendre 230, la fréquence en relation "linéaire" avec la vitesse. Donc un échantillon sur 0 - 100km/h est largement suffisant. De toute façon t'as même pas a bouger de chez toi pour l'avoir cette info... Si tu lisait 'bien' le workshop, tu l'aurais déjà ! :]
Là je suis pas chez moi, je la post dès que je remets la main dessus. Wink
bah je sais que le voltage doit varier entre O et 5v, c'est marqué dans le Workshop ^^

Mais apres tu dis que la fréquence varie de fonction linéaire Big Grin

C'est ce que je voulais savoir, maintenant, reste à savoir comment se comportent les autre capteur dit "universel" vu qu'il il y en des "à effet Hall" donc alimenté Wink.

Donc, faut juste voir si les autre proposent une tension alternative de type "sinusoid" et de 5 volt.

Ca peut le faire Yes (merci de ton éclairage Wink )
l'amplitude ne varie pas, c'est la fréquence, comme pour le compte tour d'ailleurs.

Tu as vitesse = fréquence x k (à déterminer)

Si je me souviens bien, rpm = 30*f par ex.

Par contre par trop d'idée sur l'élec (c'est pas trop ma compétence). Et l'objectif c'est quoi ?
civic_16Turbal,

RB26DETTvs2JZ a écrit :bah je sais que le voltage doit varier entre O et 5v, c'est marqué dans le Workshop ^^

Mais apres tu dis que la fréquence varie de fonction linéaire Big Grin

C'est ce que je voulais savoir,

On se répète ^^

L'objectif (pour ma part) est que l'ecu soit informé de la vitesse, tout en gardant un tachymetre un peu particulier Smile
Au pire un peu d'electronique pour adapter le signal. Si t'as les caractéristique des signaux qui arrive du capteur et de ce que doit recevoir l'ecu, un adaptateur ne devrait pas être trop dur à faire.
RB26DETTvs2JZ, la formule "rotation / vitesse" EST explicitement indiquée dans le workshop. Au niveau du chapitre sur le cluster justement ...
Quoi le coup de "4 continuité par révolution" ??

Bear'sBeard a écrit :Au pire un peu d'electronique pour adapter le signal. Si t'as les caractéristique des signaux qui arrive du capteur et de ce que doit recevoir l'ecu, un adaptateur ne devrait pas être trop dur à faire.

Oui j'ai pensé à ça aussi
Page 571 du Workshop :
SPEEDOMETER
indicates 60 mph at 1026rpm of the speedometer cable


Et çà c'est la formule que j'avais trouvé pour faire la conversion "données brute" loggée par mon PLX vers la vitesse en kilomètre par heure :
Code :
speed_in_kmh = data_plx * 0.023523391747;
// speed = (hz / 4 {speed pulser}) x (60 {mph} / 1026 {cable rpm}) x 1.609 {to km/h}

En gros la donnée brute, tu la multiplie par '0.023523391747' en t'as les km/h.

Je sais, je suis trop gentil. :]
Comme je suis hyper gentil ce soir, je vous file toutes les conversions "données brutes" vers données réelles, importantes, du D16A9.

Ce code (language C) sert à ceux qui veulent exploiter directement les données brutes loggées (PLX par exemple) pour en faire des statistiques ou des moyennes. Désolé, j'ai pas ecrit la fonction de moyenne encore. C'est hyper utile à ceux qui voudrait monter un MegaSquirt aussi ...

La fonction importante est
Code :
interpolate()
elle fait les conversions.

La fonction
Code :
populate()
lit le fichier log du PLX et monte en mémoire (dans les vecteurs) l'ensemble des données.

Copyright Icedfluid !!! Wink

Code :
#include <windows.h>


#include <algorithm>
#include <string>
#include <vector>
using namespace std;

vector<double> vS1,vS2;
vector<double> vA1,vA2,vA3,vA4;
vector<double> vRPM,vKMH;
vector<double> vTPS,vMAP,vAFR,vX;


int populate( char * qfileName )
{
    FILE*    f;    
    long    lines;
    char    buffer[256];
    int        c, x, r;

    vS1.clear();
    vS2.clear();
    vA1.clear();
    vA2.clear();
    vA3.clear();
    vA4.clear();

    r = 0;
    if( (f=fopen(qfileName, "rb")) != NULL )
    {
        memset(buffer, 0, sizeof(buffer));

        if( fgets(buffer, 255, f) != NULL )
        {
            lines = atol(buffer);

            for(int l=0; l<lines; l++)
            {                    

                for(int i=0; i<6; i++)
                {

                    x = 0;
                    for(;;)
                    {                

                        if( (c = fgetc(f)) != 0x09 )
                        {
                            buffer[x] = (char) c;
                        }

                        else
                        {
                            buffer[x] = 0;
                            break;
                        }

                        x++;
                    }
                        

                    switch(i)
                    {
                        case 0 : vS1.push_back(atof(buffer)); break;
                        case 1 : vS2.push_back(atof(buffer)); break;
                        case 2 : vA1.push_back(atof(buffer)); break;
                        case 3 : vA2.push_back(atof(buffer)); break;
                        case 4 : vA3.push_back(atof(buffer)); break;
                        case 5 : vA4.push_back(atof(buffer)); break;
                    }
                }
            }

            r = 1;
        }

        fclose(f);
    }

    return r;
}


void interpolate()
{

    double v0,v1,t;    

    vRPM.clear();
    vKMH.clear();
    vTPS.clear();
    vMAP.clear();
    vAFR.clear();        

    if( vS1.size() >= 2 )
    {

        v0 = vS2[0] * (double)0.023523391747; // speed = (hz / 4 {speed pulser}) x (60 {mph} / 1026 {cable rpm}) x 1.609 {to km/h}

        for(int i=0; i<vS1.size(); i++)
        {         

            v1 = vS2[i] * (double)0.023523391747;

            if( abs(v0 - v1) < 10 )
            {

                // KMH
                vKMH.push_back(v1);

                // RPM
                t = vS1[i] * (double)30; // 30 = (/2) * 60
                vRPM.push_back(t);

                // TPS (%)
                t = (vA1[i] - (double)0.3) * (double)25;
                vTPS.push_back(t);

                // MAP
                t = (vA2[i] * (double)5.496) - (double)15.66;
                vMAP.push_back(t);

                // AFR
                t = (vA3[i] * (double)2) + (double)10;
                vAFR.push_back(t);
            }

            v0 = v1;
        }
    }

}


int main()
{

    if( populate("01.plg") )
    {

        interpolate();

        /*
        for(int i=0; i<12; i++)
        {

            printf("\n RPM:%ld / KMH:%ld / TPS:%ld / MAP:%.2f / AFR:%.2f",(int)vRPM[i],  (int)vKMH[i], (int)vTPS[i], vMAP[i], vAFR[i]);

        }

        */
    }

    return 0;
}
Ca t'aide RBi ? LoL ?
icedfluid, Grave !

J'ai trouvé ma solution... isoler le VSS (donc concerver l'info d'origine ver l'ECU) Tout en pouvant transmettre l'info "mécanique" à un autre tachymetre Smile

En tout cas merci Yes si ça ne me sert pas! Ca pourra certainement servir à un autre malade de ton genre :top: