Cuando se reinicia el arduino el pin está en HIGH

Buenos días,

Estoy intentando hacer un control de velocidad y tengo un problema. En el código simplificado de abajo que estoy haciendo a modo de prueba, el pin 10 me está dando 2.5V aproximadamente antes del delay, pero yo quiero que sea 0V. Por lo que parece, los pines dan cierto voltaje cuando se reinicia el arduino, y esto es un gran inconveniente para mi programa. ¿Cómo puedo hacer que un pin de 0V desde el principio?

Gracias y un saludo

int Motor = 10;
void setup()
  {    
       delay(10000)
       Serial.begin(9600) ;
       pinMode(Motor, OUTPUT); 
       analogWrite(Motor,0);
  }

Hola,

Inicializa el pin lo primero, antes del delay, ademas un delay de 10 segundo como primera instrucción yo no lo pondria nunca.

El delay está solo puesto a modo de prueba (para poder medir el voltaje que salía). Si quito el delay pasa lo mismo pero durante un periodo de tiempo más corto...

La circustancia que cuentas es estraña. ¿Pasa lo mismo en otros pines?, ¿Que tienes conectado en el pin 10?, ¿Que arduino estas usando?.

Sí, lo he probado en diferentes pines y me pasa lo mismo. Tengo conectado el control de velocidad de un motor (tiene la electrónica integrada el motor), aun así lo mido con el polímetro y me da los 2.5V. Por último, estoy usando el arduino UNO.

Gracias

Como alimentas el Ardiono?
Qué voltaje utilizas?
Has probado inicializarlo con digitalWrite()?

Creo que lo que necesitas es una resistencia pull-down que "lleve" el pin a masa mientras no esté configurada como salida.

FUNCIONA!!! La resistencia pull down elimina ese pequeño voltaje de inicio.

Muchas gracias!!

La verdad que tengo la electronica muy muy oxidada asi que corregirme si estoy confundido, pero si pone una resistencia pull-down ¿ luego no actuara como divisor de tensión haciendo que funcione mal el motor?, pero por probar no se pierde nada.
Ademes se supone y digo se supone ya que no lo he comprobado nunca, arduino cuando arranca pone todos los pines como entradas, con lo que en ningun pin deveria de haber tensión.
Yo ahora preguntaria, si desconectas el controlador del motor ¿ tambien hay tensión en el pin?

rodripelto:
[...] arduino cuando arranca pone todos los pines como entradas, con lo que en ningún pin debería de haber tensión.

Cierto. Cuando se configuran como entrada es como si no estuvieran conectados a nada y si esas "entrada" está conectada a otra "entrada" es como si ambas estuvieran sin conectar a nada. Dependiendo de cómo sean esas entradas, se pueden comportar como si estuvieran conectadas "por defecto" a un nivel alto, a masa o simplemente "indeterminado" y en este último caso puede fluctuar por sí solo entre nivel alto y bajo aleatoriamente. Para evitar esto último y obtener un valor "por defecto" en la entrada, si esta no está conectada a nada, es para lo que se utiliza la resistencia pull-up (si se quiere por defecto un nivel alto) o pull-down (si se quiere por defecto un nivel bajo). En este caso lo que se deseaba es que, hasta que se configure como salida el pin de Arduino, por defecto fuera un nivel bajo por lo que la solución es poner una resistencia pull-dow.

rodripelto:
[...] pero si pone una resistencia pull-down ¿ luego no actuara como divisor de tensión haciendo que funcione mal el motor? [...]

Efectivamente, se tendría un divisor de tensión, prácticamente todo se puede ver como divisores de tensión. La clave está en qué división se hace.

Digamos que los circuitos "de entrada" tienen un divisor de tensión con dos resistencias en serie con valores muy altos, con lo que si ponemos en paralelo con una de ellas una resistencia de un valor "relativamente bajo" hacemos que el divisor de tensión cambie "significativamente". Eso es lo que hacen los "divisores de tensión" de las "salidas" ya que las "supuestas resistencias" del divisor de tensión de la salida "simulan" dos resistencias en serie una con un valor muy pequeño y otra con un valor muy alto, para así hacer que la tensión del divisor se "aproxime" a la de alimentación o a masa según sea la "supuesta" resistencia más baja la que esté conectada a la alimentación o a masa.

Pero, como ya he dicho, si no hay "salida" conectada a las entrada, hay que poner poner una resistencia de un valor pequeño para "forzar" que el divisor de tensión de la entrada se decante por un nivel alto o bajo, según lo que queramos "por defecto". Claro está que esa resistencia va a estar fija y no se va a quitar cuando tengamos una "salida" conectada (cuando el Arduino configure por fin el pin como salida), así que para que no haga "interferencias" con el divisor de tensión de la salida del Ardunio, el valor de la resistencia no ha de ser muy bajo, pero tampoco ha de ser muy alto para que sea "significativo" el cambio que hace sobre el divisor de tensión de la entrada que queremos controlar. 4700 ohmios es un valor "aceptable" para ello, ni muy bajo ni muy alto.

¿Y si no hay "salida" conectada a pin de entrada, sino que directamente se conecta a la tensión de alimentación o masa a través de un interruptor/pulsador como en la imagen? ¿Se podría poner una resistencia más baja ya que no interfiere con ninguna "salida"? Pues no es necesario poner un valor muy bajo, ni tampoco es recomendable ya que esa resistencia limita la corriente que va a circular cuando se cierre el circuito. Con lo que a un valor más bajo el consumo será mayor e incluso si el valor es demasiado bajo (cero resistencia) produciría un corto y podría estropear la fuente de alimentación.

Obviamente, las salidas y entradas no son únicamente resistencias, pero el resultado de su comportamientos a nivel eléctrico se pueden "considerar como" resistencias.

No sé rodripelto si te lo he aclarado o si te he liado más aún la duda.

Hola,
Gracias IgnoranteAbsoluto, no me has liado, mas o menos era lo que pensaba. Soy electrónico de estudios pero desgraciadamente por mi trabajo llevo mas de 20 años sin hacer electrónica pura. Solo trato con puente de Wheatstone.

Acabo de ver este post y realmente hay una cosa que me llama bastante la atencion. No se supone que los arduinos no integran las resistencias pull down? En principio yo solamente he podido trabajar a base de codigo activando las pull up. Si alguien me pudiera ilustrar le estaria bastante agradecido.

Un saludo

Efectivamente Arduino no intengra pull donw, pero es tan sencillo como poner una resistencia entre el pin y masa.

Ya, pero en realidad ya tendrias que estar poniendo multiples resistencias para cada pin que quieres que tenga señal siempre baja. Yo al final me tire usando pull up y en los codigos trabajando con señales bajas como activadores, pero me extraño al ver gente hablando de pulldown por eso pregunte.

Muchas gracias por la aclaracion