La respuesta simple es mediante el uso de una señal pwm.
Tenga en cuenta que raspberry pi solo contiene un solo pin pwm de hardware, pero el pwm de software se puede generar en cualquiera de los pin gpio.
El software pwm proporciona una precisión de aproximadamente 100us, es decir, no puede generar una señal de período de tiempo menor que este.
Además, el software pwm crea mucho gitter, por lo que si lo está utilizando para aplicaciones altamente sensibles, se sugiere hardware pwm.
Para generar un hardware pwm
pwm Frecuencia en Hz = 19.2e6 Hz / pwmClock / pwmRange
- ¿Es Raspberry Pi una buena opción para desarrollar un sistema de vigilancia doméstica, o puedo desarrollar el sistema a menor costo con otras tecnologías?
- ¿Puedo construir una computadora portátil Raspberry Pi con una duración de batería de 2 días?
- ¿Por qué Linux no está construido con un kernel preventivo, aunque sí lo está el Raspberry Pi?
- ¿Se podría utilizar un grupo de Raspberry Pi de segunda generación con conexión WIFi para crear un servidor de archivos en todo el vecindario?
- ¿Es posible ejecutar QEMU en un Ubuntu instalado en una caja virtual, para arrancar en una imagen de frambuesa pi?
Para generar una señal de 50 hz
50 Hz = 19,2e6 Hz / 1920/200
Ahora escribe en la terminal
gpio mode 1 pwm // establece gpio 1 como pwm
gpio pwm-ms
gpio pwmc 1920 // reloj pwm
gpio pwmr 200 // gama pwm
gpio pwm 1 50 // generar pwm en 1 de 1/4 de ciclo de trabajo causa 50/200 = 1/4
funciono bien para mi
También puede generar software pwm usando Python.
Para crear una instancia de PWM:
p = GPIO.PWM (canal, frecuencia)
Para iniciar PWM:
p.start (dc) # donde dc es el ciclo de trabajo (0.0 <= dc <= 100.0)
Para cambiar la frecuencia:
p.ChangeFrequency (freq) # donde freq es la nueva frecuencia en Hz
Para cambiar el ciclo de trabajo:
p.ChangeDutyCycle (dc) # donde 0.0 <= dc <= 100.0
Para detener PWM:
p.stop ()
Tenga en cuenta que PWM también se detendrá si la variable de instancia ‘p’ queda fuera de alcance.
Un ejemplo para generar un pwm de ciclo de trabajo del 40% y señal de 50Hz en el pin 12:
importar RPi.GPIO como GPIO
GPIO.setmode (GPIO.BOARD)
GPIO.setup (12, GPIO.OUT)
p = GPIO.PWM (12, 50)
p.inicio (40)