Impression 3D

D’une révolution nous passons aux évolutions, l’imprimante 3D est en passe de transformer notre quotidien en se démocratisant avec des modèles de plus en plus performants et simples d’usage.

L’impression 3D est une formidable aventure que nous vous proposons de partager au travers de ce forum.
Forum spécialisé BQ Witbox, Hephestos , Witbox 2, Hephestos 2, Witbox Go!

Mesure des températures avec courbes

Posez ici vos questions techniques avec ou sans rapport à l'impression 3D

Retour vers Sujets de technique générale

par Tiflo » Sam Jan 23, 2016 10:31 pm

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.
Tiflo
Contributeur
 
Message(s) : 76
Inscrit le : Dim Déc 27, 2015 1:36 am
Imprimante 3D: Prusa i3 Hephestos BQ

par Tim0th3e » Sam Jan 23, 2016 11:05 pm

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 -
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

par Jacques » Dim Jan 24, 2016 9:33 am

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
Avatar de l’utilisateur
Jacques
Site Admin
 
Message(s) : 3337
Inscrit le : Jeu Oct 23, 2014 3:02 pm
Localisation : Gonesse (95)
Imprimante 3D: Witbox et Hephestos

par Tim0th3e » Dim Jan 24, 2016 11:09 am

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?
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

par Jacques » Dim Jan 24, 2016 11:36 am

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
Avatar de l’utilisateur
Jacques
Site Admin
 
Message(s) : 3337
Inscrit le : Jeu Oct 23, 2014 3:02 pm
Localisation : Gonesse (95)
Imprimante 3D: Witbox et Hephestos

par Tim0th3e » Dim Jan 24, 2016 11:51 am

"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?
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

par Jacques » Dim Jan 24, 2016 12:01 pm

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
Avatar de l’utilisateur
Jacques
Site Admin
 
Message(s) : 3337
Inscrit le : Jeu Oct 23, 2014 3:02 pm
Localisation : Gonesse (95)
Imprimante 3D: Witbox et Hephestos

par Tim0th3e » Dim Jan 24, 2016 12:14 pm

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?
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

par Jacques » Dim Jan 24, 2016 12:43 pm

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.
Avatar de l’utilisateur
Jacques
Site Admin
 
Message(s) : 3337
Inscrit le : Jeu Oct 23, 2014 3:02 pm
Localisation : Gonesse (95)
Imprimante 3D: Witbox et Hephestos

par Jacques » Dim Jan 24, 2016 5:43 pm

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.
Avatar de l’utilisateur
Jacques
Site Admin
 
Message(s) : 3337
Inscrit le : Jeu Oct 23, 2014 3:02 pm
Localisation : Gonesse (95)
Imprimante 3D: Witbox et Hephestos

par Tim0th3e » Lun Jan 25, 2016 8:36 pm

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 :)
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

par Jacques » Lun Jan 25, 2016 10:46 pm

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.
Avatar de l’utilisateur
Jacques
Site Admin
 
Message(s) : 3337
Inscrit le : Jeu Oct 23, 2014 3:02 pm
Localisation : Gonesse (95)
Imprimante 3D: Witbox et Hephestos

par Tim0th3e » Mar Jan 26, 2016 6:13 pm

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é
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

par Paul » Mar Jan 26, 2016 6:34 pm

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 :)
Avatar de l’utilisateur
Paul
Contributeur actif
 
Message(s) : 141
Inscrit le : Ven Fév 06, 2015 11:40 am
Imprimante 3D: Prusa i3 Hephestos

par Tim0th3e » Mar Jan 26, 2016 9:55 pm

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
«Le monde appartient aux optimistes, les pessimistes ne sont que des spectateurs» – François Guizot
Avatar de l’utilisateur
Tim0th3e
Contributeur actif
 
Message(s) : 215
Inscrit le : Sam Oct 25, 2014 9:02 am
Localisation : Suisse et 16 ans :)
Imprimante 3D: Prusa i3 Hephestos bleue avec plateau chauffant

PrécédentSuivant

Retour vers Sujets de technique générale