Go Down

Topic: creer un signal alternatif à 50 Hz avec arduino (Read 5704 times) previous topic - next topic

lafwan

Bonjour tout le monde,
je cherche à créer un signal alternatif à 50 Hz avec arduino ou je peut modifier sa valeur efficace. le but est de l'injecter dans un relais de protection alternatif (10 VA). ce signal represnte un courant alternatif qui sera par la suite amplifié (0à 10 A) avant d'être injecté dans le relais. je me demande si avec arduino on peut creer un bon signal alternatif? et si on peut injecter dans l'arduino un petit courant alternatif ( moins de 40 mA ~)?
merci d'avance pour vos réponses
bonne journée

B@tto

Si tu cherches à faire une vraie sinusoide tu ne pourras pas, l'arduino ne génère que des alternances carré. Après pas question non plus de descendre dans les négatifs (en entrée comme en sortie) directement, il faudra une interface.
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

68tjs

Pourquoi pas mais c'est pas simple !

Génération du signal sinusoîdal :
Tu aura besoin d'un convertisseur numérique/analogique. Renseigne-toi sur les schémas existants. Cela va des circuits intégrés spécialisés aux simples réseaux de résistance R/2R (moins chers mais moins efficaces).

Principe :
1) tu fixe le nombre de bits pour le convertisseur
2)Tu découpes la période de 50Hz en tranches et pour chaque tranche tu calcule l'état pour chacun des bits que tu envoie dans le CNA.
3)Pour avoir un signal centré sur 0V il suffit d'utiliser un condensateur en série à la sortie du CNA (attention au choix il doit être de forte valeur pour présenter une impédance faible devant celle de la charge Zcapa= 1/(2*PI*F*C) ) sinon tu créé une atténuation.


Calcul du pas des tranches:
Limite due à la vitesse d'écriture sur une pin
J'ai fait la mesure il y a quelque temps, avec la fonctions digitalWrite()  on trouve 6,25µs avec une horloge à 16 MHz soit 100 cycles d'horloge. Ce qui veut dire qu'au maximum, en ne prenant pas en compte les temps de calcul tu pourra définir 20ms/6,25µs =3200 pas ce qui est supérieur au minimum raisonnable, il te restera du temps pour faire des calculs. Et si tu veux aller encore plus vite tu peux écrire directement dans les registres  tu devrais passer à seulement une dizaine de cycles d'horloge.

Réponse aux questions :
Injecter un "petit" courant "alternatif" dans l'ATMegaXXXX :
Il faut absolument que tu lises la datasheet qui correspond au micro de ta carte arduino (les spec utiles et fiables ne sont pas chez Arduino mais chez Atmell) et en particulier dans les "Electrical Characteristics" bien lire les valeurs des signaux maximum admissibles par rapport aux valeurs des alimentations (Vcc ET GND)

Alternatif centré sur 0V : c'est NON
Petit = 40mA c'est NON si tu tiens à ton micro, 20mA continu c'est garanti par Atmell, 40mA ce n'est pas garanti en permanence, seulement sur de brèves périodes, ça peut tenir ou ça peut cramer, utiliser 40 mA en permanence ce fait a tes risques et périls.

Variation de la valeur efficace :
Je n'ai pas personnellement de solution logicielle, je sais qu'il existe des potentiomètres a commande numérique qui se programment en I2C je crois.

fdufnews


68tjs

Je n'ai pas lu en détail mais dans l'exemple les filtres sont donnés pour une fréquence de 16 kHz !

Attention à 50Hz ça va être aussi "facile", la règle de 3 risque d'être douloureuse.

fdufnews

#5
Apr 04, 2012, 09:06 am Last Edit: Apr 04, 2012, 09:11 am by fdufnews Reason: 1

Je n'ai pas lu en détail mais dans l'exemple les filtres sont donnés pour une fréquence de 16 kHz !

Attention à 50Hz ça va être aussi "facile", la règle de 3 risque d'être douloureuse.

Le filtre rejette la fréquence du synthétiseur (la fréquence à laquelle on met à jour la sortie) et non pas la fréquence synthétisée.
Le DDS avance à 32KHz, le define en début du code, et donc on coupe à 16KHz.

La limitation de ce synthétiseur c'est les 256 pas pour construire le sinus. Il peut y avoir des marches d'escalier. Voir si cela te dérange ou pas dans ton application.
Il y aurait un moyen pour améliorer cela, dans la mesure ou tu veux générer une fréquence assez basse. Ce serait de stocker non pas une période mais seulement une demi période et de gérer le signe par logiciel donc tu doublerais la résolution ce qui limiterait partiellement l'effet marche d'escalier.

lafwan

Bonjour,
je vous remercie beaucoup pour vos réponses, merci 68tjs pour les détails ;)
en fait, l'objectif souhaité est le suivant: j'ai un relais  qui est associé à un disjoncteur, le relais donne l'ordre de déclechement au disjoncteur, pour vérifier le bon fonctionnement du relais de protection, je dois simuler des courants alternatifs que j'injecte aux entrées du relais et voir si le disjoncteur déclenche.
par exemple, si le disjoncteur est réglé à 3*In (et que In= 1 A), donc 3A, je dois injecter des courants de 2.8 A, 2.9 A, 3 A, 3.1 A; et donc normalemnt à un courant > 3 A, le relais doit donner l'ordre de déclenchemnt.
avec l'arduino je comptais créer ce courant alternatif et l'amplifier avant de l'injecter dans le relais.
aprés amplification je compte le mesurer et le diminuer (avec un TI , un transformateur réducteur de courant) et de le réinjecter sur l'arduino pour voir l'image de ce que j'injectais réellement.
ce signal que je veux créer ne doit pas avoir de marche d'escalier et je dois pouvoir le moduler. mantenant d'aprés vos réponses cela risque d'être compliqué, le fait que je ne puisse pas injecter un courant de 40mA sur la carte arduino et de ne pas pouvoir le moduler le courant créer me complique plus la tâche ]:D
je crois que je dois voir une autre alternative de solution que l'arduino.
vos conseils et si vous avez des pistes seront les bienvenues.
je vous remercie d'avance

Bonne journée

68tjs

N'est-tu pas trop exigent avec le disjoncteur : ne pas déclencher à 3,0 A et déclencher à 3,1 A cela fait du 3% de précision.
Quelle est la précision des disjoncteurs du commerce ?

Sinon pour créer les différents courants j'ai pensé à la solution de passer par des relais secondaires .

Quatre courants cela fait un relais secondaire de commande générale,  Quatre résistances en séries pour les quatre courants différents et trois relais secondaires pour court-circuiter les résistances et choisir le courant.
Et là tu aurai un vrai 50Hz garanti par EDF.

----/----R1-|---R2---|---R3--|----R4--|-----
                 |----/----|--/-----|---/----|
    K1               K2         K3        K4

K1 relais secondaire principal
K2 , K3, K4 : relais secondaires annexes
Avec un arduino il est parfaitement possible de commander un relais, il existe même des cartes d'extension (shield) spécialisées.

Là où ça se gâte :
I= 3,1 A  R = 230/3,1 = 74,19 Ohms -> R1 = 74,19 Ohms   P= 712 W  =(
I= 3,0 A  R = 230/3,0 = 76,66 Ohms -> R2 = 2,473 Ohms   P=  22 W
I= 2,9 A  R = 230/2,9 = 79,31 Ohms -> R3 = 2,643 Ohms   P = 22 W
I= 2,8 A  R = 230/2,8 = 82,14 Ohms -> R4 = 2,832 Ohms   P = 22 W

Les puissances sont très élevées mais quelque soit la solution que tu adoptera 3 A cela implique de la puissance (P=UI -> 230*3 = 690 W).
Les puissances interdisent l'usage de potentiomètres, il reste les associations parallèle/série.
Et une inconnue la précision du voltage du réseau EDF : c'est au mieux du 5% voire 10%.


Artouste


N'est-tu pas trop exigent avec le disjoncteur : ne pas déclencher à 3,0 A et déclencher à 3,1 A cela fait du 3% de précision.
Quelle est la précision des disjoncteurs du commerce ?

Sinon pour créer les différents courants j'ai pensé à la solution de passer par des relais secondaires .

Quatre courants cela fait un relais secondaire de commande générale,  Quatre résistances en séries pour les quatre courants différents et trois relais secondaires pour court-circuiter les résistances et choisir le courant.
Et là tu aurai un vrai 50Hz garanti par EDF.

----/----R1-|---R2---|---R3--|----R4--|-----
                 |----/----|--/-----|---/----|
    K1               K2         K3        K4

K1 relais secondaire principal
K2 , K3, K4 : relais secondaires annexes
Avec un arduino il est parfaitement possible de commander un relais, il existe même des cartes d'extension (shield) spécialisées.

Là où ça se gâte :
I= 3,1 A  R = 230/3,1 = 74,19 Ohms -> R1 = 74,19 Ohms   P= 712 W  =(
I= 3,0 A  R = 230/3,0 = 76,66 Ohms -> R2 = 2,473 Ohms   P=  22 W
I= 2,9 A  R = 230/2,9 = 79,31 Ohms -> R3 = 2,643 Ohms   P = 22 W
I= 2,8 A  R = 230/2,8 = 82,14 Ohms -> R4 = 2,832 Ohms   P = 22 W

Les puissances sont très élevées mais quelque soit la solution que tu adoptera 3 A cela implique de la puissance (P=UI -> 230*3 = 690 W).
Les puissances interdisent l'usage de potentiomètres, il reste les associations parallèle/série.
Et une inconnue la précision du voltage du réseau EDF : c'est au mieux du 5% voire 10%.



bonjour
en dehors de la precision intrinseque qui n'est effectivement pas tres elevée (tolerance du reseau)
pour la consommation je partirais sur des simples lampes halogenes , ça ne coute pas tres cher et on trouve facilement des puissances de
500 200 150 100 50 20 W , en choisssant bien les valeurs et commutations , ça peut faire un bon banc de charge.

J'utilise une 500W en serie en amont d'une prise femelle sur laquelle je connecte toujours la première fois des équipements dont je ne connais pas l'etat : si court-circuit c'est plein feu et rien ne saute , si l'etape passe : la luminosité est fonction de la consommation (mais ne pas insister)


fdufnews

Quote
ce signal que je veux créer ne doit pas avoir de marche d'escalier

Il y a marche et marche. Si tu regardes sur le lien que je t'ai donné, le spectre du signal est propre avec les fréquences non désirées inférieures à 50dB.

Quote
je dois pouvoir le moduler

C'est un des avantages de la synthèse de fréquence on peut facilement moduler le signal en fréquence et en phase. Le système fonctionne par accumulation, la modulation c'est donc une variation de l'incrément.

Quote
le fait que je ne puisse pas injecter un courant de 40mA sur la carte arduino

Je ne vois pas ce qui t'empêche de le faire. Simplement il faut convertir ce courant en tension, car l'arduino ne sait pas mesurer un courant.

Go Up