Autor Tema: Potenciómetro, led y pic 16f887  (Leído 227 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Serj2019

  • PIC10
  • *
  • Mensajes: 2
Potenciómetro, led y pic 16f887
« en: 27 de Octubre de 2019, 09:05:31 »
Buenos días. Escribo para buscar un poco de ayuda con este ejercicio. Estoy tratando de controlar un motor paso a paso bipolar con un potenciómetro, la idea es que el potenciómetro determine la posición que debe tener el motor. Y que una lcd muestre el valor en grados de la posición. Estoy usando el conversor AD del 16f887 para obtener el ángulo del potenciómetro y luego lo paso a una variable que me determina las veces que se debe repetir un arreglo con la secuencia de las bobinas del motor pero el error es que el motor se mueve erráticamente y no encuentro el problema. Agradezco sugerencias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7394
Re:Potenciómetro, led y pic 16f887
« Respuesta #1 en: 27 de Octubre de 2019, 09:51:29 »
El motor paso a paso no tiene un 0. Asi que inicialmente vas a necesitar llevarlo a 0 y algo que te indique cuando llego. Distinto es un servomotor.

Y si tenes un problema en como se mueve el motor es algun problema del programa. Tal ves lo estas haciendo demasiado rapido y no le estas dando tiempo al motor de moverse. Espero que el driver del motor este bien.
« Última modificación: 27 de Octubre de 2019, 09:53:50 por KILLERJC »

Desconectado Serj2019

  • PIC10
  • *
  • Mensajes: 2
Re:Potenciómetro, led y pic 16f887
« Respuesta #2 en: 31 de Octubre de 2019, 17:51:44 »
Gracias por la información. He notado que la salida del conversor del microcontrolador varía muy rápido y eso es lo que hace moverse el motor sin que el potenciómetro se mueva. Alguna idea de como podría corregir esto? He tratado de cambiar el delay en la etapa de lectura de la señal pero no ha afectado el resultado

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7394
Re:Potenciómetro, led y pic 16f887
« Respuesta #3 en: 31 de Octubre de 2019, 19:40:19 »
Dependiendo de cuanto se mueve la salida del conversor A/D va a depender que usas.

Si por ejemplo cambia solo los ultimos bits, podrias "promediar" varios valores (generalmente en potencia de 2 para dividirlo mas facil, ya que es rotar).

Si la variacion es MUY grande, entonces vas a tener que mejorar la parte de entrada del potenciometro, tal ves un pequeño capacitor en paralelo a lo que deseas medir. O seguramente la resistencia esta limitando la resistencia podria estar limitando la corriente que pasa al ADC.

La otra es crear una pequeña conversion, el ADC da 1024 valores, supongamos que te limitas a 180º y tu motor paso a paso da pasos de 1.8º, esto quiere decir que son exactamente 100 pasos... Entonces creamos una "funcion" que me transforme el ADC en la cantidad de pasos a dar, desde un 0. Esto quiere decir que cada cambio de 10 del ADC significa 1 paso del motor

Código: C
  1. Pasos = (uint8_t)(0.09766*ADC);
Obviamente donde pasos sea un entero de 8 bits sin signo. Que va a ir de 0 a 100.

Mientras no cambie el paso, entonces no moves el motor.

Si 10 valores es poco, podes tomar mas muestras y tratar de conseguir 1 bit mas. Por ejemplo tomando 4 muestras, sumandolas y dividiendolo por 2, obtendrias un resultado que es 1 bit mas. Aumentando asi que esa diferencia de 10 ahora sea de 20, y evitando que se cuenten mas pasos en falso.


 

anything