Quelle est la manière rapide et élégante de générer du PWM sans microcontrôleur pour contrôler un servomoteur? Avec potentiomètre ou autres moyens de contrôler le rapport cyclique avec période fixe.
- désolé pour le désordre, je veux contrôler un servo de passe-temps.
Réponses:
Je recommande le (GASP!) 555 Timer en mode "astable" . Vous trouverez tout ce dont vous avez besoin dans le lien, mais je les ai copiés ici juste pour vous!
Le mode astable vous donne une fréquence PWM variable et permet également un rapport cyclique réglable (équations de temps fort et de temps bas dans la liaison).
Le circuit:
Remarque: j'ajouterais un capuchon électrolytique entre Vcc (fil positif) et GND (fil négatif) pour réduire l'effet des creux de la tension d'alimentation.
La fréquence PWM:
Une défense pour ma réponse par rapport aux autres dans ce post. La plupart des autres réponses nécessitent une forme d'onde intermédiaire pour générer un signal PWM variable, comme la méthode d'onde triangulaire / comparateur commune. Je ne vois pas beaucoup d'intérêt à construire un générateur d'ondes triangulaires (un circuit important en soi) juste comme une étape intermédiaire pour résoudre votre problème.
Le 555 est une excellente puce analogique et fait exactement ce dont vous avez besoin. Je souhaite que les gens ne les détestent pas autant.
la source
La manière Ye Olde Phashenced de faire du PWM avec un rapport cyclique contrôlé analogique est de comparer le signal de contrôle analogique à une onde triangulaire. Vous créez un générateur d'ondes triangulaires qui fonctionne à la fréquence PWM souhaitée. Celui-ci est envoyé à l'entrée négative d'un comparateur et le signal de commande analogique à l'entrée positive. Le résultat est soit complètement haut, soit complètement bas, mais le rapport cyclique est linéairement proportionnel au signal de commande. Les premiers amplis audio de classe D fonctionnaient sur ce principe, par exemple.
Dans de nombreux cas, le PWM n'avait pas besoin d'être super linéaire, donc l'onde triangulaire n'a pas besoin d'avoir des bords parfaitement droits. Leur permettre d'être un peu exponentiels peut simplifier le circuit.
Ajoutée:
Mark Rages a souligné que lorsque vous dites "servomoteur", vous pourriez faire référence aux petits moteurs de loisir à position contrôlée utilisés sur les modèles réduits d'avions et similaires. Ma réponse s'applique au contrôle d'un moteur en supposant que vous ayez une tension analogique proportionnelle à la force avec laquelle vous voulez conduire le moteur. Elle ne s'applique pas à ces "servos hobby". Celles-ci ne sont pas contrôlées par PWM dans le sens courant de ce terme, mais par la largeur des impulsions qui doivent généralement être de 1 à 2 ms répétées toutes les 20 à 50 ms environ. Si cette question concerne vraiment les servos de loisir, elle devrait être corrigée pour que cela soit clair.
la source
Vague triangulaire. Comparateur. Seuil de contrôle. C'est la façon fondamentale de le faire.
Cependant, si vous souhaitez contrôler un servo de loisir, ce n'est pas la meilleure façon. Le rapport cyclique varie entre 5% et 10% (1 à 2 ms de largeur d'impulsion dans une période de 20 ms), ce qui est court, et vous voudrez probablement le contrôler avec une certaine précision. Sur un 5VPP triangle, vous devez faire varier le seuil du comparateur entre 4,5 V et 4,75 V. Toute déviation et vous ne pourrez pas contrôler le servo sur toute sa gamme. Cela nécessite des composants de précision. De plus, le générateur d'ondes triangulaires a besoin de 2 opamps, et puis il y a le comparateur .. Il y a une meilleure façon.
Générez d'abord une onde carrée de 50 Hz. Le moyen le plus simple:
Pour le 74HC1G14 a 250kΩ une résistance et un condensateur de 100 nF vous donneront une période de 20 ms.
Alimentez l'onde carrée dans un MMV (Monostable MultiVibrator). Vous pouvez le faire avec un LM555 ou utiliser un périphérique logique comme le 74HC123A . Si vous utilisez ce dernier, le temps d'impulsion est défini parREXT et CEXT :
Time inμ s, R en kΩ et C dans nF.
Pour obtenir une largeur d'impulsion variant entre 1 ms et 2 ms, vous utilisez C = 100 nF et R = 10 kΩ en série avec un 10kΩ potmètre.
J'aurais pu le faire avec deux LM555, mais j'aurais besoin de plus de composants externes.
edit (sur les microcontrôleurs)
Je suis d'accord avec Olin (voir commentaires) qu'exclure un microcontrôleur est à courte vue (Olin a dit "idiot"). Il fut un temps où le développement d'un microcontrôleur était compliqué, mais aujourd'hui ce n'est plus vrai. Vous pouvez également avoir une interface de programmation pour quelques euros. La solution serait alors si simple qu'aucune solution sans contrôleur ne peut rivaliser avec elle: vous prenez un ATTiny5 (Olin prend un PIC10F220) dans un SOT23-6. Connectez un condensateur de découplage aux connexions d'alimentation et le potmètre à l'entrée ADC. C'est ça! 3 (trois) composants. La conversion de la lecture ADC en sortie de largeur d'impulsion est si facile que c'est presque ridicule, même pour un programmeur débutant.
Une fois que vous aurez commencé à les utiliser, vous constaterez que les microcontrôleurs offrent souvent une solution plus simple et plus flexible qu'avec d'autres circuits intégrés ou composants discrets.
une note
de votre autre question , je vois que vous faites des microcontrôleurs d'utilisation. Pourquoi voulez-vous les éviter ici?
la source
Le moyen le plus simple de générer un signal PWM consiste à introduire une onde en dents de scie ou une onde triangulaire dans une entrée d'un comparateur analogique et une tension de commande dans l'autre. Si l'on ne peut pas obtenir une onde triangulaire pure, on peut raisonnablement l'approcher en passant une onde carrée à travers un filtre RC de telle sorte que la sortie du filtre oscille entre environ 1 / 4VDD et 3 / 4VDD, puis en ajustant la tension de commande dans le comparateur afin que la tension de commande qui devrait produire un rapport cyclique de 0,01% soit convertie en la tension la plus basse de l'onde carrée filtrée, et la tension de commande qui devrait produire un cycle d'utilisation de 99,99% sera convertie en la tension la plus élevée du filtré onde carrée. Cela donnera une largeur d'impulsion qui n'est pas tout à fait proportionnellement linéaire à l'amplitude, mais qui est suffisamment proche pour de nombreuses applications.
la source
Je recommande d'utiliser un CI de contrôle d'alimentation basse tension (BiCMOS) comme l'UCC3803 . La fréquence de fonctionnement peut être facilement réglée avec un simple R et C, et le contrôle du rapport cyclique se fait facilement avec un potentiomètre. Il fonctionnera sur un rail 5V.
L'UCC3803 est compatible avec les broches de la série UCx84x de contrôleurs PWM. Si vous voulez faire du PWM facile, vous pouvez utiliser le schéma ci-dessus, en omettant R1, le 2N2222 et le pot de réglage ISENSE 5k (attachez simplement la broche 3 à la terre). Vous pouvez probablement également omettre les deux résistances de 4,7 k en série avec le potentiomètre de réglage de l'amplificateur d'erreur et passer directement à Vref et Gnd, ou utiliser un diviseur de tension explicite si aucun réglage n'est nécessaire. (Vous n'avez pas précisé si vous devez modifier facilement le cycle d'utilisation).
L'IC est capable de piloter environ 1A de courant. (Si votre servomoteur a une entrée PWM, c'est un point discutable.)
la source