Introducción
Los dispositivos de la familia de PLC basados en Raspberry Pi tienen un número definido de salidas digitales. Todas ellas pueden ser programadas como salidas PWM, si es necesario. Como sabemos, el PWM (Pulse Width Modulation) es un tipo de señal de tensión que se utiliza para enviar información o para modificar la cantidad de potencia enviada por cada carga. Así que, en este blog, vas a ver cómo configurar las salidas PWM.
Requisitos
Los puntos clave que debes tener en cuenta son los siguientes:
Familia de PLCs Raspberry Pi industriales
Acceso al PLC: shh. Un tutorial sobre cómo acceder al dispositivo a través de Linux o Windows se puede encontrar en la Guía del usuario del controlador PLC Raspberry Pi
Enlaces relacionados
Conceptos básicos sobre salidas digitales del PLC industrial Raspberry
Leer >>
Conceptos básicos sobre salidas analógicas del PLC industrial Raspberry
Leer >>
Cómo encontrar tu PLC industrial ideal
Leer >>
Cómo programar en Python las entradas de interrupción del PLC industrial Raspberry
Familia de productos RAspberry PLC
Leer >>
Explicación y uso del script Bash
En primer lugar, el Script Bash que tenemos que ejecutar para gestionar las salidas PWM es el llamado "set-analog-output" situado en la ruta "/home/pi/test/analog/". Hay que asegurarse de que la salida que queremos configurar como PWM no está configurada como analógica o digital por lo que, para asegurarnos, podemos ejecutar la función "stop" (para que deje de ser salida analógica o digital:
./set-analog-output A0.5 stop
O bien :
./set-digital-output Q0.5 stop
Para ejecutar el script, hay que llamar al script "set-analog-output" pero introduciendo como parámetros una salida digital y el ancho del pulso. La anchura del pulso es el periodo de tiempo alto del ciclo de trabajo y tiene un rango de 0 a 4095 (12 bits). Por ejemplo, si se quieres un periodo de tiempo alto del 25%, hay que poner 1024 y, si se quiere un periodo de tiempo alto del 100%, hay que poner 4095.
./set-analog-output Q0.5 4095
Nota: Consulte la Guía del usuario para saber qué salidas son compatibles con PWM.
Los parámetros PWM del script no tienen que ser modificados para asegurar un correcto comportamiento PWM. Aquí podemos ver el script:
#!/bin/bash# PWM period in nanoseconds PERIOD="2000000" case ${1} in A0.5) ADDR=40; INDEX=10 ;; A0.6) ADDR=40; INDEX=1 ;; A0.7) ADDR=40; INDEX=0 ;; A1.5) ADDR=40; INDEX=3 ;; A1.6) ADDR=40; INDEX=5 ;; A1.7) ADDR=40; INDEX=8 ;; A2.5) ADDR=41; INDEX=2 ;; A2.6) ADDR=41; INDEX=1 ;; A2.7) ADDR=41; INDEX=0 ;; Q0.0) ADDR=40; INDEX=15 ;; Q0.1) ADDR=40; INDEX=14 ;; Q0.2) ADDR=40; INDEX=13 ;; Q0.3) ADDR=40; INDEX=12 ;; Q0.4) ADDR=40; INDEX=11 ;; Q0.5) ADDR=40; INDEX=10 ;; Q0.6) ADDR=40; INDEX=1 ;; Q0.7) ADDR=40; INDEX=0 ;; Q1.0) ADDR=40; INDEX=2 ;; Q1.1) ADDR=40; INDEX=9 ;; Q1.2) ADDR=40; INDEX=6 ;; Q1.3) ADDR=40; INDEX=4 ;; Q1.4) ADDR=40; INDEX=7 ;; Q1.5) ADDR=40; INDEX=3 ;; Q1.6) ADDR=40; INDEX=5 ;; Q1.7) ADDR=40; INDEX=8 ;; Q2.0) ADDR=41; INDEX=6 ;; Q2.1) ADDR=41; INDEX=7 ;; Q2.2) ADDR=41; INDEX=5 ;; Q2.3) ADDR=41; INDEX=4 ;; Q2.4) ADDR=41; INDEX=3 ;; Q2.5) ADDR=41; INDEX=2 ;; Q2.6) ADDR=41; INDEX=1 ;; Q2.7) ADDR=41; INDEX=0 ;; *) echo "Output not defined" >&2 exit 1 ;; esac VALUE="${2:-50}" if [ -z "${PWM}" ]; then CHIP_BASE_DIR="/sys/bus/i2c/devices/1-00${ADDR}/pwm" CHIP_NAME="$(ls ${CHIP_BASE_DIR})" CHIP_DIR="${CHIP_BASE_DIR}/${CHIP_NAME}" CHIP="${CHIP_NAME#pwmchip}" PWM="${INDEX}" fi if [ "${VALUE}" = "stop" ]; then echo "${PWM}" > ${CHIP_DIR}/unexport exit 0 fi if [ ! -d ${CHIP_DIR}/pwm${PWM} ]; then echo "${PWM}" > ${CHIP_DIR}/export fi echo "${PERIOD}" > ${CHIP_DIR}/pwm${PWM}/period DUTY_CYCLE="$((${2} * ${PERIOD} / 4095))" echo "${DUTY_CYCLE}" > ${CHIP_DIR}/pwm${PWM}/duty_cycle
¿Tienes preguntas?
Contacta con nuestro equipo técnico-comercial y resuelve tus dudas sobre programación o cuestiones técnicas.
Te ayudaremos a encontrar la mejor solución para automatizar tus instalaciones.