Bonjour,
je veux réaliser un projet (PFA) qui consiste à varier la vitesse d'un ventilateur(220V) en fonction de la tempéature par l'utilisation d'un capteur (sonde NTC) et un microcontoleur Atmega16,je vais commander le triac par un MOC3021 ,
pour la synchronisation avec le secteur c'est à partir du secondaire du transformateur d'alimentation
pour ça j'utilise une commande par variation de phase, càd je dois introduire un retard et faire varier ce retard (entre 0 et 9,99999ms) entre le passage par zéro de la sinusoïde et le pulse d'allumage reçu par le MOC,
ce que je cherche que la tension au borne de la charge (Ventilo) varier avec la temperature par exp:
si la Tp 27C°=>220v, si Tep 25=>180C°....
j'ai développé un petit programme de test , mais j'ai pas trouvé les choses que je cherche, voilà le programme en C:
Code :
- void main() {
- DDRA=0xFE; //PORTA en entrée
- PORTA=0;
- DDRB=0x00; //PORTB en sortie
- PORTB=0x00;
- //PINb.B6 c'est l'entrée du signal de secteur (50HZ)
- while(1){
- if(PINA.B0==1){
- PORTA.B6=PINB.B6;// démarrage à 100% de puissance sans retard Tr=0s
- } else {
- Delay_ms(5); // retard de Tr=T/4=5ms pour une puissance de 50%
- PORTA.B6=PINB.B6;}
- }
- }
|
le probleme c'est que la carte parfois délivre une puissance 100% et parfois change cette valeur malgré que je ne change pas la condition de PINA.B0==1
et la mm chose si PINA.B0==0 je crois que le problème c'est au niveau de la largeur de l'impulsion je sais pas comment je peux faire pour fixé cette valeur
donc comment je peux trouvé ces valeurs d'une façon très clairs comment je dois réglé l'impulsion (fréquence) pour assurer ces valeurs??
merci d'avance