Ce qui me gêne c'est bien le 2% !
La Led devrait être éteinte, surtout avec la condition que j'ai mis dans le programme.
Tu as essayé de jouer avec la valeur dans le if ?
Qu'est ce que ça fait ?
Ce qui me gêne c'est bien le 2% !
La Led devrait être éteinte, surtout avec la condition que j'ai mis dans le programme.
Tu as essayé de jouer avec la valeur dans le if ?
Qu'est ce que ça fait ?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
La valeur dans le if ne change rien j ai fait de 0 a 50
meme si je relie le fil pb2 au gnd la led reste légèrement allumé
par contre avec le code du clignotement la led étais bien éteinte
D'accord, donc le PWM ne s'arrête pas avec un 0 à tous les coups il doit fonctionner au plus bas à 1%.
Ce n'est pas bien grave, on trouvera le moyen de l'arrêté plus tard.
Donc là on est sur un soft qui fonctionne de 1% à 100% avec une LED.
On ne touche pas au soft pour le moment et tu peux même retirer la condition if que j'ai ajouté (d'ailleurs oui retire là histoire que ça ne pose pas de soucis par la suite)
1) Remets le transistor
2) Reconfirme moi ce qu'il se passe en fonction du potentiomètre. On sait déjà que le ventilateur sera à 1% au minimum, c'est sur mais au moins on le sait à l'avance.
3) Si il y a une espèce de redémarrage du ventilateur, est ce que c'est dans le même sens ? Où tourne t-il a l'envers ?
4) Les 25kHz qu'on voit sur les forums n'impacte pas le moteur du ventilateur en lui même mais peut être l'électronique qu'il y a dedans, ce qui est différent. Il va falloir trouver la doc du ventilo pour voir ce qu'elle dit !
Fait déjà les tests 1, 2, 3
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
( ok fait )1) Remets le transistor
potentiometre a------------ 0%------90%-------------------------100%2) Reconfirme moi ce qu'il se passe en fonction du potentiomètre. On sait déjà que le ventilateur sera à 1% au minimum, c'est sur mais au moins on le sait à l'avance.
donne :
ventillo a------------------100%------20%( limite arreté)--------100%
Non le ventillo tourne toujours dans le meme sens3) Si il y a une espèce de redémarrage du ventilateur, est ce que c'est dans le même sens ? Où tourne t-il a l'envers ?
D'accord, l'électronique du ventilo semble décrocher.
On va ralentir le micro et il faut trouver la doc du ventilateur.
A toute.
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
pour la doc je ne trouve rien voici le site du fabricant
https://www.arctic.ac/eu_en/alpine-64-plus.html
je ralentit le micro a combien ?
Hum.... Je me demande si un ventilateur de Pc n'est pas plus problématique qu'autre chose.
J'ai une théorie :
Sur un PC le ventilateur n'est jamais arrêté. Donc il tourne genre 20% à 100%. Mais nous ce n'est pas ce qu'on essaye de faire. Je me demande donc si on est pas entrain de faire un gros décalage avec notre 1% 100% car l'électronique du ventilateur ne s'attend pas à ça. Ça pourrait expliquer ce truc bizarre 1%....100%....20% alors que tu as fait 1 tour de potentiomètre.
En tout cas je te garantie que si avec la Led ça marche y a vraiment aucune raison qu'avec un ventilateur ça ne marche pas sauf si le ventilateur n'est absolument pas prévu pour ça.
T'as pas un ventilateur normal à commander ? Genre ventilateur d'alimentation de Pc (pas de processeur) un truc à 2 fils quoi !?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
non j en est pas en plus tout ceux que j ai commander sont en pwm :/ il agit a l inversse de la led quand le led est eteinte il est a fond lorque la led salume il ralentit
sinon on place un deuxieme 2N222A qui vient le coupe sont alimentation a une temperature donnée
le pwm fonctionne en 255 bit , je pense qu il faut derterminer le max du pwm a 200 pour essayer est pofiné le regleage pour trouvé la valeur maxi que le ventillo tolere avant le decrochage
Oui, il faut borner le PWM mais les fabricants de ventilateur doivent donner des infos là dessus, c'est pas possible autrement.
J'aurai quand même bien voulu voir à l'oscillo la tronche du PWM même si je me doute qu'il fonctionne bien au vu de ce que tu décris avec la LED.
Artic ne donne que quelques infos mais il en oublie la moitié (il ne donne même pas le brochage et rien sur le PWM)
Tu ne connais pas d'autres fournisseurs ?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
j ai trouver un autre tuto
http://www.civade.com/post/2011/05/2...s1820-fanduino
le dernier tuto est top il arrive meme a eteindre les ventillo via le pwm , certe c est un arduino mais on devrais pouvoir faire la meme chose non ?
pour info le code
dans le code j ai vue ceci
float Fan2Min=50;
float Fan2Max=255;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 #include <OneWire.h> #include <DallasTemperature.h> int pinA = 3; // pin 3 and 11 are PWM output controled by Timer2 int pinB = 11; // connect pinA/B to H-Bridge // Data wire is plugged into port 2 on the Arduino #define ONE_WIRE_BUS 10 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); // Compute linearization constant // Fan1 float Fan1Min=50; // PWM is between 40 and 255 for that fan (8 bit pwm) float Fan1Max=255; float Temp1Min=25.0; // relinearization will be done between 20 Celcius (pwm=Fan1Min) float Temp1Max=48.0; // to 48 celcius (pwm=Fan1Max) // Fan2 float Fan2Min=50; float Fan2Max=255; float Temp2Min=25.0; float Temp2Max=48.0; // float K1=(Fan1Max-Fan1Min)/(Temp1Max-Temp1Min); float K2=(Fan2Max-Fan2Min)/(Temp2Max-Temp2Min); void setup(){ // See wxxxxxxxxxxxxxxx //__________________________________TIMER2_for_Motor_PWM_________________________________ // set TIMER2 for PWM 31 kHz // // clear all prescaler bits in TCCR2B = the last 3 Bits // leave other bits as set by arduino init() in wiring.c byte mask = B11111000; TCCR2B &= mask; // TCCR2B is now xxxxx000 // // set CS22:20 in TCCR2B see p 156 of datasheet TCCR2B |= (0<<CS22) | (0<<CS21) | (1<<CS20); // same as TCCR2B |= B00000001; TCCR2B is now xxxxx001 //__pinmode pinMode(pinA,OUTPUT); pinMode(pinB,OUTPUT); // start serial port Serial.begin(9600); Serial.println("Fanduino: DS1820 based temperature fan controller"); // Start up the library sensors.begin(); } void loop() { // call sensors.requestTemperatures() to issue a global temperature request sensors.requestTemperatures(); // Send the command to get temperatures // read sensors values float T1 = sensors.getTempCByIndex(0); float T2 = sensors.getTempCByIndex(1); // skip conversion error if ( ( T1>-127.00 ) && ( T2 > -127.0) ) { // print them on serial Serial.print("Temp1: "); Serial.print(T1); Serial.print(" Temp2: "); Serial.print(T2); // normalize values between TempXMin and TempXMax if (T1 < Temp1Min) T1 = Temp1Min; if (T1 > Temp1Max) T1 = Temp1Max; if (T2 < Temp2Min) T2 = Temp2Min; if (T2 > Temp2Max) T2 = Temp2Max; // compute pwm value // when temp will be from TempXMin celcius to TempXMax, pwm will be from FanXMin to FanXMax float Pwm1=((T1-Temp1Min)*K1)+Fan1Min; float Pwm2=((T2-Temp2Min)*K2)+Fan2Min; // print pwm values on serial for debugging Serial.print (" PWM1: "); Serial.print ( Pwm1 ); Serial.print (" PWM2: "); Serial.println ( Pwm2 ); // Assign pwm analogWrite(pinA, Pwm1 ); analogWrite(pinB, Pwm2 ); // and sleep 1s until next computation delay (1000); } }
Alors....
Il y a deux choses, dans le premier tuto, les gars essayent de piloter le ventilateur d'un processeur par le fil PWM et je n'ai pas l'impression que ça n'a pas abouti lorsque je regarde jusque la fin. En plus, il y a un des gars qui dit bien qu'il y a une vitesse mini (la doc Artic disait ça aussi) ce qui est emmerdant. Perso je dirai qu'on est simplement entrain de faire déconner le ventilateur car on l'utilise d'une manière (0% à 100%) dont il n'est pas prévu.
Dans le second tuto, ça marche mais le gars ne se sert pas du fil PWM. Si tu regardes son schéma électronique, il fait ce que je voulais faire dès le début mais tu m'avais dit que le ventilateur faisait du bruit. Surement que le PWM allait trop vite et que le ventilo vibrait fort !
On fait du yoyo mais je pense que la première idée était la bonne pour faire comme la LED 1% à 100%
ps : regarde le schéma électronique du dernier tuto, tu verras que c'est ce qu'il fait et pour moi c'est bien ça qu'il faut faire. Si ça fait du bruit alors il faut ralentir le PWM
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
j ai refait le meme schema avec un 2N2222A
le ventillo ralentit mais ne s arette pas non plus et il gresille
je suis a ton ecoute si tu prefere cette solution , c est juste que le thechnologie pwm est vraiment prevu et cree pour cela
sinon on place un 2N2222a qui coupe le ventilo
est lorsque le temps est atteinte il alimente le 2N2222A qui alimente le ventilo plus le pwm de 20 a 100%
bon il s arette bien par contre a la fin lorsquil ralentit je te parle meme pas des cri qu il fait, comme un bourdonement j ai essayer avec les deux frequence
// 9.6 MHz, built in resonator
#define F_CPU 9600000
ou
// 2 MHz, built in resonator
#define F_CPU 2000000
#define LED PB1
je voit bien un transistor dit de coupure (interupteur )
et l autre pour le pwm avec des seuil de declenchement
float Fan2Min=50;
float Fan2Max=255;
bon regarde cette video
http://www.electroschematics.com/954...d-temperature/
j ai fait le meme câblage sauf que j utilise un 2N2222a et mon ventilo cri en bas regime
du genre 0a 10% il crit sans tourner
10a 20% commence a tourne en criant
j utilise un ventilo a deux fils 12v
dans la video on entend rien sont ventilo ne crie pas pourquoi :/
Tu as lu ce que le gars a écrit tout en haut de son article ?
Envoyé par OriginalIl a donc rencontré le même problème que toi. En mettant un filtre RC entre le PWM (suivant l'atténuation de son filtre) soit il recréait une tension continue soit il a transformé sont PWM en pseudo sinusoïde. Dans les deux cas, on sent qu'il cherche a adoucir la raideur de son PWM.Envoyé par Traduit
Ce qui est chiant en travaillant sans doc c'est qu'on doit faire une supposition -> tester -> valider ou non la supposition. C'est carrément long.
Nouvelle supposition :
Dans notre soft d'origine on a un PWM d'une fréquence de 1.2MHz soit une période 833ns. Lorsque le PWM est à 1% on a un état haut qui dure 8ns puis un long état bas 824ns et à mon avis que pour le moteur, cet état haut est tellement rapide qu'aucun champs électromagnétique n'a le temps de se créer dans le moteur. C'est à dire qu'on pourrait penser qu'a 1% le moteur tourne doucement mais ce 1% est tellement rapide que le moteur est plus entrain de déconner qu'autre chose.
Je propose de ralentir, cette fois ci, sévèrement le PWM.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 // 9.6 MHz, built in resonator #define F_CPU 9600000 #define LED PB1 #include <avr/io.h> void adc_setup (void) { // Set the ADC input to PB2/ADC1 ADMUX |= (1 << MUX0); ADMUX |= (1 << ADLAR); // Set the prescaler to clock/128 & enable ADC // At 9.6 MHz this is 75 kHz. // See ATtiny13 datasheet, Table 14.4. ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } int adc_read (void) { // Start the conversion ADCSRA |= (1 << ADSC); // Wait for it to finish while (ADCSRA & (1 << ADSC)); return ADCH; } void pwm_setup (void) { // Set Timer 0 prescaler to clock/1024. // At 9.6 MHz this is 9,365kHz. // See ATtiny13 datasheet, Table 11.9. TCCR0B |= (1 << CS01) | (1 << CS02); // Set to 'Fast PWM' mode TCCR0A |= (1 << WGM01) | (1 << WGM00); // Clear OC0B output on compare match, upwards counting. TCCR0A |= (1 << COM0B1); } void pwm_write (int val) { OCR0B = val; } int main (void) { int adc_in; // LED is an output. DDRB |= (1 << LED); adc_setup(); pwm_setup(); while (1) { // Get the ADC value adc_in = adc_read(); // Now write it to the PWM counter pwm_write(adc_in); } }
J'ai modifié ça, au lieu de diviser par 8 la fréquence d'horloge du micro, je l'ai divisé par 1024 mais je ne peux pas aller au delà. Ensuite devra ralentir tout le micro dans la mesure du possible :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Set Timer 0 prescaler to clock/1024. // At 9.6 MHz this is 9,365kHz. // See ATtiny13 datasheet, Table 11.9. TCCR0B |= (1 << CS01) | (1 << CS02);
Dit moi si ça améliore les choses ?
Je pense que ça ne sera pas encore le TOP mais c'est important de voir si ça nous emmène vers une bonne direction.
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
je dirait qu il émet moin de bruit mais rien de certain car il en émet toujours
lorsque il est arrêter avant de redémarré , il a une petit période ou il crit avant de ce lancer
j ai reduit le micro a
// 2 MHz, built in resonator
#define F_CPU 2000000
je n est pas l impression que cela a changer grand chose au bruit
j ai resolue le probleme j ai changer la valeur du condensateur plus de bruit j ai mits un 470 uf
Donc la ça varie bien de 1% à 100% sans bruit ?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
pour le ventillo 100 artic oui aucun bruit le silence complet
pour le ventillo 100 chinois leger bruit
pour le ventillo 80 chinois leger bruit
pour les autre je pense qu il faut determiner la bonne valeur du filtre rc non ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager