Problema con rotores.

Buenas noches,

Estoy realizando un proyecto en el que pretendo controlar el giro de cuatro rotores (que funcionan a 3.7V) con un potenciometro.

Tengo todo el programa realizado y esta todo en orden, solo me falla el tema de que los rotores no giran a su total capacidad aunque con el potenciometro marque 3.7V.

He leido y hay gente que dice de poner resistencias entre la salida pwm del rotor y el rotor en si. Otros me dicen que use un puente H, y un tercer grupo me recomienda usar un mosfet (claro que no sé donde conectarlo puesto que tengo un potenciometro en analog in que pretendo que haga de controlador de tensón) pero no tengo claro que debo hacer. Que me recomendais desde aqui?

Gracias de antemano. :slight_smile: :slight_smile:

Tienes varios conceptos que podrían estar fallando.
Primero no veo tu código, asi que lee las normas y postea debidamente usando tags el código.
Segundo no veo tu esquema, como pretendes que te aconsejemos si no sabemos como conectas los motores.
No sabemos que motores, cuanto consumen mA, ni sabemos de que capacidad es tu batería 3.7V
Entonces 2 + 2 siempre suman 4.
Con tu códigio podemos ver si lo has hecho bien.
Con tu esquema podemos ver si entregas debidamente la potencia.

Ahhh el esquema va con tag de imagen.
No adjuntes, ni código ni imagenes, okay?

Disculpa,desconocía la función code.

const int entradaPotenciometre = 0; 

const int sortidaRotor    = 9;  

int valorRotor         = 0;  

int valorPotenciometre = 0; 

void setup() {
 
         pinMode(entradaPotenciometre, INPUT);  
         pinMode(sortidaRotor, OUTPUT);     
         Serial.begin(9600);          
}

void loop() {

valorPotenciometre = analogRead(entradaPotenciometre);
 
valorRotor = map(valorPotenciometre, 0, 1023, 0, 255);
         
analogWrite(sortidaRotor,valorRotor );

          
Serial.print("Valor del Potenciometre = ");
Serial.print(valorPotenciometre);   
Serial.print(" Valor del Rotor = ");  
Serial.println(valorRotor);   
delay(100);
}

No me queda claro como postear la foto. Como caso extremo y pidiendo disculpas de antemano la subiré como un archivo normal.

El esquema de conexiones es muy simples, lo que en vez de rotor he puesto un motor ya que en fritzing no hay rotores.

Gracias y perdón de nuevo.

Ahhh el esquema va con tag de imagen.
No adjuntes, ni código ni imagenes, okay?

Aprovecha el enlace que tienes en el adjunto con botón derecho del mouse: Copiar dirección de enlace y luego editas tu post y usas el ícono de imágen (pantalla junto al eslabón) y pegas ahi la url.

Respuesta:
Comencemos por pequeñas cosas que no estan bien, código corregido

const byte entradaPotenciometre = A0; 
const byte sortidaRotor         = 9;  
int valorRotor                  = 0;  
int valorPotenciometre          = 0; 

void setup() {
         // pinMode(entradaPotenciometre, INPUT);  es analógico no hay que definir nada
         pinMode(sortidaRotor, OUTPUT);     
         Serial.begin(9600);          
}

void loop() {

   valorPotenciometre = analogRead(entradaPotenciometre);
   valorRotor = map(valorPotenciometre, 0, 1023, 0, 255);
   analogWrite(sortidaRotor,valorRotor );
            
   Serial.print("Valor del Potenciometre = ");
   Serial.print(valorPotenciometre);   
   Serial.print(" Valor del Rotor = ");  
   Serial.println(valorRotor);   
   delay(100);
}

En la imagen


Se ve un motor conectado al arduino pero también se ve (es lo que la imagen dice) que es Arduino que le da toda la potencia, no veo puente H ni MOSFET.
No puedo opinar.
Si tienes 3.7V para comandarlo veamos las diferentes opciones, luego amplío esta respuesta

En la imagen


Se ve un motor conectado al arduino pero también se ve (es lo que la imagen dice) que es Arduino que le da toda la potencia, no veo puente H ni MOSFET.
No puedo opinar.
Si tienes 3.7V para comandarlo veamos las diferentes opciones, luego amplío esta respuesta
[/quote]

Correcto, yo pretendía darle toda la potencia al rotor mediante arduino, pero me topo con el problema de que no le da toda la velocidad que deberia. Por mucho que le de 3.7 voltios con el potenciometro, el rotor gira muy lento. De ahí mi pregunta de que es mejor, un puente H o un potenciometro.

Ningun problema, espero tu respuesta. De momento gracias por las correcciones.

No hace falta que replique mi respuesta, ya está en el post anterior

La salida de un pin arduino entre 40mA maximo o sea que lo alimentas con 3.7V y 40mA y pretendes que el motor se mueva con potencia?

No entiendo tus alternativas, un puente H o un potenciómetro? puente H esta bien pero potenciómetro que tiene que ver?

Tu tienes que comandar 4 motores no se si a la misma velocidad o 4 velocidades. Si fuera la misma velocidad entonces usemos un MOSFET pero a 3.7V volvemos a los problemas, hay que mirar que mosfet usar.


Esta es una alternativa que hará que tu motor gire al máximo.

Esta es otra para 4 motores, mira la especificación de los mosfet

No me he explicado bien. Pretendo hacer que el rotor funcione con la tensión de salida del arduino.

El mosfet es solo para que el rotor gire todo lo rapido que deberia. Lo que pasa es que no sé si deberia usar un mosfet o un puente H mejor.

Pretendo hacer que el rotor funcione con la tensión de salida del arduino.

Y tu no entiendes bien. No puedes ni debes alimentar un motor con la salida del arduino.
Si quieres alimenta al Arduino y a los motores con la misma batería, comparte GND pero nunca alimentas de una salida del Arduino los motores.

Con 3.7V siempre estarás alimentándolo mal si el Arduino es de 5V.
Ultima vez que te lo resalto.

Luego si usas el primer esquema sugerido o su versión x 4 no vas a tener problemas.
El puente H es si quieres que gire en uno u otro sentido.

Creo que el "y tu no etniendes bien" esta de más, puesto que yo simplemente he remarcado que no me estaba explicando correctamente. Soy un novato que intenta aprender de un mundillo en el que no es nada facil empezar de cero.

De todos modos te agradezco la ayuda. Mi última pregunta es:
¿Con un puente H me ahorro realizar todo el esquema anterior?

Gracias.

No necesitas un puente H.
El puente H es para poder girar el motor en ambos sentidos.

Con un solo MOSFET controlas el motor desde 0 a máxima potencia.

De acuerdo, muchas gracias por la ayuda y la comprensión.

Todo perfectamente claro ahora.