Está en la página 1de 52

// DESCARGA GRATUITA // int ao = 1, nmero 2; /* MARZO 2008 */

Electrnica en General Pics en Particular

El Relojito II
Analizaremos las rutinas necesarias
para la programacin de nuestro reloj.
Lenguajes PIC BASIC y CCS
El u-Scilador Estreno!!!
Capaz de trabajar con frecuencias Te presentamos
comprendidas entre uno las nuevas secciones:
y varias decenas de MHz Paleotrnica y Ludoteca
.inicio

llave accionada al tacto

el Protocolo Wiegand
0x04

0x05
.editorial
PICs y LEDs: una pareja perfecta 0x08 Nuevamente estoy sentado frente al ordenador,
enfrentado a la tarea de escribir la editorial de la revista.
poniendo un poco de orden en C 0x0B Lo primero que se me ocurre es que, en esta oportunidad,
ms que Editorial deberamos poner a este espacio el
simulador de circuitos digitales 0x0D
nombre de Agradecimientos. Veamos porque.
el relojito. segunda parte 0x10 En primer, es imprescindible agradecer a los ms
de 14.000 lectores que descargaron la revista en los pri-
PIC BASIC. CAP. II 0x13 meros dos meses. No hace falta decir que un nmero
semejante ha superado con creces nuestras ms locas
hablemos de antenas 0x15 fantasas. El sorteo del GTP-USB+ cont con mas de 700
participantes, y nuestra casilla de correo se vio inundada
receptor para el protocolo 0x19
.indice

DMX512 de mensajes expresando felicitaciones, agradecimientos


y sugerencias (que sern debidamente tomadas en cuen-
monoestable con NE555 0x1F ta) para los prximos nmeros.
En segundo lugar tengo que reconocer la calidad
el bus SPI 0x21 y el esfuerzo de los colaboradores que han hecho posibles
estos dos nmeros de uControl. Probablemente no lo sepas,
el u-Scilador 0x26
pero quienes escriben en uControl lo hacen restando tiempo
dado electrnico. versin 1 0x28 a sus labores habituales, sin cobrar un centavo por ello. Este
hecho, sin duda, hace an ms valiosos sus artculos.
dado electrnico 0x2B Algo que tambin nos ha sorprendido gratamente,
con PIC 16 y que necesario agradecer, es la buena aceptacin que
ha tenido esta modestsima revista en los foros y blogs de
el microprocesador INTEL 4004 0x2E
todo el mundo. Muchos sitios han colocado una copia del
documento PDF para que sus lectores lo puedan descar-
gar directamente desde sus servidores, y algunos incluso
nos han honrado abriendo una seccin dedicada a esta
nmero = 2; ao = 1; publicacin.
Direccin y Redaccin: Todo esto hace que el compromiso asumido en
Ariel Palazzesi
Argentina el nmero anterior, de entregar cada 64 das una revista
arielpalazzesi@gmail.com prolija, fresca y til, se vea fortalecido. Haremos todo lo
www.ucontrol.com.ar
Edicin, Redaccin y Correccin:
posible por que cada nmero sea mejor que el anterior,
Reinier Torres Labrada sumando cantidad de artculos y de pginas para que to-
Cuba
reiniertl@gmail.com dos encuentren en ella el dato que buscan. Para lograrlo,
hicimos este nmero...

Diseo: hemos hecho de este segundo nmero es una evolucin


Vernica C. Lavore
Argentina del primero. Hay nuevas secciones, hemos intentando
azimut.estudio@gmail.com mejorar la forma en que escribimos para que los textos
Consejo Editorial: sean fcilmente comprensibles, y el diseo de las pgi-
Mario Sacco
Argentina nas e imgenes tambin ha sido revisado para hacer mas
service.servisystem@gmail.com
agradable la lectura.
Carlos Ortega Sabio
Espaa Este mes estrenamos colaboradores nuevos. En
.staff

carlos.ortegasabio@ucontrol.com.ar
realidad, por motivos de tiempo nos han quedado sin in-
Diego Mrquez Garca - Cuervo
picmania@garcia-cuervo.com cluir varios artculos de gran calidad y valor didctico que
http://picmania.garcia-cuervo.net/
colaboradores espontneos nos han enviado. Por supues-
Marcos Lazcano
Argentina to, podrs leerlos en los nmeros siguientes o en nuestro
marcos.lazcano@gmail.com
sitio Web.
Pedro
Venezuela En uControl esperamos que la revista que acabas
palitroquez@gmail.com
de descargar sea de tu agrado. Si al menos una pagina te
Contacto:
revista@ucontrol.com.ar resulta de utilidad, el esfuerzo habr valido la pena.
www.ucontrol.com.ar Hasta el prximo Nmero!

//pgina 0x02
//Mario Sacco//
.proyectos service.servisystem@gmail.com

llave accionada al tacto


Es posible reemplazar nuestros viejos pulsadores utilizando solo un pua-
do de componentes fciles de conseguir. Utilizaremos botones metlicos, eternos,
que darn una nueva dimensin a nuestras posibilidades de desarrollo. El circuito
que presentamos aqu puede utilizarse en casi todos los proyectos que requieran
el accionar de interruptores.

Al levantarnos, por la maana, apagamos el conductor, que haga las veces de sensor de toque. Hemos
despertador (pulsamos un botn), encendemos la luz utilizado para ello la cabeza de un tornillo, aunque es posi-
(pulsamos un botn), vamos al bao y encendemos la ble utilizar alguna otra cosa en su lugar. Al tocar este ele-
luz (pulsamos un botn), nos aseamos y al salir apaga- mento estamos induciendo en el mismo una seal de 50
mos la luz (pulsamos un botn). Hz. que ser rectificada por los diodos identificados como
An no sabemos si ha salido el sol o est nublado y ya D1 y D2 en el esquema. Esto provocara que un voltaje ne-
hemos pulsado botones una innumerable cantidad de veces. gativo se haga presenten en condensador C3, el resistor
Cuando uno de estos botones que R3 y la compuerta ( gate) del transistor
acompaan cada da de nuestras vidas co- Nuestro circuito Q1. Esto hace que el transistor pase a un
mienza a fallar, comenzamos a maltratar- estado de corte.
necesita de un elemento A travs del resistor R2 proporcionamos
lo hasta que logramos que el artefacto en
cuestin nos haga el honor de ejecutar la metlico, conductor, que un estado lgico alto a la entrada de la pri-
funcin que deseamos. Este es un hecho haga las veces mer puerta del CD4069.
estadstica comprobable a quin no le ha Este 1 es invertido por la segunda com-
de sensor de toque.
pasado alguna vez? puerta y aplicado a la entrada de control de
Cuando dicho aparato ya no pue- una de las cuatro llaves analgicas que po-
de soportar ms golpes, terminamos dndonos cuenta de see el circuito integrado CD4066. Estas entradas requieren
la importancia que tiene un sistema como el que describi- de un estado alto para activar la llave analgica interna.
remos en este artculo. Se trata de un sistema totalmente Dado que un CD4069 dispone de seis compuer-
estanco, sin partes mecnicas o mviles, que ser eterno. tas en su interior, y que un CD4066 tiene cuatro llaves, po-
Nuestro circuito necesita de un elemento metlico, demos construir tres pulsadores de este tipo con solo dos
circuitos integrados. Es importante recordar que con estas
llaves podremos conmutar seales de baja tensin y co-
rriente. Esto incluye seales de audio, video, circuitos de
continua, seales TTL o CMOS y toda aquella aplicacin
que no requiera consumos de ms de 60 mA. Si el aparato
a conmutar consuma una corriente mayor, daaremos la
llave del CD4066.
La versatilidad de este circuito nos permitir dise-
ar mdulos selectores de funciones, controles de volumen,
pulsadores de reset, teclados, etc. Todo aquel proyecto que
requiera el uso de un botn pulsador, dejar de tener un
elemento que algn da pueda fallar.

En la prxima entrega veremos cmo, con un pe-


queo agregado, podemos transformar este pulsador mo-
mentneo, en un pulsador con retencin, pudiendo susti-
Es notable que tan pocos componentes, soluciones problemas eternos. tuir tambin a esta clase de frgiles dispositivos.

//pgina 0x04
//Diego Mrquez Garca - Cuervo//
.teora picmania@garcia-cuervo.com

el protocolo Wiegand
Una visin general de qu es, para qu sirve y cmo se utiliza el protocolo
que implementaron los lectores de tarjetas de Efecto Wiegand.
Primero y antes de empezar, es importante no . Sistema de transmisin
confundir el Protocolo Wiegand con el Efecto Wiegand. El
Efecto Wiegand es un concepto fsico en el que intervienen La transmisin de datos Wiegand usa tres hilos. La
las distintas formas en que reaccionan magnticamente lnea para enviar los unos lgicos o DATA1, la lnea para
distintas reas de un hilo conductor ante la inuencia de un hacer lo propio con los ceros lgicos o DATA0 y la lnea de
campo magntico. masa de referencia de ambos o GND. Los niveles que se
En base a este Efecto Wiegand se construyeron cier- usan son Bajo, a nivel de GND, o Alto a +5V o VCC.
tos tipos de tarjetas de identificacin y sus correspondientes En estado de reposo, o sea, sin transmitir, la lnea
lectores de tarjetas de proximidad, para usarlos en control de GND es exactamente lo que es: GND, y siempre est en
de accesos y/o presencia. Estos lectores de tarjetas deban bajo, por lo que ya no nos referiremos ms a ella. Las lneas
conectarse a los dispositivos de control de acceso de algn DATA1 y DATA0 estn en alto, a nivel de +5V VCC.
modo (vase Fundamentos de la Comunicacin Sncrona Para transmitir un Bit 1 lo que se hace es mandar
en el nmero anterior), y en lugar de usar algn protocolo ya un pulso a Bajo, normalmente de 50 uS (microsegundos)
existente se decidi desarrollar uno propio. As naci el Proto- de duracin, por la lnea DATA1, mientras DATA0 perma-
colo Wiegand, que es al que se refiere este artculo. nece en Alto.
Como todo protocolo de comunicaciones el Wie- Por el contrario, para transmitir un Bit 0 lo que se
gand consta de dos partes fundamentales. Por un lado hace es mandar un pulso Bajo, tambin de la misma dura-
tenemos una descripcin del modo en que fsicamente se cin 50 uS (microsegundos), por la lnea DATA0, mientras
transmite la informacin digital, y por otro la forma de inter- ahora es DATA1 la que permanece en Alto.
pretar numricamente dicha informacin. Normalmente la separacin entre cada pulso y el
Probablemente debido a mis propias limitaciones siguiente es de unos 2 mS (milisegundos).
y/o desconocimiento no sera capaz de deciros si el protocolo Como podis ver, y a diferencia de los protocolos
Wiegand es un protocolo serie Sncrono o Asncrono ya que mencionados anteriormente, los dos tipos de Bits, ceros y
es fundamentalmente distinto a los que conozco de estos dos unos, son transmitidos de forma idntica aunque por lneas
tipos anteriores: El ABA Track II como ejemplo de Sncrono o distintas. En el cronograma de la figura 1 vemos una repre-
el RS-232 del Asncrono. En cualquier caso, describir como sentacin grfica de este sistema de transmisin.
funciona y ustedes mismos podrn decidir como llamarlo. Y hasta aqu todo lo referente a la primera parte

Diagrama de tiempos al transmitir la secuencia de bits 1010.

//pgina 0x05
.teora
a la que nos referimos mas arriba como el modo en que Curioso verdad? En la figura 2 podis ver una t-
fsicamente se transmite la informacin digital. pica interpretacin de un cdigo Wiegand 26. Ese ejemplo
constituye el Facility Code + User Code 4-24610. La paridad
.Interpretacin de los Datos E es 1 para hacer Par la secuencia de 00000100011 que
tiene tres unos y la paridad O es tambin 1 para hacer impar
Mediante el sistema descrito anteriormente se pue- la secuencia 0000000100010 que slo tiene dos unos.
de transmitir cualquier nmero de bits que queramos. Sin Los dems tipos de Wiegands tienen interpretacio-
embargo, existe un cierto consenso para utilizar un deter- nes distintas, as el Wiegand 32 no lleva paridad y tanto el
minado nmeros de bits: 26 (el ms utilizado), 32, 44 128. Facility Code como el User Code son dos nmeros enteros
Y la interpretacin de los mismos, salvo el de 26 bits, es tan de 16 bits. El Wiegand 44 es mas simptico an si cabe: los
diversa como fabricantes lo utilizan. 8 primeros bits son el Facility Code, los 32 siguientes son
Vamos a analizar en detalle el Wiegand 26, ya que el User Code y los 4 ltimos son el OR EXCLUSIVO de los
es el formato de trama mas utilizado con diferencia. Su in- 40 bits anteriores tomados de 4 en 4. Sorprendente, pero
terpretacin es como sigue: cierto.
- El primer Bit, B0, es la paridad Par de los primeros 12
bits transmitidos (B1:12). .El programa
- Los 8 siguientes, B1:B8 son un Byte, un Entero de 8 bits,
al que llaman Facility Code. Para finalizar, proponemos una serie de rutinas en
- Los 16 siguientes: B9:B24 son dos Bytes, un Entero de CCS para utilizar el protocolo Wiegand. Hemos comentado
16 Bits, al que llaman User Code el cdigo lo suficiente como para que sea fcilmente com-
- El ltimo bit, B25, es la paridad Impar de los ltimos 12 prendido. Bsicamente, se lee el cdigo Wiegand y se vuel-
bits transmitidos (B13:24). ca lo ledo sobre el canal serie:

Interpretacin de un cdigo Wiegand 26.

// reader_wiegand26
//
// hardware MAHSA GP-20 Proximity cards
//
// red -> vcc -> +12V
// green -> data0 -> rb0 -> con-ml-10 -> 6
// white -> data1 -> rb1 -> con-ml-10 -> 4
// black -> gnd -> gnd -> con-ml-10 -> 2

#include <18f4550.h>
#fuses HS,MCLR,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NODEBUG,NOWRT,NOVREGEN
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include <string.h>

#bit PIN_DATA0 = 0xF81.0


#bit PIN_DATA1 = 0xF81.1

const int CodeBits = 26;

int1 first_exp=0;
int1 read_complete=0;
int nextbit=0;
char Code[CodeBits+1];
int FacilityCode;
long IdCardCode;
char bits[5]={0x01,0x02,0x04,0x08,0x10};
int i;

// INTERRUPCION por EXT0 Data0 ------------------------------------------------


#int_ext

//pgina 0x06
.teora

ext_handler() {
if(first_exp==1){
Code[nextbit]=0;
if(++nextbit==CodeBits){
read_complete=1;
}
}
first_exp=1;
}
// INTERRUPCION por EXT1 Data1 ------------------------------------------------
#int_ext1
ext1_handler() {

if(first_exp==1){
Code[nextbit]=1;
if(++nextbit==CodeBits){
read_complete=1;
}
}
first_exp=1;
}
void limpia_data(void){
for(i=0;i<CodeBits+1;i++) Code[i]=0x00;
nextbit=0;
}
void ajusta_code(void){
// Finaliza Code
Code[CodeBits]=0x00;
// Facility Code
FacilityCode=0x00;
for(i=1;i<9;i++){
if(Code[i]==1){
FacilityCode=FacilityCode+bits[i-1];
}
}
// Id Card Code
IdCardCode=0x00;
for(i=9;i<CodeBits;i++){
if(Code[i]==1){
IdCardCode=IdCardCode+bits[i-9];
}
}
}
void main() {
disable_interrupts(global);
set_tris_b(0b00000111);
printf(Wiegand26 Reader listen\r\n\n);
limpia_data();
ext_int_edge(0,L_TO_H);
ext_int_edge(1,L_TO_H);
first_exp=0;
enable_interrupts(int_ext);
enable_interrupts(int_ext1);
enable_interrupts(global);
do{
if(read_complete==1){
read_complete=0;
disable_interrupts(global);
ajusta_code();
printf(Facility Code = %u IdCardCode = %lu\r\n\n,FacilityCode,IdCardCode);
limpia_data();
enable_interrupts(global);
}
} while (TRUE);
}
Referencias:
Efecto Wiegand: http://en.wikipedia.org/wiki/Wiegand_effect

//pgina 0x07
//Ariel Palazzesi//
.informacin tcnica arielpalazzesi@gmail.com

primera parte
PICs y LEDs: una pareja perfecta
Los diodos LED son seguramente la forma ms popular de sealizacin de esta-
dos en los equipos electrnicos. En este pequeo artculo, veremos la manera de
sacar todo el provecho posible a estos coloridos componentes.

En 1921 el fsico Albert Einstein recibi el pre- excedemos los lmites especificados en la hoja de datos
mio Nobel de esa ciencia. Pero contrariamente a lo del componente, este se destruir. La lista siguiente nos
que muchos creen no fue por su teora de la relati- da una idea de que tensin aproximada necesita la juntura
vidad, sino por un estudio en apariencia mucho ms de los LEDs de colores comunes para funcionar:
modesto: el efecto fotoelctrico.
Einstein explic que algunos materiales, al ser ex- - Rojo = 1,6 V
puestos a una fuente de luz con determinada longitud de - Rojo alta luminosidad = 1,9v
onda, se induca una pequea corriente elctrica. Tam- - Amarillo = 1,7 V a 2V
bin demostr que al hacer circular por ellos una corriente - Verde = 2,4 V
elctrica, emiten luz. - Naranja = 2,4 V
La luz producida mediante el llamado efecto foto- - Blanco brillante= 3,4 V
elctrico tiene una frecuencia determinada (es de un slo - Azul = 3,4 V
color), que depende del tipo de material. Algo parecido a - Azul 430nm= 4,6 V
lo que ocurre en un rayo lser, pero sin la coherencia que Una resis-
presenta el haz de luz de este ultimo. Para limitar la co- tencia en
Gracias el efecto fotoelctrico el estadounidense rriente que circula por el LED, serie con el
LED limita la
Nick Holonyak, Jr. Invent el primer dispositivo semicon- lo ms usual, es colocar un corriente que
ductor que haca uso prctico de este importante descu- resistor en serie con l. lo atraviesa.
brimiento fsico. Como en electrnica todo parece tener El clculo del valor
una sigla por nombre, se los llamo LED: Light Emiting Dio- de esta resistencia es muy sencillo, y solo implica el uso
de, o Diodo Emisor de Luz en espaol. Presente en forma de la ley de ohm. Debemos restar la tensin del LED a la
de luz piloto en casi todos los componentes electrnicos tensin de la fuente, y dividir el resultado por la corriente
de consumo, es la aplicacin por excelencia de un efecto que deseamos atraviese el componente. Si usamos las
fsico que permite la emisin de luz (fotones) cuando se unidades correctas (tensiones en Volts y corrientes en
recombinan un electrn y un hueco dentro de la unin PN Amperes), el resultado estar expresado en Ohms.
que forma el diodo.
Este tipo particular de diodo se encapsula, gene-
ralmente, en plstico transparente, de manera que esta ra-
diacin sea visible. De acuerdo a los materiales utilizados
en su fabricacin, la luz emitida es de diferentes colores,
siendo los ms frecuentes el rojo, verde y amarillo, aun-
que es posible encontrarlos en gran variedad de colores,
incluso blancos. Y por supuesto, algunos son capaces de
emitir luz en una frecuencia que est ms all del color Esta frmula permite calcular el valor de la resistencia limitadora.
rojo, tpicamente en 940 nanmetros, banda denominada Veamos un ejemplo concreto. Supongamos que
infrarrojo y que se emplean como emisores en aparatos tenemos un LED rojo de alta luminosidad, que segn su
de control remoto o como barreras luminosas en tareas de hoja de datos, necesita para funcionar correctamente, una
automatismo y control. corriente de 18 mA y una tensin entre nodo y ctodo de
Para que todo esto funcione, necesitamos que 2 V, y queremos alimentarlo con una batera de 9V Cul
una corriente atraviese el LED. La intensidad de esta co- ser el valor de la resistencia limitadora?
rriente debe ser cuidadosamente calculada, dado que si Bien, si aplicamos la formula anterior, obtenemos que

//pgina 0x08
.informacin tcnica

Los LEDs resultan ser el complemento


ideal para los microcontroladores

El siguiente programa en CCS permite probar el


funcionamiento del circuito de ejemplo:
Reemplazamos los valores, y calculamos R.
#include <16f628a.h> //PIC utilizado
Como puede verse, el valor para la resistencia es #use delay (clock=4000000) //Oscilador a 4Mhz
de 389 Ohms. Como no existen resistores comerciales de #use fast_io(b) //Optimizamos E/S del PORTB
//------Programa principal----------------------
ese valor, utilizaremos el ms cercano: 390 Ohms. void main(void)
A menudo es necesario colocar dos o ms LEDs {
en serie, entre s. En ese caso, debemos asegurarnos que set_tris_b(0x7F); // RB7como salida,
el resto como entrada.
todos funcionan con la misma corriente, para evitar que
do{
alguno resulte daado. Luego, simplemente reemplaza- output_low(PIN_B7); //Apago el LED
mos en la formula que hemos visto el valor de V(LED) delay_ms(500); //Espero 500ms.
por la suma de las tensiones de cada uno de los LEDs output_high(PIN_B7); //Enciendo el LED
delay_ms(500); //Espero 500ms.
implicados. Por supuesto, el valor de esta suma no debe }while(TRUE); //Repito el bucle
ser mayor a la tensin suministrada por la fuente. }

.LEDS y PICS Y el siguiente hace lo mismo, pero est escrito en


el BASIC del PIC SIMULATOR IDE:
Por supuesto, los LEDs resultan ser la lmpara
ideal para los microcontroladores. Su bajo consumo de AllDigital Desabilitamos comparadores
corriente hace que puedan manejarse directamente con TRISB = %01111111 RB7como salida, el resto como
entrada.
sus pines (casi siempre) sin necesidad de etapas interme- loop:
dias. Pero antes de realizar cualquier diseo electrnico, PORTB.0 = 0 Apago el LED
debemos asegurarnos que la corriente suministrada por WaitMs 500 Espero 500ms.
PORTB.0 = 1 Enciendo el LED
las salidas del microcontrolador en cuestin es suficiente
WaitMs 500 Espero 500ms.
para el modelo de LED que vamos a emplear. Goto loop
La figura siguiente ilustra la forma en que pode- END
mos conectar un LED a un PIC. Vamos a suponer que la
tensin disponible en el pin del PIC es de 5V, que la co- En el ejemplo anterior, el LED encender cuando
rriente que atravesara el LED es de 15 mA, y que la cada el pin 7 del puerto B se ponga en nivel alto. Pero tambin
de tensin en este es de 2V. Eso nos da un valor para R podemos conectar el LED de manera que se encienda al
de 200 Ohms, por lo que utilizaremos una de 220 Ohms, poner el pin en nivel bajo:
valor disponible comercialmente, ms cercano.

LED conectado LED conectado


entre PORTB.7 y entre PORTB.7
GND. y Vcc.

//pgina 0x09
.informacin tcnica

Si probamos cualquiera de los dos programas #include <16f8627a.h> //PIC utilizado


precedentes con este circuito, tambin funcionar, solo #use delay (clock=4000000) //Oscilador a 4Mhz
#use fast_io(b) //Optimizamos E/S
que el LED encender cuando debera estar apagado, y del PORTB
viceversa. #byte portb = 0x6 //Direccion del
Nada impide manejar ms de un LED a la vez. PORTB
//------Programa principal-----
De hecho, se trata simplemente de repetir el esquema
void main(void)
resistencia limitadora LED tantas veces como sea ne- {
cesario: int i; //Declaro la va-
riable del for
set_tris_b(0x00); //Todo PORTB como
salida.
disable_interrupts(GLOBAL);//todas las
interrupciones desactivadas
do{ //Bucle infinito
portb = 0x01; //Estado inicial del puerto
//----Bucle de ida ---------
for (i=0;i<7;i++) { //i cuenta de 0 a 6
portb = portb << 1; //Desplazo valor
de PORTB una pos. a la izq.
delay_ms(500);//Espero medio segundo y..
}
//----Bucle de regreso -----
for (i=7;i>0;i--) { //i cuenta de 7 a 0
portb = portb >> 1; /Desplazo valor
de PORTB una pos. a la der.
delay_ms(500) //Espero medio segundo y...
}
} while(TRUE); //...repito el bucle
}

Hay casos en que se necesitan manejar un n-


mero elevado de LEDs, y los pines disponibles en el mi-
crocontrolador de turno resultan insuficientes. La solucin
es utilizar alguna tcnica de multiplexado. En el prximo
nmero veremos cmo hacerlo.
8 LEDs conectados al puerto B del PIC16F628A

El cdigo siguiente, en el mismo BASIC que usa-


mos antes, permite realizar una cuenta en binario desde 0
a 255, al tiempo que muestra el resultado en los 8 LEDS
conectados al puerto B:

AllDigital Desabilitamos comparadores


TRISB = %00000000 Todo el puerto b como salida.
Dim i As Byte

For i = 1 To 255
PORTB = i Enciendo leds
WaitMs 500 Espero 500ms.
Next i
End

Tambin podemos ver un ejemplo en CCS. El


programa siguiente consiste en un bucle infinito, que en
cada repeticin cambia el estado de las salidas del puer-
to B, encendiendo uno de los LEDs a la vez. Cuando
llega a uno de los pines del extremo del puerto, realiza
el efecto inverso hasta llegar nuevamente al otro. Luego
se repite todo el ciclo. Se han empleado los operadores
<< y >> para desplazar el contenido del puerto en uno
y otro sentido.

//pgina 0x0A
//Jess Fernndez Hernndez//
.programacin jfh900@hotmail.com

poniendo un poco de orden en C


Mantener ordenadas aquellas libreras que compartimos entre distintos proyec-
tos, puede ser una tarea a veces complicada, sobre todo cuando desconocemos
mtodos eficaces para realizar este trabajo. Este problema existe desde hace
muchos aos y los desarrolladores de compiladores para C, fueron incluyendo
mecanismos eficientes para dar solucin a este problema. Las siguientes lneas
nos ayudarn a sacar provecho de esas simples, pero poderosas herramientas.

El uso de las libreras es fundamental para el utilizados en el proyecto anterior y el actual coinciden, no
desarrollo de proyectos en C. Sin embargo, cuando tendremos problema alguno. Sin embargo, es frecuente que
tenemos varios proyectos que comparten las mismas li- no coincidan los pines asignados al LCD del antiguo proyec-
breras, una gestin deficiente, puede llevarnos al caos. to con los del actual. Por lo que si compilamos un proyecto
Donde reside el problema? antiguo, es muy probable que no funcione correctamente.
En aquellas libreras que necesitamos reutilizar, y La solucin comn al problema anterior, es tener
que por su naturaleza, tenemos que modificar para adap- anotado en algn lugar la asignacin de pines para cada
tarlas a nuestros proyectos. Un claro ejemplo de este tipo proyecto y modificar la librera antes de compilar cada
de libreras es la Flex_LCD.c desarrollada por CCS, que uno. Como se pude ver, es un proceso tedioso que exige
nos permite utilizar los muy comunes LCDs de 2 lneas. un alto grado de orden para mantener la funcionalidad de
Habitualmente, esta librera debe ser modificada para nuestros proyectos.
adaptarla a nuestras necesidades en cada proyecto. Esta
situacin se presenta cuando nuestros .El mtodo de la copia
proyectos requieren el uso de distintos mi- Estas directivas son
crocontroladores o cuando necesitamos una herramienta muy Una alternativa que puede solu-
determinados mdulos del microcontro- cionar el problema anterior, es tener una
poderosa para crear copia de la librera en el directorio de cada
lador, cuyos pines de E/S, han sido asig-
nados al LCD dentro de Flex_LCD.c. De variables, reservar proyecto. Luego modificamos la copia, para
aqu en adelante, utilizaremos la librera memoria, etc. ajustarla a la configuracin segn sea el
Flex_LCD.c como modelo para el resto caso. Esto permite que podamos compilar
del artculo, pero todo lo expuesto es apli- cada proyecto una y otra vez, sin necesidad
cable cualquier librera. de modificar la librera, ya que cada proyecto tiene una
Como se modifican estas libreras para su uso? copia adaptada segn sus necesidades.
Aqu es donde surge el caos entre los distintos pro- Es una solucin tambin bastante habitual, pero no
yectos que tenemos entre manos o que hemos realizado. idnea; qu ocurre si necesitamos modificar la librera por-
Analicemos las tres alternativas, de uso ms frecuente: que tenemos una nueva versin de la misma? Tendremos
que ir buscando por el laberinto de directorios de proyectos
.La forma usual e ineficaz. cada copia de la librera vieja y sustituirla por la nueva.
Se puede argumentar que hoy en da con la veloci-
Tenemos una nica librera ubicada en el directorio dad de proceso y las herramientas de bsqueda de las PC,
de libreras (library), y cuando nos hace falta, la modifica- este trabajo no ser en extremo tedioso. Pero aunque lo-
mos. Esta suele ser una prctica muy habitual. Cada vez que grsemos encontrar y sustituir todas las copias en un corto
empezamos un nuevo proyecto modificamos la librera y la espacio de tiempo, tendremos otro problema aadido, y es
adaptamos a la necesidad del momento que cada copia de la librera est personalizada para su
Pero: qu ocurre cuando debemos modificar y re- proyecto. La situacin anterior nos obliga a reconfigurar la
compilar un proyecto hecho con anterioridad? Si los pines nueva versin de la copia, de acuerdo a la configuracin

//pgina 0x0B
.programacin

de cada proyecto, trabajo que hicimos la primera vez que #define LCD_DB7 PIN_B7
copiamos la librera hacia el directorio del proyecto. #define LCD_RS PIN_C0
#define LCD_RW PIN_C1
.Utilizando las directivas #define
#endif
LCD_E PIN_C2

del pre-procesador
Si no definimos nada en el programa principal o
Esta es la forma correcta y eficaz de hacerlo. Este en su fichero de cabecera, el pre-procesador asignar a la
mtodo es el que adoptaremos y nos permitir manejar las LCD los pines segn el cdigo de la librera Flex_LCD. Si
libreras sin sufrir dolores de cabeza. Consiste en definir queremos modificar la asignacin de pines para nuestro
la asignacin de pines, en algn lugar fuera de la librera, proyecto, escribiremos en el fichero principal de nuestro
bien en fichero aparte, o bien en el programa principal del proyecto, o en su fichero de cabecera, el siguiente frag-
proyecto. Cmo podemos modificar la asignacin de pi- mento de cdigo:
nes fuera de la librera? La forma de hacerlo es utilizando #define _FLEX_LCD
las directivas del pre-procesador. #define LCD_DB4 PIN_C4
Las directivas del pre-procesador son un conjun- #define LCD_DB5 PIN_C5
#define LCD_DB6 PIN_C6
to de instrucciones que se utilizan para indicarle al com- #define LCD_DB7 PIN_C7
pilador, que debe hacer, ante determinadas situaciones. #define LCD_RS PIN_A0
Aunque generalmente muchos programadores descono- #define LCD_RW PIN_A1
#define LCD_E PIN_A2
cen su utilidad con profundidad, estas directivas son una
#include Flex_LCD.c
herramienta muy poderosa para crear variables, reservar
memoria, definir constantes, utilizar macros e incluso indi- Esto hace que se asignen los pines del micro-
carle al compilador que secciones de cdigo debe compi- controlador a la LCD tal y como se especifica en nuestro
lar y enlazar. En nuestro caso, utilizaremos las directivas programa principal y que la definicin de la librera sea
del pre-procesador #ifndef <identifier> #endif. ignorada. Como puede verse, la librera ha sufrido un pe-
Cuando el pre-procesador se topa con la directiva queo cambio que nos ayudar a mantener gestionado
#ifndef, comprueba si ya existe el identificador <iden- su uso y nos facilitar la vida a partir de este momento.
tifier>, si ste no existiese, entonces crea Es muy importante que esta asignacin se
uno con ese nombre, lo agrega a su lista Estas directivas son haga antes de incluir la librera (#include
de identificadores y procesa el cdigo ubi-
una herramienta muy Flex_LCD.c), ya que de no hacerlo as, el
cado entre #ifndef y #endif, en caso que pre-procesador asignar los pines segn la
el identificador <identifier> exista, se ig- poderosa para crear definicin que se hace dentro de la librera
nora todo el cdigo ubicado en el cuerpo de variables, reservar y se producir un conflicto con la definicin
la llamada a la directiva. memoria, etc. realizada en el programa principal.
La tcnica descrita anteriormen- Con este mtodo, solo tendremos una
te es precisamente la que vamos a utilizar librera para todos nuestros proyectos y la
para gestionar de manera eficiente, el uso de nuestras personalizacin se realizar dentro de cada proyecto; sin
libreras. Al revisar la seccin de Flex_LCD, donde se que por ello tengamos que hacer copias o modificar el fi-
asignan los pines al microcontrolador, nos topamos con el chero original. Adems, la librera estar perfectamente
siguiente cdigo: localizable dentro de su directorio, por lo que si obtuvise-
#define LCD_DB4 PIN_B4 mos una nueva versin, bastar con actualizar y modificar
#define LCD_DB5 PIN_B5 una sola copia.
#define LCD_DB6 PIN_B6 Otra razn para utilizar esta forma de proceder,
#define LCD_DB7 PIN_B7
es la posibilidad de reconocer la dependencia entre los
#define LCD_RS PIN_C0
#define LCD_RW PIN_C1 distintos archivos de nuestros proyectos o entre distintas
#define LCD_E PIN_C2 libreras. Por ejemplo, si creamos una librera que utilice
el display como salida, podremos escribir en el cdigo de
Ahora simplemente metemos esta seccin de c- nuestra librera:
digo en el cuerpo de una llamada a #ifndef con nombre #ifndef _FLEX_LCD
de identificador _FLEX_LCD, el cdigo resultante quedar #error Es necesario incluir la librera Flex_LCD
de la siguiente forma: #endif
#define _FLEX_LCD
#define LCD_DB4 PIN_B4 De esta forma enviamos un mensaje de error para
#define LCD_DB5 PIN_B5 avisar que es preciso incluir una o varias libreras.
#define LCD_DB6 PIN_B6

pgina 0x0C
//Ariel Palazzesi//
.caja de herramientas arielpalazzesi@gmail.com

simulador de circuitos digitales


El nombre completo del software que vamos a analizar hoy es Simulador de Con-
struccin de Circuitos Digitales con Escenarios Virtuales y Tutoriales Interactivos.
Como su nombre lo indica, es un programa que nos permite construir y evaluar
circuitos digitales utilizando para ello un mdulo digital virtual.

Todos los que alguna vez hemos diseado un tal, y actualmente est orientado a los cursos bsicos o
circuito digital sabemos de lo importante que es con- de introduccin a los circuitos digitales, tanto en el nivel
tar con una herramienta que nos permita llevar a cabo escolar como universitario.
una simulacin del funcionamiento del circuito en que Entre los puntos sobresalientes de este programa,
estamos trabajando. Estas herramientas suelen ser podemos destacar el gran nmero de modelos de circuitos
bastante caras, y muchas veces el hobbysta o aficio- integrados TTL que el autor ha incluido (y sigue incluyen-
nado a la electrnica no tiene acceso a ellas. Afortu- do). La posibilidad de almacenar y recuperar nuestros pro-
nadamente, existe el Simulador de Construccin de yectos permite la verificacin y reutilizacin de los mismos,
Circuitos Digitales con Escenarios Virtuales y Tutoria- tanto en la enseanza como en el aprendizaje del diseo
les Interactivos (el Simulador, de aqu en adelante), digital. La existencia de los tutoriales, que se muestran a la
que es completamente gratis y no tiene nada que en- derecha del mdulo digital permite validar rpidamente el
vidiarle a muchas de las herramientas de pago. conocimiento adquirido. Los escenarios, aunque pocos por
Este programa ha sido desarrollado por Arturo ahora (el programa se encuentra en permanente desarro-
Javier Miguel De Priego Paz Soldn, Ingeniero Electr- llo), nos brindan una mejor perspectiva y facilitan una mejor
nico de la Pontificia Universidad Catlica del Per. La primera especificacin del diseo lgico.
versin que evaluaremos es la 0.94, la ltima disponi- La inclusin de mdulos ASIC simplifican los dise-
ble al momento de escribir este articulo. El programa os, a la vez que ahorran espacio en el protoboard virtual.
corre bajo Windows, y necesita de una resolucin de El usuario puede crear nuevos modelos de ASIC, a partir
pantalla de por lo menos 1024 x 768 pxeles. de descripciones VHDL o programas C++.
El autor comenta que todava resta trabajo por ha-
.El programa cer, para que el producto sea aun ms flexible. Por ejem-
plo, no es posible por ahora que el usuario disee nuevos
El software permite construir y simular circui- modelos de circuitos integrados TTL para agregarlo a la
tos digitales, a partir de modelos lgicos de circui-
tos integrados estndares (de la familia TTL LS)
y de aplicacin especfica (conocidos como ASIC).
Los circuitos que construye el usuario pueden ser
simulados directamente sobre el mdulo digital que
provee el programa o, en algunos casos, ser valida-
dos sobre los Escenarios Virtuales. Estos escena-
rios representan el entorno en el que los circuitos
operarn. Por supuesto, los esquemas construidos
pueden ser almacenados, recuperados y editados.
El programa tambin provee una serie de
Tutoriales Interactivos, que se encargan de ilustrar-
nos sobre el funcionamiento de algunos circuitos
lgicos tpicos. Muchos de ellos incluyen descripcio-
nes VHDL. Segn nos cuenta Arturo, el software ha
sido diseado para ser empleado como una herra-
Epgrafe: Pantalla principal del programa, mostrando el Mdulo Digital.
mienta de enseanza y aprendizaje del diseo digi-

pgina 0x0D
.caja de herramientas
biblioteca del programa. Esto ser subsana-
do en las prximas versiones, las que permi-
tirn usar VHDL tambin para esta tarea.
Tampoco se han considerado los
efectos elctricos (retardos en la propaga-
cin de las seales, abanicos de entrada y
salida, ruido, etc.), y los chips modelados no
cuentan con pines de tres estados ni bidirec-
cionales.
Esto no representa una limitacin de-
masiado grabe. El simulador, tal como se en-
cuentra en la actualidad, es perfectamente
operativo y cumple a la perfeccin su misin
educativa. Cuenta con cuatro modelos de ASICs
y casi 100 integrados TTL listos para usar.

.El Mdulo Digital


Ejemplo del tutorial correspondiente a la puerta AND
De alguna manera, este es el cora-
zn del programa. Sobre el, el usuario va desplegan-
do los componentes y conexiones que conforman su
proyecto. Esta compuesto por una tarjeta para alam-
brar circuitos (tambin conocida como protoboard
o breadboard), 18 LEDs, 3 visualizadores de siete
segmentos, generadores de reloj, entradas digitales
(12 interruptores y 4 pulsadores), bornes de alimen-
tacin (VCC y GND), una bornera de expansin de
18 lneas (a la que se conectan los escenarios vir-
tuales) y un interruptor principal para el encendido y
apagado del sistema
Para montar un circuito, simplemente vamos
seleccionando los chips necesrios desde un men
(que los agrupa por categoras) y los insertamos
sobre el protoboard. Las conexiones entre ellos se
dibujan trazando lneas con el ratn. De ser necesa-
Circuito de prueba, basado en un contador con puertas lgicas simples.
rio, tanto los cables como los chips pueden retirarse
simplemente pulsando con el botn derecho sobre
el chip en cuestin o sobre uno de los extremos del
cable a remover.

.Escenarios y tutoriales

Como decamos, el programa proporciona


escenarios sobre los que probar nuestros circuitos.
Estos pueden elegirse e insertarse desde un men.
Cuando el interruptor principal se encuentra en la
posicin de apagado, el escenario trabaja en modo
independiente, siguiendo un comportamiento predefi-
nido. En este modo el usuario puede observar cmo
debe interactuar el circuito con el medio ambiente vir-
tual. Cuando el interruptor se enciende, el escenario
se controla mediante las seales que provienen des-
de el Mdulo Digital Decodificador binario y displays de siete segmentos.
Los tutoriales nos muestran los aspectos b-

pgina 0x0E
Escenario de un cruce de avenida con calle de bajo trnsito.

Contador BCD con habilitacin de cuenta ascendente/descendente, de 0 a 999.

sicos de algunos temas relacionados con la electrnica di- Referencias:


El programa puede ser descargado desde SimuladorDigital_094.zip
gital. En muchos casos podemos ver la descripcin VHDL Una gua preliminar est en GuiaPreliminar_094.zip
correspondiente. Los hay enfocados al funcionamiento Ejemplos de algunos circuitos estn en EjemplosDeCircuitos_094.zip
Correo electrnico: amiguel@pucp.edu.pe
de las puertas bsicas, descodificadores, multiplexores, Pgina WEB: www.geocities.com/tourdigital
sumadores, comparadores, latches y flipflops.

pgina 0x0F
.nota de tapa //Ariel Palazzesi//
arielpalazzesi@gmail.com

el relojito
segunda parte

En esta segunda entrega analizaremos a fondo las rutinas necesarias para la progra-
macin de nuestro reloj. Utilizaremos los lenguajes PIC BASIC y CCS, lo que permiti-
r a una gran cantidad de lectores comprender el funcionamiento de este proyecto.

En el nmero anterior de la revista vimos A partir de este numero, comenzaremos a


como desarrollar el hardware necesario para la cons- ver como sacar provecho de este diseo, explican-
truccin de un completo reloj digital, que adems de do cada una de las rutinas necesarias para transfor-
la hora, era capaz de mostrar la temperatura ambiente mar ese montn de hardware en algo til. Escribi-
gracias a la inclusin de un sensor de temperatura Da- remos el software desde cero, explicando cada uno
llas DS1820. Tambin se inclua un RTC (Real Time de los pasos a seguir, de forma que todos puedan
Clock, o Reloj de Tiempo Real) DS1307, encargado comprender a fondo cada una de las rutinas, y as
de proporcionar al PIC16F628A la necesaria y precisa ser capaces de modificarlas a gusto. Hemos decidi-
referencia temporal. Un grupo de 60 diodos LED, indi- do presentar versiones en PIC BASIC y CCS de cada
cando cada uno de los segundos, dotaban al proyecto trozo de cdigo, como una manera de llegar a un
de un atractivo especial. mayor numero de lectores.

En el nmero anterior de uControl vimos como .Configuracin de los pines de E/S


desarrollar el hardware necesario para la construccin
de un completo reloj digital, que adems de la hora, era El primer paso antes de comenzar a utilizar los
capaz de mostrar la temperatura ambiente gracias a la pines de entrada o salida, es configurar correctamente su
inclusin de un sensor de temperatura Dallas DS1820. funcin. Este es un paso muy simple, y que no requiere de
Tambin se inclua un RTC (Real Time Clock, o Reloj demasiadas explicaciones. Los comentarios incluidos en
de Tiempo Real) DS1307, encargado de proporcionar al el cdigo fuente sern suficientes para entender que hace
PIC16F628A la necesaria y precisa referencia temporal. cada lnea de programa.
Un grupo de 60 diodos LED, indicando cada uno de los Veamos primero como hacerlo en PIC BASIC
segundos, dotaban al proyecto de un atractivo especial. (recordemos que utilizamos la versin correspondiente al
A partir de este nmero, comenzaremos a ver PIC SIMULATOR IDE):
como sacar provecho de este diseo, explicando cada
-----CONFIGURAMOS PUERTOS----------
una de las rutinas necesarias para transformar ese mon- AllDigital Todos los pines del PORTA como E/S
tn de hardware en algo til. Escribiremos el software des-
de cero, explicando cada uno de los pasos a seguir, de Configuro el PORTA:
forma que todos puedan comprender a fondo cada una de TRISA.0 = 0 DATA Segundero
TRISA.1 = 0 CLOCK Segundero
las rutinas, y as ser capaces de modificarlas a gusto. He- TRISA.2 = 0 DATA HH:MM
mos decidido presentar versiones en PIC BASIC y CCS TRISA.3 = 0 CLOCK HH:MM
de cada trozo de cdigo, como una manera de llegar a un TRISA.4 = 0 Salida
TRISA.5 = 0 DS1820
mayor numero de lectores.

//pgina 0x10
.nota de tapa

Cada_74HC164N_se_encarga_de_8_LEDs.JPG

Una vez listo este tramite, pasemos a las rutinas


Configuro el PORTB: propiamente dichas.
TRISB.0 = 1 Entrada pulsos del DS1307
TRISB.1 = 0 Salida, LEDs : en display
HH:MM
.Escribiendo los segundos.
TRISB.2 = 0 pin SCA del DS1307
TRISB.3 = 0 pin SCL del DS1307 La caracterstica ms sobresaliente de este reloj
TRISB.4 = 1 Entrada Pulsador 1
es su segundero. Compuesto por 60 LEDs ubicados sobre
TRISB.5 = 1 Entrada Pulsador 2
TRISB.6 = 1 Entrada Pulsador 3 la circunferencia del reloj, se controlan mediante solo dos
TRISB.7 = 1 Entrada Pulsador 4 pines del microcontrolador. Esto es posible gracias a la
utilizacin de un registro de desplazamiento.
Inicializacin de puertos en PIC BASIC. Como ya hemos visto, este tipo de registro incor-
Ahora, vemos como hacer la misma tarea en CCS: pora los datos presentes en su entrada con cada pulso de
reloj que se aplica a su terminal CLOCK.
//Device/Fuses/Etc.--------------------------- Debemos respetar los tiempos de respuesta de los circui-
#INCLUDE <16F628A.H> //Usamos un 16F628A tos integrados que conforman los registros de desplaza-
#FUSES NOWDT //No Watch Dog Timer miento. En este caso, el 74HC164N que henos utilizado
#FUSES XT //Con oscilador a
cristal... puede funcionar a una frecuencia mas elevada que los 4
#use delay(clock=4000000) //..de 4MHz. MHz (o el MIP) a los que funciona el 16F628A, por lo que
#FUSES NOPUT //No Power Up Timer no sern necesarios los tiempos de espera entre el envi
#FUSES NOPROTECT //No protegemos el cdigo.
de un dato y el siguiente.
#FUSES NOBROWNOUT //No Brownout Reset
#FUSES NOLVP //No low voltage prgming Los pines implicados en el control de los LEDs del
#FUSES NOCPD //No EE protection segundero son los correspondientes a PORTA.0 (o RA0,
pin 17) y PORTA.1 (o RA1, pin 18), para las funciones de
//Declaramos la posicin de los puertos-------
#BYTE PORTA = 0x05
DATA y CLOCK respectivamente. Como no es el nico
#BYTE PORTB = 0x06 registro de desplazamiento presente en el proyecto, nos
#BYTE PORTA_TRIS = 0x85 referiremos a estas seales como DATA2 y CLOCK2.
#BYTE PORTB_TRIS = 0x86 Concretamente, el dato presente en la entrada del
//Y asignamos cada pin como E/S segn corresponda: registro de desplazamiento se hace presente en la primera
PORTA_TRIS = 0b00000000; //1=ENTRADA, 0=SALIDA de sus salidas (empujando a los dems una posicin hacia
PORTB_TRIS = 0b11110001; //1=ENTRADA, 0=SALIDA delante) cuando el pin CLOCK pasa de estado bajo a estado
alto. Esto quiere decir que deberemos seguir el siguiente or-
Inicializacin de puertos en CCS
den para cada bit que queramos enviar al registro:

//pgina 0x11
.nota de tapa

1) Poner el dato a enviar en el pin DATA2 (PORTA.0) pal, de la siguiente manera:


2) Poner CLOCK2 (PORTA.1) en estado bajo. escribo_segundo (valor);
3) Poner CLOCK2 (PORTA.1) en estado alto.
Como se ve, es algo muy sencillo de implementar. Donde valor ser 0 o 1 dependiendo si que-
Veamos como hacerlo en PIC BASIC: remos apagar o encender el LED correspondiente a la pri-
mera posicin del registro de desplazamiento.
escribo_segundo:
data1 = bit_aux Pongo el valor en DATA .Haciendo limpieza
clock1 = 0 Pongo el CLOCK en bajo...
clock1 = 1 ...y de nuevo en alto. Listo!
Return Antes de comenzar a enviar datos tiles al regis-
tro de desplazamiento, conviene limpiar el contenido de
Esta rutina enva el valor de la variable sus 60 bits, dado que al alimentar El Relojito pueden con-
bit_aux al registro de desplazamiento. tener informacin aleatoria, que en la practica se veran
La subrutina supone que antes de llamarla hemos como una serie de LEDs encendidos. Si no lo hiciramos,
declarado las variables (usando DIM) y las macros (me- cada dato que enviemos al registro empujara a los bit-
diante SYMBOL) necesarias: basura una posicin hacia delante, algo que no quedara
demasiado bien.
------DECLARO VARIABLES y MACROS-------------- La forma de evitar esto es bien simple: ni bien co-
Dim bit_aux As Bit Declaro la variable auxiliar
Symbol data1 = PORTA.0 Nos referimos a PORTA.0 mienza nuestro programa, debemos escribir 60 ceros en
como data1 el registro de desplazamiento, asegurndonos que todos
Symbol clock1 = PORTA.1 Nos referimos a PORTA.1 los LEDs se encuentran apagados.
como clock1
Dado que puede se trata de una accin que puede
Declaracin de variables y macros necesaria antes de requerirse mas de una vez en nuestro programa, tambin
llamar a la subrutina escribo_segundo. la vamos a implementar como una subrutina (en PIC BA-
Veamos la forma de hacer esto en CCS. SIC) o como una funcin (en CCS). Dado que ya tenemos
el codito necesario para escribir un valor en el registro de
//Declaramos la Variable: desplazamiento, la nueva rutina/funcin solo deber en-
int1 bit_aux; //Declaro la variable
auxiliar cargarse de llamar 60 veces seguidas a la que vimos
antes, con el valor 0.
//-------------------------------------------- Veamos como hacerlo en PIC BASIC:
//---Envia un DATO al registro de desplazamiento:
//-------------------------------------------- borro_segundero:
void escribo_segundo(int1){ bit_aux = 0 Asigno el valor a enviar a
if (bit_aux) {output_high(DATA2);} //Si es la variable auxiliar...
1, lo escribo en DATA2. For i = 0 To 59 i ir de 0 a 59, de 1 en 1.
if (!bit_aux) {output_low(DATA2);} //Si es Gosub escribo_segundo envo bit_aux
0, lo escribo en DATA2. al registro
output_low(CLOCK2); //Pongo el CLOCK en Next i
bajo... Return
output_high(CLOCK2); //...y de nuevo en Cdigo BASIC de la subrutina borro_segundero.
alto. Listo!
} Y ahora, lo mismo pero en CCS:

void borro_segundero(void){
main(){
int i;
//Asignamos cada pin como E/S segn corres-
for (i=0;i<60;i++) { // i ir de 0 a 60,
ponda:
de 1 en 1.
PORTA_TRIS = 0b00000000; //1=ENTRADA,
escribo_segundo(0); //Envio un 0 al
0=SALIDA
registro de desplazamiento
PORTB_TRIS = 0b11110001; //1=ENTRADA,
}
0=SALIDA
} Cdigo CCS de la funcin borro_segundero.

En CCS, para hacer uso de la funcin escribo_ Esto es todo lo que necesitamos saber para ma-
segundo, basta con invocarla desde el programa princi- nejar correctamente los 60 LEDs del relojito.

//pgina 0x12
//Ariel Palazzesi//
.tutorial arielpalazzesi@gmail.com

PIC BASIC captulo II

En la primera entrega aprendimos los rudimentos de la programacin en BASIC.


Ahora veremos cmo utilizar los pines del microcontrolador como entradas, per-
mitindole conocer que est ocurriendo en el mundo real.

Como vimos antes, los pines del microcontro- cro se pondr en estado lgico alto (es decir, a 1).
lador pueden configurarse como entradas o salidas. Dado que eres muy observador, seguramente has
Sabemos que en caso de utilizarlos como salidas notado que en cada pulsador tambin hay conectado un
pueden emplearse para controlar el encendido de un resistor que tiene un valor de 10K. La funcin que tienen
LED o, mediante la interfaz adecuada, de prcticamen- esos componentes es mantener el pin correspondiente
te lo que se nos ocurra. Pero eso solo representa la del micro anclado a 0V cuando el pulsador est abierto.
mitad del poder de un microcontrolador. El otro 50% Si no las pusiramos, cualquier ruido elctrico podra ser
de su fortaleza reside en su capacidad de poder reci- errneamente interpretado como un accionamiento del
bir estmulos externos. Para ello, debemos aprender a pulsador. Si temes que al pulsar SW1 o SW2 se provoque
leer los estados lgicos presentes en los pines confi- un cortocircuito entre los 5V y GND, qudate tranquilo:
gurados como entradas. justamente para eso estn los resistores. Su gran valor
(comparado con la baja resistencia interna de las entradas
.Leyendo el estado de un pulsador del PIC) garantiza que solo una muy pequea corriente
circulara a travs de l, por lo que no hay problemas en
Seguramente no hace falta que te explique que que estn ah. Confa en nosotros.
es un pulsador, pero como nos interesa que todo quede Tan comn es la prctica de poner un resistor en
perfectamente claro, lo esa posicin, que hasta tiene un nombre: resistor pull-
vamos hacer de todos down. Si en lugar de estar conectado a GND lo estuviese
modos: un pulsador es a +V, recibira el nombre de pull-up.
un dispositivo que al Pero volvamos a nuestro tutorial de BASIC. El si-
presionarlo permite que guiente cdigo se encarga de configurar todos los pines
la corriente lo atraviese, del micro como E/S, deshabilitando los comparadores.
cerrando el circuito. Luego, pone todo el puerto A como entradas y el B como
En el esquema salidas. No vamos a usar ms que un pin de cada uno,
que vimos en la anterior pero igualmente por ahora pondremos cada puerto com-
entrega, y que ponemos pleto en el mismo estado.
otra vez aqu por si te Una vez hecho esto, hay un bucle comprendido
lo perdiste, puedes ver entre las lneas LOOP: y Goto loop, que se encarga de re-
que hay dos pulsado- petir infinitas veces la lnea que est entre ellas: PORTB.0
res. Uno conectado al = PORTA.0.
pin 17 (PORTA.0) y otro
al pin 18 (PORTA.1). El
otro extremo de cada AllDigital
TRISA = %11111111
pulsador est conecta-
TRISB = %00000000
do a 5V, por lo que al loop:
presionar cualquiera de PORTB.0 = PORTA.0
Goto loop
Figura 1: Este es el esquema que utilizamos los pulsadores, el pin
para nuestros ejemplos correspondiente del mi-

//pgina 0x13
.tutorial

Justamente es esa la lnea principal dentro de simulacin tendremos algo parecido a lo que muestra la
nuestro programa. Como ya habrs deducido, la instruc- figura 3: el pin 6, correspondiente a RB0 est en OFF
cin PORTB.0 = PORTA.0 hace que el valor del bit 0 del porque el pulsador del pin 17 (RA0) est en OFF. Si con
PORTB tome el valor del bit 0 del PORTA. Que ambos el mouse hacemos un clic sobre la T que est al lado del
bits sean el cero es solo una coincidencia, se podran ha- pin 17, la vista del microcontrolador pasar al estado que
ber elegido otros valores. muestra la figura 4.
Al ejecutarse el programa, cada vez que se accio-
ne el pulsador conectado a PORTA.0 (SW2, en el diagra-
ma), ese pin se pondr a estado alto, ya que la corriente
circulara desde +V al pin 17 del PIC a travs suyo. Ese
estado alto se interpreta dentro del PIC como un 1, y
es el valor que se le asigna a PORTB.0, con lo que el
tambin pasara a estado alto. Eso provocara que el LED
conectado en ese pin se ilumine.
Cuando soltamos el pulsador, PORTA.0 vuelve a
estado bajo, ya que se pone a masa a travs del resistor
de 10K (R2 en el diagrama), y PORTB.0 har lo propio,
apagando el LED. Todo lo que hace nuestro sencillo pro-
grama es copiar en el LED el estado del pulsador.
Vamos a simularlo en el PIC SIMULATOR IDE, Figura 3: Pulsador abierto, LED apagado.
que para eso lo hemos comprado. Lo primero es abrir la
ventana del compilador BASIC, y copiar en ella el cdigo
de ms arriba. Debera quedar ms o menos como vemos
en la figura 2. Luego, lo compilamos y cargamos en el
emulador presionando la tecla F9.

Figura 4: Pulsador cerrado, LED encendido.

Recordemos que el botn T significa cambio


(Toggle) por lo que el estado del pin 17 permanecer en
alto hasta que lo pulsemos otra vez, y el estado del mi-
crocontrolador volver a ser el inicial. Como en cualquier
curso, conviene realizar estas prcticas, que aunque pue-
dan parecer muy sencillas nos ayudaran a conocer las he-
rramientas disponibles y tomar confianza al programa.
Tambin es interesante el realizar cambios en el progra-
ma BASIC, recompilar y analizar los resultados.
En la prxima entrega comenzaremos a ver las
Figura 2: Este es el esquema que utilizamos para nuestros ejemplos
estructuras de control de ujo del programa que dispone
PIC SIMULATOR IDE transformar nuestro cdi- PIC BASIC. Estas nos permitirn encarar programas ms
go BASIC en un archivo HEX listo para grabar en un PIC tiles y complejos.
real o para ser simulado. Aparecer el cuadro de dialogo
que nos informa que no han ocurrido errores y que el ta-
mao del programa es de 20 words.
Si volvemos a la ventana principal del PIC SIMU-
LATOR IDE, y desde Tools -> Microcontroller View
abrimos la vista del microcontrolador, al darle Start a la

//pgina 0x14
//Mario Sacco//
.informacin tcnica service.servisystem@gmail.com

hablemos de antenas
Cuando pensamos en controlar un dispositivo a distancia a travs de RF, nos en-
contramos con la difcil eleccin de la antena apropiada y la posterior construccin
de la misma. Veamos cmo develar sta ciencia oculta.

Cada vez que intentamos controlar un dispo-


sitivo de forma remota, mediante ondas de radio, bus-
camos cumplir con la ley fundamental que rige las co-
municaciones: Llegar con nuestra seal, lo ms lejos
posible.

Muchos de stos intentos de maximizar la distancia


til y efectiva de nuestro control, han finalizado con resulta-
dos nefastos. Esto es especialmente cierto en el hobby de
los aviones radiocontrolados, por mencionar algn ejemplo,
ya que no siempre el dispositivo remoto se quedar quieto
se detendr sin ocasionar daos as mismo a terceros.
Muy por el contrario, pueden llegar a actuar de forma tan El conductor central y la malla trenzada exterior sern el nexo con nuestro equipo.

impredecible, que nos arruinara el trabajo e ilusin de me- Entre los cables ms populares que encontramos
ses, en un instante. en el mercado estn el RG-58, de 50
Por lo tanto ser muy til apren- El coaxil utilizado en la Ohms de impedancia caracterstica, y el
der las sencillas y elementales tcnicas RG-59, de 75 Ohms. Este ltimo se ha
de construccin de antenas, para as
realizacin de la antena popularizado gracias a su uso en insta-
poder manejar los robots sistemas posee una atenuacin a laciones de TV. El anterior, en cambio,
inteligentes que construyamos, mucho las seales de radio que es se lo conoce ms por su amplio uso en
ms all de lo que nuestro elemental
proporcional a la longitud el mbito de las telecomunicaciones y
juego de mdulos de RF nos permitan es del cul encontraremos mayor varie-
por s solos. del mismo dad de calidades constructivas.
A medida que vayamos leyendo ste es un punto muy importante a te-
sobre el tema, iremos aclarando ciertos conceptos y nom- ner en cuenta al momento de seleccionar el modelo de
bres tcnicamente correctos, que usaremos a lo largo de cable a utilizar, ya que los coaxiles poseen una caracters-
las explicaciones para no slo aprender de antenas, sino tica nociva para nuestros propsitos, que es la de atenuar
tambin referirnos a ellas y su entorno de forma apropia- las seales de radiofrecuencia que lo atraviesen. Esta ate-
da. nuacin es directamente proporcional a la frecuencia de
Podemos definir que un Receptor (en adelan- trabajo y a la longitud del cable mismo. Dicho en palabras
te Rx), podr recibir seales desde un Transmisor (en simples: A mayor frecuencia, mayor atenuacin.
adelante Tx), el que estar apropiadamente conectado, Las frecuencias libres de uso asignadas dentro
mediante una Lnea de Transmisin, a una Antena. Esta del Espectro Radioelctrico, y por lo tanto ideales para
deber ser instalada a la mayor altura posible. nuestros propsitos, son las consideradas altas y se en-
Lgicamente si es necesario, nuestro Rx tambin cuentran en la banda conocida cmo UHF y Microondas.
estar conectado a una Antena para optimizar los alcan- Estas frecuencias son 305 MHz., 418 MHz., 433 MHz. y
ces del enlace radioelctrico. 2,4 GHz., por mencionar algunas.
Tal cmo habamos mencionado, el medio que unir Existen otras, en otras bandas, cmo 27 MHz. Y
nuestro equipo (sea Rx Tx) con la Antena, ser una Lnea 72 MHz., pero se encuentran en desuso en la actualidad,
de Transmisin, que por su simpleza de uso y fcil adquisi- en gran parte gracias a que los pequeos mdulos de
cin, construiremos utilizando Cable Coaxil o Coaxial. UHF, han venido a resolver muchos de los problemas y

//pgina 0x15
.informacin tcnica

limitaciones que se planteaban al momento de pensar en La segunda apreciacin nos dice que la seal es-
un enlace va radio. tar Polarizada en forma vertical, lo que significa que la
Un cable RG-59 de buena calidad, nos proporcio- otra antena que se enlazar con sta deber poseer la
nar menor atenuacin que un cable RG-58 comn, ade- misma Polarizacin, ya que si no coincide con ella, la se-
ms de ser ms econmico, por lo que para nuestros fines al sufrir una importante atenuacin.
y mientras manejemos bajas potencias (valores menores Un Elemento Irradiante montado en forma parale-
a 1 Watt), ser una eleccin acertada, obteniendo un buen la al suelo trabaja polarizado en forma horizontal, mientras
equilibrio Precio/Performance. que si est montado en forma vertical trabaja, como es
obvio, polarizado en sentido vertical.
.Ahora s, Las Antenas Este concepto parece superfluo ahora, paro ten-
dr una gran importancia cuando realicemos un enlace
Existen tres modelos prcticos de antenas, reali- Full-Duplex.
zables de forma sencilla en no ms de un par de horas, Otro detalle no menor es la posicin que otorgue-
que enumerarlas de la siguiente forma: mos respecto a la vertical al plano de tierra de nuestra
antena. Distintos ngulos de inclinacin de este plano nos
- Vertical de de Onda proveern distintos valores de Impedan-
- Dipolo de Onda ROE ( SWR, por cia de la antena.
- Direccional Yagi Standing Wave Ratio Por simple deduccin podemos entonces
decir que cuanto ms se aproximen entre
La ms sencilla de construir, y por
en Ingls), es la rela- s los valores de impedancia de nuestra
lo tanto la primera que desarrollaremos, es cin que existe entre antena con el correspondiente al coaxil
la Antena Vertical de de Onda, tambin las Potencias Incidente seleccionado, mejor acoplamiento obten-
conocida cmo Ground-Plane o con el sim- dremos entre ambos dispositivos y mayor
y Reflejada
ptico nombre de paragitas, en alusin ser la energa transmitida hacia la ante-
al formato que le dan los planos de tierra. na. Es decir, menores sern las desadap-
En su nombre encontramos resumida la arquitec- taciones que impedirn la llegada de nuestra seal a la
tura constructiva de sta antena: un Elemento Irradiante, antena. Esto es muy importante que lo tengamos claro
en posicin vertical, conectado al conductor central de la para cualquier tipo de antena que intentemos construir.
Lnea de Transmisin, y un segundo elemento conforma- Las dimensiones de los Elementos que forman
do por un Plano de Tierra, donde ir conectada la malla nuestra antena, la forma mecnica de su construccin y el
exterior de nuestro coaxil. medio circundante para el emplazamiento elegido, regirn
el valor final obtenido de la Impedancia de nuestra antena.
Una antena ubicada a ras del suelo y rodeada de edificios,
no tendr el mismo rendimiento que si la emplazramos
en una elevacin libre de obstculos y con un enlace vi-
sual con su compaera Rx / Tx

.El enemigo acecha y se llama R.O.E.

Una antena desadaptada respecto del cable


coaxil que la enlaza al equipo, una mala construccin me-
cnica, las deficiencias provocadas por el paso del tiempo
y el clima, el envejecimiento de los materiales y muchos
otros factores sern los que al cabo del tiempo, irn dete-
Vista terica de la misma antena vertical con dos planos de tierra de diferentes formas. riorando nuestro sistema de antena. Este hecho se repre-
sentar como una variacin de la impedancia caractersti-
El anlisis de las imgenes de la figura anterior ca del sistema conectado al equipo.
nos revela muchos aspectos de sta sencilla, pero alta- En estos casos, una parte proporcional de la ener-
mente efectiva, antena. ga que entregamos a nuestra antena para que sta se
Una primera observacin nos muestra que, por la encargue de irradiarla al espacio, ser devuelta al trans-
posicin vertical del Elemento Irradiante, la radiacin de misor, ya que nuestro sistema no irradiar al 100% debido
energa se dar en forma Omnidireccional, es decir, nuestra a los posibles defectos mencionados.
seal transmitida saldr de la antena y viajar en todas las Tcnica hablando podemos decir que cuando una
direcciones por igual, cubriendo los 360 a su alrededor. parte de la Potencia Incidente, que estamos enviando a

//pgina 0x16
.informacin tcnica
nuestra antena retorna al equipo como Potencia Reflejada, conductivas y posea la rigidez mecnica suficiente cmo
estamos siendo presas de lo que se conoce como Relacin para entregarnos una construccin robusta, firme y dura-
de Ondas Estacionarias, comnmente llamada ROE. dera. Eso siempre quedar a criterio de cada uno de Uds.
ROE ( SWR, por Standing Wave Ratio en In- y lo realizarn con los elementos que posean al momento
gls), es la relacin que existe entre las Potencias Inci- de la construccin.
dente y Reflejada y su valor est regido por frmulas ma- Otra opcin, es seleccionar con antelacin los
temticas y conceptos mecnicos que sera innecesario materiales y acopiar los mismos de a poco, a los efectos
explicar ahora, aunque s es bueno saber de la existencia de realizarla con materiales seleccionados especialmen-
de ste fenmeno. te, cmo por ejemplo, buenos aluminios, buenos soportes,
buenos mstiles, etc.
Un ejemplo de construccin podemos ver en la
siguiente figura:
Foto: Reflejada.Gif
Epgrafe:

La energa que no puede ser irradiada al espacio retornar por el


mismo coaxil hacia el Tx, pudiendo deteriorarlo.

Cuando los valores de ROE son altos corremos


un serio riesgo de destruir la etapa de potencia de salida
de nuestro transmisor, ya que el mismo est pensado y
preparado para entregar energa y no para recibirla.
Comprendamos entonces cun importante es leer
muy bien la hoja de datos del fabricante de nuestro Tx
y Rx, para conocer las Impedancias caractersticas que
ellos nos recomiendan utilizar a la salida de los mdulos,
y as obtener el mximo beneficio de ellos. Un poco de aluminio, un juego de conectores apropiados,
y nuestra antena estar lista.
.Manos a la Obra
Puede observarse en el grfico que a partir de un
Para construir nuestra antena debemos conocer las conector UHF Hembra, conocido como SO239, podemos
medidas apropiadas que debe tener la misma. Para el caso de armar nuestra antena.
la antena vertical de de onda, la formula es la siguiente: Los planos a tierra podrn ser soldados a los ori-
ficios que posee el conector hembra, que nos servir de
72/Frecuencia (Mhz.) = H = L (Metros) base constructiva, y doblados suavemente hacia abajo,
dndoles un ngulo a los elementos (planos de tierra) de
Conociendo sta frmula ya podemos saber las entre 30 grados (mnimos) hasta 60
dimensiones de los elementos que compondrn la misma. grados (mximo).
Por ejemplo para un mdulo que transmita recepcione Al terminal de conexin
en una frecuencia de 433,920 Mhz., la frmula resultara del conductor central le solda-
en lo siguiente: remos el elemento irradiante (la
varilla que quedar en posi-
72/433,920 Mhz. = 0,1659 Metros = 16,59 Centmetros cin vertical), se la adosa-
remos mecnicamente de
O lo que es lo mismo, aproximadamente 6.53 pulgadas. la forma que creamos ms
Ahora es el momento de decidir con qu materia- conveniente, efectiva y firme.
les construiremos la misma. Cualquier material metlico La llegada de la
puede sernos til para ste fin. Cobre, hierro, aluminio, seal a transmitir, el Imagen del
zinc, bronce y/o cualquier otro que tenga propiedades envo al receptor de la Conector SO239.

//pgina 0x17
.informacin tcnica
seal captada, se logra a travs del coaxil que recorre in- de potencia, no podremos
ternamente el mstil de plstico o cualquier otro material abusar de la cantidad de
aislante, para terminar en un conector PL259 roscado con metros que utilicemos.
justeza a nuestra base original de construccin que es la Una medida de
hembra SO239. aproximadamente entre 5
Una sencilla abrazadera de material inoxidable, y 10 metros nos dar una
concluye la construccin. buena relacin entre lon-
gitud/atenuacin de seal
.Consideraciones y los resultados obtenidos
Finales sern ms que sorpren-
dentes.Siempre querremos
Una vez finalizada la llegar ms all.
construccin, si hemos Slo nos falta darnos cuenta, dnde y cmo uti-
comprendido y seguido lizaremos sta antena simple pero que nos har ganar
Imagen del
las instrucciones vertidas en s- muchos metros en nuestro enlace de mando. Si con los
Conector PL259.
tas pginas, estaremos listos para mdulos originales, sin antena, o con algn trozo de cable
conectar nuestra/s antena/s a los mdulos que estarn sencillo logrbamos varias decenas de metros, tengan por
instalados en nuestros sistemas microcontrolador. Lo pri- seguro que con antenas exteriores, esta distancia puede
mero que haremos es tratar de dotar a la instalacin de llegar a ser de varias centenas o ms.
nuestro sistema irradiante (recordemos que se llama de Esto significa nuevos horizontes en la aplicacin y uso de
igual forma, sea para Tx, cmo para Rx), de la mayor al- mdulos de UHF, en sistemas enlazados va radio.
tura posible y alejada de obstculos circundantes que im- No se pierdan el prximo nmero de Control,
pidan la correcta emisin en algn sentido y que puedan donde veremos cmo realizar antenas direccionales de
afectar la impedancia del sistema provocndonos ROE. ganancias muy altas, para llegar mucho ms lejos an.
Un aspecto importante a recordar es que el coaxil Que la disfruten.
utilizado en la realizacin posee una determinada atenua-
cin a las seales de radio, la que es proporcional a la lon- Referencias:
gitud del mismo, por lo que para las frecuencias de UHF y Antenas Yagui: http://es.wikipedia.org/wiki/Antena_Yagi
para los mdulos comerciales de algunos pocos miliWatts ROE: http://www.solred.com.ar/lu6etj/tecnicos/roe/roe.htm

//pgina 0x18
//Manuel Jimnez Franco//
.proyectos nocturno@micropic.es

receptor para el protocolo DMX512


El protocolo DMX512 es el estndar por excelencia para el intercambio de
informacin entre el equipamiento de tecnologas teatrales. De diseo sencillo, fcil
uso y gran difusin en el mercado de tecnologa para el entretenimiento, DMX512
lleg para quedarse en cualquier tipo de escenario moderno. En el presente art-
culo aprenderemos un poco acerca de este protocolo y como construir y utilizar un
receptor-visualizador DMX512.

.El protocolo distancias superiores y tiene una serie de ventajas que lo


hacen superior a RS232 para muchas aplicaciones donde
El protocolo DMX512 naci en 1986 en la USITT la distancia y fiabilidad de la comunicacin son requisitos
(Instituto americano de tecnologas teatrales) para importantes.
convertir el sistema de comunicacin entre consolas y La informacin se transmite por una pareja de
dimmers en un estndar eficiente. Ha sufrido diversas conductores y no mediante un solo conductor. Este tipo de
revisiones hasta evolucionar al estndar actual, cono- canales de transmisin se conoce como: lneas balancea-
cido oficialmente como Entertainment Technology das o diferenciales; su caracterstica es la elevada inmu-
USITT DMX512A Asynchronous Serial Digital nidad a los ruidos elctricos y electromagnticos comunes
Data Transmission Standard for Controlling Lighting (referidos a masa).
Equipment and Accessories, que fue aprobado por Como las seales que nos interesan son las rela-
ANSI en noviembre de 2004. El actual estndar es tivas a la informacin de los canales DMX, estas seales
tambin conocido como E1.11, USITT DMX512A, o son trasmitidas, ex profeso, de modo diferencial y poste-
solo DMX512-A, y es mantenido por la ESTA (The riormente son amplificadas sin aumentar el ruido que se
Entertainment Services & Technology Association). presenta, generalmente, de modo comn (con la misma
DMX fue originalmente pensado para controla- polaridad respecto a masa). Los amplificadores diferen-
dores de enlace y dimmers de diferentes fabricantes. La ciales utilizados actualmente en RS485 son en realidad
sencillez de su diseo y la licencia GNU, han provocado pequeos circuitos integrados llamados line driver y line
que en la actualidad sea un estndar, de amplia difusin river. El primero es el emisor que est instalado en la con-
en el mercado, para el control de todo tipo de dispositivos sola y el segundo es el receptor que estar instalado en
de iluminacin, scanners, mquinas de humo, cabezas cada uno de los dispositivos a controlar.
mviles. Prcticamente todos los dispositivos utilizados
en espectculos incorporan DMX. .Nivel Lgico

!
Advertencia: Como DMX512 es un sistema El protocolo DMX512 se basa en la utilizacin de
de transmisin de datos sin mecanismos para canales para transmitir comandos a los dispositivos re-
el control de errores, no debe ser usado para ceptores. DMX512 tiene un lmite de 512 canales por uni-
controlar pirotecnia. verso (DMX universe), y cada canal ocupa un byte. Por lo
que el valor transmitido por canal se puede regular desde
0 hasta 255: son los valores DMX (DMX values). Cada
.Nivel Fsico trama DMX512 lleva los 512 bytes correspondientes al dato
de cada canal, independientemente de que se utilicen o no
El DMX512 es un protocolo de transmisin de da- todos los canales. Las mesas profesionales que usan DMX
tos serie que se basa en el estndar internacional EIA pueden soportar hasta 8 universos DMX y con la tecnologa
485 o RS485, ste se emplea en aquellas aplicaciones EtherDMX estos pueden ser ampliados an ms.
donde se necesita una transmisin serie fiable y simple. En DMX512 se transmiten los datos de modo
A diferencia del conocido RS232, RS485 permite cubrir asincrnico, a 250Kbit por segundo. Esto significa que las

//pgina 0x19
.proyectos

seales del transmisor y de los receptores no estn en sin- Si fuese necesario aumentar las distancias es preciso uti-
crona, pero los receptores se sincronizan al mando de la lizar buffers o splitters.
consola cada vez que sta enva una determinada seal. Habitualmente, los dispositivos DMX tienen una
Bsicamente, y aunque luego lo veremos en pro- entrada y una salida, de manera que es fcil configurar-
fundidad, la trama DMX completa se compone de una se- los en cadena, uno tras otro. Es obligatorio colocar en
al de sincronizacin y a continuacin los 512 bytes de in- los extremos del BUS una resistencia de terminacin de
formacin que se corresponden con los 512 valores DMX. 120ohm 1/4W, entre los conductores de las seales de
Los receptores reciben toda la trama, pero procesan slo dato. Olvidar colocar esta resistencia suele ser causa fre-
la informacin relativa a los canales para los que estn cuente de averas en instalaciones DMX o fallas en la co-
configurados. municacin.
La informacin se transmite siguiendo este diagra-
ma de tiempos: .Cables y conectores
Los cables habitualmente
utilizados en DMX son los de par
trenzado, dado que ofrecen una
mayor inmunidad al ruido. Como
hemos comentado antes, ambos
hilos reciben la misma cantidad de
ruido y ello permite a los amplifica-
dores diferenciales eliminarlo para
quedarse con la informacin vli-
da.
Los conectores estndar son los
XLR, de los que hay dos modelos:
Diagrama de seales y tiempos del protocolo DMX512.
con 3 o con 5 pines. Antiguamente
Como se observa, la trama completa tiene varias partes: se utilizaban mucho los de 3, pero en la actualidad son
- seal BREAK: es un nivel bajo con un mnimo de 88us ms frecuentes los de 5 pines.
- marca tras BREAK: nivel alto con un mnimo de 8us
- byte Start: el byte Start siempre vale 0
- tiempo entre bytes: es un nivel alto que puede llegar
hasta 1 s
- trama de 512 bytes: aqu aparecen los datos de los 512
canales
Cada byte se transmite con:
- un bit de start a nivel bajo
- los 8 bits de datos
- dos bits de stop a nivel alto
De esta manera, algunas consideraciones de
tiempo respecto al protocolo son las siguientes:
Conectores XLR de 5 pines. stos son los ms
- duracin mnima para una trama completa: 22,7ms
utilizados en las instalaciones DMX512.
- mxima velocidad de refresco de la informacin: 44 ve-
ces por segundo

.Instalaciones DMX Topologa de una instalacin DMX512.

Topologa
Con DMX512 se pueden
alcanzar distancias de comunica-
cin, entre los extremos del BUS,
de hasta 500m. Sin embargo esta
distancia es para un caso ms o
menos ideal, pero en la prctica es
raro encontrar lneas de transmi-
sin con ms de 100m de longitud.

//pgina 0x1A
.proyectos

La configuracin de los pines 1 al 3 en un cable de por ejemplo, 16 canales, y est identificado con el cdigo
3 pines es la misma a la de los pines 1 al 3 en un cable de 128, automticamente reservar los canales 128 a 143
5 pines. para s mismo. Lo nico que hay que tener en cuenta es
Un cable de 5 pines est configurado de la si- que las direcciones DMX de los aparatos nunca deben
guiente forma: estar superpuestas.
Pin 1 = seal de referencia = revestimiento del cable (
malla o pantalla ); .Construyamos un receptor DMX
Pin 2 = seal invertida = - polo negativo;
Pin 3 = seal = + polo positivo; El ReceptorDMX que presentamos es de carcter
Pin 4 = opcional (la utilizacin de este pin vara de acuer- puramente experimental, y slo sirve para probar a interp-
do con el aparato en operacin y los fabricantes nunca retar el protocolo DMX512 y mostrar en su display el valor
llegaron a un acuerdo sobre cmo utilizarlo. La intencin del canal seleccionado en cada momento.
original era tener realimentacin de los aparatos y esta- Diseo
blecer son estos un enlace bidireccional).
Pin 5 = opcional (la utilizacin de este pin vara de acuer-
do con el aparato en operacin y los fabricantes nunca
llegaron a un acuerdo sobre cmo utilizarlo. La intencin
original era tener realimentacin de los aparatos y esta-
blecer son estos un enlace bidireccional).
Si bien es cierto que en la industria del entreteni-
miento el cable del tipo XLR es el cable estndar, en algu-
nas aplicaciones por motivos prcticos y estticos es muy
comn la utilizacn de cables del tipo UTP Cat5e (cable
de red).
El armazn de los dispositivos nunca se conecta
al pin 1, la seal de referencia, ya que podra provocarse
un anillo de masas y afectar el correcto funcionamiento
del sistema. Sin entrar al tema de los fenmenos causa-
dos por una equivocada conexin a tierra, de la funda de-
fensiva del cable de transmisin de datos, es importante
Nuestro receptor DMX512.
decir que una eventual conexin a tierra de este conductor
se puede realizar en un slo punto de todo el sistema y El circuito est compuesto por un PIC, como corazn,
que normalmente este procedimiento se realiza slo en un arreglo de transistores Darlington ULN2003 para las
las instalaciones fijas. lmparas de siete segmentos y un driver MAX485 para el
De todas maneras, es una buena prctica que los bus DMX. Se ha utilizado un PIC 18F2550, pero el soft-
equipos dispongan en su entrada DMX ware podra compilarse para uno mucho
de optoacopladores que eliminen la po- ms pequeo porque requiere muy poca
El ReceptorDMX que pre- memoria de programa.
sibilidad de contacto elctrico entre el
bus DMX y la circuitera del dispositivo. sentamos es de carcter El PIC almacena en su RAM los
La mayora de los equipos profesiona- puramente experimental, 512 valores de todos los canales DMX, lo
les disponen de aislamiento optoaco- y slo sirve para probar que le permite absorber la informacin
plado. de la trama completa. El canal DMX se
a interpretar el protocolo selecciona mediante el teclado matricial.
.Direccin DMX DMX512 Hay otro dispositivo de salida:
Puesto que en el bus DMX via- el LED. Ese LED est gestionado por
ja la informacin de 512 canales, cada PWM y su ciclo til viene dado por el
dispositivo debe ser configurado para escuchar los que dato DMX del canal seleccionado. En este caso, no
necesite. Cuando un dispositivo necesita la utilizacin de hay esperas: la informacin se muestra en tiempo real
varios canales, suele configurarse slo la direccin del pri- a la vez que se est escribiendo el canal selecciona-
mero de ellos, quedando reservados para dicho dispositi- do.
vo todos los que necesite a partir del primero. El conector DMX slo necesita tres seales:
Lo habitual es que un dispositivo utilice varios ca- DMX+, DMX- y GND. Se ha aadido Vdd porque permite
nales, y se identifique fsicamente con el cdigo del canal alimentar algn circuito auxiliar que se pueda conectar al
de inicio. De esta manera, si un cabezal proyector utiliza, bus, aunque no es imprescindible.

//pgina 0x1B
.proyectos

Uso
Utilizar el dispositivo es muy fcil. Al encender el
dispositivo este comienza a capturar todas las tramas que
le lleguen por el conector DMX. En el display aparece la
palabra OFF, hasta que el usuario seleccione un canal
con el teclado matricial.
A medida que se va pulsando el teclado, el display
va mostrando el canal seleccionado. Mientras se toca el
teclado, parpadean los puntos decimales de los displays
para advertir que estamos viendo el selector de canal, en
lugar del dato DMX. Al cabo de unos segundos la infor-
macin aparece en los displays. El valor del canal selec-
cionado tambin se representa en el led, cuya intensidad
es regulada mediante PWM.
El receptor DMX512 con Puesto que el dispositivo memoriza toda la trama
el teclado y las bateras (512 bytes) puede ser desconectado del bus y examinado
de alimentacin.
a posteriori como si estuviera fsicamente conectado.
Construccin
La construccin del receptor se basa en este es-
quema:

Circuito electrnico del receptor DMX512.

//pgina 0x1C
.proyectos

Del cdigo fuente, slo veremos aqu la rutina de El programa completo est disponible para
atencin a la interrupcin de la USART, que es donde descargar; las explicaciones del cdigo estn en los
est el meollo de la cuestin. comentarios.

/************************************************************************
* Interrupcin RDA: dato recibido por la USART *
* Esta interrupcin se activa cada vez que se recibe un dato en la *
* USART. Mediante el control de una mquina de estados se determina *
* la validez y el significado del dato recibido, y se obra en *
* consecuencia. *
* Nocturno 2008 www.micropic.es *
************************************************************************/
#int_rda
void Dato_Recibido_USART(void)
{
while (RCIF) // ejecutamos mientras haya un dato pendiente de procesar
{
// Hacemos una copia del registro RCSTA porque sus bits cambian de valor
// al leer RCREG y modificar CREN
Copia_RCSTA.registro = RCSTA;
// En RCREG est el dato que acaba de recibir la USART
DatoRX = RCREG;
// Si se reciben ms de 3 bytes sin haberlos procesado, se produce un error
// de Overrun. En este caso, se borra el error reiniciando CREN y dejamos
// la interrupcin preparada para procesar la siguiente trama DMX
if (Copia_RCSTA.bits.OERR)
{
CREN=0;
CREN=1;
DMX_Estado = DMX_ESPERA_BYTE;
return;
}
// Mquina de estados
switch (DMX_Estado)
{
case DMX_ESPERA_BYTE: // si estamos en este estado y hay error FRAME
// es que nos ha pillado en medio de un Byte. Hay que seguir esperando
// hasta que desaparezca el error.
if (!Copia_RCSTA.bits.FERR)
// Ha llegado un byte. Ahora esperaremos la seal Break
DMX_Estado = DMX_ESPERA_BREAK;
break;

case DMX_ESPERA_BREAK: // estamos esperando la seal Break


// Esta seal se identifica porque aparece el error de Frame
if (Copia_RCSTA.bits.FERR)
// Tras recibir el error de Break, hay que esperar un byte de valor 0
if (!DatoRX)
DMX_Estado = DMX_ESPERA_START;
break;
case DMX_ESPERA_START: // ya hemos recibido el Break y ahora hay que
// esperar un Byte con valor 0, que ser la seal de Start
// Mientras tanto, si recibimos un error de Frame, hay que volver a
// empezar para recibir la seal de comienzo de trama.
if (Copia_RCSTA.bits.FERR)
DMX_Estado = DMX_ESPERA_BYTE;
else {
if (!DatoRX)
{
// Llegados a este punto, ya hemos recibido el Byte Start=0
// y comenzamos la trama de valores DMX.
DMX_Indice = 0;
DMX_Estado = DMX_RECEPCION_DATOS;
} else

//pgina 0x1D
.proyectos

// Si el dato recibido no es 0, volvemos a empezar


DMX_Estado = DMX_ESPERA_BREAK;
}
break;
case DMX_RECEPCION_DATOS:
// En este estado estamos recibiendo la trama de datos DMX
// Si se detecta un error de Frame es que ha habido un error y estamos
// al principio
if (Copia_RCSTA.bits.FERR)
if (!DatoRX)
DMX_Estado = DMX_ESPERA_START;
else
DMX_Estado = DMX_ESPERA_BYTE;
else
{
// Almacenamos el dato recibido en nuestro array
TramaDMX[DMX_Indice++] = DatoRX;
// Si ha llegado al final de la capacidad, cambiamos al estado de espera
// de nueva trama
if (DMX_Indice >= TotalCanales)
DMX_Estado = DMX_ESPERA_BREAK;
}
break;
}
}
return;
}

.Emisor DMX es posible construir el receptor Manolator 256, cuyos es-


quemas y mtodo de construccin se encuentra alojado
Para comprobar que nuestro receptor funcio- en http://www.freedmx.com. Tambin deben descargarse
na adecuadamente, es aconsejable contar con emisor alguno de los programas de emulacin de consolas DMX,
DMX512. Si no se dispone de un dispositivo de prueba, que estn alojados en FreeDMX.

//pgina 0x1E
//Ariel Palazzesi//
.circuiteca arielpalazzesi@gmail.com

monoestable con NE555


Existen algunos circuitos integrados que a pesar de permanecer durante aos
en el mercado, su gran utilidad hace que permanezcan vigentes, tal es el caso
del temporizador NE555. Es por eso que lo hemos elegido para inaugurar esta
nueva seccin de la revista.

A pesar de ser un circuito integrado suma- figura 1. En ella, el periodo T se expresa en segundos, R1
mente econmico, se consiguen tiempos de tempo- en Ohms y la capacidad de C1 en Faradios.
rizacin muy estables frente a variaciones de tensin Al presionar el pulsador identificado como TRI-
de alimentacin y de temperatura. La estabilidad en GGER, la salida (pin 3) del NE555 pasar a estado
frecuencia es de 0,005% por C. La precisin final es- alto y permanecer as hasta que transcurra el tiempo
tar dada por la calidad del condensador C1. fijado por el valor de R1 y C1 o hasta que se presione el
pulsador RESET (lo que ocurra primero). En general,
Un circuito monoestable recibe ese nombre por no se desea interrumpir el periodo en que el integrado
permanecer estable en un solo estado: tiene su salida en nivel alto, por lo que
el nivel bajo. En efecto, si conectamos el el pulsador conectado al RESET puede
Un circuito monoestable no ser necesario.
NE555 de manera que se comporte como
un monoestable (figura 1), su salida per- recibe ese nombre por Dado que para obtener largos
manecer en estado bajo, salvo en el mo- permanecer estable en periodos en estado alto (superiores a
mento en que reciba una seal en su pin los 10 minutos) se deben utilizar con-
un solo estado:
numero 2, denominado TRIGGER (gati- densadores electrolticos, y estos pre-
llo o disparador), en cuyo caso la salida
el nivel bajo sentan fugas que afectan su confiabili-
pasara a nivel alto durante un tiempo T. dad, es que tenemos que recordar en
Este tiempo est determinado por los valores del resistor el momento de hacer nuestros diseos que pueden ser
R1 y el condensador C1, de acuerdo a la formula de la posibles errores de hasta un 20% en los tiempos deter-
minados por R1 y C1.

Como puede verse, el esquema de nuestro oscilador Este circuito impreso servir para montar
monoestable es sumamente simple. nuestro temporizador.

//pgina 0x1F
.circuiteca

Es importante aclarar que una vez disparado el


monoestable, hasta que no transcurra el tiempo T (o se re-
setee el temporizador) cualquier actividad en el TRIGGER
es ignorada, por lo que un disparo efectuado durante el
estado alto de la salida no ser tenido en cuenta.
El circuito puede alimentarse con tensiones com-
prendidas entre 3 y 15V, y el valor de T es independiente
del valor de VCC.
Las aplicaciones para este circuito son muchas.
Por ejemplo, buscando los valores adecuados de R1 y C1
podra utilizarse para, mediante un rel, activar las luces
de un pasillo, o la luz de cortesa de un automvil.

Una vez montados los componentes, nuestro


proyecto se ver ms o menos as.

Remeras pasamensajes
con panel de leds.
ideal para barman, fiestas electrnicas,
marketing directo y publicidad y ms!!!

Contactos:
Tel: 15 6803 6152
juanscopp@yahoo.com
www.remerasleds.com.ar

//pgina 0x20
//Reinier Torres Labrada//
.informacin tcnica reiniertl@gmail.com

el bus SPI
El BUS SPI (Serial Peripheral Interface) constituye un estndar desarrollado por
Motorola con el objetivo de comunicar dispositivos electrnicos ubicados en la
misma placa de circuito impreso. SPI establece un enlace serie sincrnico para la
comunicacin bidireccional, en modo full duplex, y configuracin Maestro/Esclavo.
Solo el Maestro puede iniciar la comunicacin y se permite la existencia de varios
esclavos, con dos configuraciones circuitales posibles. Este BUS tambin es cono-
cido como BUS serie de 4 hilos.

.La idea fundamental tras SPI .Seales del BUS SPI


SPI utiliza un registro de desplazamiento circular SPI establece el uso de 4 seales, cada una de
distribuido para el intercambio de datos entre el maestro y ellas con su identificador y funcin especfica:
el esclavo. Con dos lneas de datos y una de reloj, es po- - SCK (Serial Clock): Es la seal de reloj, se utiliza para
sible transmitir simultneamente, con cada pulso de reloj, sincronizar el intercambio de datos entre los dispositivos
un bit del maestro al esclavo y otro bit del esclavo al maes- que se estn comunicando. El maestro es el nico que
tro. Esta configuracin podemos observarla en la Figura 1, puede generar esta seal.
y hace posible la transmisin de datos en ambos sentidos - MOSI (Master Output Slave Input): Flujo de bits que el
a altas velocidades. maestro transmite al esclavo
El anlisis de la Figura 1 sugiere que la longitud - MISO (Master Input Slave Output): Flujo de bits que el
del registro de desplazamiento de cada uno de los circui- maestro recibe del esclavo
tos involucrados en la comunicacin puede ser cualquiera, - SS (Slave Select): Entrada de seleccin del esclavo, en
siempre que ambos dispositivos tengan la misma longitud. los maestros esta seal se utiliza para el control y manejo
De hecho la especificacin original no establece una lon- de errores en sistemas con ms de un maestro.
gitud determinada, pero por cuestiones prcticas, la ms Adems de la especificacin de nombres anterio-
utilizada es 8 bits.

Figura 1: SPI utiliza un buffer circular distribuido para intercambiar datos entre el dispositivo maestro y el esclavo.

//pgina 0x21
.informacin tcnica

res existen otras ampliamente utilizadas: con esta parte del circuito integrado.
- SCK, SCL, SCLK, CLK (Serial Clock) La unidad de control SPI, no es un circuito defi-
- SDI (serial Data In), DI (Data In), SI (Serial In) nido en ninguna parte del estndar, de hecho cada imple-
- SDO (Serial data Out), DO (Data out), SO (Serial Out) mentacin de este bloque depende del dispositivo, y nor-
- nCS (1..n Chip Select), CS (Chip Select), nSS (1..n Sla- malmente no se describe as; en este artculo lo hacemos
ve Select), STE (Slave Transmit Enable) de esta forma con fines didcticos. La unidad de control
La recomendacin a seguir con la denominacin SPI usualmente se compone de un conjunto de registros
de las seales del BUS SPI es que se utilice la descrita en de configuracin, FIFOs y lgica de control para la gene-
el estndar. Sin embargo cuando se necesario utilizar otra racin de interrupciones.
de las denominaciones mencionadas, es preciso tener en Mediante la unidad de control SPI el sistema
cuenta que la lnea SDO del maestro debe ir conectada que aloja al perifrico tiene la posibilidad de configurarlo
a SDI del esclavo y que la lnea SDI del maestro debe ir para el trabajo, colocar los datos a transmitir en el registro
conectada a SDO del esclavo, siguiendo esta recomen- de desplazamiento y leer y guardar en un lugar seguro
dacin para el resto de las denominaciones aceptadas. los datos recibidos, generar interrupciones, y en el caso
Las lneas SCK y CS cumplen la misma funcin que en la del maestro, iniciar y finalizar la transferencia de datos.
denominacin de la especificacin. La ventaja de utilizar Para los microcontroladores con un mdulo SPI dedicado,
la primera denominacin descrita, radica en que las lneas esto es especialmente til, ya que el procesador puede
de igual nombre se conectan entre s, sin necesidad de dedicarse a realizar otro tipo de operaciones mientras se
intercambiar ninguna lnea. transmiten y reciben los datos.
SPI establece el uso de En dispositivos como las memorias, la
.SPI en detalle 4 seales, cada una de unidad de control SPI, consiste en la im-
plementacin de una mquina de estados
Ahora que conocemos el principio ellas con su identificador para algn protocolo de ms alto nivel que
bsico y las seales del BUS SPI estamos y funcin especfica asegura la lectura y escritura de los datos
en condiciones de analizar con mayor pro- almacenados en memoria.
fundidad su funcionamiento. Para ello uti- El nico elemento que encontrar en los
lizaremos la Figura 2, en la cual aparecen todos los compo- datasheets como parte indispensable de una implementa-
nentes fundamentales que debe tener cualquier mdulo SPI. cin SPI, es el generador de baudios del maestro. El gene-
Para nuestro anlisis hemos optado por utilizar rador de baudios, es en esencia, un divisor de frecuencias
registros de desplazamiento de 8 bits, este dato ser muy programable, cuya salida es la seal de reloj del BUS.
importante cuando veamos las cartas de tiempo de las El funcionamiento de los registros de desplaza-
seales en el BUS. En la figura 2 se observan nuevos miento es como ya se indic previamente y la seal de se-
elementos que completan un perifrico SPI. leccin del esclavo (SS) puede ser generada por la propia
El primer elemento a tener en cuenta es que un unidad de control SPI o por otro componente cualquiera
perifrico SPI ser parte de algn circuito mayor que ne- del maestro; en los microcontroladores suelen utilizarse
cesite comunicarse con otro que realiza una funcin di- puertos de E/S de propsito general para este fin. Se ha
ferente. Por lo tanto, hay muchos tipos de circuitos que dibujado esta seal con lnea discontinua porque puede
utilizan perifricos SPI, entre ellos podemos citar: micro- que el esclavo no la tenga conectada al maestro. Por
controladores, memorias, puertos de comunicacin para ejemplo, en un sistema que tiene un maestro y un esclavo,
otros estndares, pantallas LCD, entre otros. El bloque puede que lo ms conveniente sea mantener al esclavo
con fondo amarillo claro, en la Figura 2, se corresponde seleccionado en todo momento, as que la lnea SS del

El mdulo SPI en el maestro y en el esclavo, y los bloques funcionales que permiten interactuar con el dispositivo que lo contiene.

//pgina 0x22
.informacin tcnica
esclavo ira directamente a tierra y solamente se utilizarn la comunicacin entre los distintos dispositivos, sin embar-
para comunicarse las lneas MOSI y MISO. go las longitudes de palabra ms utilizadas son 8, 12, 16
Hay situaciones en que el maestro solamente rea- y 32 bits, por trama de datos.
lizar un tipo de operacin con el esclavo. En este caso Una vez terminada la transmisin el maestro deja
no se requiere conectar las lneas MOSI y MISO, sino so- de generar la seal de reloj y habitualmente llevar la se-
lamente una de ellas, en funcin del tipo de operacin a al SS a estado alto para desactivar la comunicacin con
realizar; existen adems dispositivos con modos de comu- el esclavo previamente seleccionado.
nicacin bidireccional que utilizan una sola lnea de datos. Para garantizar la comunicacin en un sistema
Pero por ser configuraciones no habituales, quedan fuera que utilice varios esclavos, se precisa el uso de disposi-
del alcance de este trabajo. tivos cuyas entradas y salidas sean de tercer estado, de
modo que para los efectos de la comunicacin, el disposi-
.Comunicacin entre dispositivos tivo aparezca desconectado cuando su seal SS est en
estado alto.
La transferencia de datos solamente puede ser
realizada por el maestro, nico dispositivo que tiene el .Los detalles del reloj y la fase
control de la seal de reloj y que usualmente tendr el
control de la seal de seleccin del esclavo. Asociados al la seal de reloj existen dos aspec-
Para iniciar la comunicacin con un esclavo cual- tos importantes que se tienen en cuenta en las implemen-
quiera, el maestro debe en primer lugar, establecer la fre- taciones de un BUS SPI. Estos dos aspectos, la polaridad
cuencia que tendr la seal de reloj. Para ello debe confi- y la fase, determinan hasta cuatro modos de trabajo del
gurar adecuadamente su generador de baudios, de modo BUS SPI, que cualquier diseador debe tener en cuenta
que ste genere una seal de reloj con una frecuencia igual al comunicar dispositivos con este tipo de BUS.
o inferior a la frecuencia mxima que permite el esclavo. Tomando como ejemplo un dispositivo con la po-
Posteriormente el maestro pondr a nivel lgico sibilidad de ajustar los parmetros que permiten configu-
bajo la seal SS del esclavo con el cul desea establecer rar la polaridad y la fase del reloj, este dispositivo requeri-
la comunicacin. Si fuese necesario esperar un tiempo r la existencia de dos parmetros llamados CPOL (Clock
determinado, por ejemplo, para que un conversor AD ter- Polarity) y CPHA (Clock Phase).
mine el proceso de conversin o para que el esclavo se Polaridad: La polaridad del reloj est determina-
encuentre listo para la transferencia. El maestro debe im- da por el estado de la salida SCK cuando el BUS est
plementar algn mecanismo de demora para estos casos, inactivo; la polaridad positiva implica que SCK estar en
antes de comenzar a transmitir o recibir datos. estado lgico alto (CPOL=1) y la negativa SCK en estado
El siguiente paso es transmitir y recibir un bit de lgico bajo (CPOL=0).
datos con cada pulso de reloj, los bits son empujados por Fase: Este parmetro determina con cual flanco
la lnea MOSI, uno a uno en el registro de desplazamiento de la seal de reloj ser tomado el dato de las lneas MOSI
del esclavo y el mismo proceso se produce en sentido in- y MISO. Para CPOL=0, el dato es ledo en el primer flanco
verso por la lnea MISO. de SCK y para CPOL=1 en el segundo flanco de SCK. La
La cantidad de pulsos de reloj de cada transmi- lectura del dato no depende de la polaridad del reloj, sino
sin no est limitada y depende de las caractersticas de el cambio de estado en SCK al inicio de la transferencia.

Figura 3: Carta de tiempo para el BUS SPI para CPHA=0 Figura 4: Carta de tiempo para el BUS SPI para CPHA=1

//pgina 0x23
.informacin tcnica

Para observar mejor la relacin entre polaridad y ser gobernadas directamente por el perifrico SPI o ten-
fase, es preciso hacer un anlisis de las Figuras 3 y 4, las drn que ser controladas explcitamente por el programa-
cuales incluyen las cartas de tiempo, una para CPOL=0 y dor del sistema o por algn mecanismo hardware espe-
otra para CPOL=1. Estas figuras ofrecen detalles acerca cialmente diseado.
de los estados que deben adoptar el resto de las seales La otra configuracin es en Daisy Chain, en la
presentes en el BUS y los tiempos que deben transcurrir cual la lnea MISO del primer perifrico va conectada a
entre un estado y otro del BUS en su conjunto. la lnea MOSI del segundo y as sucesivamente. La lnea
Al analizar esta figura, podra parecer innecesario MISO del ltimo perifrico debe ir conectada a la lnea del
tener la posibilidad de configurar estos dos parmetros, mismo nombre del maestro, todos los perifricos tienen
sobre todo porque un perifrico SPI configurable puede una sola lnea SS. Esta configuracin es similar a tener un
ser costoso desde el punto de vista de los recursos que registro de desplazamiento muy largo, compuesto por va-
demande para su implementacin. Sin embargo una ob- rios perifricos SPI encadenados uno a continuacin del
servacin de este tipo no es adecuada, debido a que por otro. Esta configuracin es la que podemos observar en la
la gran cantidad de dispositivos que pueden utilizar un Figura 6.
sistema de comunicaciones como este, es preciso tener Otras caractersticas que pueden encontrarse en
a mano cierta libertad en el diseo de mdulos que apro- perifricos SPI
vechen mejor el BUS con el objetivo de obtener un mejor SPI incluye varias caractersticas adicionales que
desempeo del sistema. permiten obtener modos de trabajo y otras prestaciones que
Por ejemplo, existen conversores anlogo digital las descritas hasta aqu. Sin embargo, su explicacin queda
(ADC) que requieren un tiempo desde el momento en que fuera del objetivo de este trabajo adems que recomenda-
reciben la orden de convertir a digital la tensin analgica mos un estudio profundo por parte del que vaya a utilizar un
a su entrada, hasta que el dato est disponible para que dispositivo con estas caractersticas avanzadas.
otro dispositivo pueda leerlo. En algunos ADC, este tiempo Modo bidireccional: Permite conmutar una nica
puede ser muy pequeo, por lo que si utiliza SPI, bastara lnea de datos para que se comporte como MOSI o MISO,
con usar la seal SS para dar la orden de conversin y segn el tipo de transferencia a realizar. Implica que el
fase uno, de modo que el conversor tenga suficiente tiem- hardware se complicar an ms, pero con ello se utiliza
po para terminar su tarea y tener los datos disponibles y una lnea menos de datos.
listos para la lectura. Ejemplos como el anterior podran Uso de SS en el maestro para entornos mul-
citarse muchos, cada uno de ellos justificando el uso de timaestro: Cuando en un sistema se utiliza ms de un
alguno de los cuatro modos de configuracin de polaridad maestro, suele utilizarse la lnea SS para detectar coli-
y fase del reloj, para un tipo de aplicacin particular. siones en el acceso al BUS. El mecanismo de deteccin
de errores que se implementa consiste en interrumpir la
.Conguraciones circuitales transferencia en proceso y notificar la colisin.
Interrupciones: Los maestros suelen implemen-
Existen dos configuraciones bsicas para la inter- tar mecanismos de interrupcin, para notificar el fin de una
conexin de dispositivos utilizando el BUS SPI, la primera transferencia SPI, al procesador del sistema donde est
de ellas es conectando cada uno de los perifricos al BUS, implementado el dispositivo.
de modo que comparten las lneas MOSI y MISO, mien- FIFOS: Algunos sistemas tienen colas de envo y
tras que cada uno de ellos tiene una lnea independiente recepcin, de modo que se puede alimentar a la cola con
para SS. Esta es la configuracin que podemos observar una trama de datos y realizar una transferencia completa
en la Figura 5. de sta antes de notificar al procesador que es momento
Dependiendo de la implementacin del perifrico de vaciar el buffer del perifrico.
SPI que se utilice, las lneas utilizadas como SS, podrn

Figura 5. Conexin de
dispositivos SPI con lineas
SS independientes para Figura 6. Conexin de dispositivos SPI
cada esclavo encadenados (Daisy Chain)

//pgina 0x24
//pgina 0x25
//Mario Sacco//
.proyectos service.servisystem@gmail.com

el u-scilador ( el Oscilador Universal)


Un Oscilador de frecuencia variable, capaz de trabajar con frecuencias com-
prendidas entre uno y varias decenas de MHz. siempre ser una herramienta muy
til en la mesa del diseador de circuitos digitales.

Cuntas veces nos ha ocurrido que estamos mediante un sencillo y modesto circuito integrado de la
diseando un circuito que requiere de un oscilador familia TTL: el 7404N.
para funcionar y no encontramos el circuito adecua- El funcionamiento de ste multivibrador es muy
do? Cuando encontramos uno que cubre la frecuencia elemental, como puede verse en el esquema. Solo debe-
deseada, chocamos con que la excursin pico a pico mos tener en cuenta una regla fundamental en su con-
de su seal de salida es mayor a nuestra necesidad, struccin: la cantidad de puertas empleadas en el mis-
viceversa: cuando la salida es adecuada, la frecuencia mo, debe ser impar.
es insuficiente. Veamos cmo es que funciona este circuito. Par-
Por otro lado, quienes trabajamos con microcon- tiendo de un estado inicial BAJO ( LOW 0) en la en-
troladores, necesitamos contar siempre con un stock de trada de la puerta A, su salida se transformar en un es-
cristales de distintas frecuencias para poder dar vida a tado ALTO ( HIGH o 1). Este estado digital se aplica a
nuestros diseos. Ms an, cuando los puristas del ASM la segunda compuerta, la B, que cambiara su salida a un
requieren de un desborde del TMR0 cada un tiempo ex- estado BAJO. Este nivel de tensin se aplica a la tercera
acto, necesitando por ejemplo un cristal de 12 MHz. para puerta, que lo invierte y presenta a su salida un estado
lograrlo, seguramente descubrirn que ALTO. La cuarta compuerta lo vuelve a
en todas las cajas y cajones del taller Un Oscilador de frecuen- invertir y se aplica su salida a la entrada
solo hay de 10 MHz. o de 14 MHz. Qu de la quinta, que presentar en su salida
cia variable, capaz de un estado ALTO. Este valor se reintro-
desazn!
Es por eso que hemos desarrol- trabajar con frecuencias ducir en la entrada de la primer puerta,
lado el u-scilador, cuyo funcionamiento comprendidas entre uno y invirtiendo todos los estados en las sali-
explicaremos en detalle. Este oscilador varias decenas de MHz das a medida que dicho cambio, vaya
podr cubrir fcilmente cualquier frecuen- atravesando las puertas que forman
cia requerida para trabajar en mltiples e la cadena. Cada compuerta provoca
innumerables aplicaciones que podamos imaginar. Y todo el cambio de la siguiente, como chas de domin que
ello lo haremos con una inversin menor a 2 Euros. se empujan unas a otras.
El corazn de nuestro montaje fue extrado de la Hemos remarcado sta ltima frase ya que la
pgina web de nuestro amigo y colaborador (de pi, por misma es la que nos explica el porqu de la oscilacin del
favor) Diego Marquez Garca-Cuervo. circuito. Es el retardo de propagacin que ofrece la puerta
All nos encontramos con un Multivibrador Astable sin R ni al paso de la seal lo que determina, en parte, la frecuen-
C (Resistor y Condensador, respectivamente), construido cia de las oscilacin.
La frecuencia de oscilacin se puede calcular me-
diante la frmula que se observa en el grfico:

F = 1 / 2 * n * Tp

Donde F es la frecuencia resultante de oscilacin,


n es la cantidad de puertas y Tp el tiempo de propagacin
de la seal dentro de la puerta. O dicho de otra forma, el
tiempo que demora en cristalizarse la accin a la salida de
la puerta, respondiendo a la accin entrante.
Parece imposible que con un solo componente podamos En las hojas de datos de los Circuitos integrados,
realizar un oscilador, sin embargo, es una realidad.
lo vemos de la siguiente forma:

//pgina 0x26
.proyectos

mayor velocidad de propagacin.


Por lo tanto si al primer circuito lo alimentamos con
una tensin variable entre 2 y 6 volts tendremos una varia-
cin de frecuencia muy amplia a la salida del circuito, la que
depender de cada caso en particular del IC que utilicemos.
Segn las pruebas y ensayos realizados en los laboratorios
de uControl, para circuitos 74HC, hemos logrados valores
de frecuencias comprendidas entre los 500 Khz. Y algo
ms de los 30 Mhz. Asombroso, verdad?
De sta forma obtenemos un VCO (Voltaje Con-
tPHL nos refleja el retardo en pasar de un estado ALTO a uno BAJO y tPLH el trolled Oscillator, u Oscilador Controlado por Voltaje), al
retardo de la accin inversa, pasar de un estado BAJO a uno ALTO que slo necesitamos agregarle una etapa ms a la sali-
da. Esta ltima etapa deber tener una tensin de aliment-
Entonces, segn la frmula, obtendremos que acin constante, adecuada para la amplitud de la seal
para retardos normales de 10 nanosegundos por cada que quiramos obtener.
compuerta, la acumulacin de las cinco nos dar: Debido a que la salida de la cadena osciladora
no ser de amplitud constante, se hace trabajar a U2 en
F = 1 / 2 * 5 * 10-8 modo de amplificacin gracias a R1, para obtener amplifi-
cacin a seales bajas.
Lo que resultar en una frecuencia de 10 Mhz.
La diversidad de tecnologas de fabricacin de
circuitos integrados nos ofrece un vasto espectro de elec-
cin, entre los que encontramos la familia CMOS 74HC
74HCT. Con ellos lograremos la particularidad que bus-
camos cumpla nuestro u-scilador (cualquier relacin con
uControl es mera coincidencia) U1 ser alimentado con una tensin variable de entre 2 y 6 Volts,
mientras que U2 llevar alimentacin constante.
Estas pequeas y econmicas maravillas nos per-
miten trabajar con tensiones que van desde los 2 a los Tenemos entre manos un oscilador que se
6 Voltios de alimentacin, con la particularidad de que la puede construir con las monedas que tengamos en
velocidad de propagacin dentro de las puertas no ser la nuestro bolsillo (algo menos de 2 Euros), que cu-
misma para distintas tensiones. Es decir, a mayor tensin, bre la gama que va desde 500 Khz. a 30 Mhz. y que
en los prximos nmeros de uControl mejoraremos
con la adicin de un divisor de frecuencia program-
able y un detector de fase. Se transformar as en un
completo sistema PLL (Phase-Locked Loop o Lazo
de seguimiento de fase) que nos permitir obtener la
frecuencia que se nos ocurra con una precisin casi
absoluta.
La hoja de datos del IC, nos muestra la gran diferencia de No querrs perderte los prximos bytes de u-Control.
velocidad a distintas tensiones de alimentacin.
GOSUB 11

//pgina 0x27
//Ariel Palazzesi//
.ludoteca arielpalazzesi@gmail.com

El hombre ha incorporado los juegos como parte de cultura desde el comienzo mismo de la civilizacion.
Cuando jugamos, en realidad, estamos aprendiendo. Estamos entrenando nuestro cerebro. Como los
juegos son tan importantes en la vida de las personas, es que en uControl hemos decidido inaugurar
una nueva seccion dedicada completamente a ellos. Nmero a nmero iremos viendo como construir
una serie de circuitos practicos relacionados con el tema. Bienvenidos a la ludoteca

dado electrnico (versin 1)


El primer proyecto de la Ludoteca uControl es un econmico dado digital,
basado en componentes discretos. Se trata del complemento idea para mu-
chos juegos de mesa y se puede armar en un solo un par de horas.

Se trata de un proyecto ideal para los que es- de pulsos tiene una duracin que depende del tiempo que
tn descubriendo el hobby de la electrnica, ya que el usuario presione el pulsador de disparo. Debido a que
su principio de funcionamiento es muy sencillo, y la se generan varios miles de pulsos por segundo, es huma-
dificultad de construccin baja. namente imposible anticipar el resultado de la cuenta o
buscar un valor determinado modificando el tiempo que se
El circuito se basa en un par de circuitos integra- presiona SW1.
dos de bajo costo (menos de un euro cada uno). El prime- Los pulsos se generan con el bloque funcional
ro de ellos es el CD4017B, un contador/divisor por 10, que construido alrededor de la compuerta IC2a, el resistor R1
tambin puede ser configurado para contar hasta cual- y el condensador cermico C1, cuando el usuario presio-
quier nmero menor que ese. El segundo es otro circuito na SW1. Estos pulsos se aplican a la entrada de CLOCK
integrado de tecnologa CMOS, el CD4093B, que contiene del CD4017B, que por cada pulso recibido incrementa en
cuatro compuertas NAND (Schmitt Trigger). Con una de uno el valor de la cuenta, poniendo en alto la salida co-
estas compuertas se configura un oscilador que generara rrespondiente. Cuando la cuenta llega a 6, el CD1017B
los pulsos que se encargara de contar el CD4017B. El se resetea a si mismo (la salida 7 esta conectada al pin
objetivo del circuito es generar un nmero al azar entre 1 RESET) y comienza de nuevo a contar desde uno. Esto
y 6, y mostrar el resultado en un display conformado por 7 se repite miles de veces por segundo, todo el tiempo que
diodos LED, uno por cada punto de los que encontramos el jugador mantenga presionado SW1.
en las caras de los dados convencionales. Las salidas del CD4017B son las encargadas de
La forma ms simple de obtener un nmero alea- encender los LED que hacen las veces de display. Los de-
torio es generar un tren de pulsos de alta frecuencia, y ms diodos, todos 1N4148, cumplen la funcin de permitir
enviarlos a un circuito contador/divisor por seis. Este tren que en cada caso se iluminen los LED apropiados.

//pgina 0x28
.ludoteca

Si analizamos detenidamente las caras de un dado, display despus de unos 10 segundos. Este tiempo se de-
podemos ver que en realidad los seis valores posibles se termina mediante el valor del condensador C2 y el resistor
pueden conformar con cuatro grupos de LED, tal como se R6. El lector puede experimentar con otros valores para es-
ve en una de las figuras que acompaan el artculo. El LED tos componentes y modificar as el tiempo que permanece
D18 ser el que ubicaremos en el centro del display (posi- encendido el dado.
cin A), los LED D16 y D17 forman el gru- Respecto de la construccin,
po B, D14 y D15 el grupo C y D12 y D13 Las salidas del comenzaremos fabricando la placa de
el grupo D. Los resistores R2 a R5 son las
CD4017B son las en- circuito impreso de la manera que ya
encargadas de limitar la corriente que cir- hemos explicado en la revista nmero 1,
cula por los LED, de forma que se iluminen cargadas de encender para luego montar los componentes. La
todos con la misma intensidad. los LED que hacen las placa es de doble faz, as que debemos
El circuito se alimenta a partir de veces de display ser cuidadosos al planchar cada una de
una pila de 9V, que nos proporcionara ellas, de forma que los pads de uno y otro
muchas horas de diversin. No obstante, lado coincidan. Los LED deben quedar
y con el objetivo de preservar su vida til, se han utiliza- ms altos que el resto de los componentes, para que se
do las otras compuertas existentes en el CD4093B para vean fcilmente. Si el lector lo prefiere, puede dotar al de
configurar un temporizador. Este se encarga de apagar el una caja adecuada, dejando siete agujeros de 5mm para

Este es el circuito de nuestro dado electrnico.

//pgina 0x29
.ludoteca

los LED. En este caso, tambin se debera utilizar un pul-


sador diferente, ya que se montara en la caja en lugar ir
soldado directamente sobre el PCB.

Lista de materiales:
- 1 circuito integrado CD4017B
- 1 circuito integrado CD4093B
- 11 diodos 1N4148
- 7 diodos LED de cualquier color
- 2 resistores de 10K, watt
- 1 resistor de 220K, watt
- 3 resistores de 220 ohms, watt
- 1 resistor de 330 ohms, watt
- 1 condensador cermico de 1 nF
- 1 condensador electroltico de 10 uf/16V Este ser el as-
- Pulsador, clip para batera de 9 volt, etc. pecto el proyecto
terminado.

Ayuda para el
montaje de los
Diseo del PCB,
componentes.
correspondiente
al lado de las
soldaduras.

Con solo cuatro grupos


de LEDs podemos
Este es e diseo mostrar los 6 valores
del PCB, lado posibles.
componentes.

//pgina 0x2A
//Ariel Palazzesi//
.ludoteca arielpalazzesi@gmail.com

dado electrnico con PIC16F627A


Ya vimos como montar un dado utilizando componentes convencionales.
Ahora le proponemos al lector el ejercicio de realizar un circuito equivalen-
te, pero empleando un microcontrolador.

Siguiendo con los montajes destinados a


formar parte de nuestra ludoteca, presentamos un
dado un tanto especial. Si bien se trata de un circu-
ito que, como ya vimos, puede resolverse mediante
una serie de componentes comunes, su simplicidad
lo hace especialmente interesante para aprender a uti-
lizar microcontroladores.
Como corazn de nuestro montaje hemos elegido
a un microcontrolador de la familia PIC16F de Micro-
chip. Concretamente, se trata del modelo PIC16F627A,
de 18 pines. Seguramente el lector mas avanzado se pre-
guntar el porque de esta eleccin, ya que, por ejemplo,
un mucho mas pequeo y modesto PIC12F675 hubiese
bastado para cumplir esa funcin.
Hemos basado nuestra decisin en el hecho de
que ambos microcontroladores son econmicos, y cuestan
prcticamente lo mismo. Y como en futuras entregas am-
pliaremos este montaje a un nmero mayor de dados, nos
vendr bien ir conociendo este PIC.

.El circuito
El circuito se destaca por su simplicidad. Po-
demos ver su esquema en la figura 1, donde rpidamente Este es el esquema elctrico de nuestro montaje.
notamos la existencia de una pequea fuente de aliment-
acin construida alrededor de un regulador de voltaje de
la familia LM78xx, concretamente un LM7805. Como se
aconseja en la hoja de datos de este regulador, hemos
incluido un par de condensadores cermicos de 0.1 uF, Cuatro salidas del PIC
uno en su entrada y otro en su salida.
Un diodo se encarga de evitar la catstrofe de
se encargan de contro-
conectar la alimentacin en forma invertida, y un conden- lar los cuatro grupos
sador electroltico de 470 uF ayuda a eliminar el ripple que de LEDs que
pudiese existir en alimentacin externa.
conforman el dado.
El resto del circuito es el dado propiamente dicho.
Si has ledo el articulo PICs y LEDs en este mismo nme-
ro, seguramente el resto de este prrafo no es para ti. Cua-
tro salidas del PIC, concretamente RB0, RB1, RB2 y RB3,
se encargan de controlar los cuatro grupos de LEDs que
conforman el dado. Otras tantas resistencias limitan la cor-
riente que circula por cada rama. La figura 2 muestra que Grupos a encender para
cada valor del dado.
salidas debemos activar para cada valor posible del dado.

//pgina 0x2B
.ludoteca

Un pulsador, conectado a RA0, se encarga de


poner ese pin a +V cada vez que se lo presiona. Esto nos Hemos escrito dos versiones del programa:
permite saber que el usuario ha decidido lanzar el dado. una en PIC BASIC y otra en CCS.
Un resistor de 10k mantiene RA0 conectado a GND el
resto del tiempo.
El tiempo que el jugador mantiene presionado el pulsador
.El programa es el que determina el estado final del dado. El hecho de
que el PIC sea capaz de hacer esto decenas de miles de
El programa necesario para que nuestro proyecto veces por segundo nos garantiza la imposibilidad de que el
realmente funcione es bastante simple. Se limita a espe- usuario pueda influir conscientemente en el resultado.
rar que el usuario presione el pulsador, y mientras que lo Igual que en otras oportunidades, hemos incluido
mantiene en esa condicin cuenta continuamente de 1 a 6. una versin del programa en PIC BASIC, y otra en CCS:

-----CONFIGURAMOS PUERTOS----------
AllDigital Todos los pines del PORTA como E/S
TRISA = 0xff Configuro el PORTA completo como entrada.
TRISB = 0x00 Configuro el PORTB completo como salida.

------DECLARO VARIABLES -----------


Dim i As Byte i contendr el valor del dado en cada momento.

loop: bucle principal


PORTB = 0 Apago todos los leds

If PORTA.0 = 1 Then Si el pulsador esta en alto...


Gosub lanzo_dado
Endif
Goto loop

End Fin del programa principal

--------------------------------------------------
Esta rutina lanza el dado y muestra el resultado
--------------------------------------------------
lanzo_dado:
i = 0 Valor inicial de i
While PORTA.0 = 1 bucle principal
i = i + 1 Sumo 1 a i

If i = 7 Then si pasa de 6...


i = 1 ..empiezo de 1 otra vez.
Endif
Wend

Ahora, muestro el valor de i en los leds:


PORTB = LookUp(0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0e), i
WaitMs 5000 espero 5 segundos, y vuelvo al programa ppal.
Return
Epgrafe: Software en versin PIC BASIC.

#include <16f627a.h> //PIC utilizado


#fuses XT,NOWDT,NOPROTECT,PUT //Configuramos los fuses
#use delay (clock=4000000) //Oscilador a 4Mhz
#use fast_io(b) //Optimizamos E/S del PORTB

#BYTE PORTB = 0x06 //El PORTB est en 0x06

//Variables globales--------------------------------------------------
//La tabla dado tiene el valor del PORTB para cada numero posible.
int dado [6]={0x01,0x08,0x09,0x0A,0x0B,0x0E};

//Prototipo de funciones ---------------------------------------------


void lanzo_dado(void);

//pgina 0x2C
.ludoteca

//------Programa principal--------------------------------------------
void main(void)
{
set_tris_a(0xFF); //configuro el PORTA completo como entrada.
set_tris_b(0x00); //configuro el PORTB completo como salida.

disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

do{ //bucle principal


PORTB = 0; //Apago todos los leds
if(input(PIN_A0)){ //Si elpulsador esta en alto...
lanzo_dado(); //...lanzo el dado y muestro el resultado
}
}while(TRUE); //Repito el bucle.
}
//--------------------------------------------------------------------
//Esta funcion lanza el dado y muestra el resultado
//--------------------------------------------------------------------
void lanzo_dado(void) {
char i=0; //i contendr el valor del dado en cada momento.

do{ //bucle principal


i++; //Sumo 1 a i

if (i == 7) { //Si pasa de 6...


i = 1; //...empiezo de 1 otra vez.
}
}while(input(PIN_A0)); //Repito el bucle hasta que se suelte el pulsador.

//Ahora, muestro el valor de i en los LEDs:


PORTB = dado [i];
delay_ms(5000); //Espero 5 segundos, y vuelvo al programa ppal.
}
Este es el programa, escrito en CCS.

En www.ucontrol.
com.ar encontrars los ar- Este es el aspecto del
PCB, listo para comenzar
chivos .BAS y .C, adems
a soldar los componetes.
de ambos .HEX listos para
cargar en el PIC16F627A.

.El montaje

Se trata de un pro-
yecto pequeo, as que no
tendrs problemas para
montarlo. En la figura 3
puedes ver el diseo del
PCB que hemos realizado
para alojar los componen-
tes (y que puedes des-
cargar a escala de www.
ucontrol.com.ar). PCB propuesto para este montaje.

Las figuras 4 y 5 muestran el PCB sin componen-


tes y ya terminado. Ambas imgenes pueden ser de ayuda
a la hora de soldar los componentes. Te recomendamos
que prestes atencin a la hora de colocar los LEDS, el
diodo, el regulador de voltaje y el zcalo del PIC16F627A
Este ser el aspecto
sobre el PCB, ya que si alguno de ellos queda en la posi- del dado terminado.
cin incorrecta, el dado no funcionar.

//pgina 0x2D
//Ariel Palazzesi//
arielpalazzesi@gmail.com

Paleotrnica
el microprocesador Intel 4004
Si bien no se trata de un microcontrolador, la historia del microprocesador Intel 4004 tiene
todos los ingredientes necesarios para que resulte interesante a cualquier amante de la elec-
trnica. La historia del que sera el primer chip microprocesador comienza en el ao 1969,
en el Silicon Valley, ese mtico lugar, ubicado en el estado de California, que ya en esa poca
era el centro de la industria de los semiconductores.

La historia comienza cuando una joven empresa Shima esperaba llegar a EE.UU, juntarse con los
japonesa, dedicada a la fabricacin de calculadoras, deci- ingenieros de Intel, revisar la lgica de diseo para con-
di contratar a Intel (que haba sido fundada el ao ante- rmar que Busicom podra tener al n su calculadora, y
rior) para que diseara el conjunto de chips que dara vida regresar a Japn. Nada de esto fue posible. Se puso furioso
a su nuevo modelo de calculadora electrnica de mesa. cuando vio que estaba todo igual que cuando se haba ido
Busicom, quera mantener los costos de produccin de su seis meses antes, as que utilizando su rudimentario in-
calculadora lo ms bajos posibles. gls dejo claro que No hay nada para revisar. Esto es slo
Luego de analizar el problema, los ingenieros de idea. Los plazos del contrato entre Intel y Busicom no se
Intel quedaron convencidos que el trabajo era todo un reto. haban cumplido.
Intel no estaba preparada para realizar circuitos integra- Todo esto forz a Faggin a mantener jornadas de
dos custom (a medida) de la compleji- trabajo de 12 a 16 horas por da durante
dad solicitada. Por otra parte, la cantidad varios meses. Finalmente pudo realizar
de cada chip que necesitaba Busicom era
El Intel 4004 es un articulo los cuatro chips mencionados, a los que
bastante pequea, lo que aumentaba el muy buscado por los colec- denomin la familia 4000. (Ver recua-
costo de cada lote. Un posible camino a cionistas. Suelen pagarse dro)
la solucin del problema vino de Marcian
Edward Ted Ho (Jr.), que se desempe-
hasta U$S 400 El 4001 fue el primer chip de la familia
en disearse y construirse. El primer lote
aba como jefe del departamento de investigacin de apli- sali de la lnea de fabricacin en octubre de 1970 y fun-
caciones, en Intel. cion perfectamente. En noviembre salieron el 4002 (con
Durante el otoo del hemisferio norte, en 1969, un pequeo error) y el 4003 (que funcion correctamente).
Ho, ayudado por Stanley Mazor, denieron una arquitec- Finalmente, unos pocos das antes del nal de 1970, naci
tura que consista en un CPU de 4 bits, una memoria ROM el 4004.
para almacenar las instrucciones de los programas, una Lamentablemente, en la fabricacin se haban ol-
RAM para almacenar los datos y algunos puertos de en- vidado de poner una de las mscaras y toda la partida se
trada/salida para la conexin del teclado, la impresora, los descart. Tres semanas despus vieron la luz los nuevos
interruptores y el display. Adems denieron y vericaron 4004, con lo que Faggin pudo realizar las vericaciones.
el conjunto de instrucciones con la ayuda de ingenieros de Slo encontr unos pequeos errores. En febrero de 1971
Busicom, cuyo equipo lideraba Masatoshi Shima. el 4004 funcionaba correctamente. En el mismo mes reci-
En abril de 1970 Federico Faggin se sum al sta bi de Busicom las instrucciones que deban ir grabadas
de Intel.Deba concentrarse en terminar el conjunto de en la ROM.
chips de la calculadora de Busicom. Se supona que Ho y A mediados de marzo de 1971, envi los chips a
Mazor haban completado el diseo lgico de los chips y Busicom, donde vericaron que la calculadora funcionaba
solamente restaba denir los ltimos detalles, para iniciar perfectamente. Cada calculadora necesitaba un 4004, dos
el proceso de produccin. Sin embargo, esto no fue lo que 4002, cuatro 4001 y tres 4003. Tom poco menos de un ao
Faggin encontr cuando comenz a trabajar en Intel ni lo desde que concibieron la idea hasta que el producto nal
que Shima encontr cuando lleg desde Japn. funcion correctamente.

//pgina 0x2E
.Paleotrnica

Luego de que el primer microproce- cer malos negocios, y luego de que Faggin construyera
sador fuera una realidad, Faggin le sugi- otros dispositivos utilizando la familia 4000, llegaron
ri a los gerentes de Intel que utilizara a un arreglo con los japoneses: Intel le devolvi
esa familia de chips para otras apli- a Busicom los 60.000 dlares que haba cos-
caciones. Sin embargo, los directores tado el proyecto, y recuper los dere-
de la empresa suponan que los chips chos sobre la familia 4000. Slo podra
diseados recientemente solo servan vender los integrados para aplicacio-
doras, por lo que la sugeren-
para calculadoras, nes que no fueran calculadoras, y Bu-
cia fue rechazada. Adems, estaba la cuestin sicom los obtendra ms baratos que
del contrato de exclusividad rmado con Busicom, el resto de los clientes.
que solo permita a Intel poner los chips en el mercado Finalmente, el 15 de noviembre de 1971, la
con los japonenses como intermediarios. familia 4000, luego conocida como MCS-4 (Micro Compu-
Dado que en Intel no se caracterizan por ha- ter System 4-bit) fue nalmente introducida en el mercado.

Descripcin del 4004


Tcnicamente, el Intel 4004 es un microprocesador con
un de bus de datos de 4 bits, capaz de direccionar 32.768 bits
de ROM y 5.120 bits de RAM. Puede direccionar 16 lneas de
entrada (de 4 bits) y 16 de salida (de 4 bits). Contiene alrededor
de 2300 transistores MOS de canal P de 10 micrones. El ciclo
de instruccin es de 10,8 microsegundos.

Esta era la estructura iterna del primer microprocesador

//pgina 0x2F
.Paleotrnica

Curiosidades
Chips de soporte -> Federico Faggin coloco sus inciales en el centro
Tal como ocurre con los microprocesadores del sustrato de la primera versin del Intel 4004. En
actuales, el Intel 4004 necesitaba de una serie de versiones posteriores, llevadas a cabo algunos me-
chips de soporte o chipset para funcionar. Este ses ms tarde, el rediseo de la zona del chip que
grupo de circuitos integrados estaba formado por contena la firma hizo que las FF fuesen a parar
5 chips, que en conjunto se los conoca como la para siempre al borde del integrado.
familia 4000:
->El Intel 4004 es un articulo muy buscado por los
-> Intel 4001: Una ROM de 256 bytes (256 instruc- coleccionistas. Los de mayor valor (unos U$S 400 en
ciones de programa de 8 bits), y un puerto incorpo- eBay) son los de color oro y blanco, con los llamados
rado de I/O de 4 bits (*) trazos grises en la zona blanca. Le siguen los que
carecen de esas marcas (U$S
-> Intel 4002: Una RAM de 40 bytes (80 palabras
de datos de 4 bits), y un puerto de salida incorporado
de 4 bits. La RAM del chip est organizada en cuatro
registros de veinte palabras de 4 bits:
16 palabras de datos (utilizadas para los dgitos
de mantisa en el diseo original de la calculadora)
4 palabras de estado (utilizadas para los dgitos
de exponente en el diseo original de la calculadora)

-> Intel 4003: Un registro de desplazamiento de sal-


ida paralela de 10 bits para explorar teclados, pantal-
las, impresoras, etc.

-> Intel 4008: Un latch de 8 bits de direccin, para


facilitar el acceso a chips de memoria estndar, y
un chip incorporado de 4 bits de seleccin y puerto
de I/O (*)

-> Intel 4009: Interfaz de acceso I/O a memoria es-


tndar y a chips de I/O (*)
Disposision de pines del Intel 4004
(*) Nota: Debido a limitaciones tcnicas, no era posible
Bibliografia:
utilizar a la vez un chip 4001 junto a un 4008/4009.
Daro Alpern, en http://www.alpertron.com.ar/4004.HTM
The Intel 4004, en http://www.intel4004.com/
Wikipedia, http://es.wikipedia.org/wiki/Intel_4004

//pgina 0x30
SORTEO!!!
Los lectores de este nmero estn de parabienes. Con solo enviar un mail con
su nombre, edad y nacionalidad a sorteo@ucontrol.com.ar citando el numero
de esta pagina, puedes ser el ganador del libro dsPIC, Diseo practico de apli-
caciones, de 409 paginas. El libro, por supuesto, esta en espaol y se acompaa
de un CD-ROM conteniendo el cdigo fuente explicado en el texto.
Se trata de un libro claro, eficaz y prctico, que constituye una extraordinaria
herramienta para dominar los microcontroladores PIC de nivel superior, con los que
es posible encarar aplicaciones propias de los DSP. Se encuentra organizado en 3
partes: Teora, Diseo y simulacin de aplicaciones y Laboratorio Experimental. Al final
se dispone de un apartado con prcticas con hardware, basadas en
una sencilla y econmica tarjeta
en la que se desarrollan algunos
proyectos de forma real.
Autores:
Jos M. Angulo Usategui: Dr. Ingeniero Industrial.
Catedrtico de Arquitectura de Computadores. Uni-
versidad de Deusto.

Aritza Etxebarra Ruiz: Licenciado en Informti-


ca. Jefe del departamento de informtica. Colegio
Vizcaya.

Ignacio Angulo Martnez: Licenciado en infor-


mtica. Profesor del Departamento de Arquitec-
tura de Computadores. Universidad de Deusto.

Ivn Trueba Parra: Ingeniero en Automtica y


Electrnica Industrial e Ingeniero en Organiza-
cin Industrial. Profesor del Departamento de
Arquitectura de Computadores. Universidad
de Deusto

El nombre del ganador ser pu-


blicado en nuestra web y notifi-
cado por mail. Dispondr de 30
dias corridos para reclamar su
premio. Pasado este tiempo,
se procedera a efectuar un
nuevo sorteo en el numero
siguiente de uControl.

//pgina 0x31
Diseo y Diagramacin
azimut.estudio@gmail.com / la plata / bs as / argentina

También podría gustarte