| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| fr:examples:motor:servo [2010/03/09 10:57] – sdeniaud | fr:examples:motor:servo [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| Le signal de contrôle du servomoteur est une impulsion spécifique avec un signal modulé (PWM), qui avec l’impulsion détermine la position du rotor. La période du signal est de 20 ms (50 Hz) et la largeur du pic est de 1 ms – 2 ms. 1 ms marque l’une des positions extrêmes et 2 ms marque la seconde. 1,5 ms marque la position centrale du rotor du servomoteur. | Le signal de contrôle du servomoteur est une impulsion spécifique avec un signal modulé (PWM), qui avec l’impulsion détermine la position du rotor. La période du signal est de 20 ms (50 Hz) et la largeur du pic est de 1 ms – 2 ms. 1 ms marque l’une des positions extrêmes et 2 ms marque la seconde. 1,5 ms marque la position centrale du rotor du servomoteur. |
| |
| Le servomoteur RC traditionnel est aussi connu sous le nom de servomoteur analogique. Parce que dans les dix dernières années beaucoup de servomoteurs numériques sont devenus courants. La différence entre les deux est que dans les servomoteurs analogiques, le moteur est contrôlé par le même signal PWM d’entrée de 50 Hz. Alors que dans les servomoteurs numériques, le moteur est contrôlé par un microcontrôleur avec une fréquence plus grande. Le signal d’entrée est le même pour les servomoteurs digitaux mais une fréquence de modulation du moteur plus grande permet de déterminer la position plus rapidement et avec plus de précision. | Le servomoteur RC traditionnel est aussi connu sous le nom de servomoteur analogique. Parce que dans les dix dernières années beaucoup de servomoteurs numériques sont devenus courants. La différence entre les deux est que dans les servomoteurs analogiques, le moteur est contrôlé par le même signal PWM d’entrée de 50 Hz. Alors que dans les servomoteurs numériques, le moteur est contrôlé par un micro-contrôleur avec une fréquence plus grande. Le signal d’entrée est le même pour les servomoteurs digitaux mais une fréquence de modulation du moteur plus grande permet de déterminer la position plus rapidement et avec plus de précision. |
| |
| ~~CL~~ | ~~CL~~ |
| |
| ===== Entrainement ===== | ===== Pratique ===== |
| |
| Sur la carte des modules des moteurs du //Home Lab// il y a deux plugs pour connecter le servomoteur RC. L’extrémité PWM du plugs est connectée aux barrettes PB5 et PB6 du microcontrôleur, avec les différentes fonctions en tant que sortie pour comparer les unités A et B du timer 1. Le timer 1 est capable de produire le signal PWM et permet donc de contrôler très simplement dans le programme. La seule difficulté est d’initialiser le timer. | Sur la carte des modules des moteurs du //Home Lab// il y a deux plugs pour connecter le servomoteur RC. L’extrémité PWM du plugs est connectée aux broches PB5 et PB6 du micro-contrôleur, avec les différentes fonctions en tant que sortie pour comparer les unités A et B du timer 1. Le timer 1 est capable de produire le signal PWM et permet donc de contrôler très simplement dans le programme. La seule difficulté est d’initialiser le timer. |
| |
| Le timer 1 peut être initialisé en mode de production du PWM, où la valeur maximum du timer est déterminée avec le registre ICR. //With the maximum value changed in the program and in the pace divider (taktijagur?) of the timer, the precise PWM frequency for controlling the servo motor con be determined// En comparant les registre du timer, on peut définir les longueurs des deux demi périodes les plus hautes du signal PWM. Le timer a une unité spéciale de comparaison qui surveille la valeur du compteur et s’il reste égal à la valeur du registre de comparaison alors il change la valeur de sortie des unités de sortie. Le code suivant est le programme de la librairie du //Home Lab// qui permet le contrôle du servomoteur. L’objectif est d’utiliser les paramètres déterminés par des fonctions macro pour le timer. Par exemple la période utilise la constante //F_CPU//, qui marque le rythme de l’horloge du microcontrôleur. En utilisant ces macros, il n’est pas nécessaire de calculer les paramètres du timer pour différents rythmes d’horloge et le compilateur convertit de toute façon les opérations en constantes, donc la mémoire du programme n’augmente pas et ne demande pas plus de temps. | Le timer 1 peut être initialisé en mode de production du PWM, où la valeur maximum du timer est déterminée avec le registre ICR. //With the maximum value changed in the program and in the pace divider (taktijagur?) of the timer, the precise PWM frequency for controlling the servo motor con be determined// En comparant les registre du timer, on peut définir les longueurs des deux demi périodes les plus hautes du signal PWM. Le timer a une unité spéciale de comparaison qui surveille la valeur du compteur et s’il reste égal à la valeur du registre de comparaison alors il change la valeur de sortie des unités de sortie. Le code suivant est le programme de la librairie du //Home Lab// qui permet le contrôle du servomoteur. L’objectif est d’utiliser les paramètres déterminés par des fonctions macro pour le timer. Par exemple la période utilise la constante ''F_CPU'', qui marque le rythme de l’horloge du micro-contrôleur. En utilisant ces macros, il n’est pas nécessaire de calculer les paramètres du timer pour différents rythmes d’horloge et le compilateur convertit de toute façon les opérations en constantes, donc la mémoire du programme n’augmente pas et ne demande pas plus de temps. |
| |
| |
| </code> | </code> |
| |
| Le programme en exemple utilise des fonctions décrites dans la librairie du //Home Lab//. Au début du programme le premier signal PWM du servomoteur est initialisé avec la fonction //servomotor_init//. La valeur de la position du servomoteur est récupérée par la voie numéro 3 du convertisseur analogique-numérique, à laquelle est connectée un potentiomètre de la carte des capteurs. Pour récupérer la plage nécessaire de -100 % - +100 % pour contrôler le servomoteur, la moitié de la valeur maximum (512) est soustraite à la valeur de l’ADC et le résultat est divisé par 5. Le résultat est de +/- 102, mais certaines petites inexactitudes ne comptent pas parce que le servomoteur peut avoir une relation différente entre le signal PWM et l’angle de rotation. Dans les applications, nous devons finalement déterminer la largeur de la demi-période du signal PWM en utilisant la méthode du //test-and-error//. Aussi le contrôle à distance du modèle RC a des occasions correspondantes à la configuration précise. //Also the remote controls of RC models have corresponding opportunities for precise setup// Lorsque le programme démarre la position du rotor du servomoteur se cale sur la position du potentiomètre. | Le programme en exemple utilise des fonctions décrites dans la librairie du //Home Lab//. Au début du programme le premier signal PWM du servomoteur est initialisé avec la fonction ''servomotor_init''. La valeur de la position du servomoteur est récupérée par la voie numéro 3 du convertisseur analogique-numérique, à laquelle est connectée un potentiomètre de la carte des capteurs. Pour récupérer la plage nécessaire de -100 % - +100 % pour contrôler le servomoteur, la moitié de la valeur maximum (512) est soustraite à la valeur de l’ADC et le résultat est divisé par 5. Le résultat est de +/- 102, mais certaines petites inexactitudes ne comptent pas parce que le servomoteur peut avoir une relation différente entre le signal PWM et l’angle de rotation. Dans les applications, nous devons finalement déterminer la largeur de la demi-période du signal PWM en utilisant la méthode du //test-and-error//. Aussi le contrôle à distance du modèle RC a des occasions correspondantes à la configuration précise. //Also the remote controls of RC models have corresponding opportunities for precise setup// Lorsque le programme démarre la position du rotor du servomoteur se cale sur la position du potentiomètre. |
| |
| <code c> | <code c> |