editar -preguntó el pin 9 como salida en la configuración y ahora funciona el código ALTO / BAJO. -Cuando la bomba está configurada en BAJA, se enciende, cuando pasa a ALTA se desactiva. Así que cuando conecto el arduino, por defecto, la bomba se enciende antes de leer cualquier código. ¿Hay alguna forma de establecer un pin en ALTO (por defecto) para que no bombee cuando está enchufado? ... Hablé con el fabricante nuevamente, y parece que venden otro modelo que no bombea cuando está bajo ... así que por ahora, sugirieron poner un interruptor de encendido / apagado entre el cable rojo y el pin de 5V.
fin de edición
Estoy intentando controlar una bomba piezoeléctrica de 5 V (micro bomba) con mi Arduino uno, pero tengo algunas dificultades para que funcione correctamente. Esta es la bomba que estoy usando.
No estoy seguro de si debería usar una fuente de alimentación separada para hacer funcionar la bomba, o si puedo evitar usar el pin de 5 V del arduino. La bomba utiliza 0.05-0.25W ... por lo tanto, a 5 V, debe tener un consumo de corriente máximo de 50 mA. ¿Sería suficiente una resistencia para proteger al arduino y hacer funcionar la bomba (estoy usando una resistencia de 470 ohmios, no estoy seguro si debería ser más o menos)? La bomba tiene un cable rojo (5V), un cable negro (grd) y un cable amarillo (control PWM).
Este es el código que estoy usando (intentando encender y apagar la bomba) ... el código funcionó cuando dejé el cable amarillo sin unir y envié el cable negro a través de un MOSFET de canal N ... pero bombea muy lentamente. Cuando engancho la bomba como se muestra en la imagen de abajo, se ejecuta fuerte durante un segundo, luego un poco menos fuerte durante un segundo y se repite ... (solo bombea y luego escupe)
El fabricante me dijo que necesitaba programar PWM con cierta relación de trabajo por período de 1 segundo y que la bomba está configurada para funcionar a una frecuencia predeterminada de 50Hz.
void loop() {
tone(9, 50, 1000); // 9=PWM pin, 50 = freq (Hz), 1000 = hold freq. for 1 sec.
delay(1000);
noTone; //turn pump off
delay(1000);
}
También probé esto en vano (suponiendo que se ejecutaría a los 50 Hz predeterminados cuando se establece ALTO / BAJO)
void setup{
pinMode(9,OUTPUT);}
void loop() {
digitalWrite(9,HIGH);
delay(1000);
digitalWrite(9,LOW);
delay(1000);}
Cualquier ayuda para hacer que esto funcione sería muy apreciada. Gracias!