INICIO
Configurar pines, Serial
y variables
Activar interrupción
Python del encoder
(Monitoreo y
adquisición de
datos) Imprimir encabezado
CSV
Arduino UNO Encoder
Driver Motor DC ¿Hay datos
(Controlador (Sensor de
(Puente H) (Planta) por Serial?
PD Digital) posición)
Si
No
Leer comando
¿Ya pasaron
20 ms?
Si No
Calcular posición Regresar al
angular: ciclo principal
posición = pulsos · 360
/ PPR
¿Comando
inicia con "s"?
Calcular error:
No Si
error = setPoint -
posición
Ignorar comando Actualizar setPoint
Calcular derivada del
error:
de = (error - error
anterior) / dt
Calcular control PD:
u = Kp·error + Kd·de
Limitar PWM entre 0 y
255
¿Error
menor a
1°?
No Si
¿u > 0? Detener motor
No Si
Girar en sentido negativo Girar en sentido positivo
Aplicar PWM al puente
H
Guardar error anterior
y tiempo actual
Enviar tiempo, setPoint
y posición por Serial
REGRESAR AL CICLO
PRINCIPAL