[Contrôle de la propulsion sous-marine] Comment contrôler l'ESC par PWM avec le STM32 ?
Publié par Fengyukun le
Beaucoup de chercheurs veulent utiliser un microcontrôleur pour contrôler le fonctionnement de l'hélice dans l'Internet pour trouver beaucoup d'informations, mais a trouvé que beaucoup d'entre eux ne sont pas écrites très clairement, APISQUEEN enregistré grossièrement comment résoudre.
J'espère que vous pouvez partager votre expérience dans la section des commentaires, peut aider plus de gens.
Nous avons acheté l'ESC peut être différent, mais l'idée globale de contrôle est le même, donc je crois que vous serez en mesure d'atteindre votre objectif après avoir lu cet article.
Signaux modulés en largeur d'impulsion :
(1) Contrôle de l'onde PWM (généralement les ESC utilisent 50Hz, c'est-à-dire un contrôle de l'onde PWM de 20ms) ;
(2) Mid-stop (ici, on se réfère généralement au niveau élevé du rapport cyclique) 1,5ms, en fait, entre 1,475ms et 1,525ms sont en dehors du mid-stop ;
(3) Plage de contrôle de 1 ms à 2 ms ;
(4) Avance de 1,5 ms à 2 ms, recul de 1,5 ms à 1 ms.
Il s'agit d'un modèle basé sur Arduino pour une brève référence :
Note : L'ESC doit être déverrouillé avant de pouvoir être utilisé ! L'ESC émet 3 bips lorsqu'il est mis sous tension, et 2 fois lorsqu'il est déverrouillé avec succès, soit un total de 5 fois. Si l'ESC n'est pas déverrouillé avec succès, il ne peut pas être utilisé pour le contrôle. Par conséquent, en se référant au code ci-dessus, on peut conclure que la façon de déverrouiller l'ESC est de le régler sur le signal neutre après l'initialisation, et d'attendre la réception du signal (deux bips) pour commencer la régulation de la vitesse.
Méthode de contrôle et de débogage
Nous utilisons la carte de développement STM32F7, en utilisant la bibliothèque HAL pour la programmation et le débogage, qui est en fait une onde PWM de sortie de minuterie. Mais il y a beaucoup de choses auxquelles il faut faire attention, beaucoup de détails qui ne sont pas clairs et qui retardent vraiment le temps et l'énergie, ce côté de l'expérience de débogage pour dire quelques mots.
Tout d'abord, lors de la configuration de l'onde PWM dans le timer, faites attention à ne pas l'initialiser comme votre signal de déverrouillage, donnez-lui une valeur aléatoire, ou bien ne le configurez pas. Parce que l'ESC ne se déverrouille qu'après l'initialisation du timer et du PWM, dans le cas de celui que j'ai, le signal d'arrêt neutre de 1.5ms est son signal de déverrouillage, alors vous ne pouvez pas configurer le PWM pour qu'il démarre à 1.5ms, sinon l'ESC ne sonnera qu'une fois après trois bips de mise sous tension, et alors vos palettes ne tourneront toujours pas.
Deuxièmement, soyez prudent avec l'utilisation des délais. Au début, je n'ai pas utilisé de délai, le résultat est que l'ESC émet seulement un bip et ne répond pas, puis lorsque j'observe l'onde PWM avec un oscilloscope, je constate que mon PWM initialisé clignote directement, ce qui doit donner le temps à l'ESC de recevoir le signal de déverrouillage. Cependant, il faut aussi faire attention à ce temps, au début j'utilisais la configuration delay_us (), le problème ne peut pas être résolu, puis j'ai changé pour delay_ms (1000), c'est à dire configurer le temps de 1s, il y a toujours un problème, puis ajuster le temps à nouveau, et finalement j'ai entendu deux bips, et ensuite le moteur a commencé à tourner. Il est donc très important de maîtriser le temps de réception de ce signal de déverrouillage.
Il faut aussi apprendre à utiliser un oscilloscope pour vérifier s'il y a un problème avec le signal que vous avez configuré pendant l'utilisation. Voici une onde PWM avec un rapport cyclique de 1,5 ms, une période de 20 ms et une amplitude de 3,3 V que j'ai initialisée au début.
En résumé, l'ensemble du processus nécessite une attention particulière :
(1) Les ESC contrôlent généralement la fréquence de 50Hz, et la plage de contrôle est approximativement comprise entre 1ms et 2ms, en fonction de la situation, bien sûr.
(2) L'ESC émet 3 bips lorsqu'il est mis sous tension et 2 bips lorsqu'il est déverrouillé avec succès. Cependant, si l'ESC n'émet qu'un seul bip, cela signifie probablement qu'il a reçu le signal que vous avez configuré mais qu'il n'a pas réussi à déverrouiller l'appareil, et vous devez donc revérifier s'il n'y a pas d'erreur dans votre code de déverrouillage. Si l'ESC n'émet aucun son, cela signifie qu'il n'a pas reçu le signal, vérifiez à nouveau le câblage et le code.
(3) Faites attention à l'utilisation de la fonction de temporisation, donnez à l'ESC un certain temps pour recevoir le signal de déverrouillage, chaque ESC est différent, il s'agit d'un auto-ajustement.
(4) Faites attention à la mise à la terre, la ligne de signal de l'ESC vers le port de sortie du signal de la carte de contrôle, et ensuite la ligne de signal à la terre vers le GND de la carte de contrôle.
(5) Apprenez à utiliser un oscilloscope pour vérifier les signaux configurés.
(6) Ne connectez pas le mauvais fil !
J'espère que vous pouvez partager votre expérience dans la section des commentaires, peut aider plus de gens.
Nous avons acheté l'ESC peut être différent, mais l'idée globale de contrôle est le même, donc je crois que vous serez en mesure d'atteindre votre objectif après avoir lu cet article.
Signaux modulés en largeur d'impulsion :
(1) Contrôle de l'onde PWM (généralement les ESC utilisent 50Hz, c'est-à-dire un contrôle de l'onde PWM de 20ms) ;
(2) Mid-stop (ici, on se réfère généralement au niveau élevé du rapport cyclique) 1,5ms, en fait, entre 1,475ms et 1,525ms sont en dehors du mid-stop ;
(3) Plage de contrôle de 1 ms à 2 ms ;
(4) Avance de 1,5 ms à 2 ms, recul de 1,5 ms à 1 ms.
Il s'agit d'un modèle basé sur Arduino pour une brève référence :
Note : L'ESC doit être déverrouillé avant de pouvoir être utilisé ! L'ESC émet 3 bips lorsqu'il est mis sous tension, et 2 fois lorsqu'il est déverrouillé avec succès, soit un total de 5 fois. Si l'ESC n'est pas déverrouillé avec succès, il ne peut pas être utilisé pour le contrôle. Par conséquent, en se référant au code ci-dessus, on peut conclure que la façon de déverrouiller l'ESC est de le régler sur le signal neutre après l'initialisation, et d'attendre la réception du signal (deux bips) pour commencer la régulation de la vitesse.
Méthode de contrôle et de débogage
Nous utilisons la carte de développement STM32F7, en utilisant la bibliothèque HAL pour la programmation et le débogage, qui est en fait une onde PWM de sortie de minuterie. Mais il y a beaucoup de choses auxquelles il faut faire attention, beaucoup de détails qui ne sont pas clairs et qui retardent vraiment le temps et l'énergie, ce côté de l'expérience de débogage pour dire quelques mots.
Tout d'abord, lors de la configuration de l'onde PWM dans le timer, faites attention à ne pas l'initialiser comme votre signal de déverrouillage, donnez-lui une valeur aléatoire, ou bien ne le configurez pas. Parce que l'ESC ne se déverrouille qu'après l'initialisation du timer et du PWM, dans le cas de celui que j'ai, le signal d'arrêt neutre de 1.5ms est son signal de déverrouillage, alors vous ne pouvez pas configurer le PWM pour qu'il démarre à 1.5ms, sinon l'ESC ne sonnera qu'une fois après trois bips de mise sous tension, et alors vos palettes ne tourneront toujours pas.
Deuxièmement, soyez prudent avec l'utilisation des délais. Au début, je n'ai pas utilisé de délai, le résultat est que l'ESC émet seulement un bip et ne répond pas, puis lorsque j'observe l'onde PWM avec un oscilloscope, je constate que mon PWM initialisé clignote directement, ce qui doit donner le temps à l'ESC de recevoir le signal de déverrouillage. Cependant, il faut aussi faire attention à ce temps, au début j'utilisais la configuration delay_us (), le problème ne peut pas être résolu, puis j'ai changé pour delay_ms (1000), c'est à dire configurer le temps de 1s, il y a toujours un problème, puis ajuster le temps à nouveau, et finalement j'ai entendu deux bips, et ensuite le moteur a commencé à tourner. Il est donc très important de maîtriser le temps de réception de ce signal de déverrouillage.
Il faut aussi apprendre à utiliser un oscilloscope pour vérifier s'il y a un problème avec le signal que vous avez configuré pendant l'utilisation. Voici une onde PWM avec un rapport cyclique de 1,5 ms, une période de 20 ms et une amplitude de 3,3 V que j'ai initialisée au début.
En résumé, l'ensemble du processus nécessite une attention particulière :
(1) Les ESC contrôlent généralement la fréquence de 50Hz, et la plage de contrôle est approximativement comprise entre 1ms et 2ms, en fonction de la situation, bien sûr.
(2) L'ESC émet 3 bips lorsqu'il est mis sous tension et 2 bips lorsqu'il est déverrouillé avec succès. Cependant, si l'ESC n'émet qu'un seul bip, cela signifie probablement qu'il a reçu le signal que vous avez configuré mais qu'il n'a pas réussi à déverrouiller l'appareil, et vous devez donc revérifier s'il n'y a pas d'erreur dans votre code de déverrouillage. Si l'ESC n'émet aucun son, cela signifie qu'il n'a pas reçu le signal, vérifiez à nouveau le câblage et le code.
(3) Faites attention à l'utilisation de la fonction de temporisation, donnez à l'ESC un certain temps pour recevoir le signal de déverrouillage, chaque ESC est différent, il s'agit d'un auto-ajustement.
(4) Faites attention à la mise à la terre, la ligne de signal de l'ESC vers le port de sortie du signal de la carte de contrôle, et ensuite la ligne de signal à la terre vers le GND de la carte de contrôle.
(5) Apprenez à utiliser un oscilloscope pour vérifier les signaux configurés.
(6) Ne connectez pas le mauvais fil !
Partager ce message
- 0 commentaires
- Balises: ESC
← Message plus ancien Message plus récent →