¿Este circuito es correcto?

Hola, me gustaría si alguien pudiera confirmarme si este circuito está bien (junto con los cálculos), o si tendría que cambiar o añadir algo.

Aquí van los datos:

Motor:

  • Tensión nominal: 3 V CC
  • Tensión de salida: 2.3V DC
  • Máximo voltaje: 80 mA
  • Tensión o voltaje de funcionamiento: 2.5-4V DC

Arduino UNO:

Transistor:
Me han recomendado usar el BD139 (¿lo veis correcto?)

  • Ic = 1.5A
  • hFE (beta) = 30 A (de este dado NO estoy muy seguro)
  • Ib = 0.5 A / 0.2 A / 1 A (según la marca)
  • Vceo = 80 V max
  • Vbe = 1v / 0.8 v (según marca)

Resistencia:

  • R = (3.3V - 0,8V)*30 / 0.08A = 937.5 ohms (valdría con una de 1k)
    La multiplicación por 30 se supone que es el beta mínimo de la resistencia, pero no lo entiendo tampoco muy bien porque eso no sale en la fórmula.

Muchas gracias por la ayuda

Hola, muchas gracias por contestar.

Los datos del motor están bien. Venían en mA, puedes ver el producto que compré aquí (está en alemán): http://cgi.ebay.es/ws/eBayISAPI.dll?ViewItem&item=220731226904

La fórmular para calcular esa resistencia de base me la dijeron en un foro, no sé porque multiplican por el beta. Quizás esté mal calculada. Necesitaría que alguien me ayudara. No sé casi nada sobre esto, pero necesito hacer este pequeño circuito para probar una cosa de mi tesis.

Lo del hFE no lo entiendo.

¿Crees que necesitaría otra resistencia?

En realidad es un circuito muy simple para alquien que sepa algo sobre electrónica.
Si alguien pudiera ayudarme con el cálculo de las resistencias y del transistor adecuado... please =(

Creo que deberias conectar la alimentacion del motor a una fuente diferente. Si el motor te consume 80 mA y el Arduino te va a suministrar 40.... mal negocio. Si simplemente quieres usar el transistor para hacer que el motor gire, con alimentar la base del transistor y pasarlo a saturacion, ya te sirve, pero saca la corriente antes del Arduino (del transformador o de una pila, o lo que sea).
Por otro lado, parece que quieras hacer que el motor varie la velocidad. Si se trata de un motor de corriente continua, tienes dos maneras: la primera es usar el transistor en la zona activa, es decir, en la zona donde la corriente entre colector y emisor varia dependiendo de la corriente de la base (la corriente CE es igual a beta por la corriente de base). La segunda opción es usar PWM, y alimentar con PWM la base haciendo que el transistor entre en saturacion o corte segun los pulsos que envias.

Hola Pofenas, gracias por la info.

Sí, quiero hacer que el motor varíe de velocidad. Entonces tendría que cambiar el motor de sitio y ponerlo después del transistor, es decir, entre el Emisor y GND ?

Por otro lado, está conectado al PWM de 3.3v, que suministra 50mA (un poco más). ¿Crees que el motor no va a funcionar?

¿El modelo de transitor es correcto? Aquí podéis ver sus características: BD139 pdf, BD139 Descripción Electrónicos, BD139 Datasheet, BD139 view ::: ALLDATASHEET :::

Hola ajgallego
Creo que puedes tener problemas con la potencia que suministra el conversor de 3,3v del Arduino. Si sólo vas a utilizar el motor para señalización durante intervalos cortos de tiempo, yo lo conectaría a 5v, que el regulador del Arduino tiene potencia suficiente (no te preocupes no le va a pasar nada al motor, tal vez se caliente un poco). En cuanto el transistor, creo que va requetesobrado. Con un simple BC327 (PNP) BC237(NPN) te valdría.

Saludos

Hola Inizul,

pero entonces podría conectar el motor directamente al PIN de salida digital, no? (sin necesidad del transistor).

y sobre lo que comenta Pofenas, de si me haría falta una resistencia más o que si quiero variar la potencia del motor tengo que colocarlo en otro lado??

Entonces me compro el BC327 ? :roll_eyes:

Un saludo y gracias por la info!

Hola de nuevo
El pin de salida digital de Arduino suministra 40mA máx (no es conveniente llegar a esta intensidad)

Si quieres regular la velocidad del motor (aumentar o disminuir la vibración) necesitas conectarlo a una salida PWM, y en función del ancho del pulso de la señal PWM consigues variar la tensión de salida (http://arduino.cc/es/Tutorial/PWM), y por lo tanto su velocidad y potencia. De esta forma puedes variar la tensión de salida entre 0v (analogWrite(0) y 5v 3,75 (analogWrite (191)) aunque tengas conectado el motor a 5v (Haciendo que la onda cuadrada PWM no llegue al 100% del ciclo) .

El circuito sería el mismo que tienes, cambiando la alimentación del motor de 3,3v a 5v, deberás utilizar la función Analogwrite (Arduino/File/ExamplesBasics/Fade)

Si no quieres regular la velocidad del motor, simplemente encenderlo y apagarlo puedes utilizar cualquier salida digital del Arduino (teniéndolo encendido poco tiempo para que no se caliente mucho).

En cualquiera de los dos casos necesitarás un transistor para permitir conducir hasta 80mA.
Puedes utilizar el BD139 (Ic=1500mA>>>80mA) o el BC237 (100mA>80mA) o el BC547 (100mA>80mA) cualquiera te vale, sólo que el BC237 o el BC547 son más baratos (~0,2€) (me había confundido: el BC236 es PNP).

NOTA:
Para evitar que los picos de corriente del motor afecten al micro es conveniente poner en paralelo con el motor un pequeño condensador (22pF).

Vale, pues me compraré transistores BC237 Philips BC237 datasheet pdf. Y seguiré el mismo esquema que puse en la imagen pero conectándolo al PWM de 5v.

Sí que quiero poder controlar la velocidad del motor, por lo que usaré la función analogWrite. ¿por qué pones 5v, luego lo tachas y pones 3,75 (analogWrite (191))? ¿analogWrite (191) sería el equivalente a que salgan 3.75v no?

Entonces la fórmula para la resistencia de base cómo quedaría...
R = (5V - Vbe)*beta / 0.08A = XXX ohms ??

¿Qué pasa si me ahorro el condensador en paralelo? Creo que arduino ya lleva algo de control sobre picos de corriente, no? y eso se suele poner cuando usas alimentación externa.

Hola ajgallego

Como indica se indica en http://arduino.cc/es/Tutorial/PWM : analogWrite (191) = 3,75v

La resistencia de polarización de la base no es muy crítica, (no sé que valores obtendrás con la formula, pero valores entre 1K y 5K son usuales).

El condensador tiene como objetivo eliminar las interferencias que generan los motores de corrientes contínua (las chispas que se generan con las escobillas del motor). No es un condensador de filtrado para eliminar el rizado de la fuente. No es obligatorio, pero sí conveniente (El precio no llega a 0,20 €).

Saludos

Hola, mirando ejemplo de Fading http://arduino.cc/es/Tutorial/Fading

veo que la variación de la tensión de salida se realiza sobre el PIN digital y no sobre las salidas de 5v o de 3.3v. Por lo que, esto variaría lo que me estabais comentando? Debería de estar el motor después del transistor?

graicas

Hola de nuevo
Un poco de rollo...
En el circuito que planteas el transistor es como un interruptor que se controla con la tensión de base. De forma que si en la patilla de la base hay tensión, el transistor conduce, y si no tiene tensión no.
Cuando el transistor conduce deja pasar corriente entre el colector y el emisor, es decir, la corriente circula desde el pin de 5v del regulador de Arduino , atraviesa el motor , y pasa por el transistor hasta masa.

En el ejemplo fading el led se alimenta directamente desde la patilla PWM del Arduino, pero como esta salida no puede dar más de 40mA no se puede alimentar el motor directamente desde esta salida, es por ello que se utiliza el transistor para que con esa señal PWM controlamos el transistor y alimentamos el motor desde el regulador de tensión del Arduino (Patilla 5v ).

Al aplicar sobre la base del transistor una señal cuadrada, el transistor conmuta muy rápidamente (PWM = 500Hz).
Si variamos el ancho de pulso de esta señal, el transistor variará el tiempo de conmutación y por lo tanto la tensión eficaz (El area de la gráfica de http://arduino.cc/es/Tutorial/PWM) a la que está el motor.

Espero haberme explicado, y perdona por el rollo.