J'ai conçu des démarreurs progressifs en utilisant les processeurs PIC16C74A / F77. Le passage à zéro peut être délicat si vous devez également travailler dans des environnements bruyants.
Si vous n'avez pas besoin que le processeur soit isolé de la ligne, il n'y a rien de mal avec quelques résistances de haute valeur alimentant une broche CPU. J'utiliserais quelques diodes shottky pour augmenter les diodes de protection interne juste pour une question de robustesse, mais cela fonctionnera bien. Si vous avez besoin d'isolement, utilisez un optoisolateur de sortie à transistor. Faites attention à la vitesse de commutation de l'opto et minimisez le courant du collecteur du transistor pour maximiser la vitesse de commutation.
Cela dit, passons au bruit. Si vous contrôlez autre chose que le chauffage résistif, vous aurez du bruit à affronter, ce qui signifie qu'il est très probable que vous n'ayez pas de bruit de passage à zéro. Ne faites pas l'erreur de débutant en alimentant l'entrée de passage par zéro à une broche d'interruption; cela transformera votre logiciel en une masse fumante de méchanceté lorsque le processeur essaie de faire face à des interruptions de gazillion. (Je parle d'expérience.) Lancer un filtre passe-bas RC ou plus avancé sur la ligne ne fera qu'introduire un déphasage. Si vous pouvez travailler avec ça, tant mieux. Sinon (j'ai dû gérer des systèmes 50/60 et 400 Hz), vous devez essayer d'autres moyens.
Sur ma propre conception, je m'en suis occupé dans le logiciel en sondant la ligne et en faisant essentiellement une routine de vote qui ignorait les transitoires. Le déphasage était dans les limites de ce que je pouvais gérer, il était rapide et il ne s'arrêtait pas même dans un bruit intense. (Testé dans une installation où ils ont retiré les bouchons de filtre d'un four à induction, je n'ai jamais vu une ligne aussi bruyante auparavant!) Si je devais la repenser, je pense que je pourrais essayer une solution externe impliquant un one-shot qui serait " verrouiller "la croix zéro, puis le microcontrôleur l'acquitterait avant que la prochaine interruption puisse être réglée.
Cela dit, je pense que trouver de manière fiable le vrai passage à zéro dans n'importe quelle situation pratique était l'un des éléments les plus délicats de la conception du démarreur progressif. La fermeture de la boucle de contrôle était secondaire, mais c'était surtout juste un réglage. Cela semble être une chose très simple à faire, mais j'ai beaucoup appris sur la différence entre la théorie et la pratique à cette époque. :-)
modifier pour décrire la routine de "vote":
Si je me souviens bien, j'avais une ligne d'E / S qui était haute lorsque la ligne était supérieure à zéro et basse lorsque la ligne était inférieure à zéro. La routine de vote a simplement sondé cette ligne et si 2 des 3 derniers échantillons étaient identiques, j'ai accepté le fait que la ligne avait franchi zéro. C'est très similaire au circuit de vote d'un UART pour détecter la marque et l'espace. L'avantage d'un circuit comme celui-ci est que votre déphasage est fixe (fréquence d'échantillonnage 2 *) et vous pouvez le régler en fonction du type de bruit que vous rencontrez. Je ne me souviens pas spontanément de la rapidité du scrutin, mais si je devais risquer une supposition, je dirais 8 kHz, car ce nombre me vient à l'esprit.