Lorsque nous avons ajouté quelques fonctionnalités au Yocto-PWM-Tx il y a trois mois, un client nous a rappelé une autre suggestion d'amélioration qu'il avait faite pour le produit, concernant la synchronisation entre les deux canaux de sortie. Alors, chose promise, chose due: on l'a fait aussi. Voyons comment ça marche...
Transition de phase
Jusqu'à présent, les deux canaux du Yocto-PWM-Tx travaillaient de manière entièrement autonome: chacun sa fréquence, chacun son rapport cyclique, mais aucune synchronisation possible.
Il existe quelques applications pour lesquelles le fait de pouvoir générer deux signaux avec un déphasage spécifié peut avoir une utilité. Cela peut servir par exemple pour générer un signal en quadrature, ou pour ouvrir deux transistors FET en alternance. Le décalage de phase peut même parfois servir d'alternative au rapport cyclique pour la transmission de grandeurs analogiques par PWM.
Nous avons donc rajouté à la classe YPwmOutput une méthode
qui permet de modifier progressivement le déphasage entre la sortie concernée et l'autre sortie de sorte à atteindre la valeur cible spécifiée. Le déphasage est spécifié en millisecondes, avec une résolution de la microseconde. Si la correction de phase doit être appliquée en un seul cycle, on spécifie une durée de 0. Sinon, on peut effectuer une transition linéaire dans une durée spécifiée en millisecondes. Voyez ce que cela donne:
phaseMove(0.5, 1500) sur un signal à 400Hz, et retour
Il y a quand même quelques limites à cette fonctionalité:
- Elle n'est disponible que pour les fréquences inférieures à 31 KHz. On pourrait peut-être trouver une solution pour les fréquences supérieures, mais ça complique passablement le problème et à ce stade personne ne nous l'a demandé...
- Les transitions de phase étant basées sur une très légère adaptation temporaire de la période, elles sont sujettes aux contraintes de résolution du générateur de fréquence. La résolution de 62.5ns de la période implique qu'il n'est pas troujours possible de respecter exactement la durée de transition souhaitée, surtout dans les hautes fréquences. Au pire, la transition sera un peu plus rapide que souhaité, mais le déphasage demandé sera néanmoins réalisé.
- Les deux canaux doivent naturellement utiliser exactement la même fréquence (ou éventuellement un multiple), sinon le déphasage ne sera évidemment pas maintenu.
Et puisque nous avons la caméra et l'oscilloscope en place, profitons-en pour illustrer aussi les autres nouveautés présentées dans le précédent article sur le Yocto-PWM-Tx, qui n'étaient alors illustrées que par des dessins...
Transition de rapport cyclique
dutyCycleMove(10, 1500) sur un signal à 400Hz, et retour
Transition de fréquence
frequencyMove(1000, 1500) sur un signal à 400Hz, et retour
Trains d'impulsions
triggerPulsesByFrequency(1000, 3)