A su vez, el puerto posee otros bits de control por los cuales no se envían ni reciben datos, sino que son utilizados para indicarle al dispositivo externo cuando está disponible la PC para recibir datos y demás.
Estos bits de control se pueden utilizar para generar por ejemplo una señal de onda cuadrada como en este post.
Para controlar el puerto utilizo las librerias PySerial escritas en el lenguje Python y como línea de control tomo el pin 7 RTS (Request To Send) del puerto serie.
Hardware
El circuito utilizado es el siguiente:
Circuito utilizado - Creado con gschem |
Notar que por como es la conexión del LED, este endencerá con un 0 lógico y estará apagado con un 1 lógico.
Si en lugar de utilizar una bateria de 9V, se utiliza una fuente de 5V, se pueden obtener a la salida niveles de voltaje TTL que son los que manejan la mayoría de los circuitos integrados.
Software
El programa de control está escrito en Python y hace uso de las librerías "PySerial" para controlar el puerto serie y de "Time" que permite generar delays para dejar pasar el tiempo.
Previo a esto deben instalar Python y Pyserial. En Ubuntu lo pueden hacer en una consola mediante:
$ sudo aptitude install python2.5 python-serial
Luego de tener Python y PySerial instalados, deben crear un archivo de texto con el siguiente código:
import serial # importo modulo pyserial
from time import * # importo modulo time
puerto_serie = '/dev/ttyS0' # direccion del puerto serie
# creo conexion a 2400 baudios con una espera maxima de 5 segundos
s = serial.Serial(puerto_serie, baudrate = 2400, timeout=5)
while True:
s.setRTS(0) # pongo RTS=0 logico
print 'Salida = 0 (0V), LED encendido...'
sleep(1.5) # espero (sin ocupar el puerto)
s.setRTS(1) # pongo RTS=1 logico
print 'Salida = 1 (Vcc), LED apagado...'
sleep(1.5) # espero
Guardan este archivo con el nombre "onda_serie.py" y para ejecutarlo abren una consola en la carpeta donde tengan guardado el archivo y ejecutan:
$ python onda_serie.py
Vsita de la salida en el analizador lógico TFLA (usando sleep(1)) |
Cambiando el valor de sleep(x segundos) pueden variar la frecuencia de la señal. A su vez, usando valores distintos entre sí para estos tiempos de sleep, se puede generar una señal con cíclo de trabajo variable donde el tiempo en que la onda está arriba (9V) es distinto al tiempo en que está abajo (0V).
Fuentes
- Documentación de PySerial
- RS232 Shifter v2 - Spark Fun Electronics
- RS-232 voltage levels - Wikipedia
No hay comentarios:
Publicar un comentario