Boujour,
J'ai fait ce montage pour contrôler la vitesse d'un ventilateur 12v pour le moment je test avec un petit moteur DC en 5v, ça fonctionne mais je me demande bien quelle est l'utilité de la diode car en la supprimant le montage devrais fonctionner aussi non ?
Bonjour,
C'est une diode de roue libre. Elle empêche d'envoyer une tension inverse au transistor lors des commutations et de le détruire.
Elle est obligatoire avec les selfs, relais, moteurs ...
Merci.
Je suis une quiche en électronique est je serais curieux de comprendre ça, si vous pouviez me l'expliquer plus simplement ça serait super.
Cherche "diode de roue libre" sur internet tu trouveras une tonne d'explications.
OK autrement le montage est correct et sécurisant ?
Oui, c'est un montage classique qui fonctionne.
Pour le mosfet il faut prendre un mosfet 'logic level command' genre IRL540, IRLZ44 ... Ca dépend du courant dans le moteur.
Cool merci. En fait j'avais un l298n mais j'avais pas besoin du pont en h alors je cherchais un moyen de contrôler un ventilo 12v avec un circuit tout petit alors g fait ça.
C'est quoi comme mosfet?
A la place de l'IRF540, il aurait mieux valu prendre un IRL540 car l'IRF540 est un peu limite au point de vue tension de commande.
Ca fonctionne car le courant tiré par ton ventilateur ne doit pas être très élevé.
Cool. Ça Marche nikel en 12v il démarre même avec une valeur de 40 sur 255. Reste plus qu'à trouver un moyen de recup les données du fil jaune et ça sera pas mal.
Par contre j'ai testé avec une valeur de 300 et ça tourne doucement, ça veut dire quoi ? Ça correspond à 45?
Je trouve pas dinfo sur la façon de recup et traiter les données du tachymètre du ventilateur.
Cowenbiz:
Je trouve pas dinfo sur la façon de recup et traiter les données du tachymètre du ventilateur.
Bonsoir
Pour les ventilos 3 fils "PC" le fil jaune est "normalement" une sortie en collecteur ouvert
Je comprend pas...
Ca veut dire qu'il faut que tu mettes une résistance (~10k entre la sortie et le +5V)
Ou encore mieux tu peux utiliser INPUT_PULLUP.
Ça ressemblerais à ça ? Non
Code: [Select]
/***************************************/
// FAN SPEED Arduino
// Benoît ROUSSEAU juillet 2006
// - Mesure de la vitesse de rotation d'un
// ventillateur de CPU sous interruption.
/***************************************/
// variables et définitions
#define INT_0_PIN 2
#define EXTINT_LEVEL_LOW 0x00 // déclenchement sur niveau bas
#define EXTINT_EDGE_ANY 0x01 // déclenchement sur tous fronts (montants et descendants)
#define EXTINT_EDGE_FALLING 0x02 // déclenchement sur front descendant
#define EXTINT_EDGE_RISING 0x03 // déclenchement sur front montant
#define sbi(PORT,BIT) PORT|=_BV(BIT) // macro pratique pour mettre un bit x à 1 (Set Bit In)
unsigned int NbTopsVentilateur; // compteur du nombre de tops ventilateur comptés
unsigned int TopsVentilateurComptes; // nombre de tops ventilateur comptés
/***************************************/
// Fonction appelée à chaque
// déclenchement de l'interruption 0
/***************************************/
SIGNAL(SIG_INTERRUPT0)
{
NbTopsVentilateur++; // un top de plus
}
/***************************************/
// iniInt0
/***************************************/
// Init. interrupt 0
/****************************************/
void initInt0 (byte config)
{
sbi(GICR, INT0); //
sbi(GIFR, INT0); //
MCUCR &= ~((1<<ISC01) | (1<<ISC00)); // raz
MCUCR |= config; //
}
/***************************************/
void setup()
{
pinMode(INT_0_PIN, INPUT);
Serial.begin(9600);
initInt0 (EXTINT_EDGE_RISING);
};
void loop ()
{
NbTopsVentilateur = 0;
delay (1000);
MeasuredTopsFan = NbTopsVentilateur;
Serial.print (MeasuredTopsFan * 60, DEC);
Serial.print (" rpm");
Serial.print (13, BYTE);
}
Il faut que tu mettes l'entrée en INPUT_PULLUP.
Plutôt que de manipuler directement les registres, tu aurais pu utiliser attachInterrupt() qui simplifie les choses.
Ça me dépasse tout ça. C'est si compliqué que ça de recup les rpm de ce ventilateur ?
Ton programme le calcule: MeasuredTopsFan * 60
OK bon je vais tester ce bout de code que g trouvé. Merci