ondull0ONDULEUR VARIATEUR de Fréquence

Sinus MLI 20 – 200 Hz

1    Essais PIC16F690
1.1    Essais MLI
1.2    La variation de fréquence de sortie
2    Schéma et explications
2.1    Schéma
2.2    Les timings
2.3    Le pont en H
2.4    Le bootstrap
2.5    Mes erreurs
2.6    Mes bons points
2.6.1    Les diverses protections
2.6.2    La résolution des pannes
2.7    Contrôler la sinusoïde
2.7.1    Avec Scope isolé
2.7.2    Avec scope double voie avec fonctions mathématiques
2.7.3    Avec scope une voie non isolé
2.8    La variation de fréquence
3    Le logiciel
4    Conclusions et Essais réalisés
4.1    Essais résistifs
4.2    Essais avec transformateur

Si vous arrivez directement sur cette page par un moteur de recherche, vous pouvez avoir accès à la table des matières et à chaque article, en page d'accueil.    L'accès se fait par l'un des deux liens en tête de colonne de droite ----->
Les questions correctes en fin d'un article recevront toujours une réponse, mais pas les questions par "CONTACTER L'AUTEUR" qui n'auront pas de REPONSE (car je suis obligé de répondre par mail).
A voir aussi  en colonne de droite (lien direct) ------> les articles "BONJOUR" ainsi que "INFOS rapides"... Il est déconseillé d'indiquer dans les commentaires ses coordonnées (mail, adresse ou téléphone).
Ce blog est modéré et vous pouvez demander simplement en tête de question à ce que vos informations restent confidentielles si nécessaire. Rien ne sera publié, mais ma réponse sera faite sur l'article correspondant (et non par mail).


Avant propos

Pour un futur (lointain) projet d'éolienne et de panneau solaire, j'ai voulu m'essayer un peu à la génération de courant alternatif sinusoïdal (de qualité), car envoyer du rectangulaire dans une pompe par exemple n'est pas très agréable à l'oreille tant ça vibre.
Aussi la génération de courant alternatif à partir de sources de tensions continues de valeur faible à "moyenne" est un exercice intéressant.
Ainsi dans un premier temps j'ai uniquement travaillé avec le simulateur MPLAB, avec un PIC 16F690 pour voir les problèmes que cela pose, et comment les contourner si nécessaire.

Outre la génération à fréquence 50 Hz comme le secteur, j'ai voulu aller un peu plus loin et essayer de faire varier quelque peu la fréquence pour pouvoir éventuellement faire des démarrages de moteur à faible vitesse ou au contraire permettre d'accélérer largement au dessus de 50 Hz.

Avant toutes choses j'ai regardé sur internet ce qui se faisait et j'ai apprécié une vidéo intéressante de "ioduremétallique" (https://www.youtube.com/watch?v=ZinkAKUIGCE) qui m'a intéressée, mais qui est restée trop floue notamment au niveau des principes généraux adoptés dans le logiciel et de la méthode retenue pour générer de l'alternatif sinusoïdal (Tables ?, algorithme ?).
J'ai notamment vu la nécessité d'utiliser des drivers spécifiques pour commander un pont en H qui permet d'inverser les tensions dans la charge, car si le principe reste simple, l'application en MLI reste délicate tant pour les recouvrements éventuels des commandes qui peuvent être générateurs de courts-circuits de puissance, que des tensions flottantes éventuelles et des commandes parasites de pont souvent mortelles pour les MOSFET.
Je n'ai pas échappé à la règle car une diode et deux MOSFET ont vécu ainsi que le circuit imprimé qui a souffert des nombreux démontages de vérification.

Ce n'est donc pas un montage 100% abouti, mais bien un prototype, car il peut subsister des zones d'ombre notamment avec l'alimentation des transformateurs 12V--->220V, car cette self importante déforme la tension secondaire… On en reparlera !
Le design avec d'autres MOSFET plus courants sera malheureusement à reprendre, car c'est tout de même assez délicat avec des SOIC8 pour évacuer les calories éventuelles.

Avant de faire des essais complémentaires sur la sortie sur transformateur, je vais déjà faire les photos générales de l'article, car en cas de problèmes, l'essentiel des photos sera fait… avant une future panne…!

1 Essais PIC16F690

1.1 Essais MLI

La première des choses a été de réfléchir sur la méthode pour faire du sinusoïdal avec la MLI d'un PIC.
Je n'ai pas trouvé d'autre moyen simple que de générer à partir d'une table des Sinus, le profil MLI, d'autant qu'il parait au premier abord qu'il faut être rapide et il n'est donc pas question de consommer trop de temps CPU en calculs !

J'avais déjà utilisé la MLI mais pour générer une tension continue, (Une seule sortie MLI) mais pas pour ce genre d'application cyclique et en pont. (http://bricolsec.canalblog.com/archives/2012/11/02/25480956.html § 4.2)

J'ai regardé plusieurs fois la vidéo de "ioduremétallique" pour me guider un peu, mais si "iodure" a une bonne éloquence, il reste un peu trop discret sur les principes retenus au niveau du PIC.
Je n'avais pas beaucoup l'habitude du fonctionnement des ponts en H et j'ai découvert dans les littératures des drivers les diverses raisons de ceux-ci.
Le grand principe que j'ai retenu est de fournir aux MOSFET de puissance suffisamment d'énergie pour charger et décharger le condensateur d'entrée de la gate des MOSFET. Cette action évite d'avoir une branche verticale du pont en court-circuit durant un bref instant au moment de la commutation simultanée des 2 branches.
Sur cela viennent se greffer des problèmes de la tension de commande des MOSFET_N, car dans certaines applications on peut monter jusqu'à 600V…
Ce ne sera pas mon cas, car je resterai sur du bon vieux 12V et j'ai préféré la simplicité d'un montage MOSFET_N, car dans un pont en H pour le PIC considéré, Microchip recommande que le signal soit proche de zéro au moment du basculement, ce qui sera le cas, puisque ce sera aux points zéro de la sinusoïde.

On remarquera que le même montage avec des MOSFET différents peut tout à fait fonctionner et les drivers pourraient rester les mêmes, et cela éviterait l'usage d'un transformateur… Mais d'autres précautions et un autre design seraient à envisager ?

Doit-on générer une table complète sur 360 degrés ? Pour ma part c'est non car de 90° à 180° (sens trigo) la valeur de tension est la symétrique de celle de 0 à 90°, que l'on obtient par une simple soustraction.
En effet, ce pointeur vers le sinus s'obtient très facilement suivant la règle tension maxi, moins valeur en cours.
Pour la partie négative de la sinusoïde, ce sera directement de 0 à 180°, mais en négatif par la commande appropriée de sens du pont.

J'ai regretté que le montage de "iodure" n'aille pas plus haut que 60 Hz, aussi j'ai regardé les différentes possibilités pour monter vers 200 Hz. Je pense que le fait que l'aimant soit expulsé par la force centrifuge comme le dit "iodure", reste peut-être un peu surfait car si l'on monte plus haut en fréquence, les problèmes de timing deviennent surtout plus difficiles… On va expliquer cela.

Pour avoir une belle sinusoïde, il est fort utile d'avoir un maximum de définition, aussi j'avais visé un peu haut avec 10 bits, soit 1024 éléments pour seulement 90° angulaires, mais cela se complique avec ces 2 bits de poids faible (En plein dans le registre de commande !), mais c'est surtout le temps d'extraction en table qui est doublée et ça allonge beaucoup le temps de boucle du programme et malheureusement après bien des atermoiements et confusions sur les fréquences, périodes diverses, résolution, je me suis rendu compte qu'il n'est pas possible de monter très (trop) haut en fréquence pour la tension sinus finale (C'est la tension sinusoïdale recherchée).

Je suis donc passé à 8 Bits, mais là aussi ça n'a pas suffit, (à chaque changement de résolution, il a fallu générer une nouvelle table) et à mon grand regret, j'ai du passer en final à 7 bits ! Mais à ma décharge, la "gueule" du sinus reste très acceptable surtout pour alimenter moteurs ou lampes.

Et puis en testant le flag attaché à la MLI, TMR2IF je me suis aperçu qu'au gré des modifs de programme, la période du signal sinus changeait (durée d'1/4 de sinus par exemple).
Cela m'a laissé perplexe.
J'ai aussi vu une aberration à priori assez courante puisque l'encadré dans la doc dit que si le duty cycle est plus grand que la période PWM, les sorties restent inchangées. (Cela produit des paliers à la même largeur (Avec absence d'impulsion aux sommets maxi de la sinusoïde, ce qui surprend toujours).

Cette particularité très normale et surprenante se produit également aux zéros de tension sinus.
Enfin les valeurs indiquées par le constructeur ne collaient pas exactement et il fallait ajuster la valeur de PR2.

Finalement je me suis rendu compte que ma boucle de programme pourtant assez courte ne me permettait pas d'atteindre la vitesse suffisante pour trouver TMR2IF encore à 0. Voilà donc la cause de toutes ces petites déconvenues.
J'ajoute que la plus grande partie ce travail est faite uniquement sur MPLAB en simulation, ce qui explique que c'est un peu moins concret, mais avec le "logic analyser" et les différents outils de MPLAB, c'est un tout de même très (plus) facile de suivre ce qui se passe, et sans ces outils de développement, je crois que ce serait vraiment difficile car les signaux sont trop voisins en taille pour les discriminer….

J'ai pu constater qu'avec mes différents paramètres, le flag TMR2IF est à nouveau à 1 seulement après 9 cycles, soit 1.8µs !!!
Avec l'horloge à 20 MHz, on a donc droit à 9 instructions pour lire une valeur ANA et faire évoluer en fréquence ou simplement à préparer une nouvelle valeur à faire en MLI ! C'est vraiment trop peu et on verra comment contourner ce problème (C'est en 7 bits, et ça va trop vite ! Je suis déjà à 20 MHz et je ne peux pas aller plus vite !)

Pour la table des Sinus sur 90°, celle-ci a été totalement générée en RETLW sous OPEN_OFFICE en ajoutant en commentaires la valeur angulaire, mais pour la facilité j'ai travaillé en GRADES et non en degrés. Le commentaire de l'angle est essentiel pour vérifier, car il est très facile de faire des oublis ou des erreurs…

Extrait du début de table

Cte=100/128 0.7813 Table 7 bits      
Numéro angle 100/128 sinus      
0 0 0     RETLW 0x0 ; 0
1 0.78 1     RETLW 0x1 ; 1
2 1.56 3     RETLW 0x3 ; 2


Vous pouvez vous inspirer des formules de ce fichier ("calculs_PWM.ods"), et avec le recul je dirai que ce que j'ai fait est bien compliqué…! (C'est aussi le résultat de plusieurs tentatives pour résoudre ce problème de nombre de bits de définition de la MLI) Regardez seulement à partir de la ligne 327 "table 7 bits".

Le principe est de diviser les 100 grades en 128 éléments du premier quadrant. (La suite fichier >100 grades est seulement une vérification).

Le dernier point non moins important, était de voir ce qui se passait si on ne répondait pas tout de suite au TMR2IF…C'est peut-être déjà acquit, mais je l'ai vérifié... La MLI continue à la dernière valeur chargée !

1.2 La variation de fréquence de sortie

C'était le but fixé, de pouvoir varier assez largement en fréquence. Cependant pour cette "maquette logiciel" pour l'instant, je n'ai pas traité le problème du V/f comme l'a fait "iodure", ce qui est un plus, mais que je n'aurais pas pu réaliser sur ce PIC qui n'a qu'un seul CCPCON1 pour la MLI.

Ainsi que déjà signalé, je suis déjà tributaire du temps de quelques lignes d'instructions, pour la période PWM et donc ajouter simplement des instructions pour faire varier la fréquence va encore allonger ce délai…
On notera que tout allongement de la boucle de programme n'affecte pas la période PWM mais diminue la fréquence de sortie sinusoïdale de fait.

Sans ces instructions je suis actuellement à 23316 Tcy pour la période Sinus soit 214 Hz.
La fréquence des impulsions MLI est à 29.411 KHz ce qui est assez élevé et n'autorise qu'un prescaler de 1 pour le TIMER2
Je suis actuellement à PR2=0x21 soit 34*50n*1=6.8µs de PWM période ! Or ma boucle est de 34 µs.!
La rallonger encore, ferait encore baisser la limite haute de la fréquence générée.

Je viens de faire les calculs pour le convertisseur A/D, et au mieux TC sera à 0.7 µs soit un TACQ de :
2+0.7+1.25µs=  # 4µs.
Mais ce n'est pas tout car il y a encore le TAD qui sera de 1.6µs*11TAD= 17.6µs quelque soit la vitesse (Tcy).

J'envisage donc de faire la mesure ANA d'un potentiomètre de 1K seulement, pour réduire le TACQ, et de lancer la mesure très rapidement en quelques instructions, puis de lire le résultat lors d'une boucle suivante.
Je pense qu'à ce jour cela me parait une solution acceptable mais il faudra voir l'impact sur la fréquence de sortie Sinus. Dans cette méthode, il y a seulement 1 ou 2 instructions de plus ce qui reste encore acceptable.

Une autre solution pour modifier la fréquence avec des switchs et leurs rebonds et l'évaluation des fronts serait certainement beaucoup plus coûteuse en instructions et devrait arrêter l'évolution de la sinusoïde durant un temps beaucoup trop long.

Mais au fait comment faire varier la fréquence de sortie ? Rassurez vous j'ai hésité également et même encore parfois, car il y a des fréquences partout, et à la fin on ne sait plus très bien de quoi on parle.

Rappelez vous le fait de laisser tourner la MLI toute seule, celle-ci maintient sa sortie à la dernière valeur entrée en CCPR1L, aussi on maintient un temps entre chaque boucle de génération de la MLI c'est-à-dire que pour une sortie de largeur 12% par exemple, alors que la suivante est à 15%, on va assurer le temps de 12%  X fois plus long avant de passer à 15%.
Ce même "X fois" sera répété pour CHAQUE palier de la génération de la sinusoïde.
En d'autres termes tous les petits escaliers de la sinusoïde seront plus longs, ce qui diminuera la fréquence Sinus.

On voit tout de suite qu'en fonction de la résolution, cela va augmenter très rapidement les temps de chaque palier et donc diminuer très rapidement la fréquence de sortie Sinus. (x 128)

C'est ce même problème qui est à l'origine du manque de temps pour la boucle MLI qui fait diminuer rapidement la fréquence de sortie. C'est aussi une nécessité absolue pour conserver la proportionnalité de la sinusoïde.

2 Schéma et explications

2.1 Schéma

onduleur_variateur_schema

 

 

 

 

 

 

 

 

 

 

 

 

 

 

onduleur_variateur_implant


Voici également pour exemple non vérifié, une implantation très proche de ma réalisation.

Parallèlement à ces essais théoriques au simulateur MPLAB, j'ai eu la nécessité d'établir un schéma de base qui puisse s'adapter au logiciel en cours actuellement.


J'ai pensé un instant reprendre le principe des AND pour générer la partie négative comme "iodure", mais le PIC 16F690 permet de générer directement la partie négative, et tant qu'à faire autant utiliser les fonctionnalités du PIC16F690.
Cependant, au tout début, j'avais pensé utiliser ce que j'avais, aussi ce pont était prévu équipé de MOSFET_N et P, ce qui simplifie un peu les drivers. Au final, le copain Riri avait des IR2106, alors du coup, je n'ai finalement utilisé que des MOSFET_N.

J'envisage effectivement de mettre un transformateur élévateur pour obtenir du 230V dans la diagonale du pont ! Bien entendu cela devrait fonctionner mais cela déforme aussi la tension. (Voir Conclusions sur ce point)
J'ai prévu une LED sur le 12V et une autre sur RC5 pour scintiller au rythme de la MLI. Il aurait été peut-être plus judicieux de la placer directement dans la diagonale du pont aux bornes moteur.
Vu les temps disponibles, l'affichage de la fréquence ne sera pas implémenté au profit d'une fréquence de sortie plus élevée.

2.2 Les timings
100_6802
La MLI sera donc pilotée en 7 bits seulement, car toutes les autres valeurs ne permettent pas de réaliser la fourchette 20Hz à 200Hz. De plus, pour générer du sinusoïdal destiné à des moteurs ou des transformateurs ou autres appareils un peu puissants, la distorsion n'est pas un problème majeur.
La période intrinsèque MLI est de #6.8 µs et les fréquences sinus de 11.76 Hz à 192 Hz.
Il n'est guère possible d'aller plus haut en fréquence car bien que la boucle de programme soit très courte, elle est encore trop longue et impacte les fréquences élevées. (Si on veut pouvoir régler la fréquence en dynamique). À fréquence fixe on pourrait monter un peu plus haut.

Pour les fréquences basses, tout repose sur un point important qui est celui-ci : La définition en nombre de bits étant constante, il n'est pas nécessaire de répéter une même valeur, car c'est la MLI du PIC qui maintient automatiquement la dernière valeur CCPR1(L seulement puisque 7 bits). Cela équivaut donc à prolonger un palier. Ceci est rendu possible par le double buffer du PIC qui s'en charge100_6804 automatiquement sans aucune intervention de programme.
Ainsi une fois la MLI lancée, on n'a plus à s'en préoccuper sauf à faire évoluer  au rythme sinus CCPR1L (Dans le meilleur temps -constant de préférence-). Cela reste relativement simple.

Un autre point qui est un peu sous-entendu est la mesure de la tension au potentiomètre déterminant la fréquence à générer : On n'a pas le temps d'attendre une mesure, même rapide de cette valeur, aussi on lance une lecture dès que la fin de conversion est effective et on prend l'unique valeur en 7 bits et on relance une conversion (sans attente). Dans le cas contraire d'une conversion non terminée, on continue la boucle pour ne pas retarder. Lors de la conversion, il n'est pas nécessaire de prendre une résolution supérieure puisque la MLI est en 7 bits (ADFM=1). Cela est également un gain de temps de boucle.
La tension du potentiomètre est fortement intégrée pour éviter des variations trop rapides de fréquences préjudiciables à des mécaniques associées. la résistance de 12 ohms évite lors de la conversion d'avoir une valeur nulle qui ferait passer à l'autre extrémité de la gamme des fréquences sinus.

La tension générée est-elle parfaitement 100_6806sinusoïdale ? NON mais elle en est très proche et il y a quelques minuscules accidents liés à la désynchronisation entre l'horloge PIC et PWM associée à différents tests inclus dans le programme et la fréquence demandée par le potentiomètre. Ce n'est pas la perfection mais ça y ressemble.100_6805

2.3 Le pont en H

C'est le modèle en figure 11-9 de la doc du PIC16F690. QA et QC sont les branches supérieures qui valident les impulsions MLI sur les branches inférieures QB et QD.
Le schéma est construit avec ces mêmes références et la chose la plus importante est de bien définir CCP1CON en accord avec les drivers IR2106 qui n'inversent pas, et la valeur de base est 0xCC.

J'avais pensé utiliser un IR2103 mais il aurait été nécessaire de modifier en conséquence CCP1CON, mais Riri a pu me procurer des IR2106.

La commande des MOSFET de la partie haute du pont se fait avec la technique du bootstrap à voir au § ci-dessous.

Inutile de préciser que le découplage des différentes tensions est important tant en protection du montage sous-jacent qu'en "remontée" de parasites vers d'autres circuits.

Au niveau des puissances en cause avec les MOSFET utilisés, la puissance dissipée reste faible et un radiateur de chaque côté du CI, non ventilé suffit très largement pour une commutation de 100W.

Comment générer la partie négative ? Simplement en modifiant au point zéro la commande du registre CCP1CON P1M1 de forward en reverse et réciproquement, ce qui inverse les branches du pont.

Les MOSFET_N utilisés sont de type SOIC8 et le radiateur est posé sur ceux-ci, côté cuivre. Une petite feuille de laiton côté composants a même été ajoutée par précaution et est utile. L'ensemble est tenu par une vis centrale, et les différences inéluctables de hauteur des boîtiers SOIC8 sont compensées par un plastique conducteur thermique "mou" comme on en trouve parfois sur des TO220.
Cette solution semble bien adaptée.

Les MOSFET utilisés sont de récupération, des A09N03 capables de piloter des courants de 50 A en continu à 25°C ou seulement 35 A à 100°. c'est plus qu'il n'en faut !!! Et je reste toujours très "bluffé" par ces courants dignes d'une centrale électrique, et dans de si petites pattes… Attention cependant à la puissance dissipée qui ne peut pas suivre, car bien que confortable elle reste à 50W à 25° (Watt = énergie en 1 seconde !!! c'est la clef du mystère)

N'oubliez pas de surcharger les pistes cuivre véhiculant de la puissance par de la soudure pour diminuer les pertes et les échauffements.

2.4 Le bootstrap
VARIATEUR0Droite
Je connaissais le bootstrap en informatique, mais pas concernant les ponts en H…
J'ai donc cherché un peu les tenants et aboutissants du sujet, et je me suis rendu compte que j'avais mal cerné l'ensemble du sujet.
En effet après avoir fait un essai de départ du condensateur ainsi nommé à 10 nF, j'avais lu quelque part une autre valeur avec 0.1 µF qui devait être assez grande pour charger la capacité de grille du MOSFET.
Cela est presque faux car la tension doit rester assez stable durant la demi-période sinus correspondante de 20 à 200 Hz.
Pourquoi ? Parce que cette branche haute du pont est une simple validation de branche des impulsions pour le MOSFET en diagonale basse. (Voir les signaux sur l'image ci-contre "logic analyser"  issue du simulateur MPLAB)
Aussi ce condensateur doit maintenir sa tension pour rendre bien conducteur ce MOSFET Supérieur et pour cela des capacités relativement grandes sont nécessaires pour permettre la validation du courant durant des millisecondes sur la branche supérieure du pont.

Je m'en suis rendu compte en essais aux fréquences très basses qui ne donnaient pas une belle sinusoïde, et le fait d'ajouter un condensateur en // sur ce condensateur de bootstrap a immédiatement rectifié la forme.

Un condensateur insuffisant peut avoir aussi le grave inconvénient de faire travailler les MOSFET supérieurs dans la zone linéaire des courbes et non dans la zone de résistance faible. Cela se traduit par un échauffement des MOSFET haut. (J'en ai grillé un !)

Ces condensateurs sont normalement isolés à la tension d'alimentation du pont, mais peut-on mettre des CMS sans aucune indication de tension ?
Alors j'ai fait des essais de claquage de CMS (genre céramique) et je n'ai pas trouvé de problème jusqu'à 70V ce qui me couvre suffisamment pour ce montage d'essai. Ceci est le cas des condensateurs de forte valeur comme les 10 µF céramique CMS utilisés.

Comme partout dans ces montages MLI , les spikes (impulsions parasites de quelques ns ou dizaines de de ns) traînent partout et j'ai préféré doubler avec des valeurs standard de 0.1µF qui anciennement étaient  mieux "adaptées" pour les fréquences élevées à cause d'une self parasite beaucoup plus faible.

2.5  Mes erreurs

Inutile de dire que ça a marché du premier coup, Ce serait FAUX… et j'ai eu beaucoup de mal à trouver les grandes erreurs dont une erreur monumentale d'inattention qui s'était glissée dans mon schéma.
J'avais raccordé par erreur les 2 pins 6 (VS) des IR2106 sur U2 sur le schéma, au lieu de laisser chaque Vs sur chaque côté de la charge.
Cette erreur de schéma s'est bien entendu propagée de fait sur la conception du circuit lui-même qui découle directement du schéma ! C'est une erreur idiote mais lourde de conséquences...!

La deuxième grande erreur a été d'avoir, à mon insu, utilisé des diodes zener CMS pour les diodes de bootstrap. Cela a concouru à ne pas saturer les MOSFET. Tout cela a pu participer, avec un faible condensateur de bootstrap, à un MOSFET grillé ? Là aussi ce n'est pas très malin !

A un instant donné j'ai même cru que les 2 IR2106 avaient grillé et je les ai démontés avec soin, puis testé en direct et je me suis aperçu que finalement ils avaient l'air parfaitement opérationnels, c'est ce qui m'a fait regarder de plus près les diodes en les démontant et en les testant cette fois en direct et inverse, avec une tension suffisante (Elles faisaient Vz à 6.2v environ !)
Difficile de différentier des diodes CMS vérifiés simplement au multimètre… Ça peut être aussi des zeners  !

La forme d'onde était meilleure à 200 Hz que plus bas, aussi cela m'a incité cette fois à voir si les condensateurs n'étaient pas en faute. Les essais ont donc été faits et c'est ainsi que le contexte a été bien compris, et que leur valeur a été largement augmentée.

2.6 Mes bons points

2.6.1 Les diverses protections

J'avais compris qu'avec des valeurs de période MLI de 6.8µs théoriques, les fréquences en cause sont génératrices de spikes un peu partout, aussi les deux selfs utilisées ont parfaitement rempli leur mission, associées à des condensateurs doublés eux aussi pour les fréquences élevées.
Les signaux MLI ne peuvent pas avoir de représentation visuelle tant c'est "illisible". Il est nécessaire pour voir quelque chose de placer des filtres passe bas pour intégrer les signaux (44K et 10 nF conviennent).

D'autre part j'avais prévu un strap d'alimentation du pont en H (Strap J4). Ce fait m'a permis d'éviter de griller des MOSFET, car outre l'identification initiale de la conduction simultanée d'une branche de pont, l'erreur de schéma s'était glissée et avait malheureusement suivi le chemin normal de vérification du circuit imprimé à partir du schéma.
En réalité ce strap était remplacé au départ par quelques ohms qui permirent de limiter a valeur des courants de court-circuit. Les pastilles du strap étaient très larges pour permettre le pont de soudure après essais.
(Ce strap peut aussi permettre de mesurer le courant)

Outre cela, lorsque l'on récupère des composants, on est à la merci de composants mal marqués ou parfois trompeurs. (Les éléments en pannes sont très rares). Ainsi j'ai utilisé pour les diodes de bootstrap des diodes zener sans le savoir.
En effet, bien que je teste toujours à l'ohmmètre je les ai vues comme des "vulgaris diodus" en bon état, mais des zéners s'étaient glissées dans la boite et impossible ainsi de les détecter, aussi la recherche du problème m'a obligé à démonter les IR2106, car j'ai longtemps cru qu'ils étaient morts.
Essayés individuellement et hors circuit, je les ai trouvés en état, aussi je me suis rabattu sur le test des diodes et des condensateurs.
Là, avec une alim haute tension, j'ai pu voir qu'il s'agissait de zener ou peut-être de "transils" ?
J'ai ensuite pris la décision de remonter les IR2106 et ils sont bien vivants, encore maintenant !

2.6.2 La résolution des pannes

Lorsque l'alim est au maxi et qu'elle débite dans le pont non protégé, il y a de la casse ! Le problème est de trouver où, sans trop de démontages.
Les résistances de gate ont du être démontées pour permettre le test des MOSFET… Ainsi on trouve facilement les courts-circuits (double sens sans les 0.2 ou 0.7 V d'une diode.)

Mais cela ne suffit pas à être sûr du fonctionnement des 4 MOSFET.
Pour tester un MOSFET j'utilise une méthode qui n'est pas de moi et qui fonctionne parfaitement.

Pour pouvoir l'utiliser, Il est impératif que la GATE SOIT LIBRE DE TOUT BRANCHEMENT et qu'elle soit sur un milieu parfaitement isolant (Epoxy accepté)
Avec un simple ohmmètre on place une charge entre gate et source. (La méthode a son importance face à la très grande isolation de la gate. Charge=bref contact)
Borne 1 ohmmètre sur la source puis un simple contact furtif avec l'autre borne sur la gate. LE MOSFET est soit conducteur à 0 soit bloqué suivant les bornes de l'ohmmètre  + ou – choisies pour la gate, mais aussi fonction du type de MOSFET N ou P.
Le test conduction ou bloqué se réalise bien entendu entre source et drain
Pour l'état bloqué, suivant le sens de test DRAIN/SOURCE il est possible de voir seulement 0.2 ou 0.7 V suivant les diodes internes de protection du MOSFET (dans le cas du blocage).

2.7 Contrôler la sinusoïde

Pas de mystère, si vous regarder entre masse et une des bornes moteur, ce n'est pas très joli !
Les résistances d'essais, lampes, transfo, moteur intègrent les signaux et pour les observer directement, voir comment faire ci-dessous….

100_68022.7.1 Avec Scope isolé

Pour cela il faut un scope avec masse isolée de la terre et regarder aux bornes moteur, mais plus exactement en utilisant un filtre passe bas sur la sortie moteur, et qui va restituer la valeur moyenne des impulsions de largeur variable. (Voir les signaux aux § précédents qui ont été captés ainsi)
Un filtre série 10nF 47K sur la sortie moteur, avec le scope aux bornes du condensateur devrait vous remplir de joie de voir ainsi une très belle sinusoïde.

Pour conjurer tout ce qui peut entraîner des problèmes à laisser ainsi des éléments "en l'air", j'ai ajouté une résistance R10 de 10K sur la sortie moteur, pour le cas où la sortie ne soit pas chargée.
Il me semble préférable que les potentiels soient stabilisés par ce biais, plutôt que de laisser des tensions à moitié flottantes.
Ces deux circuits peuvent être installés à demeure, mais principalement la résistance de 10K.

2.7.2 Avec scope double voie avec fonctions mathématiques

Il faut alors avoir un scope double voie et la fonction mathématique Voie1 moins Voie2 ou l'inverse pour pouvoir observer le signal de sortie.
Dans ce cas, 2 filtres passe bas identiques sont à ajouter sur chaque branche du connecteur moteur et à la masse cette fois.
Si vous n'avez que la fonction somme voie1+Voie2, alors vous aurez les 2 demi sinusoïdes du même côté.
Mais il faut aussi un oscillo 2 voies évidemment et c'est simplement un peu plus de complications, mais ça fonctionne aussi très bien.

100_68102.7.3 Avec scope une voie non isolé

Il faut dans ce cas mettre une résistance de 47K sur CHAQUE sortie moteur, de les réunir ensuite sur la borne d'un condensateur unique de 10 nF, avec l'autre borne du condo à la masse.
Dans ce cas il est seulement possible d'avoir les deux alternances de sinusoïdes l'une à côté de l'autre en partie négative, puisque cela revient à un additionneur, mais l'allure est tout à fait correcte (Sans cependant pouvoir différentier l'alternance, puisqu'elle sont toutes identiques)
La forme du signal réel est donc fausse, et il y a une composante continue de la moitié de la tension du pont avec de plus la fréquence double de la réalité.
Mais cela reste une façon simple d'apprécier la qualité de la fonction sinus, car il peut y avoir parfois des surprises !!!

2.8 La variation de fréquence

Celle-ci est réalisée par le potentiomètre dont la valeur est fortement intégrée par 470 µF pour éviter des variations trop rapides de fréquence qui déformeraient trop la sinusoïde en cours d'évolution.

3 Le logiciel

Il est issu de quelque projet antérieur et beaucoup d'éléments n'ont rien à voir avec cet essai. Pour ceux qui sont intéressés par cette application, je ne vais pas spécialement expurger tout ce qui ne sert à rien, mais seulement vous indiquer que le programme très court commence à "Programme proprement dit et START" et se termine sur la table des Sinus. (télécharger le fichier ASM  ESSAIS_ONDULEUR_MLI.ASM)

La table des sinus est calculée et générée directement sous OPEN_OFFICE CALC sous la forme de RETLW avec commentaire de la valeur angulaire.
Au vu de ce qui a été déjà expliqué, cette table est seulement élaborée et générée en 7 bits pour permettre les variations de fréquence prévues, pour les angles de 0 à 100 grades seulement.
Cette table est exprimée en grades pour des raisons de simplification. (100 gr=90° angulaires)
Cette table est copiée d'OPEN_OFFICE dans MPLAB Assembleur (CTRL+C, CTRL+V).
Un simple potentiomètre dont la tension est convertie avec une entrée ANA permet de modifier la fréquence du signal sinus en insérant seulement un délai plus ou moins long dans la boucle de chargement de CCPR1L.


4 Conclusions et Essais réalisés

Cet article n'est pas une réalisation à proprement parler mais un essai conforté par la mise au point d'une maquette réelle qui fonctionne. L'étape suivante sera peut-être de générer directement du 230 V~ (Dans une autre vie peut-être ?)
Cependant une très grande part du travail de recherche a été faite sur le simulateur MPLAB en utilisant le "logic analyser", ainsi on peut très facilement voir ce qui se passe au niveau des timings et des risques de court-circuit.
(Si vous n'avez pas l'habitude de cet outil très très utile, ou que vous le voyez en grisé, il faut dans le "setting du debugger" valider "TRACE". A partir de là, le "logic analyser" est accessible !

Je rappelle que dans le cas de pont en H le "dead time" normalement fourni par la fonction du PIC n'existe pas et que Microchip recommande d'avoir une commutation du signal MLI proche de zéro au point de croisement des branches. On a de la chance, car c'est rigoureusement le cas puisque la sinusoïde passe à zéro à ces instants ! Les IR2106 font aussi ce travail.

4.1 Essais résistifs

Pour ces essais j'ai utilisé pour commencer des résistances de puissance, mais c'est bien contraignant car on ne voit pas directement ce qui se passe et on n'a pas toutes valeurs, alors je me suis rabattu vers de vieilles ampoules de phare de voiture car la puissance est bien adaptée et 45 Watts ou 90 Watts (Phares + Codes) permettent d'avoir des charges correspondantes à l'électronique prévue.
Pour ces charges non négligeables de 90W, l'échauffement des MOSFET reste très discret et un simple radiateur posé sur le carré des MOSFET, avec une plaque de l'autre côté du CI assure la sécurité température des MOSFET.
Les fils d'alimentation trop fins sont un peu chauds bien entendu et pour la réalisation, il est important d'étamer et de charger en soudure tous les fils ayant de la puissance à véhiculer (Pont en H, self L1, C3, et depuis le connecteur J1 d'alimentation)
Avant de reprendre les essais avec transformateur qui m'avaient grillé un MOSFET, je vais déjà faire les photos d'accompagnement de l'article, on verra après …

4.2 Essais avec transformateur

Ces essais ont été faits avec un transformateur de 60VA ayant plusieurs enroulements dont un de 12V et un de 230V. Il a donc été branché à l'envers puisque le secondaire de 12V est devenu l'élément émettant l'énergie (primaire) et le secondaire le récepteur de 220V !

Les essais ont été faits avec une lampe à filament de 100W, une lampe LBC, un ventilateur (voir la vidéo).
Sans Titre


Contrairement au début, cette fois tout a bien fonctionné et rien n'a grillé.


Une question me vient à l'esprit côté électrotechnique, un tel montage peut-il délivrer du "réactif" au sens électrotechnique du terme, et si oui dans quelles proportions ?
J'avoue très humblement que je ne sais pas répondre, mais peut-être quelqu'un pourra-t-il éclairer ma lanterne ?
De plus, vu les courants demandés, j'avais continué à fonctionner avec mon alim 3A maxi qui est à genou à ces courants là, et je n'ai pas poussé avec une vraie batterie de voiture. Trop de bazar... mais je l'ai quand même fait !

Concernant les moteurs, on peut remarquer dans la vidéo prise avec le ventilateur qu'à partir d'une certaine fréquence, les moteurs "décrochent" et les variations de débit de pompe sur la vidéo de "iodure" pourraient peut-être provenir non pas de l'air aspiré (Qui engendre habituellement des coups de bélier un peu explosifs), mais bien peut-être de décrochages suite à des boucles programme et reprise de fréquence, car les temps sont très serrés...

Voici quelques oscillogrammes relevés avec un transformateur et un petit ventilateur 220V 50 Hz pour différentes fréquences...mais ça fait partie seulement des essais et ce n'est pas la réalité car des pièges non prévus se sont invités !!! Voir ci dessous les explications.

100_6826100_6827

Mais toutes ces aberrations c'est un peu du passé, car je viens de lever le doute et c'est mon alim en limitation permanente et j'ai tout de même fait l'effort de prendre une vraie batterie 12V capable de délivrer le courant nécessaire, et cette fois les pics ont complètement disparu sauf pour le transformateur (voir ci-dessous).

J'ai même pu vérifier un point sur lequel j'étais interrogatif, et qui est que le transformateur se comporte comme une self et que la sinusoïde est "malmenée" principalement avec le transformateur sans charge (à vide) ou avec une charge selfique comme un moteur asynchrone à spires de Fragger..

La majeure partie des pics avaient pour principale origine une tension 12V trop faible par la "mise à genou" de mon alim et j'ai levé le doute avec une simple lampe à incandescence de 100W sur le transformateur et là aussi les pics étaient présents précédemment, alors il ne restait plus que l'alim à incriminer...

Comme le V/F n'est pas traité, le transformateur répond mal aux fréquences très basses ce qui est normal, et même avec une charge de 100W résistive.

Par curiosité, j'ai regardé le courant dans l'alimentation avec transfo pour une lampe de 75W... J'ai placé le scope sur le fil de masse avec mesure de la tension à l'arrivée du montage. (Simples fils souples de 0.75)
Je perds déjà 0.4 V dans le fil de masse, c'est à dire autant pour le +, ce qui est un peu trop à mon sens et nécessiterait des fils plus gros, mais j'ajoute qu'il y a des spikes très fins de quelques volts et c'est tout de même surprenant qu'avec autant de bruit ça arrive à fonctionner sans problèmes. J'avais un prévu les protections pour ces spikes, mais est-ce suffisant ? car c'est assez incroyable.

Mais au fait j'ai fabriqué  du 12V alternatif pour allumer de simples ampoules de phares de voiture ! Alors branchez simplement l'ampoule sur la batterie ce sera mieux !
C'est la boutade, mais il y a une part de vrai dans cela, hormis que l'on peut obtenir du 230V ~ et que c'est surtout pour que je me fasse la main sur les ponts en H que j'ai réalisé ce montage, avec pour plus tard la pensée d'obtention de 230V ~ sans transformateur, mais voyez ci dessous cette dernière remarque...

Une dernière remarque... Les lampes 12V de phares de voiture fonctionnent avec une lumière un peu "faiblarde". C'est aussi le cas des lampes 230V~ sur le transfo... pourquoi ?
En effet c'est du 12V "continu crête crête" qui alimente lampe ou transformateur, or dans un fonctionnement normal de transformateur, on parle de 12 V efficaces. Le transformateur n'est donc pas alimenté normalement mais sous-alimenté dans le rapport 1.414.
Les lampes de phares sont aussi sous-alimentées en 12V alternatif.
Une valeur efficace, tension ou courant, est la valeur qui produit pendant le même temps la même quantité de chaleur qu'un courant continu. (C'est la surface de la courbe U *I). C'est donc normal que les lampes soient un peu plus faiblement éclairées, cqfd.

(Tout ceci est encore accentué par le fait que le 12V jusqu'au montage est un peu faible à cause des liaisons de trop petites sections).

bricolsec