Bonjour à tous,
Je suis nouveau sur ce forum, qui est très intéressant.
Je suis passionné d'informatique, et je suis développeur dans la vie.
Je ne suis pas venu là juste pour dire coucou aux membres et visiteurs du site, mais j'ai un problème électronique, moi qui suis dans les herbes folles de ce monde.
Avec mon père, qui lui est électronicien de métier, on a créé un circuit pour la gestion d'un jeu de lumières sur secteur.
Le tout est contrôlé (récemment) par un PIC18F252, que je programme moi même avec PICC (anciennement avec un PIC16F876A, dont j'avais créé le programme C et le logiciel sous Windows qui marchait à merveille).
Je l'ai amélioré il y a quelques semaines en ajoutant un module avec un micro qui est branché via un ampli à une interruption, qui marchait au poil, pour synchroniser les jeux avec la musique.
On a amélioré ce module et ça marche au poil.
Jusque là, vous allez vous dire, c'est quoi le problème ???
Bah il n'y a pas de problème jusque là, le problème vient d'un nouveau module qu'on a ajouté, qui est un circuit Zero-Crossing, qui envoit un pulse à chaque passage à zéro de la sinusoide du secteur 220V. Il fonctionne bien, il est bien relié à une deuxième interruption du PIC, mais ça marche pas !!! J'ai bien compris qu'il y a une interruption toutes les 10 ms, que le triac réagit comme un PWM quand on lui envoit une impulsion après chaque passage au 0, et pourtant, marche pas !!!
Je vous explique comment mon circuit est fabriqué (pour UNE sortie 220V) :
J'ai réservé un port complet (le B) sur le PIC pour avoir 8 sorties (une par bit, normal). En fait c'est pas un port complet, car les pins B0 et B1 sont mes entrées interruption (j'ai recablé pour les mettre sur deux sorties du port C, et ça marche très bien).
Ces 8 bits sont reliés à deux bascules à mémoire (comme ça, ça me fait 16 sorties), dont chacune est reliée à une sortie du PIC. C'est un adressage quoi.
Quand une bascule est adressée, elle balance les 8 bits d'entrée en sortie, en gardant l'état.
Chaque sortie de la bascule est connectée à un optocoupleur, via une résistance (pour pas griller la LED dans l'opto), et une LED en parallèle pour avoir un témoin visible de l'extérieur.
La sortie de l'opto est reliée à la gachette d'un triac, et les deux autres pins sont reliées aux deux fils du secteur.
Avant le PWM, ça a toujours marché, mais je souhaite gérer ça pour pouvoir jouer avec les intensités de lumière sur chaque sortie.
Pour se faire, théoriquement, dans PICC, j'ai créé l'interruption à la sortie du Zero-Crossing (créé par un ampli comparateur et une référence au plus près du 0V).
On est bien d'accord que pour générer un PWM, il faut laisser un timer entre le moment du passage au 0 et l'impulsion au Triac, qui restera en l'état jusqu'au prochain passage au 0.
Par exemple, j'ai l'interruption, je laisse une pause de 5ms, j'envois l'impulsion et je devrais avoir une sortie d'environ 110V (car 50%).
Et ça se passe pas comme ça, je ne vois pas pourquoi !!!
Je vais essayer de controler un opto par le PIC sans passer par les bascules pour voir si c'est pas un problème de décalage à cause du temps de traitement du PIC des différentes instructions.
Pour remarque, l'impulsion à la sortie de la bascule est courte, car j'envois les données et je les efface juste après.
Pour deuxième remarque, mon PIC fonctionne en PLL 4x sur un quartz de 4MHz.
Pour troisième remarque, lors de mes tests avec le timer depuis l'interruption, la sortie 220V est soit à 0V, soit à 220V, le PWM ne marche pas (alors que la LED témoin change bien d'intensité).
Pour quatrième remarque, je vous donne les références de chacun de mes composants (avec leur nombre entre parenthèses), au cas un l'un deux ne soit pas adapté :
- PIC : PIC18F252 @ 16MHz (1)
- Bascules : 74HCT574N (2)
- Optocoupleurs : MOC3041 (16)
- Triacs : BTA06-400BW (16)
Voilà, j'espère avoir tout détaillé au maximum pour avoir l'aide que j'attends.
Au fait, ma demande c'est : quelqu'un peut me dire pourquoi j'ai soit 0V soit 220V en sortie alors que je varie le moment des impulsions dans ma fourchette de 10ms, et que je devrais avoir une sortie variable ???
Merci d'avance, j'accepte toutes les idées.
Michel @ TiX
-----