GRADATION SECTEUR

Jarrige

Active member
Bonjour,
Je propose un montage gradateur en angle de phase avec un 08M2, à commande 0-5V (ou facilement 0-10), ou potentiomètre, montage correctement antiparasité.
J'ai vu sur ce forum un peu "après coup" un autre projet du même genre, celui-ci me semble d'une électronique plus simple.
Je l'ai réalisé en pensant au projet chauffage d'un ballon eau chauffe à partir de l'info TIC. En effet, ce montage est réalisé à partir d'un gradateur 0-10V du commerce, mais de source unique à ma connaissance.
Je n'ai pas chiffré le coût de revient, mais il doit être de l'ordre d'une vingtaine d'E en composants.
 

Attachments

Bonjour à tous,
Merci Jarrige pour ce programme de gradateur, j'ai le souvenir d'un chauffage d'alambic utilisant ce principe, Je n'ai pas retrouvé cette discussion, si tu as une ref, merci de me la communiquer.
J'ai jeté un oeil sur ton code, avec les étiquettes "loop1" et "alt", on est pas loin du "goto" ;).
Voici ton code en clair:
Code:
#PICAXE 08m2
Let dirs=%000010
setfreq m32
;
symbol consigne=b0; pour lecture consigne valeur puissance
symbol retard=w1; valeur retard amorcage
symbol synchro= PinC.3; entree synchro secteur
;
high C.1; sortie opto off
;
do
loop1: readadc C.4,consigne; lecture consigne puissance
If consigne < 10 then loop1
retard=270-consigne; constante et mise a l'echelle
retard=28*retard;
alt: IF synchro=1 then alt; attente fin de passage par zero
pauseus retard
pulsout C.1,20; pulse triac 25uS
loop

Quelques remarques et les principes que j'applique (mais chacun fait ce qu'il veut).
le dirs sur C.1 n'est pas nuisible, c'est plutôt une sécurité), mais les commandes high et pulsout placent implicitement la brohe C.1 en sortie.
Je n'écris jamais le let qui est aussi implicite.
Je réserve la variable b0 au découpage en variables bit (binaires 0 ou 1) :(bit0, bit1,...), je commence donc à b1
Pour éviter les conflits possibles entre bytes et words, je prends les words à l'envers : w13, w12, w11,etc
Voici le code tel que je l'aurais écrit, et qui donnerait (je l'espère) le même résultat.
L'indentation facilite la lecture.
Code:
#PICAXE 08m2
dirs=%000010
setfreq m32
;
symbol consigne=b1; pour lecture consigne valeur puissance
symbol retard=w13; valeur retard amorcage
symbol synchro= PinC.3; entree synchro secteur
;
high C.1; sortie opto off
;
do  
    do
        readadc C.4,consigne
    loop while consigne <10
    retard=270-consigne ; constante et mise a l'echelle
    retard=28*retard;
    do loop while synchro=1; attente fin de passage par zero  
    pauseus retard
    pulsout C.1,20; pulse triac 25uS
loop
Avec une horloge à 32MHz et une variable à 100Hz, il y a peu de chance de rater la synchro, mais on peut penser à utiliser une interruption
Je n'ai pas encore eu le temps de me pencher sur l'organigramme, mais ce qui précède donne une idée des modifs possibles.
A+
MM
 
Last edited:
Salut MGU,
Merci pour ces remarques sur l'écriture plus "élégante" du code, et les conseils pour les variables, j'essaie de faire mieux à mesure ... Ce que je ne sais pas, c'est si le temps d’exécution du code tel que tu l'as écrit (do loop while ...) est identique au then loop1 ?? l'interpréteur génère t-il le même code objet ?

En ce qui concerne l'ancien sujet gradateur pour alambic, je l'ai trouvé en faisant une recherche avec ce terme. Deux remarques sur ce sujet :
1/ Sur une charge résistive de 3500W, les interférences doivent être "diaboliques" pour les appareils du voisinage.
2/ J'ai aussi essayé un bout de programme avec interruption : ça ne fonctionne pas très bien, il y a des "ratés" pour certains niveaux de puissance. Je pense que le temps de réaction est moins rapide.

Question subsidiaire : On peut trouver quelque part les temps d'exécutions f(fréquence du chip) ??
 
Le titre du sujet gradateur pour alambic est : gradateur 230V 3kW avec 08M2
C'est à priori un post de 2013
 
Oui, c'est cela....jojojo....2013....bref, passons
Il existe des tableaux de temps d'exécution de commandes voir P.J. Pour la vitesse, le basic interprété n'est pas le meilleur choix, bien sûr
Il est probable que le goto soit plus rapide que le do loop, faudrait comparer ce qui sort de l'interpréteur. Ce que l'on reproche aux goto n'est pas le manque d'efficacité mais le manque de lisibilité.
Pour les interruptions, il faut être sûr de ne plus être dans les conditions de l'interruption avant d'en sortir pour éviter les relances intempestives.
... 2013...
MM
 

Attachments

Bonjour Technoman, merci pour l'info de cette note d'application.
Concernant l'alim, oui je connais cette pratique d'alim "sans transfo" pour des applications de petite consommation (et de préférence débit constant), qui est d'ailleurs souvent source de problèmes dans le temps dus au condensateur (problèmes sur cafetière, et radiateur il y a peu de temps).
Si je n'ai pas prévu ça c'est juste pour pouvoir intégrer ce variateur au montage de la commande chauffage CE avec TIC, qui nécessite une commande 0-10V.
Et puis je n'aime pas trop ces systèmes non isolés du secteur. Tous comptes faits, le prix d'un petit transfo n'est que de quelques E et avec l'électronique associée, ce n'est guère plus encombrant, pour une sécurité plus assurée. Mais chacun pourra éventuellement adapter.
 
Je passe en PJ le programme mis en forme par MGU (j'ai rajouté en commentaire). Je viens de le tester, ces modifications "esthétiques" n'ont vraisemblablement pas d'incidences notoires sur les temps d'exécution, le programme fonctionne bien. Merci à MGU
 

Attachments

Bonjour,
Merci,mais c'était pas la peine d'ajouter ce commentaire..
Je n'ai pas la possibilité de tester quelque chose actuellement, mais si on veut avoir une réponse claire, il faut tester les deux méthodes.
Je propose ce code sur 10000 boucles (valeur absolument pifométrique)
Il faut garder le cordon de chargement en place

Code:
#picaxe 08M2
#no_data  ;pas d'EEPROM à effacer
b1=0   ;confirmation
b2=0
time=0
ad1: 
    inc b1
    if b1<10000 then ad1
    w13=time
time=0
    do
        inc b2
    loop while b2<10000
    w12=time
    sertxd ("w13=",#w13,"    w12=",#w12)

Si quelqu'un peut essayer...merci
MM
 
Bonjour,
Je trouve singulier le schéma concernant la synchro secteur. Le transistor de l'optocoupleur 6N139 shunte la résistance de 560 ohms impliquant la conduction permanente du MOSFET (C.3=0) quoiqu'il se passe en amont. La résistance ne devrait-elle pas être câblée en pull-down entre grille et source du MOSFET? Le but n'est-il pas d’obtenir une brève impulsion positive sur C.3 lors du passage à zéro de l'onde secteur?

Par ailleurs, le boucle d'attente
Code:
do loop while synchro=1
ne deviendrait-t-elle pas
Code:
do loop while synchro=0
, voire
Code:
do loop until synchro=1
?
 
Last edited:
Bonjour Technoman, non tout est normal sur le schéma, la résistance est connectée entre le +5V (broche 8 de l'opto) et le collecteur (broche 6) qui arrive sur la gate du transistor. Le zéro est sur la broche 5 (émetteur du 6N139)
 
Bonjour, Oups! Je n'ai pas vu la connexion à zéro du 6N139. Autant pour moi!:confused:
Pourquoi avoir ajouté un MOSFET, inversant la logique?
 
Ce transistor (un BS170, ref oubliée sur le croquis je crois), permet d'avoir un signal en sortie très "raide et propre" . Il ne demande aucun courant sur la gate et dispose d'un seuil de commutation.
 
Je viens d'essayer le programme de MGU pour avoir une idée des temps d'exécution de 2 manières de programmer (post du 14/08 ci-dessus) .

Ce prog "plante" semble t-il : le test sur 10000 sur b1 puis b2 (variables 8 bits) bizarre, non ??
J'ai modifié et remplacé les byte par des word et j'ai fait tourner plusieurs cycles avec 08M2 sur une carte d'essai AXE021 (horloge par défaut, donc à 4 Mhz).
Résultats obtenus sur 60000 boucles : 113s que ce soit avec INC,IF,THEN ou INC,LOOP WHILE, c'est répétitif, soit donc env 1,9 ms la boucle.
On peut donc estimer que les 2 méthodes sont équivalentes en temps d'exécution, assez probablement le résultat de la compilation doit être identique ?.
 
Complément d'enquête : J'ai tout de même voulu tester les temps d'exécution à différentes vitesse du 08M2 ... Dans les docs, j'ai vu que l'on revenait, me semble t-il, à la fréquence de base lors du téléchargement (J'ai PE6.2.0.0). Par ailleurs, je n'ai pas trouvé d'info sur ce que devient la variable système TIME lors de ces manips de fréquences. Le plus étrange est que pour un SETFREQ à 8Mhz, je trouve un temps d'exécution 4 fois inférieur (0,47 ms), en toute "logique", ce devrait être 2 fois (TIME est-il à 0,5s dans ce cas ?).
Plus fort encore, j'ai essayé 16 et 32 Mhz : toujours 0,47 ms ... Pourtant il faut bien positionner la vitesse du terminal à la vitesse donnée dans la doc pour le SERTXD en fonction de fréquence !! Ce qui voudrait dire que le 08M2 fonctionne bien à la fréquence de 16 ou 32 Mhz ??. Du coup, ce serait TIME qui est divisé par 2 à chaque doublement de fréquence ?
Bref, j'y perd mon "peu" de latin, j'ai besoin des éclairages de spécialistes !!! Dans l'attente
 
Bonjour Technoman, et merci pour cette info, effectivement le fonctionnement de ce compteur est pour le moins déroutant.
Mais ça explique les résultats entre à 4 et à 8 Mhz (à 8 Mhz le micro pédale 2 x plus vite et le Time 2x moins >>> rapport de 4), ça explique aussi effectivement les résultats à 16 ( rapport 4 avec le 4 Mhz) et 32 (2x 16 Mhz et TIME/2, donc même résultat).

Je retiens que c'est un "temps" d'ailleurs assez approximatif, aussi que PE6.2 gère bien les directives SETFREQ M16 et M32 en téléchargement.
Merci beaucoup pour ces éclairages (je n'avais pas pensé à aller voir sur le site des PICAXE).
 
Bonjour,
Bizarrement, les liens sur ce site vers les manuels ne fonctionnent pas chez moi, il faut passer par des liens externes:
Pour la variable time, un tableau existe quelque part, je l'ai reproduit sur mon site en page 3
http://electromag1.wifeo.com/les-picaxes-et-leur-basic-3.php
L'original :https://picaxe.com/basic-commands/time-delays/time/
Et merci pour l'essai de vitesse en #9, évidemment, il fallait des word au lieu de b1 et b2, sinon, on dépasse pas 255
La différence est donc purement esthétique.
MM
 
Back
Top