sélection du codeur incrémental?

S

seyyah

Guest
J'ai un projet de contrôle moteur.Dans ce projet, j'ai besoin de mesurer la vitesse.Pour mesurer la vitesse, j'ai prévu d'utiliser un codeur incrémental 100ppr.Avec la capacité du ucontroller's elle peut compter 400 impulsions par tour. (Il compte en baisse et l'augmentation des bords d'une phase et la phase B) Cela signifie que, afin de mesurer la vitesse avec une résolution de 1 tr
/ min, je dois attendre au moins 150ms.Il s'agit d'un très long temps, je crois, pour un retour de vitesse dans une boucle de contrôle.Si on baisse la résolution, l'obtention de la vitesse prend moins de temps.Mais la résolution n'est pas assez bon pour ces cas.J'ai essayé de mettre en œuvre un algorithme intensifiés pour obtenir la vitesse.(De faible résolution à haute résolution, étape par étape), il donne parfois de bons résultats, mais parfois elle diverge de la vitesse calculée à partir de la vitesse réelle en grande partie pour très peu de temps (comme un pic).Je suis audience que 100ppr suffit pour la plupart des cas dans un lecteur commercial.Si oui, comment doit être la voie que je suivre?Ou quel type de technique ne devrait-je utiliser pour obtenir la vitesse?S'il vous plaît, aidez-moi.

 
Si 100ppr dans 400ppr configuration n'est pas encore assez, la seule solution est de remplacer 100ppr encodeur avec 1000ppr (150ms/10 = 15 ms) ou même 2500ppr (le même prix; 150ms/25 = 6ms, ce qui serait plus acceptable, je suppose) ..
Et je ne dirais pas que 100ppr encodeur est la norme commerciale, plus souvent vous pouvez trouver 1000ppr unités ..
Observe,
IanP

 
Quel est votre moteur tr
/ min du capteur et comment peut-on lire Encoder?Par les sondages sa production grâce au MCU?

 
Si votre encodeur a une qualité parfaite, et votre timer a une excellente résolution, alors qu'il suffirait de mesurer la période entre deux impulsions consécutives.Cependant, votre encodeur a sans doute le bruit et sans espacement uniforme, de sorte que vous voulez mesurer la durée d'impulsions serveral.Combien dépend de la qualité de l'encodeur.Aussi, si votre programmateur a une mauvaise résolution, il vous sera nécessaire d'augmenter encore le nombre d'impulsions à une moyenne basée sur l'erreur de quantification, ou utilisez une minuterie mieux.

 
Moteur fonctionne jusqu'à 3000rpm.Je peux choisir des encodeurs PPR mais je veux savoir ce que mon plafond est bas.(Je sais que je dois essayer, mais environ. Mon système ne nécessite pas très très élevé de réponse dynamique).Il semble donc qu'il n'y a pas autre technique.La façon la plus logique est la mesure du temps entre les bords consequtive et calculer la vitesse de cette info et si la résolution ne enoguh pas augmenter la résolution de l'encodeur.

 
Que signifie 1 roate par 20 ms et une impulsion du codeur par 200 usec (si equ révolution à 1 rotation).Tu as besoin de chronomètre pour mesurer la durée entre 2 impulsions consequititve de codeur et qui est tout à fait réalisable, soit avec la logique Qlue ou CPLD.Avec une logique de colle dont vous avez besoin compteurs et les verrous, de sorte qu'il commence à compter les impulsions d'encodeur à chaque impulsion de codeur et écrit les données à mécanisme de verrouillage au deuxième.Pour augmenter la précision, vous pouvez prendre valeur pondérée de quelques mesures consequitive.
Cela pourrait éventuellement aider à lutter contre la gigue du signal otput encodeur (s'il ya lieu).CPLD seront bien entendu mieux.

Vous avez besoin de produire près d'horloge de 20 MHz pour contrer l'entrée - qui ne pose aucun problème à la logique classique.

 
Encoder gigue pouls est un facteur clé, et elle varie probablement avec RPM.

Essayons par exemple un calcul pour déterminer le nombre minimum d'impulsions codeur à compter, et la fréquence minimale minuterie:

= Vitesse de 3000 tr
/ min.
Encoder = 100 impulsions
/ tour.
Pulse période = (60 sec / min) / (3000 tr
/ min) / (100 PPR) = 200 us / impulsion.

Pulse gigue = us 5. **** C'est juste une réponse au hasard - il faut qu'il s'agisse de recherche ****

Résolution obligatoire = 1 tr
/ min.
.

Durée minimum de mesure = (3000 tr
/ min) / (1 tr
/ min) * (5 us) / (200 us / impulsion) = 75 impulsions.

Si vous obtenez un nombre entier non, autour d'elle vers le haut.
.

Minimum d'horloge timer = (3000 tr
/ min) / (1 tr
/ min) / (75 impulsions) / (200 us / impulsion) = 200 kHz.

Dernière édition par echo47 le 04 Dec 2005 0:09; édité 1 fois au total

 
echo47, une question - est de 2,5 gigue habituelle pour codeur?

 
Non, j'ai tiré de cette valeur de gigue à partir de rien.Votre encodeur mai être beaucoup mieux ou bien pire, et il varie probablement avec RPM.

 
Oui, il ressemble à la gigue peut être pire que vous avez mentionné, donc la méthode de l'offre i pour mesurer le régime par une impulsion pourrait être sujette aux erreurs.
Comme vous l'avez dit - pire condition de mesure doit être configuré à l'usine de test pour estimer la gigue expectable maximum avant de traiter avec lui en conséquence.

 

Welcome to EDABoard.com

Sponsor

Back
Top