Tabla de contenido:
- Paso 1: Lista de piezas
- Paso 2: la solución obvia
- Paso 3: temporizadores en cascada para una resolución más alta
Video: Generación de señal PWM de alta resolución para servos RC con dispositivos STM32: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Actualmente, estoy construyendo un transmisor / receptor RC basado en el chip RF SX1280. Uno de los objetivos del proyecto es que quiero una resolución de servo de 12 bits desde los sticks hasta los servos. En parte porque los servos digitales modernos tienen una resolución de 12 bits, en segundo lugar, un transmisor de gama alta usa 12 bits de todos modos. Estaba investigando cómo puedo generar señales PWM de alta resolución en dispositivos STM32. Estoy usando píldora negra (STM32F103C8T8) en este momento para el prototipo.
Paso 1: Lista de piezas
Hardware
- Cualquier placa de desarrollo STM32F103 (pastilla azul, pastilla negra, etc.)
- Un banco de energía USB como fuente de alimentación
- Programador STM32 (Segger j-links, ST-LINK / V2, o simplemente un clon de st-link)
Software
- STM32CubeMX
- Atollic TrueSTUDIO para STM32
- Fuente del proyecto de github
Paso 2: la solución obvia
Probablemente, la solución más sencilla es utilizar uno de los temporizadores que pueden generar señales PWM, como TIM1-3 en un STM32F103. Para un servo digital moderno, la velocidad de fotogramas puede bajar a 5 ms aproximadamente, pero para un servo analógico antiguo debería ser de 20 ms o 50 Hz. Entonces, en el peor de los casos, generemos eso. Con un reloj de 72 MHz y una resolución de contador de temporizador de 16 bits, debemos configurar el preescalador del temporizador en un mínimo de 23 para cubrir la velocidad de cuadro de 20 ms. Seleccioné 24 porque luego, durante 20 ms, necesito configurar el contador exactamente en 60000. Puede ver la configuración de CubeMX y las señales PWM de 1 y 1,5 ms generadas en las capturas de pantalla. Desafortunadamente, durante 1 ms, el contador del temporizador debe establecerse en 3000, lo que nos daría una resolución de solo 11 bits. No está mal, pero el objetivo era de 12 bits, así que intentemos algo más.
Por supuesto, si seleccionara un microcontrolador con contador de temporizador de 32 bits, como STM32L476, esta resolución puede ser mucho mayor y el problema se resolvería.
Pero aquí, me gustaría proponer una solución alternativa que aumentará aún más la resolución incluso en el STM32F103.
Paso 3: temporizadores en cascada para una resolución más alta
El principal problema con la solución anterior es que la velocidad de fotogramas (20 ms) es relativamente alta en comparación con la señal PWM realmente generada (entre 1 y 2 ms), por lo que estamos desperdiciando algunos bits valiosos durante los 18 ms restantes cuando estamos esperando. el siguiente cuadro. Esto se puede resolver conectando temporizadores en cascada utilizando la función de enlace de temporizador para la sincronización.
La idea es que usaré TIM1 como maestro para generar la velocidad de fotogramas (20 ms) y TIM2, TIM3 para hacer frente a las señales PWM como esclavos. Cuando el maestro activa los esclavos, solo generan una señal PWM en un modo de pulso. Por lo tanto, solo necesito cubrir 2 ms en esos temporizadores. Afortunadamente, puede conectar esos temporizadores en cascada en el hardware, por lo que esta sincronización no necesita ninguna intervención del procesador y también es muy precisa, el jitter está en la región ps. Puede ver la configuración de CubeMX en las capturas de pantalla.
Como puede ver, seleccioné 3 como prescalar, por lo que para los 2 ms necesito establecer 48000 en el contador del temporizador. Esto nos da 24000 por 1 ms, que en realidad es más de lo que necesitamos para una resolución de 14 bits. Tadaaaa…
Eche un vistazo a las capturas de pantalla del osciloscopio en la introducción para ver el resultado final. El canal 3 (violeta) es la interrupción del temporizador maestro que activará los bálsamos para generar un pulso. Los canales 1 y 4 (haz amarillo y verde) son las señales PWM reales generadas por diferentes temporizadores. Tenga en cuenta que están sincronizados, pero están sincronizados en los bordes posteriores, eso se debe al modo PWM 2. Esto no es un problema, porque la velocidad PWM para el servo en particular sigue siendo correcta.
Otro beneficio de esta solución es que cambiar la velocidad de fotogramas significaría cambiar el período solo en TIM1. Para los servos digitales modernos, puede bajar incluso a 200-300 Hz, pero consulte el manual del servo si desea realizar un ajuste fino.
Recomendado:
Contador de frecuencia de alta resolución: 5 pasos (con imágenes)
Contador de frecuencia de alta resolución: este instructable muestra un contador de frecuencia recíproco capaz de medir frecuencias rápidamente y con una precisión razonable. Está hecho con componentes estándar y se puede hacer en un fin de semana (me tomó un poco más de tiempo :-)) EDITAR: El código ahora está disponible
Cámara web de alta resolución: 9 pasos (con imágenes)
Cámara web de alta resolución: Durante algunos años utilicé una cámara web basada en RPi (con el módulo PiCam). Las imágenes producidas estaban bien, pero luego, llegó el momento en el que ya no estaba satisfecho con la calidad. Decidí hacer una cámara web de alta resolución. Las siguientes partes w
OpenLogger: un registrador de datos portátil de código abierto, de alta resolución, habilitado para Wi-Fi: 7 pasos
OpenLogger: un registrador de datos portátil, de código abierto, de alta resolución, habilitado para Wi-Fi: OpenLogger es un registrador de datos portátil, de código abierto, de bajo costo y alta resolución diseñado para proporcionar mediciones de alta calidad sin requerir software costoso o software de escritura desde cero. Si es ingeniero, científico o entusiasta que no
Cómo obtener imágenes de alta resolución de instructables: 4 pasos
Cómo obtener imágenes de alta resolución de los instructables: ¿Realmente disfrutó esa imagen instructable y desea guardar una copia de alta resolución? Esta pequeña gran característica se pasa por alto fácilmente
Mod de antena de alta ganancia WI-FI para computadora portátil Dell, aumenta el alcance y la señal de las tarjetas de red internas: 5 pasos
Dell Laptop WI-FI High Gain Antenna Mod, Increase Internal Network Cards Range and Signal !!!: Hola, Este es mi primer instructivo. Hoy voy a mostrarte cómo aumentar significativamente el alcance y la potencia de señal de tu computadora portátil por unos 15 $. Tengo una Dell E1505, pero se puede adaptar fácilmente a otras marcas de computadoras portátiles. Es muy fácil yq