28-12-2024, 11:34 PM
Bonjour André
Tout d'abord un grand merci pour votre formidable travail. J'ai plusieurs routeurs avec des commandes SSR et ils fonctionnent parfaitement.
J'ai voulu réaliser une commande avec gradateur, et là j'ai eu un problème: le gradateur fonctionnait en tout ou rien.
A 0% la charge était éteinte, sinon elle était à 100%.
Il faut dire que j'ai réalisé le circuit de zero cross en me basant sur cet article:
https://www.researchgate.net/figure/Zero..._323004890
En analysant la commande, je pense que la commande du triac est maintenue trop longtemps. Si le signal ZC arrive un peu trop tard, le triac est ré-enclenché dès le début de la période suivante.
J'ai donc fait une petite modification de la commande pour générer seulement un pulse de 100µs plutôt qu'un niveau 1 maintenu jusqu'au ZC suivant en remplaçant
if (PulseComptage[0] > Retard[0] && Retard[0] < 98 && ITmode > 0)
par
if (PulseComptage[0] == (Retard[0]+1) && Retard[0] < 98 && ITmode > 0)
Avec cette modification, mon gradateur fonctionne parfaitement.
Voilà. Peut-être une solution si d'autres personnes rencontrent le même problème que moi.
PS: pour le triac, j'ai utilisé un double thyristor 132A/1400V de récup. Avec ça, j'ai un peu de marge
Reste plus qu'à mettre tout ça en boite
Encore merci pour le partage
Tout d'abord un grand merci pour votre formidable travail. J'ai plusieurs routeurs avec des commandes SSR et ils fonctionnent parfaitement.
J'ai voulu réaliser une commande avec gradateur, et là j'ai eu un problème: le gradateur fonctionnait en tout ou rien.
A 0% la charge était éteinte, sinon elle était à 100%.
Il faut dire que j'ai réalisé le circuit de zero cross en me basant sur cet article:
https://www.researchgate.net/figure/Zero..._323004890
En analysant la commande, je pense que la commande du triac est maintenue trop longtemps. Si le signal ZC arrive un peu trop tard, le triac est ré-enclenché dès le début de la période suivante.
J'ai donc fait une petite modification de la commande pour générer seulement un pulse de 100µs plutôt qu'un niveau 1 maintenu jusqu'au ZC suivant en remplaçant
if (PulseComptage[0] > Retard[0] && Retard[0] < 98 && ITmode > 0)
par
if (PulseComptage[0] == (Retard[0]+1) && Retard[0] < 98 && ITmode > 0)
Code :
// Interruption Timer interne toutes les 100 micro secondes
void IRAM_ATTR onTimer() { //Interruption every 100 micro second
if (Actif[0] == 1) { // Découpe Sinus
PulseComptage[0] = PulseComptage[0] + 1;
if (PulseComptage[0] == (Retard[0]+1) && Retard[0] < 98 && ITmode > 0) { //100 steps in 10 ms
digitalWrite(pulseTriac, HIGH); //Activate Triac for 100µs only
} else {
digitalWrite(pulseTriac, LOW); //Stop Triac
}
}
}
Avec cette modification, mon gradateur fonctionne parfaitement.
Voilà. Peut-être une solution si d'autres personnes rencontrent le même problème que moi.
PS: pour le triac, j'ai utilisé un double thyristor 132A/1400V de récup. Avec ça, j'ai un peu de marge
Reste plus qu'à mettre tout ça en boite
Encore merci pour le partage