bonjour a tous
tu reste en calibre DC , tu te mets en tours stabilisés et tu lis la tension pour 1000 2000 6000 smiley-mr-green
je testerez le signal une fois la voiture remonter car actuellement se n'est pas possible
sinon pour en revenir a l’acquisition de mon signal je vais changer de méthode car sa ne marchera pas j'ai fait d’avantage de recherche est j'ai trouver sa:
const int sensorPin = 2;;
const int sensorInterrupt = 0;
const int timeoutValue = 1;
int rpm = 0;
volatile unsigned long lastPulseTime;
volatile unsigned long interval = 0;
volatile int timeoutCounter;
bool blink = false;
void setup()
{
pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH); // enable internal pullup (if Hall sensor needs it)
attachInterrupt(sensorInterrupt, sensorIsr, FALLING);
Serial.begin(9600);
lastPulseTime = micros();
timeoutCounter = 0;
}
void sensorIsr()
{
unsigned long now = micros();
interval = now - lastPulseTime;
lastPulseTime = now;
timeoutCounter = timeoutValue;
}
void loop()
{
Serial.print(" RPM ");
if (timeoutCounter != 0)
{
--timeoutCounter;
float rpm = 60e6/(float)interval;
Serial.print(rpm, 1);
}
Serial.println();
delay(500);
}
je me suis aussi renseigner sur la partie hardware j'ai vue qu'il était conseiller de rajouter une résistance 22K en entrer pin 2
sa a nettement améliorer mon signal j'ai des erreur de 3 rpm se qui est tout a fait acceptable, de temps en temps j'ai des pic X4 sa multiplie par 4 le résultat que j'ai actuellement
exemple je règle a 4000rpm pendant 30sec je vais avoir 4000 RPM plus ou moins et une fois 16 000rpm puis sa repasse a 4000rpm je suppose que sa vien de mon AOP ou du ogiciel ou de ma carte son
bref j'ai modifier le code j'ai remplacer
float rpm = 60e6/(float)interval;
par
float rpm = 20e6/(float)interval;
j'obtiens la bonne lecture pour une impulsion d'un 6 cylindre
ensuite j'ai intégrer le code dans mon ancien code que j'avais fait pour mon UNO j'ai très vite était embêter avec la ligne delay500 (mise en pause de mon code)
se probleme n'est pas vraiment grave pour les personne qui souhaite faire un simple "compte tour" sur afficheur LCD mais pas pour moi car j'ai le code pour la gestion de ma pompe a eau ventilo,boite de vitesse ect...
je les donc supprimer mais sa me mais une valeur de 40 000 rpm a 50 000 rpm bref sa fait n'importe quoi
donc je pense revenir sur mais première idée
je pense utilisez un TC9401CPD
datasheet: TC9401CPD datasheet(12/20 Pages) MICROCHIP | Voltage-to-Frequency/Frequency-to-Voltage Converters
pour convertir ma fréquence 0hertz 600hertz (0rpm 12 000 rpm) a un signal analog 0-5V sa utilisera moins les ressource de l'arduino
merci.