Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Timer et Interruption-On-Change
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#21 Message par satinas » ven. 13 janv. 2023 19:30 lien vers la Data-Sheet : Cliquez ici

Code : Tout sélectionner

   if (IOCIF_bit)
   {
      IOCAF = 0;        // RAZ des flag
      if (!TMR0IE_bit) {
      
        //IOCIE_bit = 0;    // Stop IOC
        Pulse = 1;
      
        TMR0       = 68;
        TMR0IF_bit = 0;
        TMR0IE_bit = 1;
      }
   }

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#22 Message par Jérémy » ven. 13 janv. 2023 20:30 lien vers la Data-Sheet : Cliquez ici

Re,

Le ventre plein c'est mieux pour reflechir !

A mon retour , afin de tester vos solutions, j'avoue avoir préférer la méthode simple pour commencer, qui consiste à reprogrammer le PIC avec la solution de satinas !

Euh.... comment dire ... ça fonctionne impeccablement ! aucun loupé les salves font bien 3ms.

satinas, si c'est pas trop te demander car déjà tu as trouvé, comment en est tu arrivé cette conclusion ?

en traduisant ton code.
Si j'ai un déclenchement sur IOC ET que le timer 0 est déjà lancé, alors je ne fais rien.
Si j'ai déclenchement IOC et que le timer 0 est éteint alors je le lance.

Le problème est admirablement contourné ! mais j'ai un gout amer de ne pas comprendre POURQUOI, j'ai un déclenchement sur un front descendant ? bon c'est pas grave après tout je vais pouvoir continuer à avancé.

@PAUL:
SI je diminue R8 et R11 d’après ce qu'on m'as expliquer sur un autre forum, le courant passant dans la R va augmenter est donc le R va chauffer beaucoup plus. Je souhaite également diminuer le courant de consommation de l'ensemble car dans la vrai vie le récepteur sera alimenter 24H24 chaque milliampère compte !

Par contre j'ai pas compris :
mais de rajouter 2,2 à 4,7K aux bornes de la led de l'optocoupleur

sur le PC817 ?
je vais faire cela en simu pour voir les impacts.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#23 Message par satinas » ven. 13 janv. 2023 20:52 lien vers la Data-Sheet : Cliquez ici

Bah je t'avais dit dans un message précédent de réactiver l'interruption IOC après la fin de la tempo, cela aurait aussi marché ainsi.

Tu as modifié le code, l'interruption IOC est toujours active, je préfère, car quand on a prévu une interruption il vaut mieux la laisser tourner en permanence. Lorsque l'interruption IOC se déclenche tu démarres une tempo TMR0=68 et tu actives l'interruption TIMER0 (seul moyen car il n'y a pas de bit OFF/ON sur le timer 0).
Avec tout ce qu'on a raconté, il semble que l'interruption IOC se redéclenche juste après, donc rebelote TMR0=68 et tu rallonges la tempo qui est en cours. En testant le bit TMR0IE_bit on s'assure que la tempo ne démarre qu'une seule fois, c'est à dire quand l'interruption TIMER0 est désactivée. Quand l'interruption parasite se déclenche il faut quand même remettre à 0 les flags IOCAF pour que cela tourne proprement.
Sur le port série je fais pareil, l'interruption RX avale tout, et on ne traite que les octets qui nous intéressent.

Pourquoi cela redéclenche ? va savoir, tu n'as pas répondu à ma question, elle se redéclenche combien de fois, une seule fois sur le front descendant et pas à tous les coups, c'est ça ? Peut être ton signal est un peu biscornu, et il flirte avec la limite low/high, la pin A2 est une entrée avec trigger de schmitt, pas A3 (page 8).

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#24 Message par Jérémy » ven. 13 janv. 2023 21:39 lien vers la Data-Sheet : Cliquez ici

satinas a écrit :Source du message Bah je t'avais dit dans un message précédent de réactiver l'interruption IOC après la fin de la tempo, cela aurait aussi marché ainsi.

Oui oui je l'ai fait. en #3 je coupe l'IOC une fois enclencher et je la réactive seulement à la fin de la tempo. . Cela n'avait pas marcher. Il faut dire que entre deux post je test des trucs .Je pense que mon code n'était pas propre certainement.

satinas a écrit :Source du message elle se redéclenche combien de fois, une seule fois sur le front descendant et pas à tous les coups, c'est ça ?

Tout à fait, l'IOC se re-déclenche qu"une seule fois sur le front descendant très précisément. c'est comme si j'avais activé les fronts montant et descendant. A la seule différence c'est que cela n'arrive pas a chaque fois mais sporadiquement, sans point commun ( ou du moins je n'en ai pas déceler).

satinas a écrit :Source du message Peut être ton signal est un peu biscornu, et il flirte avec la limite low/high, la pin A2 est une entrée avec trigger de schmitt, pas A3 (page 8).

Oui tu rejoins Paul sur ce diagnostic qui me parait bon. Moi javais l'impression que mon impulsion était belle ! apparemment pas assez :-D .
je vais tenter de l'améliorer. L'idée du trigger est excellente ! si je modifie mon circuit qui n'est qu'un proto, alors je changerai de stratégie de routage. j'ai pas trop de marge de manœuvre mais j'ai une solution.

Un grand merci aux intervenants !

Je vais pouvoir continuer a avancer sur mon luminaire !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#25 Message par satinas » ven. 13 janv. 2023 21:56 lien vers la Data-Sheet : Cliquez ici

Même avec un signal propre, il ne faut pas stationner trop longtemps dans la zone grise entre les seuils TTL bas et haut. Donc il faut des pentes bien franches.

Timer et Interruption-On-Change
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#26 Message par paulfjujo » sam. 14 janv. 2023 09:21 lien vers la Data-Sheet : Cliquez ici

bonjour à tous,

test en simulation du signal recupéré en sortie de photocoupleur
nota: pour le besoin de simul, le pole - secteur redressé est relié au 0V

Effet de la linearisation R aux bornes de la led photocoupleur
Sans R , les diodes de redressement ont une charge non lineaire, et la tension redressée ne tombe pas à zero
avec R=1K , la tension redressée passe par zero et le signal de sortie photocoupleur remonte donc au Vcc

Je sais , ce n'est que de la simulation, mais j'ai déja vécu et corrigé ce probleme dans la vraie vie !

nota :
Il en est de meme lorsqu'on commande en PWM une serie de Led via un MOSFET...
mettre une R en parallele sur l'ensemble des leds pour ameliorer la commutation
car un ensemble de led = grosse zener !

SI je diminue R8 et R11 d’après ce qu'on m'as expliquer sur un autre forum, le courant passant dans la R va augmenter est donc le R va chauffer beaucoup plus. Je souhaite également diminuer le courant de consommation de l'ensemble car dans la vrai vie le récepteur sera alimenter 24H24 chaque milliampère compte !


avec 100K -> 0.529W
avec 250k -> 0.211W
j'ai re simulé avec 250K pour sauver la planete !

ça irait encore ? .. durée detection elargie !

Zero_cross_detection_Secteur_230V.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#27 Message par Jérémy » sam. 14 janv. 2023 10:08 lien vers la Data-Sheet : Cliquez ici

Merci Paul pour ces précisions,

je suis toujours avide d'explication pour essayer de bien comprendre; l'électronique analogique n'est pas mon fort, surtout avec du 230V .

La diminution de la consommation c'est plus pour ma facture que pour la planète même si les deux se rejoignent.
Avec 250k je divise donc plus que par deux la consommation 24h/24. je trouve cela intéressant. On m'a propose un autre montage encore moins énergivore. Mais ne comprenant pas le fonctionnement, je ne l'ai pas fait.

Pour savoir si ça irait je pense qu'il faudrait tester avec la charge. Je ne pense pas que les ampoules led soient linéaires dans leur fonctionnement. Il faudra que j'ajuste avec mon plafonnier.
J'image par exemple qu'au minimum je vais devoir avoir une pulse disons de 50% soit 5ms . Ce sera donc mon minimum. Donc la largeur de l'impulsions dans ce cas ne sera pas critique du tout.

Je vais essayer ta méthode par curiosité en rajoutant une R de 1K sur la diode de l'opto.

Concernant le programme .
Ça fonctionne parfaitement, a condition de ne jamais éteindre l'IOC . Si je touche a son activation j'ai des bricoles qui arrivent.
Du coup je fais tout par Interruption. Cela me permet de faire des delay_ms dans le code sans problème.
Il faudra que jsute les seuils avec mon plafonnier ( et madame...), et que j'essaye de faire une rampe d'allumage et d'extinction.

Le fonctionnement :

départ lampe éteinte :
- appui bref -> allumage dans la dernière position enregistrée
- Appui long -> allumage progressif en partant de la position 0.

Départ lampe allumée:
- appui bref -> extinction de la lampe
- appui prolongé -> augmentation ou diminution suivant le sens de la direction. puis changement de sens pour un prochain appui long.

► Afficher le texte
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#28 Message par Jérémy » sam. 14 janv. 2023 10:25 lien vers la Data-Sheet : Cliquez ici

Question bête mais j'ai pas envie de faire une connerie.
est ce que je peux mettre mon sonde d'oscilloscope ici . Je suis sur la partie "continue" mais mon oscillo n'accepte que 20v en entrée ( 20v pk max)
Sonde.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Timer et Interruption-On-Change
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#29 Message par paulfjujo » sam. 14 janv. 2023 11:11 lien vers la Data-Sheet : Cliquez ici

Jérémy a écrit :Question bête mais j'ai pas envie de faire une connerie.
est ce que je peux mettre mon sonde d'oscilloscope ici . Je suis sur la partie "continue" mais mon oscillo n'accepte que 20v en entrée ( 20v pk max)
Sonde.jpg



NON .. si ton oscillo est alimenté sur secteur ! ( meme avec une sonde 1/10)
risque de retouver partiellement la Phase 230V sur l'entree oscillo
Il n'y a qu'un VRAI oscillo avec 2 entrees differentielles pour le faire , et sondes Haute tension .. et encore.

Possible avec un oscillo avec alim sur batterie ..et sonde 1/10 .. genre Fluke !
mais attention au point froid de la sonde oscillo qui peut etre au potentiel Phase 230V
Mettre de preference le 0V de l'oscillo, coté NEUTRE .
ça depend comment tu branche ta prise 230V du montage
Le Neutre est -il bien du bon coté!

Dans les années 70, il n'existait pas (encore) d'isolateur haute tension pour les entrees oscilloscope
Gros oscillo tektronics, posé sur une table à roulettes (caoutchouc) .. et en deconnectant la terre d'alim de l'oscillo !
pour mesurer le signal de gate pont à thyristor et signal anode cathode (>380V) pour faire un alignement des 6 arches triphasé redressé !
le tout avec gants isolants et lunettes ....
Un jour ,une porte d'armoire (entre ouverte) s'est refermée et a touché la table de l'oscillo ! => gros flash !
Ce qui a permis par la suite , d'inverstir dans un isolateur !
( j'en ai un ! GOULD DA 1000VN input 800V max entree differentielle (alim pile 9V interne))
La sécurité ,en ces temps là, n'etait pas la priorité absolue ..
Aide toi, le ciel ou FantasPic t'aidera

Timer et Interruption-On-Change
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#30 Message par Jérémy » sam. 14 janv. 2023 11:31 lien vers la Data-Sheet : Cliquez ici

Je vous renvoie à ma signature !

j'ai fais sauter les plombs de la maison .... :sifflotte: :sifflotte: :sifflotte:

J'ai deux oscillo , un oscillo PC qui se branche par USB. Et un autre , dans mon labo un tektronics TBS1102B .

Comme il est écrit dessus 300V pareil pour mes sondes , je me suis que ca passait . Ben non !!!! tout à sauté.

Après rallumage de la maison, je l'impression que tout fonctionne encore.
Voila pourquoi j'aime pas le 230V .... ça fait sursauter !!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 85 invités