Compte tours mais pas à impulsion (enfin j'aimerais)

Bonjour à tous et merci d'avance à ceux qui pourront m'aider

Un ami ma mis sur un projet de faire un écran pour sa 4L.
Un écran (Nextion 7") ou sera afficher la tension de la batterie, température d'eau etc...
ET un compteur de vitesse et un compte tours. (actuellement fonctionnant pas un câble).

Je sais qu'il existe un moyen à l'aide d'un capteur de compter des impulsions et donc d'en calculer le nombre de tours par minute.
Problème, cela implique une pause dans le programme et donc les autres applications qui sont sur l'arduino sont elles aussi en pause...

Savez vous s'il existe un capteur qui fasse le comptage des impulsions lui même et qu'il me renvoi une tension en fonction de la vitesse ?
Ce sera plus simple pour l'arduino de lire une tension plutôt que de compter.

Merci encore
Bonne soirée

Je pense que la fonction millis() est justement faite pour pallier à ça,.. rien ne s'arrête, tous les x la valeur est saisie et ça repart/continue..

Savez vous s'il existe un capteur qui fasse le comptage des impulsions lui même et qu'il me renvoi une tension en fonction de la vitesse ?
Ce sera plus simple pour l'arduino de lire une tension plutôt que de compter.

Je comprends l'idée, mais je ne pense pas que ce soit nécessaire.

Bonjour Deadlu17

Si tu lis les impulsions du capteur en mode interruption, la mesure des tours/minute se fait de manière "quasiment" transparente vis à vis du reste du programme.

Cordialement
jpbbricole

D'accord je vais essayer :wink:
N'ayant jamais fait cela, auriez vous une aide de départ pour le code à me fournir ? =D svp

Sur internet on trouve des cours, par exemple

Bonjour Deadlu17

J'avais fait un exemple, il est un tout petit peu particulier mais il serait facilement adaptable.

Cordialement
jpbbricole

Merci pour ton exemple, je vais essayé !

j'ai juste une question sur ton code

Que signifie
tacho.pulsesComptage ++;
if (tacho.newValue)

C'est liaison avec le point, que signifie t-elle ?

Cordialement

bonjour
un convertisseur F/V assez facile à mettre en oeuvre

Le produit que tu as mis en lien permet de convertir une tension en fréquence moi je cherche l'inverse.
Par contre je ne connaissais pas ce genre de produit donc je vais voir si l'inverse existe

Merci

Mal lu ! :laughing: Il fait les 2

Autant pour moi je suis un blaireau :rofl:

Le point-virgule signifie fin d'instruction.
++ est équivalent à
tacho.pulsesComptage = tacho.pulsesComptage+1;
C'est un incrément.

tacho.newValue est mise à true chaque fois que l'interruption void tachoPulseIn() a une noiuvelle donnée disponible, en l'occurence, toutes les 250 millisecondes (unsigned long tachoTempo = 250;).

Cordialement
jpbbricole

tacho est une structure et newValue est l'un des éléments de cette structure

struct compteToursDef
{
const int hzTour = 2; // Nombre de herz/tour
int pulsesComptage; // Compteur d'impulsions
unsigned long pulsesWatchdogMillis = millis();
unsigned long pulsesWatchdogTimout = 3000; // Timout de 3 secondes
volatile long rpm; // Compteur tours minute
volatile bool newValue = false;
};
compteToursDef tacho;

on y accède en spécifiant donc le nom de la structure et le nom de l'élément lié par le point

Bonsoir fdufnews

Vu ma réponse, j'avais pas vraiment saisi le sens de la question de @Deadlu17
Merci pour la précision :clap:

Cordialement
jpbbricole

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.