¡¡BIEN!!
Bien bien bien bien hoy me siento eufórico, por fin un grupo de grandes electrofrikygeeks se ha currado un control de PWM por software para controlar hasta 8 GPIOs de forma independiente, sin necesitad de python ni cosas complicadas. Como ya sabiamos, solo uno de los GPIOs del RaspberryPi tenia control de PWM, gracias a el podemos darle más o menos velocidad a un motor DC, más o menos intensidad a un led y demás cosas que veremos en los siguientes posts. Veámos el resultado.Tal y como vimos en este post, RaspberryPi tenía la deventaja de un único GPIO controlable en PWM (modulación por duración de impulso). Por lo que electrónicamente, esta muy limitado. Yo intenté en vano, hacer que otro de los GPIO funcionase vía software de esta forma, pero no conseguí nada. Y hace un par de días me encontré esta web, con precisamente las instrucciones para tener hasta 8 GPIO modulados PWM por software, lo cual me viene de perlas para el ardu-quad-raspbi-copter, porque podré transformarlo en el quad-raspbi-copter.
Para instalarlo es demasiado fácil:
cd /usr/src/ wget https://github.com/richardghirst/PiBits/archive/master.zip -O PiBits.zip unzip PiBits.zip cd PiBits-master/ServoBlaster make make install make install_autostart cat /dev/servoblasterdependiendo de la versión del kernel tendrás que compilar más o menos, prometo hacer un paso a paso para los distintos kérneles cuando tenga tiempo. A mi me salia este fallo:
Error: could not insert module servoblaster.ko: Invalid module formatLo solucioné machacando el archivo servoblaster.ko por este otro.
La idea del servoblaster es controlar servomotores, estos se diferencian de los motores DC en la forma en la que reciben las ordenes. Funcionan por PWM normalmente a 50Hz con una aplitud entre 1 y 2 milisegundos. Si le envías un tren de impulsos de 2 ms se moverá en un sentido y si lo envías de 1 ms, se moverá en el otro.
Ahora mismo no tengo ningún servo, así que lo pruebo con leds, este es el esquema:
Pido perdón de nuevo por mis escasísimos conocimientos de Fritzing. El orden de los GPIOs (que por ahora no consigo localizar el 3) se puede ajustar según las instrucciones que dan en la web, si no lo cambias, el orden es:
Ahora para usar PWM en el pin 7:
echo 7=120 > /dev/servoblastersi queremos más brillo:
echo 7=220 > /dev/servoblasterSi queremos fiesta:
while ((1)); do for n in $(seq 1 220); do echo 7=$n > /dev/servoblaster; done; for n in $(seq 220 -1 1); do echo 7=$n > /dev/servoblaster; done; done
No hay comentarios:
Publicar un comentario