je dispose d'une carte ARDUINO UNO R3 et je cherche à réaliser un convertisseur 12V - 220V/50Hz.
Afin de simplifier l'électronique de puissance située en aval, il faut que j'utilise 2 sorties de la carte :
---> la sortie 1 gère la 1ère demi-période (0 - 180°),
---> la sortie 2 gère la 2ème demi-période (180 - 360°).
La période totale de la séquence complète est très exactement de 20mS (50Hz).
En gros, les états des signaux sur les 2 sorties doivent être les suivants (par exemple) :
-> sur S1 : 000001110001100000000001100011100000
-> sur S2 : 000001110001100000000001100011100000
<-------------------------------------------- 20mS ------------------------------------------>
La durée des différents états (ainsi que leur nombre) sur chacune des 2 sorties seront déterminés par le programme Arduino. Il faut juste que "tout ça" tienne dans les 20mS (50Hz).
Dans mon cas je ne peux pas utiliser la fonction PWM car les signaux ne sont pas réguliers et les fonctions delay() ou delayMicroseconds () ne permettent pas d'obtenir assez de précision...
En fait, pour avoir de la précision sur les durées, je pense devoir utiliser les Timers du µC mais j'ai du mal à comprendre leur fonctionnement et comment intégrer tout ça dans mon programme...
Mon programme devra aussi gérer indépendamment toutes les sécurités dans la boucle void loop().
Bizarre que tu ne puisses pas satisfaire ta demande avec un delayMicroseconds() :o en 20 ms ça fait quand même 20 000 changement d'états possibles ... Sinon gaffe déjà, les digitalWrite() sont longs et prennent plusieurs cycles. Il y a une librairie (fastdigital de mémoire) qui est bien plus rapide. Et si jamais c'est trop long encore tu peux manipuler les ports directement : Arduino Reference - Arduino Reference
darvador:
... les fonctions delay() ou delayMicroseconds () ne permettent pas d'obtenir assez de précision...
bonjour
en gros tu veux gérer du "pur sinus" en jouant sur l'etat de deux sorties pour reconstituer la pseudo sinusoïde
si j'en crois ton exemple
En gros, les états des signaux sur les 2 sorties doivent être les suivants (par exemple) :
-> sur S1 : 000001110001100000000001100011100000
-> sur S2 : 000001110001100000000001100011100000
tu a 72 états de S1 S2 à appliquer par 20 ms ? , tu veux gerer la phase du sinus sur une precision de 5° ? (360/72)
la fonction micros sur un uno est d'une resolution de 4µs , c'est largement suffisant en precision pour gerer un pseudo sinus de periode 20 ms
la plupart des convertisseurs/onduleurs dit "pur sinus" fonctionnent avec des dac dont la profondeur pour un cycle complet depasse rarement 16, 8 etant souvent un bon compromis
Certains on fait des mesures et ils annoncent une bonne qualité de sinus. Ce qui est important pour certaines charges qui supportent mal les harmoniques dans le signal. Les harmoniques sont de plus la cause de pertes dans le transformateur et donc nuisent au rendement de l'ensemble.