Pages: [1] 2   Go Down
Author Topic: Compte tour moto  (Read 2271 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je suis nouveau sur le forum. je "pratique" l'arduino depuis quelques mois déjà et jai un projet en tête ; comment à l'aide d'un arduino je pourrai réaliser un compte tour ?
Je pourrai utiliser un convertisseur fréquence/tension, ou bien utiliser la partie logicielle de l'arduino. cependant, je me demande ou pourrais-je capter mon signal sachant que l'on a à faire à de la HT...

Merci smiley-wink
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

HT = Haute Tension ? Si oui pourquoi ce qualificatif ?
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui Haute tension ; la tension appliquée à une bougie peut atteindre 30000Volts

Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai trouvé ça : http://comptetours.free.fr/mostro/mecanique.php?mecaId=4
Un AOP ou un transi pour l'amplification et ça devrait marcher smiley-wink
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux avoir le signal à partir de la bougie, un fil enroulé autour de l'antiparasite ou quelque chose comme ça, j'ai du le lire une fois
EDIT : Le lien de B@tto confirme bien ce que je pensais. ^^
« Last Edit: January 22, 2013, 03:56:16 pm by Kouaaks » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Avant la haute tension de ta bougie l'impulsion vient de ou? car Ta batterie est bien en 12V?
Quel est l'élément (mécanique ou non) qui donne l'ordre à ta bougie d'allumer?

Ps: je ne m'y connais pas en mécanique... mais je crois que sur une voiture, ca doit etre la variation de fréquence d'une impulsion qui donne les donnée necessaire à au rpm et à la vitesse.
Je sais que quans j'ai mis un pont court sur une honda S2000 il a fallut se munir d'une yellow box (taper honda S2000 yellow box dans google) trouver la notice de cablage pour voir ou sur quoi est repris le signal d'impulsion.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Apparement le coup du fil enroulé sur l'antiparasitage est courant, même sur les versions commerciales.

Sur les voitures c'est différents (en tout cas sur la mienne c'est ainsi et comme c'est une peugeot j'imagine que c'est la norme) : il y a un compte tour sur l'arbre moteur.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour le lien smiley

La moto que je voudrait équiper de ce montage est une assez vieille moto : Yamaha DTMX de 1977 pour ceux qui s'y connaitraient un peu.
L'alumage est dit à rupteur, le principe rapidement :
 -Un stator constitué d'une bobine fournissant un courant alternatif ~200V grâce au rotor aimanté tournant autour de celui-ci,
 -Une pièce mécanique -le rupteur- déclenche une forte impulsion de courant,
 -celle-ci est amplifiée par une bobine HT reliée à la bougie d'allumage qui produit une étincelle ..

Une fois que j'aurai échantilloné le signal, chaque impulsion électrique correspondra à un tour du moteur (moteur 2tps pour les conaisseurs toujours .. ). Comment à l'aide de l'Arduino puis-je mesurer cette fréquence ?

Merci
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Comme dans le lien : un fil enroulé sur la cable qui va à l'antiparasite. Le courant dans ce cable va en generer un le fil enroulé (apparement aux alentours de 1V). Derriere une petite amplification (transistor ou AOP) pour avoir des beaux 0V quand y'a rien et 5V quand y'a allumage.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui ce n'est pas tellement l'échantillonage que me pose problème mais ensuite comment mesurer la fréquence à l'aide de l'arduino ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bah tu comptes le nombre d'impulsions pendant une seconde par exemple, tu divises par le nombre d'allumage par tour de ton moteur (2 je crois ?) et tu multiplies par 60 vu que dans une minute il y a 60 secondes smiley
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

et avec quelle commande je peut compter ce nombre d'impulsions ?!
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3567
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Deux moyens : dans ta loop tu fais quelque chose comme :

Code:

If (digitalRead(Signal,HIGH){ //detection d'un courant dans le cable
while(digitalRead(Signal,HIGH)); // on attend la fin de l'impulsion
NombreImpulsions++;
}


Après tu rajoutes une interruptions temporelle, pour que toutes les secondes on puisse calculer le nombre de tour par minute :

Code:

if(millis()>(Depart+1000)){
Depart=millis();
CompteTour=NombreImpulsions*30 // NombreImpulsions/2*60
}


Pour la détection des impulsions tu peux et c'est même la meilleure façon de faire, utiliser les interruptions : http://arduino.cc/fr/Main/AttachInterrupt
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ai-je bien compris le principe de la commande attachinterrupt ;

Code:
int NbreImpulsion=0; // Comptabiliseur nombre d'impulsions
int rpm; // valeur du régime moteur en tours par minute
int Tactu=500; // Le compte-tour s'actualise toute les 0.5s
int T1;



void setup () {
  attachInterrupt (0, fctn, RISING);
  delay (1000); // On attend que l'arduino échantillone les 10 premières valeurs
  T1= millis (); // "heure" de la carte à l'instant T1
}

void loop () {
  if ((millis ()- T1)>= Tactu) { // S'il s'est écoulé tactu depuis T1 alors fait la moyenne et on affiche ...
    rpm = (NbreImpulsion/Tactu)*60000; // La valeur du régime moteur en tours/minute
     T1 = millis (); // On réactualise T1
     NbreImpulsion =0 ; // De même pour NbreImpulsion
     
     // On affiche le régime moteur ...
     
  }
}
 
 
void fctn () {
  NbreImpulsion++;
}
 

c'est une ébauche de programme ... Donnera-t-il le résultat attendu ?
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 136
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Attention, les tensions d'allumage sont oscillatoires même au primaire de la bobine.
Ce qui implique un risque de compter beaucoup plus d'impulsions que de tr/mn.
La fermeture des vis platinées doit aussi engendrer des rebonds.
Il y a des tensions élevées à haute fréquence au primaire comme au secondaire.
Donc veiller à l'isolation des circuits!
Les compte tours 'électroniques' des années 60 utilisaient un transformateur bobiné contre un fil de bougie.
(Il est plus efficace de bobiner contre que autour, comme dans un vrai transformateur)
Il faut ensuite amplifier, filtrer et équarrir le signal (mieux il sera filtré moins il sera carré).
Il y a peut-être une autre solution : utiliser un capteur à effet Hall à proximité du volant magnétique : détecteur de proximité industriel ou capteur de roue ou d'allumage d'origine automobile.
Les effets de rebond seraient éliminés et pas de risque de surtension.
Une gestion par interruption à l'avantage de ne mobiliser les ressources de l'Arduino que pendant une faible partie du temps.
A 6000 tr/mn, on a une impulsion toutes les 10ms
Il peut alors consacrer son temps libre à autre chose : calculer la consommation et l'automie par exemple ;-)
Pour s'éviter des problèmes de rebonds et déclenchements intempestifs, on peut envisager un petit circuit d'interface avec une bascule type D (74HCx74 par ex) :
- le µC met la bascule à 0 ou à 1 par l'entrée R ou S
- l'impulsion en provenance du capteur provoque le basculement
(les impulsions suivantes n'ont aucun effet)
- le basculement provoque une interruption sur le front montant ou descendant
- on traite l'interruption
- on attend un délai suffisant pour ne plus avoir de rebond (qq ms)
-on repositionne la bascule et on va faire autre chose en attendant l'interruption suivante.
(nb : dans un 74HCx74, il ya deux bascules donc ou peut gérer un autre capteur)




Logged

Pages: [1] 2   Go Up
Jump to: