signal carré

bonjour tout le monde,j ai besoin de sortir un signal carré 5v-0v-5v-0v donc les periodes sont identique

est ce que la fonction tone le permet?

Bonjour
Voir cette description de la fonction tone() en français

En dehors des fonctions arduino, simples d'emploi mais très restrictives, si tu as une carte basée sur un atmega tu peux utiliser un timer en mode CTC.
Le choix de la fréquence sera beaucoup plus fin.
Le démarage et l'arrêt du signal sera nettement plus bref et propre.
Lecture de la datasheet du micro et utilisation des registres obligatoire.

alors l utilisation va etre hyper basic

je sors sur un tip 122

afin de commuté du 5v en 12v

ensuite j alimente un electro aimant, l idée etant de faire vibrer un objet metallique

ça c est pour le cas d utilisation d'un 12vdc

sinon premier test que j vais faire c est avec un 12vac et une diode

Un 12V AC ne te donnera pas un 12V continu.
Fait des recherches sur "redressement simple alternance" et aussi double alternance.

En alternatif la tension indiquée est la tension efficace et pas la tension de crête de la sinusoïde.
Le continu est obtenu en ne gardant qu'une alternance ou les deux en redressant l'alternance négative.
La valeur de la tension continue obtenue après filtrage est la valeur moyenne de ces morceaux de sinusoïde.

Veff = Vcrete/racine(2)
Vmoy = Vcrete/PI en simplz alternance et le double en double alternance.

non 12vac avec diode va donné un signal sinusoidale entre 0 et 12, et un signal a 0 entre 0 et -12

ça fait un faux carré

je test deja ça, ensuite je complexifie un peu avec l arduino le tip122 et le tone

voila j ai preparer mon programme pour 2 version

la premiere sortie digital alimente un simple moteur a balourd en 5v ON/OFF

la seconde sortie analogique envoi un tone donc une periode haute 5v et une periode 0v de meme durée, à une frequence determiné par un potard

mais j aimerais preparer une 3eme version, mais la je ne sais pas trop comment m y prendre, tout en faisant quelque chose de non bloquant

determiner moi meme le temps haut, et le temps bas, je crois que la fonction pulse collerais, mais je ne vois pas trop comment l enchainer sans bloquer le reste du code

non 12vac avec diode va donné un signal sinusoidale entre 0 et 12, et un signal a 0 entre 0 et -12

Non.
L'équation du signal "EDF" est V= Vcrêtesin(2PI50t)
Et Vcrète = Veff*racine(2).

Donc en 230V alternatif la tension de crête est égale à 325 V
Après transformateur abaisseur le rapport Vcrête/Vefficace reste le même.

Si tu fais un détecteur crête, c'est à dire que tu ne tires aucun micro ampère sur le signal redressé dans ce cas la tension sera égale à 12Veff * racine(2) = 17V.

Si tu tire de la puissance tu aura après filtrage :
Vmoy = Vcrête/PI ou 2*Vcrête/PI selon que le redressement est simple alternance ou double alternance.

Simple alternance 5,40 V= (filtrage : 50Hz)
double alternance 10,8 V= (filtrage : 100 Hz)
Auxquels il faudra retirer la tension aux bornes des diodes
Transformateur à point milieu au secondaire : 1 Vd soit 0,8V
Transformateur sans point milieu et Pont de Graetz : 2Vd soit 1,6V

Si tu fais quelque chose de bâtard entre vrai détecteur crête et vrai filtrage tu aura quelque chose entre 17 V= et 5,4V= (ou 10,8V=) qui dépendra du courant consommé.

ça y est tu m a largué....

Il faut bien comprendre la notion de tension "efficace".
En continu une tension de 1V appliquée à une résistance de 1 ohms donnera naissance à un courant de 1 A ce qui donnera une puissance de 1 W.

Au début de l'étude des courants alternatifs les découvreurs de l'époque ont cherché à raccrocher les effets du signal alternatif, en fait signal sinusoïdal , à ceux du courant continu qu'ils connaissaient déjà bien.
Ils ont cherché une valeur qui aurait la même "efficacité" que la valeur continue.

Il ont choisi comme point commun la puissance dans une résistance.

Et ils ont trouvé (le calcul est une "simple" intégrale) que la valeur "équivalente" de la tension sinusoïdale qui donnerait 1W dans une résistance de 1 ohms vaut Vcrête/racine(2).

EDF te fait payer de l'énergie et l'énergie c'est de la puissance multipliée par un temps, d'où les kilowatts multipliés par des heures. Donc la valeur communément admise dans la distribution de l'électricité est la valeur efficace.
PS : les kWh sont une unité d'épicier, l'unité officielle est le joule qui vaut 1W pendant 1 seconde.

C'est important de bien faire la distinction entre les deux notions.
Si tu conçois une alimentation le transformateur que tu va connecter sur le 230V EDF devra être capable de tenir plus de ± 325V car c'est les valeurs max de tension qu'il verra en permanence.

Bonjour,

vtec35:
bonjour tout le monde,j ai besoin de sortir un signal carré 5v-0v-5v-0v donc les periodes sont identique
est ce que la fonction tone le permet?

Oui, si tu n'es pas trop regardant sur la résolution. De plus la fonction tone a du jitter.

vtec35:
mais j aimerais preparer une 3eme version, mais la je ne sais pas trop comment m y prendre, tout en faisant quelque chose de non bloquant
determiner moi meme le temps haut, et le temps bas, je crois que la fonction pulse collerais, mais je ne vois pas trop comment l enchainer sans bloquer le reste du code

La fonction pulse permet de mesurer la durée d'une impulsion et non de la générer.

Tu peux trouver un exemple ici.
Attention, le programme donné est pour une carte mega, pour une uno il faut outputPin = 9

Si tu nous disais ce que tu veux faire et quel est ton cahier des charges pour les limites de fréquence et résolution, il serait plus facile de t'aider.

en fait je suis en train de fabriquer un "vibreur" electro magnetique a partir d'un electro aimant en 12vdc qui a une force de 60kg, a defaut de ne pas avoir trouver de "bobine" en 220v

l'idée est de le faire aimanter, desaimanter, aimanter, desaimanter

donc pour ça je dois l alimenter, ne plus l alimenter, l alimenter, etc...

on me dit que y a de grande chance que cela ne marche pas, je souhaite donc faire mes 4 essais, avant de conclure que cela ne marche pas et du coup chercher une bobine en 220v a demonter qq part

pour les limite des bornes, en fait j en sais rien ça va être du tatonnage

je suis en train de faire un chassis a lamelle pour eviter que la piece ne se colle à l aimant

on peut tres bien faire un bout de programme avec les variables en tete, comme ça c est simple à modifier

voila deja mon code pour les 3 premiers tests:

# define entree_analogique A1
# define entree_gavage  5
# define sortie_gavage  6
# define sortie_analogique_gavage A2
# define sortie_analogique_gavage optimisé A3


unsigned long tempsgavage =2000;
unsigned long timergavage =0;
int detectiongavage =0;
bool premier_remplissage = false;
int debut_timer_gavage = 0;
int frequence = 0;

void calcul_frequence()
{
  frequence = analogRead(entree_analogique);
}
void etat_entree()
{
 if (digitalRead (entree_gavage) == LOW)
 {
  detectiongavage = 1;
  //Serial.println("detectiongavage = 1");
 }
 else
 {
  detectiongavage = 0;
  //Serial.println("detectiongavage = 0");
 }
}
void timer_gavage()
{
  if (debut_timer_gavage != 1)
  timergavage = millis() + tempsgavage;
  if (debut_timer_gavage == 1 && millis() > timergavage)
  {
    digitalWrite(sortie_gavage,HIGH);  //activation de la sortie avec un decalage de 20000ms
    tone ( sortie_analogique_gavage,frequence);
    debut_timer_gavage = 2 ;
  }
}
void gavage()
{

  //Serial.println("debut_timer_gavage=");
//Serial.println(debut_timer_gavage);
 //Serial.println("detectiongavage=");
//Serial.println(detectiongavage);
 Serial.println("premier_remplissage=");
Serial.println(premier_remplissage);

  if (premier_remplissage == true)
  {
    if (detectiongavage == 0)
    {
     digitalWrite(sortie_gavage,HIGH);
     tone ( sortie_analogique_gavage,frequence);
    }
   else
    {
    digitalWrite(sortie_gavage,LOW);
    noTone(sortie_analogique_gavage);
    premier_remplissage = false ; 
    }
  }
  else
  {
       if (detectiongavage == 0 && debut_timer_gavage == 0)
       {
         debut_timer_gavage = 1;
         Serial.println("debut_timer_gavage = 1");
        }
       else if (detectiongavage == 1 && debut_timer_gavage==2)
       {
         digitalWrite(sortie_gavage,LOW);
        noTone(sortie_analogique_gavage);
         debut_timer_gavage =0;
       } 
  }

  
}



void setup() 
{
  // put your setup code here, to run once:


  pinMode (entree_gavage, INPUT);
  pinMode (sortie_gavage, OUTPUT);
  digitalWrite (sortie_gavage,LOW);

  premier_remplissage = true;
  Serial.begin(115200);
  

}

void loop() {
  // put your main code here, to run repeatedly:
  etat_entree();
  timer_gavage();
  gavage();
  calcul_frequence();

}

Dans ce cas, je pense que la fonction tone() est effectivement largement suffisante pour les premiers essais.

Caractéristiques de la bobine ? 12V alternatif ou continu, résistance de la bobine, etc, donnes la datasheet !
il faut encore arracher les infos une par une, voir -> Règles du forum francophone..

Si la bobine est 12V= je ne vois pas à quoi servira la fonction tone..

Fais un schéma de ton installation telle que tu l'as prévoi AVEC tous les renseignements pour y voir plus clair : nous et surtout toi.
Papier stylo sans oublier la règle pour tirer les traits et scan ou photo.

"Si la bobine est 12V= je ne vois pas à quoi servira la fonction tone.."
Je crois que le montage est le suivant:
arduino + fonction tone -> transistor de puissance -> bobine (et diode de protection)
Et qu'il veut faire des essais d'alimentation de la bobine par des impulsions

voici l electro aimant

oui je veux essayer de l alimenter par impulsion

je retourne a mes essais

Tu fais rien pour simplifier : tu ne peux pas faire un lien cliquable ?

Là sur tablette je n'envisage même pas de faire du copier coller.
On verra ce soir sur un vrai PC.

désolé je pensais que ça se fesait automatiquement

Et bien non, en tout cas merci d'avoir vite rectifié.

Comme d'habitude la documentation Amazon est indigente.

Pour commander la bobine il va obligatoirement falloir connaître sa résistance pour en déduire le courant qui passe quand on lui applique 12V= ce qui permettra de déterminer l'interface de puissance entre le microcontroleur et l'électroaimant.
Si tu as un multimètre c'est le moment de t'en servir, si tu n'en a pas va en acheter un en grande surface de bricolage il te sera toujours utile.

A priori le système est prévu pour rester sous tension en permanence donc le courant devrait être faible.

Un peu de doc (très simplifiée) pour comprendre :
Ce qui intervient c'est le champs magnétique dont le symbole est B.
Le champ magnétique se déduit du champ électrique (H) en multipliant H par quelques constantes physiques :
B = k.H
Et le champ électrique H est égal au nombre de spire multiplié par le courant : H = nI.

Et c'est là que cela devient intéressant : comment fait-on le bobinage ?
Questions sous susjacentes :

  • comment choisir le bon couple nombre de spires/Courant consommé
  • quel diamètre de fil utilise-t-on ?

Si on prend du fil de gros diamètre on n'aura pas la place pour mettre beaucoup de spire mais la résistance du fil sera faible et le courant élevé.
Si on prend du fil de faible diamètre on aura la place de mettre beaucoup de spires mais dans ce cas la résistance du fil va augmenter et le courant diminuer.

Pour un modèle d'électroaimant avec des dimensions mécaniques fixe, qui fonctionne avec un champ électrique dont la valeur est imposée par les dimensions mécaniques, on peut en jouant sur le diamètre du fil travailler à champ électrique constant et faire des bobines qui fonctionnent sous différente tension d'alimentation.

La réponse qu'il nous manque est : Qu'elle est la valeur de la résistance de cette bobine ?

Pour la discussion sur la valeur de la tension redressée au vu de ton application ce n'est pas important, tu aura juste un peu moins de champ magnétique mais comme tu ne connais pas la valeur du champ sous 12 V cela ne changera pas grand chose.

Question subsidiaire :
Ne chercherais tu pas à démagnétiser des pièces ?

en fait je veux juste faire un vibreur comme celui ci

mais pour le moment le test avec un simple electro aimant de 60kg en 12vdc n est pas concluant