Arduino (page 2)
Page publiée le : 12/10/2013
Le module en lui-même
Description du montage :
L’étude porte sur la génération d’un signal carré dans une gamme de 10 kHz à 50 kHz. Ce signal peut être haché par un autre signal carré dans une gamme inférieure à la moitié de la première fréquence utilisée.
Une platine Arduino Uno sera la base de ce mini générateur.
Le signal carré est disponible sur la broche D2. Pour modifier la fréquence de ce signal, un potentiomètre relié à l’entrée analogique A0 donne l’information qui est traitée logiciellement.
Le hachage intervient logiciellement sur le signal disponible en D2.
La fréquence de ce hachage est modifiable par un deuxième potentiomètre placé en A1.
La fréquence de ce hachage est modifiable par un deuxième potentiomètre placé en A1.
Le but :
Obtenir un signal double alternance haché comme sur la figure ci-dessous…
fig 1.
…afin de vérifier si le schéma suivant est viable pour le générateur HHO.
fig 2.
Le schéma du générateur :
Très simple, puisqu’il s’agit d’un module Arduino Uno comportant deux potentiomètres permettant de régler la fréquence principale et celle de son hachage.
fig 3.
Le signal haché (H) fourni en D3 n’est présent sur cette broche qu’à des fins de contrôle à l’oscillo.
Il n’est pas utile pour les essais avec le montage de la figure 2.
Le programme :
Pour simplifier les calculs, on part du principe que pour un volt à l’entrée analogique 0 nous aurons 10kHz : avec 2 volts 20 kHz, etc…
Pour l’entrée analogique 1, avec 1 volt on aura 1 kHz. Avec 2 volts 2 kHz etc…
Ceci nous amène à une possibilité de fréquence de travail pouvant varier de 0 à 50 kHz et pour le hachage de 0 à 5 kHz.
Dans les deux cas, les deux signaux seront symétriques.
Enfin la librairie « TimerOne.h » est nécessaire et peut être téléchargée ici ou plus directement là. Ce fichier Zip doit être décompressé avant utilisation.
Attention, selon les explications de la page :: Timer1 :: , cette librairie devrait être insérée dans le répertoire hardware/librairie du dossier de l’IDE.
En fait il faut l’insérer tout simplement dans la librairie de l’IDE.
Structure du programme
Il se décompose en 4 parties :
Les déclarations :
La fonction "setup()" :
La fonction "loop()" :
Enfin la fonction "timerIsr()"
Les essais :
Ils sont concluants, comme le montrent ces trois captures.
Il s’avère qu’il reste un défaut dans le programme.
Dès que la fréquence de travail est proche de celle du hachage, le système décroche.
Mais pour le cas qui nous intéresse, la fréquence de travail sera toujours au moins de 2 impulsions (en bleu) durant un créneau bas (en jaune) et le décrochage n’est donc pas un problème.
Il ne reste plus qu’à tester ce petit générateur sur le montage de la figure 2.
* * * * *
Mini générateur de signal carré haché.
Ce montage est dédié à une étude pour un générateur d'hydrogène, ou plus précisément de gaz HHO. Aussi il est très limité dans ses possibilités. Cependant certains y trouveront certainement une amorce pour d'autres applications.
#include <TimerOne.h>
#define fq 2 // sortie fréquence
#define ha 3 // sortie hachage (pour contrôle)
pinMode(fq, OUTPUT);
pinMode(ha, OUTPUT);
pulse = 0;
digitalWrite(ha, HIGH);
// lecture des entrées A0 et A1
v2 = analogRead(1) ; // valeur pour le hachage
v1 = analogRead(0) ; // valeur pour la fréquence
t2 = 10000000 / (v2 * 50) ;
Timer1.initialize(t2); // timer initialisé à t2
if ((abs(v2-v2p) > 10) || (abs(v1-v1p) > 5))
{
v1p = v1;
v2p = v2;
// calcul de la période pour F
t1 = 1000000 / (v1 * 50) ;
}
// attente top timer
while (pulse == 0)
{
Timer1.attachInterrupt(timerIsr); // lie la routine timer
}
digitalWrite(ha, LOW);
// attente top timer
while (pulse == 1)
{
// déclenche les impulsions à la fréquence F
digitalWrite(fq, HIGH);
delayMicroseconds(t1/2);
digitalWrite(fq, LOW);
delayMicroseconds(t1/2);
}
int pulse = 0;
int i ;
unsigned int t1, t2, nt, tp;
float v1, v2, v1p, v2p;
boolean quitte;
// autorise l'émission de la fréquence travail donnée en D2
pulse = 1 - pulse;
Fig 2.
Dans cette deuxième capture, la fréquence de travail est de 5.46 kHz pour un hachage de 366 Hz.
Le rapport cyclique reste proche de 50/50.
Fig 3.
Cette dernière capture montre le maximum atteint pour la fréquence de travail (en bleu) à savoir 38.7 kHz et 627 Hz pour le hachage.
Fig 1.
Cette première capture montre une fréquence de travail (en bleu) de 732 Hz et une fréquence de hachage de 366 Hz.
Le rapport cyclique est proche de 50/50 pour les deux signaux.
C’est ici le minimum atteint avant décrochage.