Je voudrais suivre la position angulaire d'un bras rotatif motorisé assez lent (entraînement direct; voir l'illustration ci-dessous) - mais j'ai besoin d'une précision angulaire inférieure à 0,05 ° et d'une résolution similaire.
Comme @gbulmer l'a noté dans les commentaires, cela équivaut à suivre l'extrémité du bras positionnellement le long de la circonférence, avec une précision de (2 × π × 10cm) / (360˚ / 0,05) = 0,08 mm.
Existe-t-il actuellement un capteur ou une méthode électronique réalisable qui puisse atteindre ce niveau de précision dans la détection rotationnelle sans dépenser une fortune?
Voici ce que j'ai essayé jusqu'à présent, du plus simple au plus complexe:
Boussole / magnétomètre numérique: j'ai commencé avec ça; mais évidemment loin de la performance que je recherche.
Encodage rotatif: Encodage basé sur un potentiomètre / basé sur un capteur à effet Hall: Impossible d'obtenir une résolution suffisante et il y a une erreur de linéarité importante.
Vision industrielle: J'ai essayé de placer un marqueur optique sur la pointe du bras (car la pointe trace l'arc le plus long) et d'utiliser la caméra (OpenCV) pour suivre la position du marqueur: ne pouvait pas résoudre si bien les très petites rotations, étant donné la durée de rotation du bras une zone de 10x10 cm.
Encodeur magnétique: j'étudie actuellement l'utilisation de AS5048, un encodeur rotatif magnétique d'AMS, positionné avec le centre du capteur à la position de l'arbre du moteur. Quelque chose comme ça:
Réponses:
Ce que vous faites est possible, mais je ne vois pas comment vous allez le faire à moindre coût.
.05 degrés (3 minutes d'arc) implique une résolution de 7200 comptes / tour, ou l'équivalent de 13 bits (8192). Pire encore, puisque vous essayez de faire une boucle de position, vous aurez besoin d'au moins un bit supplémentaire de résolution ou d'un système 14 bits. Le problème réside dans le fait que votre boucle de position ne peut pas détecter une erreur de moins d'un bit, donc si le bras commence à dériver, le capteur d'angle ne le détectera pas jusqu'à ce que la sortie soit à un bit. La boucle de position repoussera le bras dans l'autre sens et arrêtera de le conduire lorsque l'erreur retombera à zéro. Mais cela permettra au bras de basculer dans l'autre sens jusqu'à ce qu'il obtienne un compte dans la direction opposée, etc. , 99, 100, etc.
Je suggère qu'un encodeur optique est votre meilleur choix, mais un encodeur 14 bits (16 384 ppr) ne sera pas bon marché. Une autre possibilité est un résolveur ou synchro, avec un RDC ou SDC (résolveur / convertisseur numérique ou convertisseur synchro / numérique) comme deuxième possibilité, mais cela coûtera encore plus. Les synchros / résolveurs ont 2 inconvénients. Tout d'abord, ils ont été généralement remplacés par des encodeurs optiques, donc ce que vous trouverez sur le marché sont principalement des unités excédentaires. Deuxièmement, la précision n'est généralement pas adéquate. Les résolveurs de taille 23 sont généralement évalués à environ 5 à 10 minutes d'arc, vous aurez donc besoin d'une unité de haute précision et bonne chance pour en trouver un.
Inductosyns vous donnera une résolution et une précision exceptionnelles, mais coûtera encore plus qu'un encodeur optique. Essentiellement, vous avez besoin d'un RDC haute vitesse pour lire la sortie.
Votre préoccupation concernant la précision de l'encodeur optique est basée sur le papier d'un fabricant spécifique, mais c'est essentiellement une pièce effrayante. Les possibilités d'erreur sont les mêmes pour tous les fabricants, et le fabricant lié n'est pas en quelque sorte meilleur que les autres fabricants. Généralement, pour les codeurs de précision, la précision est la même que la résolution.
Bien qu'il soit possible d'obtenir des encodeurs optiques avec des sorties parallèles, vous êtes probablement mieux avec un encodeur incrémental et en roulant votre propre compteur / décompteur. Si vous suivez cette route, vous utiliserez le signal "home" pour réinitialiser le compteur de position à chaque fois que vous allumez le système.
la source
Je pense que ce que OP suggère n'est pas du tout une mauvaise idée. Ce qu'il veut utiliser est un anneau prêt à l'emploi: http://ams.com/eng/Products/Position-Sensors/Magnets/AS5000-MR10-128 , il a 128 pôles = 64 paires de pôles. La résolution est de 16 bits = 65536, max 305 tr / min.
Si vous démontez un encodeur optique haute résolution, vous découvrirez qu'il est presque impossible d'aligner le détecteur sans outils spéciaux.En effet, l'utilisation de cette nouvelle méthode rend cela très simple.
Vous auriez besoin d'une machine de tournage pour ajuster correctement l'anneau, puis placez le capteur à une distance rapprochée, aucun alignement spécial n'est requis. Le capteur lui-même est disponible en versions de kit déjà soudées sur la carte de dérivation, ce dont vous auriez besoin est un capteur de référence supplémentaire - un espace avec un photodétecteur, puis vous pouvez référencer l'encodeur dans une paire de pôles avec une combinaison de sortie d'index + capteur de référence ext.
la source
Comme c'est une question de brainstorming, et WhatRoughBeast a déjà mentionné tout ce que je considérerais, pourquoi ne pas ajouter les lecteurs harmoniques à la liste? En théorie (je n'ai pas vérifié avec des estimations empiriques ou les premiers calculs), il vous permet d'obtenir facilement un rapport de démultiplication de 20: 1 sans jeu (100: 1 est courant), ce qui ramène le nombre d'étapes requises à 720 / tr . Cela pourrait valoir la peine d'être examiné. Les entraînements harmoniques ne sont pas bon marché, mais ils sont généralement beaucoup moins chers que les capteurs haute résolution, en particulier pour ce rapport d'engrenage.
la source
Si vous avez besoin d'une résolution sur l'arbre de sortie correspondant à 13 bits, vous avez besoin de plus de bits supplémentaires, au moins 1 bit pour le contrôle en boucle fermée est le must. Le problème suivant est que les fabricants annoncent la résolution mais n'annoncent pas la précision . Vous devez constamment demander la précision. Si l'erreur est reproductible, vous pouvez améliorer la correction logicielle.
Un autre problème si vous avez besoin d'une solution extérieure robuste. Si oui, alors l'encodeur magnétique est une option. Mais l'encodeur magnétique peut avoir une erreur périodique répétable importante, que vous devez éliminer dans le processus d'étalonnage en utilisant un autre encodeur optique étendu. Mais vous avez besoin d'un gabarit de largeur encore plus précise.
L'interpolation Sin / cos (optique ou magnétique) augmente la résolution mais ajoute également une erreur aléatoire.
Il faut pouvoir fabriquer avec la précision souhaitée, une concentricité particulière. Vous devez également tenir compte de la bande passante car lorsque vous augmentez la résolution, un mouvement plus rapide peut dépasser la bande passante autorisée (par exemple, la fréquence de sortie en quadrature). Au contraire, le contrôle ultra-lent est une autre discipline où l'on peut trouver des problèmes non publiés intéressants.
Si vous avez besoin de la rotation du bras de commande (pas seulement la position de la voie), la résolution de l'entraînement direct et du couple est alors un problème. La double boucle aide au contrôle mais nécessite un moteur (codeur en cas de boîte de vitesses ou pas de comptage en cas de pas à pas) et une détection de position de l'arbre.
Le codeur incrémentiel ou absolu est également une décision fondamentale.
Le conseil général est le suivant: si vous souhaitez terminer un projet, utilisez des composants professionnels coûteux (par exemple, les codeurs optiques Renishaw ATOM). Si vous jouez pour le plaisir et que le temps n'est pas important, vous pouvez alors réinventer les problèmes (cul-de-sac), découvrir les problèmes inviolables, etc. Vérifiez si vous pouvez fabriquer des appareils avec la précision requise.
la source
Semble parfaitement adapté à un pied à coulisse numérique, normalement utilisé pour mesurer des distances précises, voir:
Comment fonctionne un pied à coulisse électronique?
Ils sont similaires aux encodeurs capacitifs (que vous avez déjà vus dans http://www.digikey.com/en/articles/techzone/2012/apr/a-designers-guide-to-encoders ).
La partie électronique d'un pied à coulisse numérique linéaire peut probablement être réutilisée, vous n'avez donc qu'à créer un quart de disque avec le motif correct.
PS: La précision vous permettrait même de travailler avec un modèle linéaire standard.
la source
Voici ma nouvelle idée, encore une autre histoire de moteur pas à pas :-)
Cliquez sur l'image animée pour voir la résolution intégrale. Ici, vous utilisez le moteur pas à pas comme règle mobile. Il y a un aimant sur le bout de la main principale. Les lignes rouges indiquent la direction attendue du flux magnétique. En supposant que le moteur pas à pas ressemble à celui sur Wikipédia. Il a 3,6 degrés d'un pas complet. Pour une portion supposée linéaire du champ, vous avez besoin de 3,6 / 0,05 = 72 combinaisons de 7 bits. Cela signifie qu'un ADC 10 bits d'un microcontrôleur ordinaire fera très bien l'affaire pour une plus grande plage non linéaire. Une fois que vous avez fait le mécanisme, analysez le modèle d'approximation et choisissez la partie la plus linéaire, avec un logiciel de mappage en ligne et choisissez les bordures de la règle pour cette configuration particulière.
Les moteurs pas à pas ne sont pas parfaits. Selon wikipedia, ils peuvent avoir jusqu'à 5% d'écart entre les dents. Pour mesurer l'erreur, vous pouvez étendre les bordures principales de la règle avec des bordures secondaires, qui doivent simplement suivre le modèle de dégradé de l'analyse précédente de sa bordure voisine.
De plus, il vaut mieux piloter le moteur pas à pas avec micropas pour éviter les accélérations +/- qui peuvent impacter les échelles de configuration, je pense qu'au moins vous devez faire un demi pas.
la source
Traitant de la mécanique, commencez par la mécanique d'abord.
En tournant le grand engrenage (R2) pour un angle, le petit engrenage (R1) tourne pour un angle R2 / R1 fois plus grand.
Par conséquent, si vous traitez avec une précision d'angle très extrême sur un rayon donné (R), vous pourriez avoir une précision d'angle n fois plus grossière sur un rayon n fois plus petit (c'est-à-dire R / n).
Dans votre cas, vous pouvez installer un gros engrenage sur l'axe du bras et y attacher un petit engrenage, puis interfacer un capteur plus gros avec le petit.
De nombreuses autres méthodes d'engrenage sont connues et utiles, à partir du wiki .
la source
Vous devriez faire un deuxième mécanisme sur le bord de la main, pour diviser les marches du centre par un mécanisme linéaire comme dans le système optique du pilote de cd-rom. De cette façon, il pourrait être plus facile et suffisant d'implémenter tout le système en boucle ouverte en utilisant également un moteur pas à pas au centre et de le piloter par micropas pour éviter des amplitudes d'accélération très élevées.
la source
Les limitations physiques dans l'espace autour du bras mobile peuvent exclure cette solution, mais vous êtes ici - une autre approche de vision industrielle bon marché. La précision peut être ajustée en changeant le grossissement de l'objectif.
la source
Je ne sais pas ce que vous considérez comme une fortune, mais vous voudrez peut-être envisager http://www.inductosyn.com/
la source
Une autre option très intéressante, si votre bras entre régulièrement dans une position initiale (de repos), est d'utiliser une souris optique (de jeu) ou, plus précisément, son système de détection.
Montez son capteur à l'extrémité de votre bras et fournissez un bon arrière-plan (grain fin, non réfléchissant) pour glisser. Lisez les données sur une interface de souris USB standard.
Vous aurez besoin d'un simple capteur pour calibrer la position initiale. Il faudrait expérimenter pour voir si cela fonctionne assez bien. Il devrait fonctionner principalement indépendamment de la poussière et est simple à entretenir.
la source
Vous pouvez peut-être envisager d'utiliser un encodeur optique linéaire à l'extrémité de votre bras pivotant et utiliser une bande de code flexible comme celle-ci , qui a jusqu'à 2000 lignes par pouce. Si vous voulez aller super bon marché, vous pouvez utiliser un encodeur linéaire comme celui-ci , mais il ne monte que jusqu'à 150 lignes par pouce, donc une résolution de 40 microns (puisqu'il s'agit d'un encodeur en quadrature). Si vous n'êtes pas sensible à une gigue dans le système d'entraînement, vous pouvez l'utiliser directement. Sinon, vous pouvez étendre le bras sous votre application et étendre le code plus loin. Vous pouvez même imprimer votre propre bande de code si vous avez une imprimante avec un DPI de 1000 ou plus.
Bonne chance!
la source