Bonjour à tous,
Dans le cadre de mon projet de programmateur de lave linge (http://arduino.cc/forum/index.php/topic,62096.0.html), je travaille sur la partie délicate du contrôle de la vitesse du moteur.
Sur un moteur universel, il s'agit d'utiliser un triac pour n'alimenter le moteur que pendant la fin de chaque demi-période du secteur à 50Hz.
Le principe est donc :
- détecter le passage à zéro du secteur (100 fois par seconde)
- temporiser (court si on veut augmenter la vitesse, plus long si on veut ralentir). La tempo est inférieure à la durée d'une demi-période (10ms). 0->moteur à 100%, 10ms->moteur à 0%
- activer le triac jusqu'au prochain passage à zéro.
- recommencer 100 fois par seconde.
C'est un fonctionnement assez classique et on trouve pas mal d'exemples sur le net. Mon schéma exact est attaché au message.
Mon problème est le suivant :
J'utilise un H11AA1 pour la détection du passage à zéro du secteur, relié à la pin 2 et attaché à l'interruption 0.
Quand l'interruption est levée, il faut lancer la tempo pendant laquelle le triac ne conduira pas. Cela doit être assez précis.
En théorie, on appelle la routine d'interruption 100 fois par seconde. Cela est vrai quand je n'active pas le triac. Par contre, quand celui-ci est activé juste après la tempo, on rentre beaucoup plus souvent dans l'interruption (peut-être 200 fois). Je ne sais pas exactement à quel instant. J'ai essayé de filtrer sans trop de succès. Pour l'instant le plus efficace est la capa directement entre la pin de l'arduino et le 5v mais ça n'est pas terrible. On arrive toujours à 115,120 interuptions par seconde.
J'ai du mal à comprendre la raison du problème et comment le résoudre.
Si vous avez des explications et des solutions, je suis preneur!
Merci à vous,
Eti