Go Down

Topic: résistance entre broche de commande et transistor 2N2222 (Read 2462 times) previous topic - next topic

alain76

Bonjour,

Je fabrique un système de ventilation comprenant 5 volets actionnés par servomoteurs dont la position dépend des valeurs de 8 sondes de températures en onewire. Un relai bistable alimente le ventilateur de la VMC ou un ventilateur auxilliaire

après avoir rédigé mon programme et avant de faire graver ma carte, je teste sur breadboard tous les montages. Jusqu'alors, ça se passait plutôt bien mais je viens de rencontrer un problème.
Le pin 4 gère l'alimentation des 5 servomoteurs (ils garderont leur position pendant plusieurs jours, voir des semaines, donc autant les préserver entre deux manoeuvres).
Pour se faire, j'ai intercalé une résistance de 10kohm entre le pin 4 et la base de mon transistor 2N2222.
Le + de l'alimentation externe est connecté au + des servos, et le - de servos est branché sur le collecteur. L'émetteur est mis à la masse, connecté au GND de l'arduino (Uno)

Ca ne marche pas.
En vérifiant mon montage, j'ai fait une fausse manip : j'ai oublié la résistance, et là, surprise, ça a fonctionné parfaitement. En fouillant sur le forum, j'ai compris que la valeur de ma résistance était trop élevée. En la supprimant j'aurais pu griller ma sortie. J'ai fait un test avec une 4.7kohm. Ca marche, mais très mal. Les servos sont très lents et poussifs. J'avais une 330ohm sous la main, ça marche bien. J'ai cru comprendre qu'une 1kohm serait parfaite. Qu'en pensez vous ?

J'ai deux montages similaires pour commander les deux bobines du relai bistable en 5V. J'avais aussi prévu une résistance de 10kohm entre le pin et la base du 2N2222. Seule différence, l'ajout de diodes de roue libre aux bornes des bobines. Vais-je avoir le même problème ?
Merci de votre aide.

B@tto

Deux choses : déjà pour le calcul de la résistance il faut savoir que le courant Ic  conduit par un transistor est égale à Hfe x le courant envoyé à la base. Hfe est une constante qui varie beaucoup d'un transistor à l'autre, même sur un même modèle ! En général ça va de 50 à 300. Il faut donc d'abord déterminer le courant dont tes servos ont besoin. Si on dit 100 mA, et au pire des cas Hfe = 50 ça nous fait un courant de base Ib = 100/50 = 2 mA. A 5V (sortie arduino) R=U/R=5/(2/1000) = 2500 ohm. Perso je mets quasiment toujours 1k, en fait, une fois que le transistor est saturé, tu peux lui envoyé plus de courant dans la base ça ne changera rien, donc le seul facteur à surveiller c'est la sortie de l'arduino. En mettant 1k t'es quasiment sûr qu'à chaque fois tu vas être bon et ton arduino ne risque rien.

deuxième point : attention, les 2N2222 sont des transistors d'amplification de sinaux, il ne sont pas destinés à proprement parler à faire de la commande.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

fdufnews

Quote
Si on dit 100 mA, et au pire des cas Hfe = 50 ça nous fait un courant de base Ib = 100/50 = 2 mA.

Je te trouve bien optimiste. Pour le courant dans le servo je verrais plutôt 500mA au démarrage pour un servo de taille moyenne.

B@tto

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

68tjs

Quote
attention, les 2N2222 sont des transistors d'amplification de signaux

C'était le cas quand ils sont sortis dans les années 1960 (c'est un excellant mais très, très vieux transistor).
Au jour d'aujourd'hui quand on regarde leur datasheet ils sont classés en "switching", ne pas oublier qu'ils ont une fréquence de transition de 300 MHz.

@alain76 : il faut partir des valeurs de courants utilisés par les servos et remonter vers le micro-controleur et non l'inverse.
Peut-être un seul transistor suffira ou peut-être si le courant demandé au micro est trop élevé il faudra passer par un montage darlington.
Seul le bilan des courants pourra le dire.

Super_Cinci

Alimenter 5 servos sur un 2222, c'est du suicide. le 2N2222 va cramer à partir de 800mA, prévois de pouvoir fournir au moins 5A... un relai serait certainement ce qu'il y a de mieux dans ton cas.

Artouste


Quote
attention, les 2N2222 sont des transistors d'amplification de signaux

C'était le cas quand ils sont sortis dans les années 1960 (c'est un excellant mais très, très vieux transistor).
Au jour d'aujourd'hui quand on regarde leur datasheet ils sont classés en "switching", ne pas oublier qu'ils ont une fréquence de transition de 300 MHz.

@alain76 : il faut partir des valeurs de courants utilisés par les servos et remonter vers le micro-controleur et non l'inverse.
Peut-être un seul transistor suffira ou peut-être si le courant demandé au micro est trop élevé il faudra passer par un montage darlington.
Seul le bilan des courants pourra le dire.

bonjour
en commutation "simple" gérée par MCU , j'ai abandonné les bipolaires au profit de MOSFET N en logic commande

En "tout venant" pour de la "petite commande" = relais ou petit actuateur pas trop gourmand
je mets du BS108 en TO92

fdufnews

Quote
Le + de l'alimentation externe est connecté au + des servos, et le - de servos est branché sur le collecteur. L'émetteur est mis à la masse, connecté au GND de l'arduino (Uno)

Je n'avais pas relevé ça tout à l'heure mais je ne suis par certain que couper la liaison de masse entre les 2 parties du montage soit une bonne idée.
D'ailleurs couper le plus des servo tout en laissant les entrées impulsion connectées n'est pas non plus une bonne idée.

De manière générale, il est déconseillé de couper l'alimentation sur une partie d'un montage tout en gardant l'autre partie alimentée si les composants du système n'ont pas été prévus pour ça au départ. En effet la partie du montage dont on a coupé l'alimentation a tendance à s'alimenter au travers des signaux connectés sur ses entrées par l'intermédiaire des diodes de clamp que l'on trouve généralement sur les entrées. Ce n'est bon ni pour le servo, ni pour l'arduino.
Il faudrait prévoir une isolation galvanique entre les sorties de l'arduino et l'entrée du servo. Un opto-coupleur par exemple pourrait faire l'affaire.

alain76

Merci à vous pour toutes ces remarques. J'y vois plus clair à présent.
Au sujet de l'alimentation des 5 servos, ils ne changeront jamais de position en même temps. Au pire, si les 5 doivent bouger, ils le feront avec une seconde de décalage entre chaque instruction. Par contre, à la mise sous tension, il est possible qu'ils se recalent sur leur position de consigne, ce qui aurait pour effet de faire un pic d'intensité.
Je vais revoir ma copie en prenant en compte vos conseils

Merci encore

alain76

J'ai modifié mon schéma en ajoutant un relai. La bobine est une 5vcc, 165 ohm. Comme le relai dispose de deux contacts distincts, j'en ai profité pour régler un autre problème que vous aviez soulevé, à savoir la coupure du +.

Voilà ce que ça donne


D'après les calculs, la résistance devrait faire 7.5kohm (si je ne suis pas gouré). A ce que je lis, une 1kohm suffit à protéger la sortie et assure la saturation du transistor. Je conserve mon 2N2222 qui est déjà dans le tiroir, sauf si ça ne passe vraiment pas.
La diode de roule libre est une 1N4007. Mes masses sont toutes reliées. L'alim 5V connectée à la broche 4 est la symbolisation de l'alim interne de l'Arduino. L'autre 5V est une alim externe (régulée)
Pour info, les servos sont des Futaba S3003 qui consomment environ 200mA au couple prévu (695mA maxi)

Alors, bénissez vous mon montage ?  :D

B@tto

Pour moi pas de problème. Simplement tu n'ai pas obligé d'appliquer le relais sur la masse également, couper le 5V suffit ^^

Après ce que je te conseille, c'est d'utiliser un optocoupleur en lieu et place du 2N2222 car si tes masses ne sont pas faites correctement (et ça arrive très vite) tu peux observer des variations dans le reste du système, voir un reboot de l'arduino. Avec un opto tu t'évites presque à coup sûr ce genre de mésaventure.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Go Up