Estoy jugando con algunos sensores codificadores de rueda y un Arduino. El sensor necesita un poco de rebote, por lo que me hizo preguntarme cómo el núcleo del microcontrolador está viendo la entrada. Es decir, ¿cómo se ve la señal de entrada después de pasar por el disparador Schmitt y el sincronizador en la ruta de entrada GPIO?
¿Hay alguna forma de enlazar dos pines GPIO directamente, uno como entrada y el otro como salida para poder ver cómo se ve la señal en el otro extremo del sincronizador?
Tal como lo veo, si pruebo una lectura/escritura en el software, perderé información si el programa tiene más de una instrucción. ¿Verdadero?
La idea de eliminar el rebote no es buena si necesita usar un codificador de cuadratura. Incluso el máximo. la frecuencia teórica (contada desde las RPM máximas) es baja, puede ver un parpadeo de alta frecuencia en un canal que es más uno, menos uno, etc. Cuando pierde algún borde (por ejemplo, manejado por una interrupción externa), ve un cambio. Si necesita contar pulsos hacia arriba o hacia abajo, puede reutilizar un reloj externo para dos contadores AVR. MCU admite algunos rebotes simples y el ancho de banda es lo suficientemente alto. También carga MCU. Descubrí que evaluar las señales AB en cuadratura en el código es inútil, es decir, no es lo suficientemente confiable para sistemas de alta precisión y, en cambio, usa contadores de cuadratura LSI externos.
Algunos problemas relacionados con la conexión de dos puertos están en el subproceso de protección contra sobrecorriente del pin AVR ATMega I/O .
Al eliminar el rebote, generalmente tiene dos opciones: una corrección de hardware o una corrección de software. Dependiendo de la aplicación, cualquiera podría ser preferible.
Cuantas menos entradas deban eliminarse, más preferible será una solución de software, especialmente en microcontroladores de baja potencia. Una solución de software sería usar interrupciones que se ejecutan cada vez que cambia el estado de entrada y luego hacer que algún tipo de variable realice un seguimiento de cuándo ocurrió el último cambio de estado o 'rebote'. Si está en el milisegundo de un solo dígito, entonces probablemente sea un rebote y querrá rechazar ese valor. Mucho será prueba y error para ver cuál es un tiempo aceptable entre pulsaciones, pero 100 ms es un buen punto de partida porque es muy poco probable que un humano pueda pulsar un botón más rápido que 10 veces por segundo y es aún menos probable que ese fuera su intención, y es casi imposible que un botón rebote pueda ocurrir en más de 100 ms a menos que no funcione.
En cuanto a una corrección de hardware, esto puede aumentar la cantidad de elementos de circuito que su placa tendrá que usar, por lo que existe ese inconveniente. Pero si está limitado por la potencia del microcontrolador que está utilizando y necesita muchos interruptores antirrebote, podría ser la única opción factible. Pero si puede sintonizar y soldar el circuito RC correcto a su entrada, puede tener un circuito 'suavizado' que rechazará cambios rápidos en su señal de entrada antes de que se envíe a la entrada del microcontrolador.
Ignacio Vázquez-Abrams
marty
Ignacio Vázquez-Abrams
vladimir cravero
marty
chris stratton
jimmyb
ahogen