Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1676 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Triac et µC

 

Sujet(s) à lire :
    - Visual C++
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Triac et µC

n°2135486
dinhoavr
Posté le 10-04-2012 à 11:10:33  profilanswer
 

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 :
  1. void main() {
  2. DDRA=0xFE; //PORTA en entrée
  3. PORTA=0;
  4. DDRB=0x00; //PORTB en sortie
  5. PORTB=0x00;
  6. //PINb.B6 c'est l'entrée du signal de secteur (50HZ)
  7. while(1){
  8. if(PINA.B0==1){
  9. PORTA.B6=PINB.B6;// démarrage à 100% de puissance sans retard Tr=0s
  10. } else {
  11. Delay_ms(5); // retard de Tr=T/4=5ms pour une puissance de 50%  
  12. PORTA.B6=PINB.B6;}
  13. }
  14. }


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

mood
Publicité
Posté le 10-04-2012 à 11:10:33  profilanswer
 

n°2135785
bjone
Insert booze to continue
Posté le 11-04-2012 à 19:51:14  profilanswer
 

Je comprends pas ton truc, tes DDRA etc, ça devrait être des pointeurs non vu que ça doit être des registres projetés en mémoire ?
 
Ou alors c'est des macros ?
 
Après si les tests choucroutent, il faut peut-être des "volatile" pour que le compilo sache que les valeurs sont modifiés de manière externe.
 
Après je comprends pas ta boucle de régulation, à mon avis ça doit être plus compliqué que ça.
 
Comment tu rends le triac bloqué et comment est-ce que tu le rends passant ?
 
Normalement sa commande reste dans le dernier état connu, donc si Delay_ms() attends le temps donné par rapport au début de l'alternance, si le triac a été rendu passant avec PORTA.B6=PINB.B6 à l'itération du while d'avant, il l'est toujours et tu attends dans le vent.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Triac et µC

 

Sujets relatifs
[C# / LINQ to XML] Générer des balises contenant des ':'Retour fonction C
Silverlight C# problème Wrappanel[C#] REST, méthode POST, valeur du stream, doit il être encodé ?
optimisation SSE pour du code C (auto ou inline) [résolu][C] Petit bogue sur un buffer
Determiner date avec mktimeProgramme pour ouvrir une fenêtre miniature en fonction de la T°C
erreur d'allocation mémoire dans une application console C++ 
Plus de sujets relatifs à : Triac et µC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR