Uso de buses serie de teléfonos inteligentes (por ejemplo, USB, tarjeta SD, etc.) para controlar los servomotores

-2

El problema: quiero usar teléfonos inteligentes Android para controlar servomotores . NO quiero usar módulos externos como IOIO o cualquier otro.

La propuesta: utilice los canales de comunicación serie disponibles ... Pueden ser los Datos +/- en el bus USB, o los Datos [0,1,2] en el bus de la tarjeta SD. Realmente no importa ya que todo lo que quiero es un GPIO.

Explicación:

  • Soy consciente de que el sistema operativo Android interrumpirá el funcionamiento de la PWM, pero por ahora no debemos atender este problema.
  • La señal de control de un servomotor es una onda cuadrada [PWM] de 50 Hz de frecuencia. Un ancho de pulso positivo de 0,5 ms hará que la bocina del servo se desvíe +90 grados, mientras que 2,5 ms hará que desvíe -90 grados. 1.5ms es de 0 grados. El alto voltaje de salida es típicamente de 3V, el bajo voltaje es de 0V.

¿Es posible esta idea?

1) Teóricamente?

2) ¿Prácticamente?

    
pregunta student1

5 respuestas

3
  1. En teoría, si puedes expulsar señales arbitrarias de estos pines, podría funcionar.

  2. Sin embargo, en la práctica, es muy poco probable que funcione. Primero, las clavijas USB probablemente se manejan desde un chip PHY USB y, por lo tanto, solo podrán transmitir datos USB diferenciales. A menos que pueda falsificar un host USB en el otro extremo, puede ser imposible transmitir algo a través de las clavijas USB. Incluso si pudiera, no estoy seguro de si el sistema operativo permitiría el control necesario. Los pines de la tarjeta Micro SD serían una historia similar. Es probable que estén controlados por un módulo controlador de tarjeta SD interno, y usted estará limitado por las capacidades del módulo y la interfaz provista por el sistema operativo. Sin tener una tarjeta conectada, puede ser imposible sacar algo de los pines. Con una tarjeta conectada, puede ser difícil presionar para obtener las señales que desea de los pines.

respondido por el alex.forencich
4

El bus SD tiene 4 líneas de datos (D3: D0), una línea CMD y una línea CLK. no se manejará con pines GPIO, se accederá a través de un controlador periférico de hardware SD, posiblemente uno integrado en el microprocesador del teléfono. Dicho esto, es posible que su CPU en particular pueda reconfigurar esos pines para GPIO.

El problema que tiene es que está imponiendo restricciones poco realistas a su diseño. Obtenga un módulo Bluetooth, conecte una MCU (casi cualquier cosa con un UART y tres periféricos PWM de hardware), agregue una fuente de alimentación, servo controladores (si la lógica TTL no es suficiente) y algunos encabezados para conectar todo y listo. Aún mejor, si buscas en Google, seguramente encontrarás algo listo para usar, con una aplicación de Android ya escrita para conducirlo.

Si eres tan masoquista que debes manejarlo desde el hardware del teléfono, usa la multiplexación por división de frecuencia para combinar tres señales de audio ASK (por ejemplo, 11kHz, 13kHz, 15kHz) en una salida de auriculares , utilizando el ciclo de trabajo PWM requerido para modular cada señal. Use un detector para cada una de las tres frecuencias que generarán una lógica alta cuando se ingrese la frecuencia objetivo. Conecta esas salidas a tus servos.

    
respondido por el markt
2

Teóricamente, todo es teóricamente posible si inviertes suficiente dinero o tiempo en él. Diseñe un dispositivo Android desde cero con las opciones que desee. Hackee un teléfono celular para conectarse al software disponible controlable gpio.

Pero no es práctico.

Tienes algunas opciones. El puerto de audio podría ser PWM, dando dos canales. Esta aplicación te permite hacerlo gratis. Incluso puede conectarlo directamente a un servo si el nivel de la señal es lo suficientemente alto, pero es posible que necesite un amplificador operacional o un microcontrolador en el medio.

Las otras opciones son inalámbricas. Bluetooth, o wifi. Nuevamente, necesitaría un microcontrolador o un enrutador para esto, pero será infinitamente más práctico y ya se habrá hecho, en comparación con tratar de usar pines de datos usb de bajo nivel o pines de tarjetas SD que no están controlados directamente por el software. / p>     

respondido por el Passerby
1

Esto sería bastante fácil de hacer usando la salida de audio.

Si el posible acoplamiento de CA de la salida (o el filtrado en la capa de audio, el convertidor de frecuencia de muestreo, etc.) distorsiona el pulso más allá de la recuperación trivial, entonces podría modular una señal de audio en el extremo superior de la ancho de banda de audio. Un circuito externo bastante simple puede demodularse detectando la presencia de esta señal y generando una salida binaria (activada o desactivada).

Puede manejar dos servos utilizando los canales izquierdo y derecho, pero en los sistemas RC analógicos, los servos PWM fueron diseñados para, los canales se multiplexan enviando un pulso para cada canal, luego un espacio antes de que el conjunto de canales se repita el siguiente fotograma (los fotogramas normalmente vienen aproximadamente 50 veces por segundo). Un simple decodificador demultiplexa a cada jack de servo, y se reinicia en la brecha. Tradicionalmente esto era algo así como un 4017? contador, pero hoy sería más sencillo hacerlo con un microcontrolador de gama baja.

También puedes hacer esto con un flujo de datos en serie asíncrono entre el teléfono y el decodificador, en lugar de un PWM multiplexado, comparable a cómo las radios a finales de los 80 comenzaron a usar un formato PCM por aire mientras aún conducen PWM a los servos. .

Otra opción sería generar una frecuencia proporcional al ancho de pulso deseado y medirlo externamente, por ejemplo, podría usar un convertidor de frecuencia a voltaje que alimenta un diente de sierra & Modulador PWM comparador.

    
respondido por el Chris Stratton
0

Puede controlar los motores de CC desde un teléfono inteligente Android sin módulos de controlador separados, pero aún necesitará circuitos externos. Las dos formas en que he visto esto son a través de un cable de impresora USB a paralelo o de una toma de auriculares, como han sugerido otras respuestas aquí. En el enfoque de USB a paralelo, en lugar de intentar apagar un motor directamente de una señal USB, usaría la interfaz serial USB según el diseño previsto y usaría otros dispositivos electrónicos, pero no un microcontrolador separado, para proporcionar la señal al motor. . Lea más sobre este enfoque en enlace .

    
respondido por el teraKUHN

Lea otras preguntas en las etiquetas