Encender / apagar la bomba de agua usando Arduino Uno R3

1

Estoy tratando de construir un sistema simple para encender una bomba de agua cada 24 horas durante 10-20 segundos. Tengo bomba de 5V. Cuando lo conecto a 5V, GND funciona, pero cuando lo conecto al pin 12 (o cualquier otro pin digital) y GND no funciona. Aquí está mi bosquejo de muestra:

int led = 12;

void setup() {                
  Serial.begin(9600);
  pinMode(led, OUTPUT);     
}

void loop() {
  digitalWrite(led, HIGH);
}

¿Qué estoy haciendo mal?

    
pregunta keepkimi

3 respuestas

9

Es casi seguro que el motor necesita más corriente de "accionamiento" de la que puede suministrar el pin IO. Un pin de salida puede suministrar (digamos) 40 mA pero el motor puede necesitar 1A o 2A. El pin IO no puede proporcionar la corriente por lo que el motor se queda allí sin hacer nada.

Piense en ello como la presión del agua y la alimentación de agua a través de una tubería muy pequeña (por ejemplo, 2 mm de diámetro). Si la demanda de caudal es baja, funcionará bien, pero si desea llenar su tina, olvídelo. Consigue tuberías más grandes: el pin de salida solo tiene tuberías pequeñas.

Lo que necesita es un transistor que reacciona a la línea IO liviana y cambia una línea eléctrica de alto rendimiento a su motor. Recientemente hice esto: -

Es un circuito que toma un pin IO de un micro y usa un par de transistores para cambiar una batería (5.5 V) a una carga (motor). Puede funcionar desde 5V, por supuesto.

    
respondido por el Andy aka
6

Creo que el circuito de Andy aka de Andy aka es exactamente correcto, pero dependiendo de su motor, puede salirse con algo un poco más simple, algo como esto:

simular este circuito : esquema creado usando CircuitLab

Si su motor necesita algo como 100 mA, puede usar un transistor NPN de propósito general de pequeña señal en lugar de un Darlington como en el circuito de arriba, algo como BC546 / 547. La característica que se debe buscar es la corriente de colector pico : le dirá qué carga puede conducir el transistor

El diodo a través del motor es un snubber / flyback diode , para proteger sus circuitos contra picos de voltaje dañinos que podrían ser generado por el motor en su bomba cuando se apaga. De acuerdo con Andy aka (vea el comentario a continuación) lo necesitará independientemente, por lo que al final esto podría No será más sencillo que su circuito.

Para ser claros, una de las ventajas del circuito de Andy Aka es que está diseñado para cualquier voltaje del motor, mientras que el circuito aquí se basa en que su Arduino y el motor funcionan con la misma fuente V.

    
respondido por el angelatlarge
2

Probé el circuito de Angelatlarge y funciona bien. Q1 - TIP142 (corriente máxima 10A). Arduino out es cualquier pin de salida digital (pin 9 en mi caso). Aquí hay un pequeño boceto, enciende la bomba durante 10 segundos y luego apágala durante 10 segundos.

int pin_out = 9;

void setup()
{
  pinMode(pin_out,OUTPUT);      //set pin no. 9 as output.
}

void loop(){
  digitalWrite(pin_out,HIGH);   //set pin high
  delay(10000);                //wait for 10 sec
  digitalWrite(pin_out,LOW);   //set pin low  
  delay(10000);                //wait for 10 sec again
}

También, aquí hay un enlace sobre cómo agregar RTC a Arduino. Creo que es mucho más cómodo manejar el temporizador. enlace

    
respondido por el SPhoenix

Lea otras preguntas en las etiquetas