Bonjour, j'ai acheté il y a quelques jours une carte Arduino UNO, je souhaite réaliser un interface PC qui permet de controler des ventilateurs et d'afficher des températures.
Ayant des connaissances en programmation, j'ai déjà fais l'interface PC + la communication entre le PC et l'arduino, cependant je n'es très peu de connaissance en éléctronique, et je souhaiterais donc savoir comment gérer la vitesse de ce ventilateur depuis la carte arduino, je pense utiliser la fonctionnalité PWM, cependant je ne sais pas comment crée le driver du ventilateur permettant de faire une vitesse variable et surtout d'alimenter le moteur en 12v (j'ai le 12v depuis une source externe).
PS: Les 4pins correspondent au +12/GND/(Vitesse moteur?)/PWM
PS2: Je dispose du starter kit et de quelques composants.
Ah merci ! Cependant si j'alimente le GND et le +12v le moteur tourne, si j'ajoute le PWM ça le regulera automatiquement ?
Pour le moment j'ai fais un petit montage pour moteur DC avec une resistance un transistor et une diode ça marche pas mal cependant je pense que cette méthode est pas adapté pour ce type de moteur.
ProgramFiles:
Ah merci ! Cependant si j'alimente le GND et le +12v le moteur tourne, si j'ajoute le PWM ça le regulera automatiquement ?
Pour le moment j'ai fais un petit montage pour moteur DC avec une resistance un transistor et une diode ça marche pas mal cependant je pense que cette méthode est pas adapté pour ce type de moteur.
Oui ça devrait réguler la vitesse dés que tu appliqueras le signal PWM (niveau logique TTL 0/5v, tu n'as aucun composants à ajouter).
Regarde le code d'exemple cité plus haut et le pdf, il te donnera toute les info dont tu as besoin
void setup()
{
// configure hardware timer2 to generate a fast PWM on OC2B (Arduino digital pin 3)
// set pin high on overflow, clear on compare match with OCR2B
TCCR2A = 0x23;
TCCR2B = 0x0C; // select timer2 clock as 16 MHz I/O clock / 64 = 250 kHz
OCR2A = 249; // top/overflow value is 249 => produces a 1000 Hz PWM
pinMode(3, OUTPUT); // enable the PWM output (you now have a PWM signal on digital pin 3)
OCR2B = 125; // set the PWM to 50% duty cycle
}
Cependant à la valeur 0
OCR2B = 0;
Le moteur tourne toujours à petite vitesse, c'est une sécurité permettant d'eviter d'augmenter trop l'intensité ?
Si je souhaite quand même le couper je dois obligatoirement utiliser un transistor sur le circuit 12v ?
Je m'attaque à l'affichage de la vitesse maintenant.
PS: Pourrais-je avoir quelques explications sur les variables/constante ? TCCR2A, TCCR2B, OCR2A et OCR2B ? J'ai pas vu ça dans la doc.
ProgramFiles:
PS: Pourrais-je avoir quelques explications sur les variables/constante ? TCCR2A, TCCR2B, OCR2A et OCR2B ? J'ai pas vu ça dans la doc.
Merci.
il faut fouiller dans le datasheet : timer2 / registers description. Les TCCR2X servent à configurer le timer, OCR2X sont les registres de valeur PWM A et B. Si tu arrives à déchiffrer le datasheet, tu vas devenir un kador du timer! Mais c'est long...
Ou puis-je download ce datasheet ?
Sinon, pour la vitesse j'obtiens des valeurs d'environ 4000/5000rpm pour la vitesse minimum et +12000 pour la vitesse max, ça m'a l'air correct.
[HS]Le threading fonctionne avec arduino ? (Lien Fr ?)[/HS]
bonjour
je suis 1/4 hors sujet (3 pins au lieu de 4) , mais j'assume
juste pour evocation :
j'ai acheté il y quelques années des "variateurs manuels" de ventilo
j'en ai démonté un ce matin
notez l'utilisation "exotique" d'un 7805 , le schéma (pas de moi)
ProgramFiles:
Ou puis-je download ce datasheet ?
Sinon, pour la vitesse j'obtiens des valeurs d'environ 4000/5000rpm pour la vitesse minimum et +12000 pour la vitesse max, ça m'a l'air correct.
ProgramFiles:
[HS]Le threading fonctionne avec arduino ? (Lien Fr ?)[/HS]
Pas de threading en arduino c'est physiquement impossible !
Arduino = microcontroleurs AVR = processeur mono coeur = une action simultané
Tu peut faire du "pseudo threading" avec un RTOS comme duinOS (par exemple), mais ça ne sera pas de l’exécution parallèle, juste de l’exécution partagé.