Mesure des températures avec courbes

Posez ici vos questions techniques avec ou sans rapport à l'impression 3D
Tiflo
Contributeur
Messages : 76
Inscription : dim. déc. 27, 2015 12:36 am
Imprimante 3D : Prusa i3 Hephestos BQ

Quand je débranche le signal (source) du mosfet, le ventilateur s'arrête de tourner. Par contre au moindre retranchement il se remet à tourner.
C'est normal
Et si tu débranches la Gate, il restera dans le même état.
Si tu veux qu'il s'arrête au débranchement de la GATE, il faut mettre une résistance pulldown (pin arduino vers la masse).
Par contre avec un pwm à 0 le ventilateur continue de tourner très lentement. Avec un pwm de 20% et 40%, le ventilateur émet un petit grésillement, un condensateur pourrai-t-il améliorer la chose? (j'en ai un de 10v 22uF)
Je ne sais pas ce que tu utilises comme ventilateur, si c'est un 2 fils, la commande par PWM n'est pas terrible et on conseille de rajouter un filtre passe bas (resistance + condo) avant d'attaquer la Gate.
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

J'utilise un ventilateur 4 fils (+ - pwm tach) mais j'ai fait des tests et il n'est pas compatible, d'ou l'utilisation d'un transistor pour commander le ventilateur avec les fils + et -
signé Timothée
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5612
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Une question qui n'a rien à voir avec ton montage, le panneau de led que l'on voit sur tes images mesure combien et as-tu un lien de ce produit?

J'ai vu qu'il existe une méthode pour changer la fréquence du PWM sur arduino, c'est peut être la bonne méthode que de le passer à 25Khz. Dans ce cas le transistor ne sera plus utile.
Attention tout de même, modifier cette fréquence a un impact sur certains timer. Il faudra donc choisir une pin qui ne change pas les timers que tu vas utiliser pour le reste du programme.
http://playground.arduino.cc/Code/PwmFrequency
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

Un panel consomme env 0.01A
Voici le lien du produit.

Si on modifie la fréquance, je ne comprend pas comment le transistor disparaîtrait.

J'ai lu le lien que vous m'avez donné et ça endommage des pin :?
Quel est l'avantage d'un changement comme celui-ci?
signé Timothée
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5612
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

On revient alors dans la configuration première, le ventilateur est alimenté normalement et le signal pwm se branche de l'arduino directement sur le fil pwm du ventilateur. On oublie pas de brancher les masses ensembles ;)
Si cette solution fonctionne, on aura alors un fonctionnement plus que parfait de 0 à 100%
Il faut utiliser la broche 9 et ne plus utiliser tout ce qui utilise le timer1 comme indiqué sur la page
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

"Changes on pins 9 or 10 will cause the Servo library to function incorrectly."
Quand vous dites timer 1, c'est par exemple la fonction delay?
Si on fait cette manipulation, est-ce que ça sera tout les pins ou juste le pin 9 qui ne supportera plus le delay?
signé Timothée
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5612
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Non en fait ce qui changera c'est tout ce qui est en rapport avec le timer1 (interne à arduino).
Le timer1 est utilisé pour le timing des servos moteurs par exemple qui n'est pas utile pour toi.
Pour éviter de toucher à la fonction delay ou millis on utilisera donc la pin 9 pour le pwm
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

D'accord donc j'ai juste à téléverser le programme sur le site ou je dois le modifier?

Faut-il faire un burn bootloader?
signé Timothée
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5612
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

En fait il faut copier le code, le configurer et l'ajouter à ton programme.
En regardant de près il suffit juste de changer la valeur du timer x (TCCRxB) avec un diviseur.
Le timer 1 semble avoir une fréquence de base de 31Khz, la valeur devra être à 0 pour ne plus le diviser. Nous aurons alors 31K au lieu de 22 à 28Khz requis, ca fonctionne peut être mieux que les 500Hz de base, il faut tester.
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5612
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Autre solution c'est de remplacer le Mosfet par un transistor NPN, car il n'a pas de phénomène de capacité interne qui gène le PWM.
Mais je crois plus que le ventilateur n'est pas adapté à ce mode de fonctionnement à cause de son électronique interne.
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

J'ai un doute. J'ai changé TCCR1B et TCCR2B en TCCR0B et TCCR0B. Donc touts les TCCRxB avec un autre chiffre que 0, je les ai changés. Est-ce juste?

J'ai une erreur de compilation:

exit status 1
expected constructor, destructor, or type conversion before '(' token à la ligne 10. Je ne sais pas ce que c'est... :?

Code : Tout sélectionner

// Set pin 9's PWM frequency to 3906 Hz (31250/8 = 3906)
// Note that the base frequency for pins 3, 9, 10, and 11 is 31250 Hz
setPwmFrequency(9, 8);

// Set pin 6's PWM frequency to 62500 Hz (62500/1 = 62500)
// Note that the base frequency for pins 5 and 6 is 62500 Hz
setPwmFrequency(6, 1);

// Set pin 10's PWM frequency to 31 Hz (31250/1024 = 31)
setPwmFrequency(10, 1024);

/**
 * Divides a given PWM pin frequency by a divisor.
 *
 * The resulting frequency is equal to the base frequency divided by
 * the given divisor:
 *   - Base frequencies:
 *      o The base frequency for pins 3, 9, 10, and 11 is 31250 Hz.
 *      o The base frequency for pins 5 and 6 is 62500 Hz.
 *   - Divisors:
 *      o The divisors available on pins 5, 6, 9 and 10 are: 1, 8, 64,
 *        256, and 1024.
 *      o The divisors available on pins 3 and 11 are: 1, 8, 32, 64,
 *        128, 256, and 1024.
 *
 * PWM frequencies are tied together in pairs of pins. If one in a
 * pair is changed, the other is also changed to match:
 *   - Pins 5 and 6 are paired on timer0
 *   - Pins 9 and 10 are paired on timer1
 *   - Pins 3 and 11 are paired on timer2
 *
 * Note that this function will have side effects on anything else
 * that uses timers:
 *   - Changes on pins 3, 5, 6, or 11 may cause the delay() and
 *     millis() functions to stop working. Other timing-related
 *     functions may also be affected.
 *   - Changes on pins 9 or 10 will cause the Servo library to function
 *     incorrectly.
 *
 * Thanks to macegr of the Arduino forums for his documentation of the
 * PWM frequency divisors. His post can be viewed at:
 *   http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235060559/0#4
 */
void setPwmFrequency(int pin, int divisor) {
  byte mode;
  if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 64: mode = 0x03; break;
      case 256: mode = 0x04; break;
      case 1024: mode = 0x05; break;
      default: return;
    }
    if(pin == 5 || pin == 6) {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    } else {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    }
  } else if(pin == 3 || pin == 11) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 32: mode = 0x03; break;
      case 64: mode = 0x04; break;
      case 128: mode = 0x05; break;
      case 256: mode = 0x06; break;
      case 1024: mode = 0x7; break;
      default: return;
    }
    TCCR0B = TCCR0B & 0b11111000 | mode;
  }
}
Merci :)
signé Timothée
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5612
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

J'ai dit plus haut qu'il faudrait diviser par 0, il fallait bien sûr comprendre 1 (31250/1=31250)

Pour moi ce code est suffisant

Code : Tout sélectionner

void setup() {
  // put your setup code here, to run once:
TCCR1B = TCCR1B & 0b11111000 | 0x01;
}

void loop() {
  // put your main code here, to run repeatedly:

}
On peut faire un essai avec 0x05 soit un diviseur de 1024, soit 31250/1024= 30hz
En mettant une led sur le port9 on doit la voire clignoter en bougeant la main avec un pwm de 128 (un peu comme un néon en bougeant la tête)
On peut aussi mettre un HP avec une résistance de 1K en série, le son sera très grave du style vibreur.
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

Quand j’exécute ce programme, rien ne se passe, le ventilateur ne change pas de vitesse.

Code : Tout sélectionner

int ventilo = 9;

void setup() {
  pinMode(ventilo,OUTPUT);
}

void loop() {
  analogWrite(ventilo,0);
}
Pourtant j'ai bien téléversé le programme que vous m'avez donné
signé Timothée
Paul
Contributeur actif
Messages : 141
Inscription : ven. févr. 06, 2015 10:40 am
Imprimante 3D : Prusa i3 Hephestos
Contact :

Concernant ton code et l'erreur: il me semble que tu ne peux pas déclarer tes setPwmFrequency() en dehors d'une fonction void :-\
Tim0th3e a écrit :J'ai un doute. J'ai changé TCCR1B et TCCR2B en TCCR0B et TCCR0B. Donc touts les TCCRxB avec un autre chiffre que 0, je les ai changés. Est-ce juste?

J'ai une erreur de compilation:

exit status 1
expected constructor, destructor, or type conversion before '(' token à la ligne 10. Je ne sais pas ce que c'est... :?

Code : Tout sélectionner

// Set pin 9's PWM frequency to 3906 Hz (31250/8 = 3906)
// Note that the base frequency for pins 3, 9, 10, and 11 is 31250 Hz
setPwmFrequency(9, 8);

// Set pin 6's PWM frequency to 62500 Hz (62500/1 = 62500)
// Note that the base frequency for pins 5 and 6 is 62500 Hz
setPwmFrequency(6, 1);

// Set pin 10's PWM frequency to 31 Hz (31250/1024 = 31)
setPwmFrequency(10, 1024);

/**
 * Divides a given PWM pin frequency by a divisor.
 *
 * The resulting frequency is equal to the base frequency divided by
 * the given divisor:
 *   - Base frequencies:
 *      o The base frequency for pins 3, 9, 10, and 11 is 31250 Hz.
 *      o The base frequency for pins 5 and 6 is 62500 Hz.
 *   - Divisors:
 *      o The divisors available on pins 5, 6, 9 and 10 are: 1, 8, 64,
 *        256, and 1024.
 *      o The divisors available on pins 3 and 11 are: 1, 8, 32, 64,
 *        128, 256, and 1024.
 *
 * PWM frequencies are tied together in pairs of pins. If one in a
 * pair is changed, the other is also changed to match:
 *   - Pins 5 and 6 are paired on timer0
 *   - Pins 9 and 10 are paired on timer1
 *   - Pins 3 and 11 are paired on timer2
 *
 * Note that this function will have side effects on anything else
 * that uses timers:
 *   - Changes on pins 3, 5, 6, or 11 may cause the delay() and
 *     millis() functions to stop working. Other timing-related
 *     functions may also be affected.
 *   - Changes on pins 9 or 10 will cause the Servo library to function
 *     incorrectly.
 *
 * Thanks to macegr of the Arduino forums for his documentation of the
 * PWM frequency divisors. His post can be viewed at:
 *   http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235060559/0#4
 */
void setPwmFrequency(int pin, int divisor) {
  byte mode;
  if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 64: mode = 0x03; break;
      case 256: mode = 0x04; break;
      case 1024: mode = 0x05; break;
      default: return;
    }
    if(pin == 5 || pin == 6) {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    } else {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    }
  } else if(pin == 3 || pin == 11) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 32: mode = 0x03; break;
      case 64: mode = 0x04; break;
      case 128: mode = 0x05; break;
      case 256: mode = 0x06; break;
      case 1024: mode = 0x7; break;
      default: return;
    }
    TCCR0B = TCCR0B & 0b11111000 | mode;
  }
}
Merci :)
Tim0th3e
Contributeur actif
Messages : 240
Inscription : sam. oct. 25, 2014 9:02 am
Imprimante 3D : Hephestos I 2014 + plateau Mk2a, montée quand j'étais assez petit
Localisation : Suisse

Merci pour votre réponse. J'ai laissé tomber le code et j'ai téléversé celui que Jacques m'à proposé.
Mais pour l'instant ça ne foncionne pas
signé Timothée
Répondre