ucontrol_revista_0007

64
 // DESCARGA GRATUIT A // "int año = 2 , número 7" /* NOVIEMBRE 2009 */ Tercera parte de este curso de programación de PICs. En esta entrega abordaremos los módulos de temporización timer0, timer1, timer2 y el módulo de comunicación serial Estudio de las ondas fotopletismograficas de un oximetro de pulso para monitorizar de forma no invasiva la saturación de la hemoglobina arterial

Upload: jason-perez

Post on 16-Jul-2015

74 views

Category:

Documents


0 download

TRANSCRIPT

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 1/64

 

// DESCARGA GRATUITA // "int año = 2 , número 7" /* NOVIEMBRE 2009 */

Tercera parte de este curso de programación de PICs. Enesta entrega abordaremos los módulos de temporizacióntimer0, timer1, timer2 y el módulo de comunicación serial

Estudio de las ondas fotopletismograficas de un oximetro

de pulso para monitorizar de forma no invasiva lasaturación de la hemoglobina arterial

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 2/64

 

Esta página está esperandotu anuncio. Comunicate a

[email protected]

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 3/64

 

 .      s       t      a        f        f

 .        i      n

        d        i      c      e

número = 7; año = 2; 

Dirección, Redacción y Corrección: Ariel Palazzesi 

Argentina [email protected]

Diseño y Diagramación: Lucas M. Treser 

Argentina [email protected] 

Consejo Editorial: Mario Sacco 

Argentina [email protected] 

Alejandro Casanova 

Argentina [email protected] 

Washington Zarate Rospigliosi Perú 

[email protected] 

Diego Ferrari Argentina 

[email protected] 

Descarga Gratuita.Este contenido se rige por la licencia 

de Creative Commons “Licencia Creative Commons Atribución-No Comercial-Sin 

Obras Derivadas 3.0” 

El amplificador operacional 0x05Historia de la informática 0x0CTutorial PCB Wizard 0x13Modulo ADC en PICs 0x18Oxímetro de pulso 0x1FKernel, escuela de inventores 0x2BPIC16F628A en assembler (iii) 0x30

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 4/64

 

/ / página 0x04

Estás leyendo el último ejemplar del año de la RevistauControl. Las cercanías del fin de año por lo general nos

obligan a hacer un balance y un repaso de lo acontecido enlos últimos doce meses. En el caso de está pequeñapublicación, dicho balance arroja un resultado absolutamentepositivo. Es que a pesar de haber estado casi un año sinpublicar ningún ejemplar, el “regreso” de la revista tuvo unamuy buena acogida, y por los comentarios que recibimossabemos que los lectores la siguen esperando con el mismoentusiasmo de siempre.

Hemos visto con orgullo como, a lo largo de los tresejemplares publicados en 2009, la calidad de los artículos se

ha ido incrementando. Obviamente, en este caso “calidad”no es sinónimo de “dificultad”: es posible tratar con calidadtemas que sirven perfectamente a un principiante, y eso eslo que intentamos hacer cada 64 días.

Hemos recibido varios mensajes solicitando lesbrindemos la dirección de un lugar en el que puedancomprar la revista, u ofreciendo pagar por la misma en suformato digital. Bien, por el momento -y quizás siempre seade esta manera- la revista no existe como un documentoimpreso. Nos parece mucho más simple de distribuir (y“ecológicamente amigable”) mantener la Revista uControlcomo un ebook. Por otra parte, la idea que tenemos desde elmomento en que concebimos este proyecto es que fuese unproducto gratuito para el lector, y en ese camino seguimosandando.

Esto no quiere decir que no existan formas en la quepuedes colaborar con el proyecto. De hecho, nos vendríamuy bien tu ayuda. Si tienes un proyecto interesante quequieres compartir con tus colegas, o crees que puedescolaborar en la edición (diagramación, corrección de textos,etc.) de la revista, escríbenos a [email protected] 

y con mucho gusto te contaremos como puedes ser parte delequipo. También puede sernos de utilidad que nosrecomiendes como sitio en el que hacer publicidad. Si tienesconfianza con tu proveedor de componentes electrónicos ycrees que seria beneficioso para el publicitar en este medio,puedes darle nuestro correo. De esa manera, la revistapermanecerá con un costo nulo para todos.

Estamos trabajando en los artículos del numerosiguiente. No adelantaremos nada -queremos sorprenderte-pero desde ya te avisamos que el 2010 será un año muy

importante para nuestra comunidad. Nos vemos en Enero.

 .      e        d        i       t      o      r        i      a        l

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 5/64

 

plicación, división, integración,derivación, etc) en calculadorasanalógicas. De ahí su nombre.

El A.O. ideal tiene una

ganancia infinita, una impedan-cia de entrada infinita, un anchode banda también infinito, unaimpedancia de salida nula, untiempo de respuesta nulo yningún ruido. Como la impedan-cia de entrada es infinita tam-bién se dice que las corrientesde entrada son cero.

De manera informal unamplificador operacional es uncircuito electrónico, generalmen-te se obtiene en forma decircuito integrado o chip, queconsta de dos entradas: V+ (no inversora)  y V- (inversora)  yuna sola salida (Vout) .

Esta salida es la diferen-

cia entre las dos entradas,multiplicada por un factor depotencia, que a lo largo de

el amplificador  operacionalPresentes en casi todo circuito moderno, ya se trate de un dispositivo deelectrónica digital o analógica, el amplificador operacional es el pilar de la mayoríade los diseños electrónicos.

// por: Ariel Palazzesi //[email protected]

Un amplificador opera- cional (comúnmente abrevia- do A.O. u op-amp), es un cir- cuito electrónico (normalmen- te se presenta como circuito 

integrado) que tiene dos en- tradas y una salida.

La salida es la diferenciade las dos entradas multiplicadapor un factor (G) (ganancia):

El primer amplificador operacional monolítico, que da-ta de los años 1960, fue elFairchild μ  A702 (1964), diseña-do por Bob Widlar. Le siguió elFairchild μ A709 (1965), tambiénde Widlar, y que constituyó ungran éxito comercial. Más tardesería sustituido por el popular Fairchild μ A741(1968), de DavidFullagar, y fabricado por nume-rosas empresas, basado en tec-nología bipolar.

Originalmente los A.O. seempleaban para operacionesmatemáticas (suma, resta, multi-

/ / página 0x05

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 6/64

 

/ / página 0x06

estas paginas llamaremos G.Por lo tanto:

Un amplificador opera-cional ideal tiene una ganan-cia (G) infinita, una impedan-cia de entrada infinita, unancho de banda (rangos defrecuencias a los cualespuede operar) también infini-to, una impedancia de salida

igual a cero, y ningún ruido.Como consecuenciadel hecho de tener impedan-cia de entrada infinita, sepuede asumir que las corrien-tes de entrada son nulas.

En la practica, ydependiendo del fabricante(que brinda hojas de datosde cada modelo de chip quefabrica), un amplificador ope-

racional “real” tiene un anchode banda del orden de losMHz, impedancias de entra-da de algunos megaohms, yuna ganancia típica de100.000, lo que permite queuna diferencia de tensión de50 millonésimas de volts ensus entradas genere 5 voltsen su salida.

La figura 1 nos mues-tra el símbolo generalmenteutilizado para representar estos dispositivos, donde seven las entradas y la salida,además de las dos conexio-nes para la alimentación(Vs+ y Vs-). Estas tensionesen general son de entre 5 y15 Volts, con signos opues-

tos. En los esquemaselectrónicos se presenta alamplificador operacional co-

mo una caja negra concaracterísticas ideales, loque simplifica mucho su inter-pretación. Sin embargo, esimportante entender la formaen que funciona, de estaforma se podrá entender mejor las limitaciones quepresenta.

Los diseños varíanentre cada fabricante y cada

producto, pero todos los am-plificadores operacionales tie-nen básicamente la mismaestructura interna, que con-siste en tres etapas:

1) Amplificador diferencial:  es la etapa de entrada queproporciona una baja amplifi-cación del ruido y gran

impedancia de entrada. Sue-len tener una salida diferen-cial.

2) Amplificador de tensión:  proporciona una ganancia detensión.

3) Amplificador de salida: proporciona la capacidad de

suministrar la corriente ne-cesaria, tiene una baja impe-dancia de salida y, usual-mente, protección frente a

cortocircuitos.

Veremos a continua-ción como se comporta unamplificador operacional encorriente continua (CC) ycorriente alterna (CA).

El primer caso a ana-lizar es la configuración alazo abierto (sin realimenta-ción) en corriente continua.

En estas condiciones,la salida del amplificador operacional será la resta de

sus dos entradas, multiplica-das por el factor G, tal comose explico antes.

Con ganancias supe-riores a 100.000, es muyfácil, aun con variacionesmuy pequeñas de tensión ensus entradas, que la tensiónde salida supere la tensiónde alimentación.

En ese caso, se diceque el amplificador operacio-nal esta saturado. Si latensión mas alta es la aplica-

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 7/64

 

/ / página 0x07

da a la entrada V+, la salida(Vout) será igual a Vs+. Si laentrada V- es la mas alta, lasalida toma el valor de Vs-.

El segundo caso esun lazo cerrado en corrientecontinua. Supondremos unarealimentación negativa, me-diante una conexión entre lasalida y la entrada V-.

Para analizar esta

situación, supondremos queinicialmente ambas entradasestán sometidas a la mismatensión. Si la tensión aplica-da a la entrada V+ comienzaa subir, la tensión en lasalida también subirá, ya quecomo vimos antes, esfunción de la diferencia delas tensiones en las entra-das.

Como existe la reali-mentación entre la salida y V-, la tensión en esta entradatambién subirá, con lo que ladiferencia entre V+ y V- sereduce, disminuyendo tam-bién la tensión de salida.Este proceso se estabilizarápidamente, y se tiene quela salida es la necesaria para

mantener las dos entradas,idealmente, con el mismovalor.

Siempre que hay reali-mentación negativa se apli-can estas dos aproxima-ciones para analizar elcircuito:

En principio, lo visto

respecto del comportamientodel amplificador operacionalen CC puede aplicarse acorriente alterna (CA), perodebemos tener en cuenta

que a partir de ciertas frecu-encias aparecen limitacio-nes.

Debido a que alamplificador operacional típi-co también se le conocecomo amplificador realimen-tado en tensión (VFA) hayuna importante limitaciónrespecto a la frecuencia: elproducto de la ganancia entensión por el ancho debanda es constante.

Como la ganancia enlazo abierto es del orden de100.000 un amplificador conesta configuración sólo ten-dría un ancho de banda deunos pocos Hz.

  Al realimentar negati-vamente se baja la ganancia

a valores del orden de 10 acambio de tener un ancho debanda aceptable. Existenmodelos de diferentes ampli-ficadores operacionales paratrabajar en frecuencias supe-riores, en estos amplificado-res se busca mantener lascaracterísticas a frecuenciasmás altas que el resto,

sacrificando a cambio unmenor valor de ganancia uotro aspecto técnico.

El amplificador opera-cional se puede utilizar comoun comparador. En efecto, silo configuramos como se ve

en la figura de mas abajo, lasalida será Vs+ o Vs-dependiendo de cual de ellassea la mayor en cual-

quier momento. Esta caracte-rística hace que un ampli-ficador operacional sea útilcomo elemento para adaptar niveles lógicos.

Matemáticamente, te-nemos:

Si conectamos unamplificador operacional dela manera que nos muestrala figura 3, obtenemos lo que

se conoce como segui-dor.En esta configuración

se lo puede utilizar comobuffer, para eliminar efectosde cargas importantes ensalidas que no las soporten,o para adaptar impedanciasdiferentes (conectar un dis-positivo con una gran impe-dancia a otro con una impe-

dancia pequeña o vicever-sa).

En este caso latensión de salida será igual ala tensión de la entrada, y laimpedancia de entrada esinfinita.

Matemáticamente:

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 8/64

 

/ / página 0x08

La figura 4 ilustra laconfiguración básica del am-plificador operacional como

amplificador inversor.En este circuito, la en-

trada (+) está a masa, y la se-ñal se aplica a la entrada (-)a través de Rin, conrealimentación desde la sali-da a través de Rf.

  Aplicando las propie-dades anteriormente estable-cidas del amplificador opera-

cional ideal, podemos hacer un análisis de las caracte-rísticas distintivas de estecircuito.

Puesto que el amplifi-cador tiene ganancia infinita,desarrollará su tensión desalida, Vout, con tensión deentrada nula. Ya que laentrada diferencial Vd es:

Tenemos que Vd = 0, y si Vd= 0, entonces toda la tensiónde entrada Vin, deberá apa-recer en Rin, obteniéndoseuna corriente Iin igual a:

V- está a un potencial cero,es un punto de tierra virtual.Toda la corriente Iin quecircula por Rin pasará por Rf,puesto que no se derivaráninguna corriente hacia laentrada del opera-cional(suponemos una impe-dancia infinita), así pues elproducto de Iin por Rf será

igual a - Vout:

Por lo que:

Luego la ganancia del ampli-

ficador inversor será:

Deben observarse o-tras propiedades adicionalesdel amplificador inversor ideal. La ganancia se puedevariar ajustando bien Rin, obien Rf. Si Rf varía desdecero hasta infinito, la ganan-cia variará también desdecero hasta infinito, puestoque es directamente propor-cional a Rf. La impedanciade entrada es igual a Rin.Vin y Rin únicamente deter-minan la corriente Iin, por loque la corriente que circulapor Rf es siempre Iin, paracualquier valor de dicha Rf.

La entrada del amplifi-cador, o el punto de cone-xión de la entrada y lasseñales de realimentación,es un nudo de tensión nula,independientemente de lacorriente Iin. Luego, estaconexión es un punto detierra virtual, un punto en elque siempre habrá el mismo

potencial que en la entradaV+. Por tanto, este punto enel que se suman las señalesde salida y entrada, seconoce también como nudosuma.

Esta última caracterís-tica conduce un axioma bá-sico de los amplificadoresoperacionales, el cual se apli-

ca a la operación en buclecerrado: “En bucle cerrado,la entrada V- será reguladaal potencial de entrada V+ o

de referencia”.Esta propiedad puede

aún ser o no ser obvia, apartir de la teoría de tensiónde entrada de diferencialnula. Es, sin embargo, muyútil para entender el circuitodel amplificador operacionalver la entrada V+ como unterminal de referencia, elcual controlará el nivel queambas entradas asumen.Luego esta tensión puedeser masa o cualquier poten-cial que se desee.

La segunda configura-ción del amplificador opera-cional, en este caso comoamplificador no inversor es laque vemos en la figura 5. Eneste circuito, la tensión Vinse aplica a la entrada V+, yuna fracción de la señal desalida, Vout, se aplica a la

entrada V- a través deldivisor de tensión R1 - R2.Puesto que, no fluye

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 9/64

 

/ / página 0x09

corriente de entrada enningún terminal de entrada, yya que Vd = 0, la tensión enR1 será igual a Vin. Veamosun poco de matemática:

Y como :

Tenemos que :

Condición que expresada entérminos de ganancia nosqueda:

Que es la ecuación caracte-rística de ganancia para elamplificador no inversor ide-al.

También se puedendeducir propiedades adicio-nales para esta configura-ción. El límite inferior deganancia se produce cuandoR2 = 0, lo que da lugar a unaganancia igual a 1.

En el amplificador in-versor, la corriente a través

de R1 siempre determina lacorriente a través de R2,independientemente del va-lor de R2, esto también escierto en el amplificador noinversor.

Luego R2 puedeutilizarse como un control deganancia lineal, capaz deincrementar la ganancia des-

de el mínimo unidad hastaun máximo de infinito. Laimpedancia de entrada esinfinita, puesto que se trata

de un amplificador ideal.

Utilizando la caracte-

rística de tierra virtual en elnudo suma V- del amplifi-cador inversor, se obtieneuna útil modificación, el su-mador inversor, que vemos  junto a sus formulas funda-mentales en la figura 6. Eneste circuito, como en elamplificador inversor, latensión V+ está conectada amasa, por lo que la tensión V-estará a una masa virtual, ycomo la impedancia deentrada es infinita toda lacorriente I1 circulará a travésde RF y la llamaremos I2.

Lo que ocurre en estecaso es que la corriente I1es la suma algebraica de lascorrientes proporcionadaspor V1, V2 y V3. Las

formulas correspondientes aI1 e I2 también se puedenconsultar en la figura 6.

Como ambas corrien-tes son iguales, si trabaja-mos algebraicamente igua-lando ambos términos, pode-mos obtener la ultima fórmu-la de la figura 6, que nospermite calcular el valor de

Vout. Esta establece que latensión de salida es la sumaalgebraica invertida de lastensiones de entrada multi-plicadas por un factor co-rrector, que en el caso enque:

Nos permiten simplificar obte-niendo:

La ganancia global delcircuito la establece Rf, lacual, en este sentido, secomporta como en el ampli-ficador inversor básico.

 A las ganancias de loscanales individuales se lesaplica independientementelos factores de escala RG1,R G2, R G3,... etc. Delmismo modo, R G1, R G2 yR G3 son las impedanciasde entrada de los respecti-

vos canales.Otra característica in-

teresante de esta configu-ración es el hecho de que lamezcla de señales lineales,en el nodo suma, no produceinteracción entre las entra-das, puesto que todas lasfuentes de señal alimentan elpunto de tierra virtual.

El circuito puedeacomodar cualquier númerode entradas añadiendo resis-tencias de entrada adiciona-

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 10/64

 

/ / página 0x0A

les en el nodo suma.

En este artículo intentamos

presentar los amplificadoresoperacionales sin caer en eluso de demasiada cantidadde formulas matemáticasque dificulten su lectura. Laidea es que sirva como basepara artículos posteriores, enlos que se verán aplicacio-nes practicas de los amplifi-cadores operacionales utiliza-

dos como Amplificadores de  Aislamiento, Amplificadoresde Instrumentación, deTransconductancia Variable,etc., cada uno de los cualesamerita un artículo propio.

Este espacio está esperando tu anuncio.

Comunicate a [email protected]

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 11/64

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 12/64

 

/ / página 0x0C

sólo tres décadas? Pues de esabreve pero apasionante historiatrata este artículo.

Lo que más tarde se convirtióen una despiadada carrera paraver quien tiene más bits, mascolores o mas GHz comenzó enrealidad en 1973. En ese año, eleditor de la revista "Popular Electronics", Leslie Solomon,publicó un concurso en el queque invitaba a sus lectores acrear un ordenador. El ganador fue Ed Roberts, que habíafundado una empresa llamadaMITS (Micro InstrumentationTelemetry System) en la que sefabricaban emisores de radiopara aviones y coches radiocon-trolados. Roberts presentó unproyecto basado en un micropro-cesador 8080 de Intel funcionan-do a 2 MHz, que Popular 

Electronics distribuiría mástarde en forma de kit paraarmar, con el nombre de “Altair”.

historias de la informáticaÉrase una vez un mundo lleno de ordenadores con tétricas pantallas de color negro, en las que se mostraban unas pequeñas letritas de color verde. Noexistían, en ese mundo, ni el color, ni los juegos ni Internet. Todos losordenadores eran prácticamente iguales, y tenían un triste color beige. La idea de“ordenador personal” prácticamente no había nacido, y solo las grandes empresasutilizaban equipamiento informático. Como regla general, se tenía un ordenador central caro y poderoso, al que se conectaban decenas de terminales “bobas”. Ala hora de obtener documentos impresos, ruidosas impresoras que golpeabancontra una cinta entintada dibujaban caracteres sobre el papel.

// por: Ariel Palazzesi //[email protected]

Hoy día disfrutamos de ordenadores (a menudo más de uno en cada casa) equi- pados con microprocesado- res de múltiples núcleos y 

frecuencias de trabajo que superan los 3 GHz. Guarda- mos nuestros datos en discos duros cuya capacidad de almacenamiento se mide en cientos de Gigabytes, y la memoria RAM de nuestras maquinas supera el GB.

Nuestros monitores, casisiempre de tecnología LCD,pueden mostrar millones decolores en resoluciones altísi-mas, con dimensiones que enalgunos casos superan las 20pulgadas. Y ya no imprimimosmás utilizando una cinta: nues-tras impresoras usan inyecciónde tinta o tecnología láser paraproporcionarnos brillantes imá-genes que a veces resultanindistinguibles de una fotografía.

¿Cómo hemos pasadode aquellas primitivas máquinasa los ordenadores actuales en

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 13/64

 

Si lo comparamos conlos estándares actuales, el Altair era un ordenador abso-lutamente ridículo: se vendíacomo un kit que el propio

usuario tenía que montar,carecía de pantalla y deteclado (en su lugar usabaconmutadores y luces) y te-nía una memoria principal desolo 256 bytes (unas cuatromil veces menos que unMegabyte). Sin embargo, fueel primer “ordenador perso-nal” comercializado masiva-

mente. Durante el primer díade ventas, se entregaronunos 200 equipos, a 397dólares cada uno. Nada mal,si tenemos en cuenta que lamayoría de los compradoresno tenían mucha idea de queiban a hacer con eso unavez que llegaran a casa.

  A partir del Altair, siquerías utilizar un ordenador 

en casa, podías hacerlo.  Aunque todavía casi nadiese daba cuenta de ello, lainformática personal tal co-mo la concebimos hoy aca-baba de nacer.

En esa época, cuatrode las personas que máshicieron por el desarrollo dela informática personal eran

  jóvenes estudiantes. El hijode un prestigioso abogado,Bill Gates, y su amigo ycompañero Paul Allen cursa-ban estudios de derecho enla elitista y muy privada Uni-versidad de Harvard. SteveJobs y Steve Wozniak, concuna mucho más humildeque Gates, trabajan en el

garaje del segundo. Los dosprimeros personajes acaba-rían fundando Microsoft, ylos otros dos Apple. A pesar 

de todas las diferencias quehan mantenido a lo largo demás de 30 años, los cuatrofueron “infectados” con el“virus” de la informática máso menos en el mismomomento.

Bill Gates tiene el

indudable mérito de haber sido el primero en darsecuenta que para que el Altair sirviese para algo tenia queser programado. Y había quehacerlo mediante un sistemaque resultase simple para losusuarios. Así, junto a Paul  Allen, creó un intérprete dellenguaje BASIC (Beginner's

 All-purpose Symbolic Instruc-tion Code, o Código deInstrucciones Simbólicas dePropósito General para losPrincipiantes) en 1975, quepodía correr en el 8080 del  Altair. Para lograrlo, primeroescribieron un emulador de8080 que se ejecutaba enuno de los ordenadores PDP-

10 de la Universidad deHarvard.Cuando a mediados

de 1975 lo probaron en un

  Altair de verdad, los 4Kb decódigo del intérprete funcio-naron sin problemas al pri-mer intento. Allen y Gatesabandonaron sus estudiospara fundar la compañía "Taf-O-Data", la misma que más ycon el agregado de SteveBallmer pasaría a llamarse"Microsoft Corporation".

En 1976, fruto deltrabajo de Steve Jobs y (fun-damentalmente) Steve Woz-niak aparece el “Apple I”,que se parecía bastante mása lo que hoy día entendemospor “ordenador”. Se basabaen un microprocesador 6502

de MOS Technologies (bas-tante más sencillo que el8080 de Intel) y disponía detodo el software necesariopara funcionar incluido enuna memoria ROM. En lugar de las patéticas luces del  Altair, se podía utilizar unaparato de TV normal comomonitor, en el que se

dibujaban 24 filas de 40caracteres de tamaño fijo.Disponía de una RAMseparada para el video,

/ / página 0x0D

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 14/64

 

interfaz para un teclado,4KB. (ampliables) de memo-ria RAM principal y podiautilizar una unidad de cintade casete como dispositivode almacenamiento externo.Jobs y Wozniak tuvieron quevender respectivamente sufurgoneta Volkswagen y su

calculadora programable HP(sus más preciadas posesio-nes) para poder fabricar elprimer Apple I.

La ROM del Apple Itenia, además del sistemaoperativo, un intérprete deBASIC llamado “Apple Ba-sic”. Los usuarios no teníanque pagar a Gates (ni a

nadie más) para poder crear sus propios programas. Elprecio de venta del ordena-dor, al momento de salir al

mercado, era de 666.66dólares. Ese precio era unamuestra más del sentido delhumor de una empresa que,fundada en el día de losinocentes anglosajón (el pri-mero de abril de 1976), nosdeleitaría con varias campa-ñas publicitarias sumamente

ocurrentes.

  A pesar de que Appletuvo poco éxito con el Apple Iy tuvieron que esperar al añosiguiente para alcanzar lagloria con el Apple II, habían

puesto la piedra fundamentalsobre la que se basaríandecenas de pequeñas empre-sas, muchas de ellas desco-

nocidas hasta entonces, pa-ra fabricar sus propios micro-ordenadores.

  A fines de los setentay principios de los ochenta

aparecieron productos quemás tarde llegaron a conver-tirse en máquinas de culto,tales como el CommodorePET, el TRS 80, el Osborne,el DAI o el LISA (de Apple, yantecesor del MacIntosh).  Algunos modelos, como elCommodore 64 o el Sinclair ZX-Spectrum se vendieronpor millones. La mayoría deestos ordenadores tenían supropio interprete BASIC, casisiempre incompatible con losmodelos de la competencia(y muy frecuentemente conlos otros modelos de la pro-pia empresa), aunque mu-chos de ellos (como losMSX, Atari, etc.) empleabanversiones de BASIC compra-

das a Microsoft Corp. Lainformática, estaba claro,había abandonado el reductode las grandes empresaspara instalarse definitivamen-te en los hogares. Pero elreinado de los 8 bits estaballegando a su fin, ya que suslimitaciones tecnológicas noalcanzaban para satisfacer 

las necesidades de un mer-cado que demandaba cadadía más prestaciones. La erade los 16 bits estaba a lavuelta de la esquina.

En octubre de 1980 laempresa IBM, que hasta ese

momento se había especia-lizado en la fabricación degrandes ordenadores (main-frames), creó un proyecto

/ / página 0x0E

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 15/64

 

secreto llamado "Chess".Bajo la dirección de PhilipEstridge y William Lowe,once ingenieros fueron envia-dos a Boca Ratón, en Flo-

rida, con el encargo de crear un “ordenador personal”. En-tre las especificaciones míni-mas del nuevo equipo secontaban la necesidad dedotarlo de un Sistema Ope-rativo sencillo aunque poten-te y la posibilidad de utilizar más de 64KB de RAM. Elcorazón del ordenador seria

un microprocesador Intel8088, un híbrido con arqui-tectura interna de 16 bits ybus de direcciones de 8 bits.Esto le proporcionaría lapotencia de un procesador de 16 bits a la vez que lepermitía aprovechar todoslos periféricos de bajo preciodisponibles, que trabajabancon 8 bits. Para que dispusie-

se de mucho software desdesu nacimiento, el ordenador utilizaría el BASIC de Micro-soft.

En cuanto al sistemaoperativo, el primer candi-dato fue el muy popular (por esa época) CP/M-86 de GaryKildall, aunque por una seriede motivos y manejos que

tranquilamente podrían con-vertirse en el argumento deuna novela, Microsoft termi-nó haciéndose con el contra-to. En ese entonces Micro-soft, aunque estaba lejos deser lo que sería en un futuro,ya era una empresa medianacon más de 20 empleadosque facturaba anualmente 4

millones de dólares.  A principios de 1981un prototipo del que setransformaría en el primer 

IBM PC, que no era más queun “Frankenstein electrónico”cableado de cualquier ma-nera y sin carcasa, es puesto

en funcionamiento. El siste-ma operativo que le dio vidafue el MS-DOS, que en solo5 años sería instalado más

/ / página 0x0F

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 16/64

 

de 20 millones de máquinasconvirtiéndose en el domina-dor absoluto del mercado yhaciéndole ganar a Microsoftlos primeros centenares de

millones de dólares. En elnúmero de enero de 1982 dela revista Time, el IBM PC eselegido como "personaje delaño".

No solo en Microsoft eIBM se inventaban cosas. La

empresa Xerox, especializa-da en el desarrollo y fabrica-ción de maquinas fotocopia-doras, vaticinó que el empleomasivo de ordenadores enalgún momento haría posibleuna “oficina sin papeles”: losdocumentos se transferiríandirectamente entre ordena-dores, siendo muy pocos loscasos en que se justificase

que la información fueseimpresa sobre papel. Parauna empresa que fabricabafotocopiadoras, este no eraun futuro agradable. Lejos dedesanimarse frente a estepanorama, Xerox decidió for-mar parte de las oficinas delfuturo, diseñando ordenado-res más pequeños que un

mainframe, pero más pode-rosos que una “PC”. Creóuna división especial llamadaPARC (Palo Alto ResearchCenter), en California, queen poco tiempo se converti-ría en el lugar de nacimientodel paradigma de la interfazgráfica de usuario.

PARC se dedicaba a

las innovaciones en hardwa-re, software y otras cienciasrelacionadas. En un momen-to determinado, de los 100

mejores investigadores delmundo, 58 trabajaban enPalo Alto. A pesar de que enPARC se crearon muchos delos estándares actuales, Xe-rox fracasó al intentar con-vertirlos en productos co-merciales. Los iconos, lasventanas y los gráficos demapas de bits tuvieron suorigen en Palo Alto. El ratón,el mando de juegos, la redEthernet, las primeras impre-soras láser y la programa-ción orientada a objetostambién son inventos deXerox, que invirtió más de100 millones de dólares en

este proyecto.  A pesar del fracaso

comercial, Xerox y sus inves-tigadores estaban destina-dos a cambiar la historia dela informática. Jef Raskin,uno de los integrantes delequipo de trabajo de Palo  Alto, se pasó a la joven  Apple. Raskin convenció a

Steve Jobs de que debíavisitar Palo Alto para ver loque allí se investigaba. Cuan-do Jobs vio los que había

creado PARC, supo que esaera la tecnología que haríanfamo-sos sus ordenadores.

En esa época Appleestaba comenzado a trabajar en los proyectos Lisa yMacIntosh. Si bien las inter-faces de ambas empresasno eran idénticas, el concep-to era básicamente el mismo.  Apple llevó todo esto muchomás lejos, pero sin copiar elcódigo de Xerox. Solo tomóideas, el diseño de ambasinterfaces y sistemas fue radi-calmente distinto. Todos lossistemas operativos posterio-res de Apple, incluso los

derivados de NEXTSTEP,tienen algo de lo creado por PARC.

  A su vez, Microsoftfue una de las primerascompañías en desarrollar software para Apple. Es queSteve Jobs tenía muy claroque necesitaba (mucho) soft-ware para que el MacIntosh

fuese un éxito, y Microsoft lotenía. Pero para poder es-cribir un programa de orde-nador, es necesario conocer-

/ / página 0x10

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 17/64

 

lo todo sobre él, así queJobs le tuvo que mostrar a lagente de Gates los primerosprototipos de MacIntosh. AMicrosoft le encantó el sis-

tema operativo de Apple.Tanto, que rapidamente co-menzó a buscar la forma deemplear los iconos, ventanasy mouse en la plataformaIBM PC.

Según cuenta la leyen-da, Bill Gates presionó aSteve Jobs para que le per-mitiese utilizar partes de la

interfaz de los Macintosh enel IBM PC a cambio de nodemorar el lanzamiento delas aplicaciones que Applenecesitaba. Estos serían loscimientos de lo que mástarde se llamaría Windows1.0. Todas las futuras deman-das legales de Apple contraMicrosoft por el uso dealgunos elementos de la GUI

se vieron debilitadas debidoa este antiguo acuerdo entreambas empresas. Tambiénse dice que Microsoft sellevó el mejor programador de Mac para que tomara lasprincipales decisiones dediseño de la primera versiónde Windows, y se aseguraque Bill Gates le dijo “la PC

debe verse y trabajar talcomo una Mac”.

Como fuese, el resul-tado de esta carrera por tener el hardware más poten-

te y el sistema operativo mássimple de utilizar es que hoy,solo un puñado de años mástarde, el ordenador se haconvertido en una herra-mienta accesible a todo elmundo. Sin una interfaz gra-fica sencilla de usar, solopequeño porcentaje de losactuales usuarios podríamanejar un ordenador.

El desarrollotecnológico ha hecho quepor mas o menos el mismodinero que se pagaba hacetreinta años por un Altair, hoy

hoy tengamos un ordenador miles de veces más potente.La aparición de Internet hahecho que el acceso a lainformación sea más fácil

que nunca, y los nuevosusuarios disfrutan de unacantidad de programas ycontenidos que una o dosdécadas atrás eran inima-ginables. Todo esto se lodebemos a estos pioneros,que con su trabajo e imagina-ción nos han traído hastaaquí.

/ / página 0x11

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 18/64

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 19/64

 

/ / página 0x13

rectángulo.El próximo paso será

seleccionar los tres objetos yelegir la opcióndesde el menú .

Esto colocará cada objeto en lacapa utilizada para dibujar diagramas de circuitos.

  Ahora deberemos indicar en qué lugar se encuentran lospuntos de conexión del símbolo.Elegimos desde elmenú y hacemosclic en la parte superior de laprimer línea vertical.

  A continuación apareceráuna ventana en la que especifi-caremos el número de pin.Ingresamos el número 1 y acep-tamos. Repetimos este pasopara agregar el pin número 2 enla otra línea vertical de nuestrocomponente.

Ya estamos listos parapoder crear nuestro símbolo.Seleccionamos todos los obje-

tos (incluyendo los pines) y ele-gimos la opcióndesde el menú .

nuevos componentes 

en PCB WizardUnas de las falencias de PCB Wizard a la hora de trabajar es la falta decomponentes en sus librerías. Pero con un poco de paciencia y siguiendo paso apaso este tutorial podremos saltar esta limitación. ¡Manos a la obra!

// por: Lucas Martin Treser //[email protected]

Este tutorial es una traducción del original, que se encuentra en la ayuda del software, y nos guiará paso a paso en la creación de un 

símbolo de circuito con su correspondiente modelo PCB.

El componente que crea-remos a modo de ejemplo esuna resistencia de 1 pulgadaque actualmente no existe enlas librerías originales.

  A lo largo del tutorialaprenderemos a:

• Crear nuevos símbolos de cir-cuito.• Crear nuevos modelos PCB.• Agregar símbolos a una li-brería.

Utilizando las herramien-tas de dibujo desde el menú

, dibujaremos laforma de la resistencia usandodos líneas verticales y un

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 20/64

 

  Aparecerá una venta-na como la de la figura núme-ro 4. En ella podremos espe-cificar varios parámetros denuestro nuevo componente.

determina la categoríadel símbolo. Debemos selec-cionar .

es un identificador único que será usado por elsoftware para acceder alsímbolo. Este campo normal-mente es nombrado como el

símbolo que se esta crean-do, y deberemos recordarlopara luego enlazarlo con elcorrespondiente modeloPCB.

descri-ben al símbolo. En nuestroejemplo .

especifica cuál

será el modelo PCB que seutilizará al convertir el circui-to en un diseño de circuitoimpreso. Llenaremos el cam-po con el mismo identificador utilizado para el símboloPCB que crearemos luego,en nuestro ejemplo

.

Por último aceptamoslos cambios haciendo clic en

y continuamos con lasegunda parte.

Una vez que tenemosterminado el símbolo decircuito, podremos dibujar y

asociar con él un modeloPCB del componente. Esteproceso es muy parecido alanterior.

/ / página 0x14

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 21/64

 

Primero colocaremosdos pads y un rectángulopara representar el cuerpodel resistor. La herramientapara hacer esto la encontra-

mos en el menú. Los pads deberánestar separados 1 pulgadauno del otro (podemosayudarnos activando la grillacon una trama de 0,1pulgada).

Luego seleccionare-mos el rectángulo y elegire-mos la capa

desde el menú .Si también deseamos incluir una vista real del componen-te, deberemos dibujar elencapsulado en la capacorrespondiente (

).El paso siguiente será

especificar donde se encuen-tran los puntos de conexión.Para esto utilizamos la

función desde elmenú . Hace-mos clic en cada pad y listo.

Ya estamos en con-diciones de crear el símbolo.Seleccionamos todos losobjetos (incluyendo los pi-nes) y elegimos la opción

desde elmenú .

  Aparecerá una venta-na similar a la figura número6 donde podremos configurar 

algunos aspectos indispen-sables:

determina la categoríadel símbolo creado. Debe-mos seleccionar “

”.

es un identificador úni-co utilizado por el software

para acceder al símbolo.Esta clave deberá coincidir con la ingresada en elcampo del sím-bolo de circuito creadoanteriormente. En nuestroejemplo el valor adoptado es

.

son

usados para describir elsímbolo creado. Debemosingresar .

está opciónaplica únicamente a lossímbolos de circuito y seencuentra deshabilitada.

Finalmente hacemosclic en para terminar elproceso. En la próxima notaveremos como agregar elsímbolo a una librería y

como utilizarlo en nuestrosdiagramas.

Una vez que hemosterminado de crear el nuevocomponente tendremos queagregarlo en una libreríapara poder utilizarlo.

Comenzamos con elsímbolo de circuito. Para

/ / página 0x15

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 22/64

 

esto creamos una nuevalibrería eligiendo

desde el menú. En la ventana que

aparece ingresamos

como nombre,seleccionamoscomo tipo y apretamos

el boton .El próximo paso será

seleccionar el símbolo crea-do y elegir la función

desde el menú. Aparecerá

otra ventana. Nos asegura-mos que este seleccionadala nueva librería

y hacemos clic en .Y listo, ya tenemos el nuevocomponente en la galería.

  Ahora repetiremos elproceso para agregar elmodelo PCB.

Creamos una segun-da librería con la opción

desde el menú

. En la venta-na que aparecerá ingresa-moscomo nombre y

como tipo. Hace-mos clic en .

Seleccionamos el sím-bolo creado anteriormente yelegimos nuevamente laopción desde

el menú . Enla ventana que aparecerácomprobamos que la libreríaa utilizar sea

y hacemos clicen .

Una vez terminadoeste proceso tendremos loscomponentes listos para utili-zar en nuestros proyectos.

/ / página 0x16

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 23/64

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 24/64

 

/ / página 0x18

trolado por medio de losregistros ADCONx en donde sepuede seleccionar que pinesserán usados como entradasanalógicas, determinar el reloj

para la conversión, seleccionar canal de conversión, poner enfuncionamiento la conversión,etc. Luego tenemos 2 registrosmás ADRESH y ADRESL endonde se guarda el resultado dela conversión.

El convertidor A/D tienela característica de poder funcio-nar mientras que el dispositivoestá en modo sleep. Al funcio-nar en sleep, el reloj deconversión A/D debe derivar deloscilador interno RC A/D.

 ADCON0:

Bit 7-6 ADCS1:ADCS0:  Bits de

selección de reloj para laconversión A/D.

módulo de ADC en

PIC16F87xA y PIC18Fxxxx Algunos microcontroladores PICs de la familia 16F y todos los de las familias 18Ftienen incorporado un módulo de conversión analógica/digital de 10 bits(Exceptuado algunos de la familia 18F que son módulos de 12 bits).

 Aprenderemos su estructura, configuración y aplicación práctica.

// por: Alejandro Casanova //[email protected] 

El módulo comprende de varias entradas analógicas multiplexadas (El número de- pende del PIC), un capacitor de muestro y retención, y un 

convertidor analógico/digital de aproximaciones sucesivas.

Todo convertidor ADCrequiere voltajes de referenciaque determinan el valor demínima escala (Vref-) y el deplena escala (Vref+), de maneraque la conversión de un valor devoltaje analógico Vin en el rangode Vref- a Vref+ producirá unvalor equivalente binario en elrango de 0 a 2n, donde n es laresolución del convertidor (n =10). Estas tensiones de referen-cias pueden seleccionarse por software, entre Vdd y Vcc oentradas positivas colocadas enlos pines RA2/Vref- y RA3/-VRef+ en donde se debencumplir ciertos requisitos con-templados en las características

eléctricas del convertidor ADCdel PIC utilizado.

El modulo ADC está con-

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 25/64

 

Si ADCS2=000=Fosc/201=Fosc/810=Fosc/3211=Frc

(Oscilador interno RC)

Si ADCS2=100=Fosc/401=Fosc/1610=Fosc/6411=Frc

(Oscilador interno RC)

Bit 5-3 CHS2:CHS0:  Bits deselección de canal analógico.

000: Canal 0 (AN0)001: Canal 1 (AN1)010: Canal 2 (AN2)011: Canal 3 (AN3)100: Canal 4 (AN4)101: Canal 5 (AN5)110: Canal 6 (AN6)

111: Canal 7 (AN7)

Bit 2 GO/DONE:  Bit deestado de la conversión A/D.

Cuando ADON=1:1 = conversión A/D en mar-cha (Cuando la conversióntermina se borra automática-mente)

0 = A/D en reposo

Bit 1 Unimplemented:  Esleído como ‘0’

Bit 0 ADON:  Bit de habilita-ción de A/D.

1 = El modulo de conversión A/D es alimentado.

0 = El modulo de conversión  A/D no esta en operación.(No consume corriente)

 ADCON1:

Bit 7 ADFM: Bit de selecciónde formato de la conversión A/D.

1 = Justificación derecha.Los 6 bits más significativosde ADRESH se leen como 0.0 = Justificación izquierda.Los 6 bits menos significati-vos de ADRESL se leencomo 0.

Bit 6 ADCS2:  Bit adicional

para la selección del relojpara la conversión A/D.

Bit 5-4 Unimplemented:  Esleído como ‘0’

Bit 3-0 PCFG3:PCFG0:  Bitsde control de configuracióndel puerto A/D.

 ADCON0:

/ / página 0x19

Bit 7-6 Unimplemented: Esleído como ‘0’

Bit 5-2 CHS3:CHS0: Bits deselección de canal analógico.

0000: Canal 0 (AN0)0001: Canal 1 (AN1)0010: Canal 2 (AN2)0011: Canal 3 (AN3)0100: Canal 4 (AN4)0101: Canal 5 (AN5)*0110: Canal 6 (AN6)*0111: Canal 7 (AN7)*1000: Canal 8 (AN8)

1001: Canal 9 (AN9)1010: Canal 10 (AN10)1011: Canal 11 (AN11)1100: Canal 12 (AN12)1101: Unimplemented1110: Unimplemented1111: Unimplemented

Bit 1 GO/DONE: Bit de esta-do de la conversión A/D.

Cuando ADON=1:1 = conversión A/D en mar-cha (Cuando la conversión

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 26/64

 

termina se borra automáticamente)0 = A/D en reposo

Bit 0 ADON:  Bit de habilitación de

 A/D

1 = El modulo de conversión A/D

es habilitado.

0 = El modulo de conversión A/D

no esta habilitado.

 ADCON1:

Bit 7-6 Unimplemented: Esleído como ‘0’

Bit 5 VCFG0: Bit de configu-ración de referencia (VREF-source)1 = VREF- (AN2)0 = VSS

Bit 4 VCFG0: Bit de configu-ración de referencia (VREF+source)1 = VREF+ (AN3)0 = VDD

Bit 3-0 PCFG3:PCFG0:  Bitsde control de configuración

del puerto A/D.

 ADCON2:

Bit 7 ADFM:  Bits de selec-

ción de formato de laconversión A/D1 = Justificación derecha.Los 6 bits más significativosde ADRESH se leen como 0.0 = Justificación izquierda.Los 6 bits menos significati-vos de ADRESL se leencomo 0.

Bit 6 Unimplemented:  Leí-do como ‘0’

Bit 5-3 ACQT2:ACQT0:  Bitsde selección del tiempo deadquisición A/D

111 = 20 TAD110 = 16 TAD101 = 12 TAD100 = 8 TAD

011 = 6 TAD010 = 4 TAD001 = 2 TAD000 = 0 TAD*

Bit 2-0 ADCS2:ADCS0:  Bitsde selección de reloj paraconversión A/D .

111 = FRC (reloj A/D deriva-

do del oscilador RC)110 = FOSC/64101 = FOSC/16100 = FOSC/4011 = FRC (reloj A/D deriva-do del oscilador RC)010 = FOSC/32001 = FOSC/8000 = FOSC/2

Observando los registros seve una diferencia importante,en la familia 18F el tiempode adquisición se puede

/ / página 0x1A

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 27/64

 

realizar por hardware configu-rándolo automáticamente.

Para que el converti-dor posea la exactitud especi-ficada, se debe contemplar la carga del condensador CHOLD de manera queentre el nivel de tensión delcanal. La impedancia de lafuente (RS) y la impedanciadel cambio del muestreo

interno (RSS) afectan directa-mente al tiempo requeridopara cargar el condensador CHOLD. La impedancia reco-mendada máxima para lasfuentes analógicas es de2,5kΩ. Cuando la impedan-cia decrece, el tiempo deadquisición también decrece.Después de que el canalanalógico haya sido seleccio-

nado este tiempo de adquisi-ción debe tenerse en cuentaantes de arrancar la conver-sión.

El calculo detalladopuede observarse en eldatasheet del PICs utilizado,a modo de ejemplo vemosque en un 16F87XA el míni-mo tiempo de adquisición es

de 19.72us el cual debe ser generado por software cadavez que se seleccione uncanal (Cambiando).

En cambio para losPIC18F2455/2550/4455/4550el tiempo mínimo de adquisi-ción se reduce a 2.45us, loscuales podemos configurarlopor hardware dependiendo

del reloj de conversión selec-cionado. Cuando se selec-ciona ACQT2:ACQT0: 00 lademora se debe generar por 

por software.

El tiempo por bit de laconversión A/D se definecomo TAD. La conversión  A/D necesita un mínimo de12TAD para la serie 16F o11TAD para la serie 18F por 10 bits de conversión.

La fuente de reloj A/Dde la conversión es seleccio-nable por software. Hay sieteopciones posibles para elTAD:

• 2 TOSC• 4 TOSC• 8 TOSC• 16 TOSC• 32 TOSC• 64 TOSC• Oscilador interno RC

Para las conversiones  A/D correctas, el reloj deconversión A/D (TAD) debeser tan corto como seaposible pero mayor que unmínimo TAD (para másinformación véase datasheetdel PIC utilizado) dado por ejemplo para la serie 16F en1.6us y para la serie 18F en

0.7us.

Pasos a seguir:

1. Configurar el módulo A/D.a) Configurar los pines analó-gicos y las tensiones de refe-

rencia.b) Seleccionar el reloj de con-versión.c) Serie 18F: Seleccionar el

tiempo de adquisición.d) Habilitar módulo de con-versión A/D.

2. Configurar interrupción pa-

ra el convertidor A/D si sedesea.3. Seleccionar canal a con-vertir.4. Serie 16F o si en serie18F ACQT2, ACQT0=00: Es-perar por lo menos el mínimode tiempo de adquisición.5. Iniciar conversión setean-do el bit GO/DONE.6. Esperar a que termine laconversión:a) Por polling, testeando elbit GO/DONE.b) Por interrupción.

7.Leer el valor convertido en ADRESH-ADRESL.8.Para la siguiente conver-sión esperar mínimo 2TDA.

El par de registros  ADRESH:ADRESL son car-gados con el dato resultantede una conversión analógico/ digital. Cada uno de estosregistros es de 8 bits, por lotanto, juntos pueden guardar hasta 16 bits. Sin embargo,

como el resultado es de 10bits, el módulo de conversión  A/D permite justificarlo en laparte izquierda o derecha delos 16 bits disponibles. Estonos da la posibilidad de ele-gir la resolución del conver-sor entre 10 bits (Justificadoa la derecha) u 8 bits (Justifi-cado a la izquierda) trabajan-

do solamente con el registro ADRESH.

/ / página 0x1B

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 28/64

 

;Implementación en assembler: 

List p=16f877A ; list directive to define processor  #include <p16f877A.inc> ; processor specific variable definitions  

 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &

 _WRT_OFF & _LVP_ON & _CPD_OFF ; NOTA: ; Oscilador utilizado 4MHz.- 

; ************************************************ ByteAlto equ 0x20 ; Registro para guardar Byte alto de la conversión.-  ByteBajo equ 0x21 ; Registro para guardar Byte bajo de la conversión.-  Contador equ 0x22 ; registro utilizado en demora.-  ; ************************************************ 

org 0x00  bsf STATUS,RP0 ; Banco 1movlw 0x8E ; Justificado a la derecha, Fosc/8,movwfADCON1 ; RA0 analógico, VDD, VSS.-  bcf STATUS,RP0 ; Banco 0  movlw 0x41 ; Fosc/8, Canal 0, módulo habilitado.-  movwfADCON0 call Demora_20us ; Demora de adquisión.-  bsf ADCON0,GO  

Espera 

btfsc ADCON0,GO ; Espera a que termine conversión.-  goto Espera movf ADRESH,W ; Movemos resultado de la conversión.-  movwfByteAlto bsf STATUS,RP0 ; Banco 1movf ADRESL,W movwfByteBajo bcf STATUS,RP0 ; Banco 0.-  bsf ADCON0,ADON ; Apago modulo de conversión.-  

Bucle goto Bucle  

;**** Demora **** Demora_20us 

movlw 0x05 ; movwf Contador ; Iniciamos contador1.-  

Repeticion decfsz Contador,1 ; Decrementa Contador1.- 

goto Repeticion ; Si no es cero repetimos ciclo.- return ; Regresa de la subrutina.- 

end 

/ / página 0x1C

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 29/64

 

 /* Implementación en CCS: */ 

#include <16F877A.h>  /* ********************* Conversor A/D de 8 bits *************************** */ #device adc=10 

#FUSES NOWDT, XT, PUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD,NOWRT #use delay(clock=4000000)

void main(){ int16 Conversion; 

setup_adc_ports(AN0); // Para saber los parámetros posibles ver 16F877A.h setup_adc(ADC_CLOCK_DIV_8); // Para saber los parámetros posibles ver 16F877A.h 

set_adc_channel(0); delay_us(20); Conversion=read_adc(); setup_adc(ADC_OFF); 

 while(1){ 

  }

 }

 // Implementación en C18: 

#include <p18f2550.h> #include <adc.h> 

#pragma config FOSC = XT_XT, CPUDIV = OSC1_PLL2 

void main(void){ unsigned int Conversion; 

TRISA=0xFF; ADCON0=0x01; //Canal 0, Modulo habilitado.-  ADCON1=0x0E; // AN0, Vdd, Vss.-  ADCON2=0x94; // Justificado a la derecha, 4Tad, Fosc/4  

SetChanADC(0); // Selecciono canal a convertir.-  ConvertADC(); // Comienza conversión.-  while(BusyADC()==1){} // Hasta que se finalice conversión.- Conversion= ReadADC(); // Realizo lectura.- CloseADC(); 

while(1){  } }

/ / página 0x1D

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 30/64

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 31/64

 

/ / página 0x1F

tada por muchas variables, por ejemplo la luz ambiental, ruido,niveles anormales de hemoglo-bina, función del ritmo y pro-medio del pulso cardíaco, tez

del paciente, movimiento nocontrolado del cuerpo, lo cualinfluye en el monitoreo y diag-nostico del estado del paciente.Estas ondas se muestran en lafigura 2.

Teniendo esta pequeñaintroducción para el proyectoque a continuación les presen-to, nuestros objetivos serán:

- Diseñar un circuito capaz derecibir una señal através delfotodiodo detector.- Realizaremos adaptación deseñal proveniente del fotodiodo.- Realizaremos cálculos paradiseñar los filtros analógicos.- Realizaremos una etapa deamplificación y suma de señal.- Realizaremos un programa

en el PIC18F4550 para adquirir datos analógicos y enviarlosmediante USB.

oxímetro de pulsoEl artículo presentado se trata de un proyecto de tesis que trata el estudio de las

ondas fotopletismograficas de un oximetro de pulso y su aplicación no invasivapara monitorear la saturación de la hemoglobina arterial.

// por: Washington Zarate Rospigliosi //[email protected]

El oximetro de pulso monitorea de forma no invasiva la saturación de la hemoglobina arterial, estos se basan en la absorción 

diferencial de la luz para determinar el porcentaje de saturación de oxigeno de la hemoglobina en la sangre arterial.

Para obtener esta absor-ción diferencial de la luz seutiliza un sensor que transmitedos longitudes de onda: Luz rojade 660nm y Luz infrarroja de905nm.

Lo que haremos es incidir una luz (roja ó infrarroja) sobreel dedo indice de la mano iz-quierda, como muestra la figura1, del cual obtendremos las on-das fotopletismograficas.

La onda fotopletismografi-ca del oximetro de pulso repre-senta el cambio de volumen delflujo sanguíneo.

La onda fotopletismografi-ca del oximetro de pulso en unórgano o extremidad se ve afec-

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 32/64

 

- Finalmente realizaremosun programa que adquieradatos provenientes del PIC.

 Antes de nada, usaremos :

- Un sensor para adultos dela empresa DOLPHIN.- TL082 para las diferentesetapas (filtrado amplificaciony suma).- Una fuente ATX del cualobtendremos los voltajessimetricos +-12V para losOPAM, +5V para el PIC.

- Un PIC18F4550.- El programa C# 2005.- Pickit 2, para programar elPIC.- Usaremos el lenguaje Cpara realizar el soft del PIC.

La señal proveniente

del fotodiodo produce una co-rriente que es función linealde la intensidad de la luz,siendo esta corriente medidacomo densidad de potenciaóptica incidente, para ellonecesitaremos convertir esta“corriente” a voltaje, conse-guiremos ello mediante unconversor de corriente a ten-

sión (ver figura 3).Para obtener la re-

sistencia Rf tenemos quedefinir cuanto deseamos ob-tener a la salida del OPAM,seria ideal obtener una señalentre 0V a 5V para efectosde la adquisición y con-versión con el ADC del PIC,veamos entonces:

- En primera instancia losOPAMs TL082 estarán ali-mentados con voltaje de 0V

/ / página 0x20

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 33/64

 

(pin4) y 5V (pin8).- ¿Esta alimentación produceuna salida de 200mV con Rf =20M?.- ¿Cómo halle esta resisten-

cia? De la siguiente manera:

Veamos el cuadro de la figu-ra 4 que nos da algunas ca-racteristicas del sensor. Co-mo observamos en el esque-ma del conversor de corri-ente a tensión se tiene lassiguientes ecuaciones:

Se tiene configuracion inver-sora por ello:Vs = RfIs - Vd -Vd = RfIf + Vo 

Se tiene que Vd=0 , por ello:Vo = -RfIs = -RfIf 

Por otro lado para determi-nar la corriente que incide enel fotodiodo se tiene:

La potencia producida por elfotodiodo es:P = Dpa = (3,149nW/cm2) * (12,5mm*25,4mm) = 9,99nW 

La corriente producida por eldiodo es:Is = P*Di = (1A/W)*(9,99nW) = 9,99nA

Consideramos una tensiónde salida de 200mW, por ellose tiene:Vo = -200mW Rf = -Vo/Is = -200mW / 9,99nA = 20,02 Mohms 

Por ello escogemos una re-sistencia de 20Mohms (valor 

comercial), con lo que nues-tro esquema quedará comoel de la figura 5.

Siendo la alimentación

ción en los OPAMs TL082con una fuente simple, y alver experimentalmente quese atenua la señal a medidaque esta entra en dichosfiltros, ademas que si laetapa de filtrado es alta (me

refiero a etapas de mayor aoctavo orden) esta atenuarála señal. Por ejemplo yoobtuve 2V a la salida delconversor tensión / corrientey a la salida de los filtrosobtuve 200mV o menos enalgunos casos. Por ello sedebe tener cuidado encolocar etapas de amplifica-

ción ya que estas tambienamplifican tanto la señal DCcomo la señal AC en estecaso.

- ¿Por qué uso ±12V? Masadelante veremos que alusar filtros, estos atenúan laseñal.

En la figura 6 observamosque nuestra onda fotopletis-

mografica esta "MODULA-DA" con otra frecuencia de44khz, se ve claramente enla parte inferior es la ondaque buscamos.

Observando la señaldel fotodiodo en la cual se

encuentra nuestra onda foto-pletismografica.Nuestro objetivo es ob-

tener la onda fotopletismogra-

/ / página 0x21

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 34/64

 

fica, sabemos que el cuerpohumano produce una fre-cuencia de 60Hz, la red eléc-trica en Perú es de 60Hz,además si ampliamos la se-ñal de la figura 6 vemos quenuestra onda esta modulada

con otra de 44KHz.

Para eliminar estas frecuen-cias necesitamos realizar fil-traje:

- filtro pasa-altas: con el finde eliminar la componenteDC, la frecuencia de corte sefija en 0.5Hz.

- filtro pasa-bajas: con el finde eliminar las frecuenciasaltas , la frecuencia de cortese fija en 3.5Hz.

Bien como ya definimos lasfrecuencias de corte, empe-zamos a diseñar los filtrosanalogicos, para ello usare-mos la configuracion SA-LLEN KEY veamos para unfiltro pasa-baja de segundoorden la figura 7.

ra bien la ventaja de estaconfiguración SALLEN KEYes que podemos colocar resistencias y capacitores dela misma magnitud nominal

y con ello nos enfocamos enel denominador con el obje-tivo de igualarlo a cero ob-teniendo:

/ / página 0x22

En la siguiente figura, lanúmero 8, tenemos un filtropasa-alta de segundo orden yluego en la figura 9 las fun-ciones de transferencia.

Respectivamente, aho-

En ambos casos se obtieneuna frecuencia de resonan-cia f0, para el caso del filtropasa altos se tiene:

Para las frecuencias anterior-mente especificadas los va-lores de las resistencias sondemasiadas altas del ordende los megaohm, ello trae la

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 35/64

 

la perdida de la señal.Los valores que yo u-

se son:

- Filtro pasa-altas 2º orden,

R=150k y C=440nF. Obte-niendo la señal de la figura10.- Filtro pasa-bajas 2º orden,R=360k y C=440nF. Obte-niendo la señal de la figura11.- Filtro pasa-altas de 8ºorden, R=130k y C=440nF.Obteniendo la señal de la

figura 12. Aclaraciones:

- Al sensor se envía unaseñal para que encienda elfotodiodo emisor rojo, conello obtenemos una señalfotoletismografica AC y otraDC, lo mismo sucede cuan-do encendemos el fotodiodo

emisor infrarrojo.- La señal AC nos muestra elcambio en flujo sanguineo(en este caso el dedo indicede la mano izquierda). Estaseñal AC es la que vemos enlos diferentes figuras.- La señal DC, si bien paranuestros propositos la elimi-namos, contiene la variación

de la respiración.- La señal AC fue obtenidasiguiendo las etapas:

/ / página 0x23

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 36/64

 

Conversor I-V > Filtro pasa-altas 2º orden > Filtro pasa-bajas 2º orden > Etapa depreamplificado > Filtrado de8º orden. como observamos

en la figura 12.- Como estamos realizandoun tratamiento a esta señalobservamos en el oscilos-copio que nuestra señalalcanza los 200mV, en estepunto lo dejamos con estevalor, al cual le añadiremosuan etapa de suma y otra deamplificacion, para obtener un voltaje adecuado para lacaptura en el ADC del PIC.

En líneas generales:

- Se utiliza el PIC18F4458,que posee un ADC de 12-bits. Se puede reemplazar sin problemas por el PIC-

18F4550.- Lo que hace el codigo esque cada vez que el PC lepida valores del ADC esteleera 4 valores y lo enviará laPC.- Algunas de la directivascomo #define CONTROL_0 PIN_D0  y #define CON- TROL_1 PIN_D1 son debido

a que en mi proyecto yorequiero visualizar las cuatroondas. Es decir: del foto-emisor rojo las ondas AC yDC , del fotoemisor infrarrojolas ondas AC y DC. Para ellouso un multiplexor analogico  ADG411 con el cualselecciono la onda deseada.- Para el presente proyecto

solo visualizaremos la señalRojo_AC.

/ / página 0x24

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 37/64

 

/ / página 0x25

 /////////////////////////////////////////////////////////////////////////////  //DECLARANDO DISPOSITIVO A USAR  //////////////////////////////////////////////////////////////////////////// #include <18f4458.h>  ///////////////////////////////////////////////////////////////////////////// 

 //DECLARANDO ADC  //////////////////////////////////////////////////////////////////////////// #device ADC=12 // ADC DE 10 BITS  /////////////////////////////////////////////////////////////////////////////   //DECLARANDO FUSES : 20MHZ DE OSC  //////////////////////////////////////////////////////////////////////////// #fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN ,NOPBADEN,NOBROWNOUT  ///////////////////////////////////////////////////////////////////////////// 

 //CONFIGURANDO A 48MHZ NECESARIOS PARA USAR EL USB 2.0  //////////////////////////////////////////////////////////////////////////// #use delay(clock=48000000)

 /////////////////////////////////////////////////////////////////////////////  //LIBRERIAS DE CONFIGURACION DEL USB  ///////////////////////////////////////////////////////////////////////////// #define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers 

#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers #define USB_EP1_TX_SIZE 8 //size to allocate for the tx endpoint 1 buffer #define USB_EP1_RX_SIZE 3 //size to allocate for the rx endpoint 1 buffer 

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 38/64

 

 /////////////////////////////////////////////////////////////////////////////// #define USB_CON_SENSE_PIN PIN_E3  /////////////////////////////////////////////////////////////////////////////  // 

 // If you are using a USB connection sense pin, define it here. If you are  // not using connection sense, comment out this line. Without connection  // sense you will not know if the device gets disconnected.  // (connection sense should look like this:   // 100k   // VBUS-----+----/\/\/\/\/\----- (I/O PIN ON PIC)  // |   // +----/\/\/\/\/\-----GND   // 100k   // (where VBUS is pin1 of the USB connector)

 //  ///////////////////////////////////////////////////////////////////////////// 

#include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver #include <USB_ADC_TESIS.h> //Configuración del USB y los descriptores para este dispositivo #include <usb.c> //handles usb setup tokens and get descriptor reports  /////////////////////////////////////////////////////////////////////////////  //DEFINICION DE VARIABLES PARA EL USO ADC  //////////////////////////////////////////////////////////////////////////// #define DERECHA 0 

#byte TRISA = 0xF92 #byte TRISD = 0xF95 #byte ADCON2 = 0xFC0 #byte ADCON0 = 0xFC2 #byte ADCON1 = 0xFC1#byte ADRESL = 0xFC3 #byte ADRESH = 0xFC4 #byte ValorH = 0x028 #byte ValorL = 0x029 

 ////////////////////////////////////////////////////////////////////////////  // DEFINICION DE VARIABLES PARA CONTROL DE CONEX USB  //////////////////////////////////////////////////////////////////////////  //*** CONTROL DE CONEX USB ***// #define LEDV PIN_B6 #define LEDR PIN_B7 

 //*** CONTROL LED SENSOR ***// #define LED_ROJO PIN_C1#define LED_INFR PIN_C0 

 //*** CONTROL DE SEÑALES AC-DC***// #define CONTROL_0 PIN_D0 //SEÑAL ROJO_AC_4 #define CONTROL_1 PIN_D1 //SEÑAL INFR_AC_4 #define CONTROL_2 PIN_D2 //SEÑAL ROJO_DC 

/ / página 0x26

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 39/64

 

#define CONTROL_3 PIN_D3 //SEÑAL INFR_DC 

 //*** ESTADOS SALIDA DE PINES ***// #define LED_ON output_high #define LED_OFF output_low 

 ///////////////////////////////////////////////////////////////////////////  // PARAMETROS: ENVIO Y RECEPCION DATOS ATRAVES DEL USB  ////////////////////////////////////////////////////////////////////////// #define modo recibe[0] #define param1 recibe[1] #define param2 recibe[2] 

 ///////////////////////////////////////////////////////// 

void main(void) { /////////////////////// //VARIABLES PARA EL ADC /////////////////////// int recibe[3]; //declaramos variables long value; int i; int8 Buffer_ADC[8]; int SPO_1[3]= { 255,254,20 }; 

 LED_OFF(LEDV); //encendemos led rojo LED_ON(LEDR); // CONFIGURANDO CANALES ANALOGICOS setup_adc_ports(AN0_TO_AN1_ANALOG); // CONFIGURANDO RELOJ DE CONVERSION setup_adc(ADC_CLOCK_DIV_64 );  //CONFIGURANDO TIPO DE JUSTIFICACION #asm 

bcf 0xFC0,7 // ADFM <- 0 justificacion derecha #endasm //CONFIGURANDO TIEMPO DE ADQUISICION #asm // configura Tacq = 2Tad bsf 0xFC0,3 bsf 0xFC0,4 bsf 0xFC0,5 #endasm 

 

usb_init_cs(); // inciamos y apagamos el modulo USB , ahora depende de usb_task();  while (TRUE){ 

/ / página 0x27

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 40/64

 

usb_task(); //habilita periferico usb e interrupciones 

if(usb_enumerated()) //si el PicUSB está configurado { if (usb_kbhit(1)) //si el endpoint de salida contiene datos del host 

{  usb_get_packet(1, recibe, 3); //cojemos el paquete de tamaño 3bytes del EP1 y almacenamos en recibe 

switch (modo){ 

case 0: { 

if (param1 == 0) {LED_OFF(LEDV); LED_OFF(LEDR);} //apagamos los leds if (param1 == 1) {LED_ON(LEDV); LED_OFF(LEDR);} //encendemos led verde 

if (param1 == 2) {LED_OFF(LEDV); LED_ON(LEDR);} //encendemos led rojo break; }

 case 1: { 

usb_put_packet(1,SPO_1,3,USB_DTS_TOGGLE); //probar si envia un paquete break; 

case 2: 

{ //LED_ON(LEDV); ///////////////////////////////////////////////////////// /// CONTROL DE MUX ROJO /// ///////////////////////////////////////////////////////// /// ENCENDIDO LED ROJO - ACTIVAR MUX ROJO_AC_4 /// ///////////////////////////////////////////////////////// LED_ON(LED_ROJO); // ENCIENDO LED ROJO LED_OFF(LED_INFR); // APAGO LED INFRARROJO ///////////////////////////////////////////// 

LED_OFF(CONTROL_0); // ACTIVO MUX_ROJO_AC_4 LED_ON(CONTROL_1); // DESACTIVO MUX_INFR_AC_4 LED_ON(CONTROL_2); // DESACTIVO MUX_ROJO_DC LED_ON(CONTROL_3); //DESACTIVO MUX_INFR_DC /////////////////////////////// /// configurar canal AN0 // /////////////////////////////// set_adc_channel(0); // elegimos canal a convertir delay_us(50); value=read_adc(); // LEEMOS LA CONVERISION DEL ADC 

Buffer_ADC[0]=ValorH; //ALMACENAMOS BITS MSB Buffer_ADC[1]=ValorL; //ALMACENAMOS BITS LSB delay_us(50); set_adc_channel(0); // elegimos canal a convertir 

/ / página 0x28

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 41/64

 

delay_us(50); value=read_adc(); // LEEMOS LA CONVERISION DEL ADC Buffer_ADC[2]=ValorH; //ALMACENAMOS BITS MSB Buffer_ADC[3]=ValorL; //ALMACENAMOS BITS LSB delay_us(50); 

set_adc_channel(0); // elegimos canal a convertir delay_us(50); value=read_adc(); // LEEMOS LA CONVERISION DEL ADC Buffer_ADC[4]=ValorH; //ALMACENAMOS BITS MSB Buffer_ADC[5]=ValorL; //ALMACENAMOS BITS LSB delay_us(50); set_adc_channel(0); // elegimos canal a convertir delay_us(50); value=read_adc(); // LEEMOS LA CONVERISION DEL ADC Buffer_ADC[6]=ValorH; //ALMACENAMOS BITS MSB 

Buffer_ADC[7]=ValorL; //ALMACENAMOS BITS LSB set_adc_channel(0); // elegimos canal a convertir delay_us(50); usb_put_packet(1,Buffer_ADC,8,USB_DTS_TOGGLE); //LED_OFF(LEDV); break; 

}

  }

}

}}

 }

/ / página 0x29

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 42/64

 

/ / página 0x2A

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 43/64

 

/ / página 0x2B

tecnologia, y de mis hijos,quienes estuvieron de acuerdoen encarar el proyecto y colabo-raron de diversas maneras.

Necesitabamos un espa-

cio fisico para el KERNEL, luegode buscar sin resultado dichoespacio, decidi no bajar losbrazos y ver la manera de dividir mi casa, a fin de conseguir unespacio para armar dos aulas.

Teniamos en ese momen-to solo el dinero para adquirir parte de los materiales para rea-lizar la obra, en diciembre del2008 comenzamos con Nico, mihijo mayor, a realizar las tareasde albañileria para dividir nuestra casa.

Nos llevo casi seis mesesterminar dicha obra. Nicolastenia en ese momento solo quin-ce años y colaboro hasta el finalde la obra. No te puedo descri-bir el orgullo como padre por sunoble actitud y compromiso para

con el proyecto del KERNEL.Puedo decir que KER-

NEL nacio no solo de un sueño

kernel: escuela de jovenes inventores

KERNEL es una escuela para pequeños inventores, que nace como una iniciativaparticular de Diego Ferrari. En esta escuela, los niños pequeños toman contactocon la electricidad y la electrónica, construyendo dispositivos como los que ves enlas fotos. Hemos recibido una carta de Diego en la que nos cuenta sobre el origeny el trabajo que realizan, y queriamos compartirla con ustedes.

Alla por fines del 2007,luego de dar una conferencia sobre Mapas Mentales, nos ponemos con algunos de los participantes a charlar acerca 

de la necesidad de ofrecerles a los jovenes de la ciudad de Alta Gracia diferentes opcio- nes en cuanto a actividades educativas, sobre todo aque- llas con alguna orientacion con salida laboral.

Hacia ya unos años quevenia realizando actividades decapacitacion laboral en el areatecnologica, precisamente elec-tricidad y electronica industrial,lo que me habia facilitado cier-tos contactos con gente del areade la educacion tecnologica.

  A principios del 2008 yacontaba con el apoyo de mu-chos profesionales de la educa-cion o de algun area relaciona-da con la tecnologia para armar un centro de capacitacion. Pero

fundamentalmente, tuve el apo-yo incondicional de mi esposa,quien es tambien docente de

// por: Diego Ferrari //[email protected]

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 44/64

 

mio, fue un sueño de toda mifamilia.

Lo que hoy son la au-las del KERNEL, antes eranla cochera y el living de la

casa. Una vez terminada laobra civil, largamos una cam-paña de difusion de la Es-cuela de Jovenes Inventoresa traves de correos electro-nicos y afiches pegados enlas vidrieras de los comer-cios de la ciudad.

Captamos tambien la

atencion de algunos medioslocales que publicaron nues-tro proyecto como de interesgeneral para la comunidad.

 Actualmente esta sien-do tratado en el Consejo Deli-berante de la ciudad paradeclararlo de interes munici-pal.

 Al dia de hoy en la es-cuela de jovenes Inventores

de Kernel estamos enseñan-do ecotecnologia, aplicacio-nes electronicas e informati-cas a un grupo de alumnoscon el objetivo de formar futu-ros tecnologos capacitadospara crear nuevos disposi-tivos tecnologicos, e inclusogestionar las patentes de susinventos o modelos de utili-

dad bajo nuestra tutoria.Hemos llevado adelan-

te y cotinuamos actualmentecon una campaña de RECI-CLADO ECOTECNOLOGI-CO, donde hemos instaladocon el apoyo de un comer-ciante de la ciudad, unreceptaculo para pilas ybaterias que luego llevamos

a la empresa que realiza sutratamiento, y un contenedor donde recibimos donacionesde todo tipo de artefacto

/ / página 0x2C

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 45/64

 

electrico, electronico, electro-mecanico, funcione o no,para realizar las practicas enel KERNEL y reciclar partesy componentes de los mis-

mos. De esta manera nues-tros alumnos han aprendidodesarmando muchos disposi-tivos que son costosos yresultaria muy honerosorealizar dichas practicas situvieramos que comprarlos,por ejemplo comprender elfuncionamiento y arquitec-tura de un disco duro de PCa partir del desarme de undisco roto.

Se proveen ademas atraves de esta metodologiade gran parte de los com-ponentes necesarios paraarmar los proyectos.Quiero agradecer a losconocidos y amigos que noshan apoyado en esta cam-

paña de reciclado, y a lapoblacion en general, ya quela respuesta obtenida atraves de la misma ha sidoexcelente.

Cabe destacar tam-bien el trabajo y el apoyoincondicional del Profesor Leandro Alem, quien es mico-equiper en el dictado de

las clases de electronica. Sulabor ha sido fundamentalpara el desarrollo de losproyectos de dicha area.

Estamos reciclandoplacas de PC y armandomuy de a poco las computa-doras que equiparan el labo-ratorio de informatica, dodefuncionara ademas una

biblioteca virtual.Estamos realizandolas PRIMERAS JORNADASESCOLARES DE DIFUSION

/ / página 0x2D

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 46/64

 

Y SENSIBILIZACION AMBI-ENTAL, DESARROLLO SUS-TENTABLE Y ECOTECNO-LOGIAS KERNEL en escue-las primarias y secundarias

de la ciudad y zonas deinfluencia.Las mismas consisten

en una charla debate de doshoras dirigida a los alumnosde estas instituciones yorientadas en cada caso atemas particulares de sucurricula y a la problematicaambiental local y regional y

global.Recientemente hemosrealizado un acuerdo de vin-culacion con el Radio Club Alta Gracia, este consiste enel lanzamiento de un cursode Electronica en la sede delradioclub, la puesta en mar-cha de una biblioteca virtualabierta al publico en dichasede, y la creacion de un

centro de actividades cultura-les a cargo de un grupo deprofesores de musica y tea-tro de nuestra localidad.

Esperamos para elaño proximo poder realizar algunos trabajos practicos demicrocontroladores basando-nos en tus publicaciones,tener listo nuestro laboratorio

de informatica y poder relizar un ciclo de conferencias connuestros mentores del areatecnologica.

El presente me demu-estra que lo que ayer fue unsueño utopico hoy es posiblegracias al trabajo, la fe y elapoyo de aquellos que creenque una sociedad mejor es

posible a traves del caminode la educacion de las futu-ras generaciones. Apuestotodo en ello.

/ / página 0x2E

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 47/64

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 48/64

 

/ / página 0x30

cual puede ser dividida opcional-mente por el preescalador. Estemodo es seleccionado al limpiar el bit T0CS (OPTION_REG<5>).En este modo si se realiza una

escritura al registro TMR0, suincremento es inhibido por lossiguientes dos ciclos de ins-trucción (Tcy) y si el prees-calador está asignado se pierdela cuenta pero no su asignación.

En el modo contador, laseñal que controla los incremen-tos del registro TMR0 es unaseñal externa que proviene dela patita T0CKI poniendo el bitT0CS en alto. Se puedeseleccionar la transición que pr-ovoca los incrementos medianteel bit “Timer0 Source EdgeSelect“ T0SE (OPTION_REG<4>), limpiando este bit seselecciona la transición de

subida, mientras que al ponerloen alto se selecciona la debajada.

PIC16F628A en assembler 

Siguiendo con el tutorial de assembler y el PIC16F628A abordaremos los módulosde temporización Timer0, Timer1, Timer2 y el módulo USART, y como escostumbre con ejemplos para su utilización.

El microcontrolador PIC16F628A cuenta con tres módulos muy importantes e indispensables para gran cantidad de circuitos. Ellos 

son los temporizadores y el módulo de comunicación serial (USART).

El Timer0 es untemporizador/contador de 8 bits.El registro principal de estemódulo es TMR0 (0x01) el cualse incrementa continuamente auna frecuencia seleccionablemanejada por un preescalador yel reloj interno Fosc/4 (modotemporizador) o bien, por unpreescalador y una señal ex-terna (modo contador).

En el modo temporizador 

la señal de reloj que controla elincremento del registro TMR0es la frecuencia Fcy = Fosc/4, la

// por: Alejandro Casanova //[email protected] 

tercera parte

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 49/64

 

Observación: En este modo,la señal conectada a TOCKIes muestreada durante losciclos Q2 y Q4 del relojinterno, por ello es necesario

que permanezca en alto almenos por 2 Tosc más unpequeño retardo de 20nsegy lo mismo en bajo. (Esdecir, señales demasiadorápidas no podrán ser detec-tadas).

El preescalador es undivisor de frecuencia delmódulo seleccionable. Peroeste está compartido entre eltimer0 y el módulo Watch-dog, sin embargo sólo puedeconectarse a uno de los dosy esto se establece medianteel bit PSA (OPTION_REG<3>). Con este bit en alto elpreescalador es asig-nado al

reloj del Watchdog, mientrasque con un nivel bajo enPSA el preescalador dividirála frecuencia que maneja alTimer 0.

La selección del valor de división de frecuencia delpreescalador se puede rea-lizar mediante los bits PS2,PS1, PS0 (OPTION_REG

<2:0>) de acuerdo a lasiguiente tabla:

/ / página 0x31

PS2 PS1 PS0 Divisor 

000 1/2

001 1/4

010 1/8

011 1/16

100 1/32

101 1/64110 1/128

111 1/256

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 50/64

 

La interrupción deTMR0 se genera cuando elregistro TMR0 se desborda

pasando del 255 a 0. Estedesbordamiento activa el bitT0IF (INTCON<2>) que ge-nerará una interrupción siesta habilitada mediante elbit T0IE (INTCON<5>). Lainterrupción TMR0 no puedesacar a la CPU del estadoSLEEP ya que el tempori-zador está bloqueado duran-

te este estado.

Para calcular unatemporización se necesita eltiempo de un ciclo deinstrucción (es decir 1 micro-segundo, si estas trabajandocon un XT de 4 Mhz

(4/Fosc)), el valor del Divisor de Frecuencia (el queseleccionabas con los bitsPS2, PS1 y PS0), y final-mente el complemento delvalor cargado en TMR0 (esdecir 256-TMR0). Entoncestenemos:

Temporización = Ciclo de 

instrucción. (256-TMR0) .Divisor de Frecuencia 

De este modo si queremostemporizar 4 ms con undivisor de frecuencia de 32,tendríamos:

TMR0 = 256 - (400uS/1uS * 32) = 131

Vemos que la máximatemporización posible es conTMR0 = 0 y Divisor de

Frecuencia en 256, lográn-dose unos 65.5 ms aprox.Para un cristal de 4MHz.-

Para ejemplificar eluso de esta interrupción hare-

mos titilar un led conectadoal PIN RB0 cada 200 ms,para ello haremos unatemporización con TMR0 de50ms y contaremos 4 desbor-des del mismo para lograr los 200 ms necesarios. Lointeresante de usar interrup-ción es que con el micro sepuede estar ejecutando cual-quier tarea y no ocupar estetiempo en un bucle dedemora. El hardware necesa-rio es equivalente al primer ejemplo realizado.

El siguiente programarealiza el conteo del númerode veces que se produce

una transición de bajo a altoen la patita T0CKI. El valor del contador se incrementaráuna vez por cada dos transi-ciones (a modo de ejemplofijamos preescaler en 1:2), yal detectarse 10 cambiamosel estado del Led conectadoa RB0.

El Timer 1 a diferenciadel Timer 0 es un temporiza-dor / contador de 16 bits. Elconteo es realizado por dosregistros de 8 bits: (TMR1H(0Fh) y TMR1L (0Eh) ) queson tanto leíbles como escri-bibles.

  Así, el registro TMR1se incrementa de 0000h aFFFFh y en la siguientecuenta se reinicia en 0000h y

así sucesivamente, al reci-clarse se activa (en alto) labandera TMR1IF (PIR1<0>),la cual puede ser utilizadapara generar una interrup-

ción, o bien, para ser consul-tada por poleo.

Este modo se selec-ciona limpiando el bitTMR1CS (T1CON<1>) y elTimer se incrementa (si nose considera preescalador)en cada ciclo de instrucción(a la frecuencia Fosc/4). Elpreescalador que se puedeintercalar entre el relojFosc/4 y el registro TMR1puede tener sólo uno de 4valores: 1/1, 1/2, 1/4 y 1/8.En este caso la temporiza-ción de calcula:

Temporización = Ciclo de instrucción * (65536-TMR1) 

* Divisor de Frecuencia 

Vemos que la máxima tempo-rización posible es conTMR1 = 0 y Divisor deFrecuencia en 8, lográndoseunos 524.3 ms aprox. paracristal de 4MHz.

El Timer 1 tambiénpuede operar como contador asíncrono o síncrono contan-do los flancos ascendentesque ocurren en pin RB6 /T1OSO / T1CKI poniendo a1 el bit TMR1CS. Despuésde que el Timer1 se progra-me en modo contador, el

módulo esperará un flancode bajada antes de comen-zar los incrementos con losflancos de subida.

/ / página 0x32

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 51/64

 

; **** EJEMPLO #1: MODO TEMPORIZADOR ; **** Encabezado **** List p=16f628A ; list directive to define processor #include <p16f628A.inc> ; processor specific variable definitions  __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON &

 _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_ON ;**** Definición de variables **** Contador equ 0x20 ; Contador para detectar 4 desbordes de TMR0.-  W_Temp equ 0x21 ; Registro para guardar temporalmente W.-  STATUS_Temp equ 0x22 ; Registro para guardar temporalmente STATUS  Led equ 0 ; Definimos Led como el bit cero de un registro, en este caso  

; PORTB.-  ;**** Inicio del Micro **** 

Reset org 0x00 ; Aquí comienza el micro.-  goto Inicio ; Salto a inicio de mi programa.-  

;**** Vector de Interrupción **** org 0x04 ; Atiendo Interrupción.-  goto Inicio_ISR 

 ; **** Programa Principal **** ;**** Configuración de puertos *** 

org 0x05 ; Origen del código de programa.-  Inicio 

bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.- movlwb'11111110' ; RB0 como salida.-  movwfTRISB movlwb'00000111' ; Se selecciona TMR0 modo temporizador y preescaler de 1/256.- movwfOPTION_REG bcf STATUS,RP0 ; Paso del Banco 1 al Banco 0  bcf PORTB,Led ; El Led comienza apagado.-  movlw 0x3D ; Cargamos 61 en TMR0 para lograr aprox. 50ms.-  movwfTMR0 clrf Contador ; Iniciamos contador.-  

movlw b'10100000' ; Habilitamos GIE y T0IE (interrupción del TMR0)movwfINTCON 

;**** Bucle **** Bucle 

nop ; Aquí el micro puede ejecutar cualquier otra tarea  goto Bucle ; sin necesidad de utilizar tiempo en un bucle de demora.-  

 

;**** Rutina de servicio de Interrupción ****  

;---> Aquí haremos copia de respaldo para mostrar como se hace aunque no es..; ..necesario ya que el micro no hace otra tarea mientras tanto <--- ; Guardado de registro W y STATUS.- Inicio_ISR 

/ / página 0x33

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 52/64

 

Contador sincronizado: Si

SYNC T1 se borra, laentrada externa de reloj sesincroniza con la fase internade reloj. La sincronización seproduce después de la etapadel Predivisor. Este bloquees un contador cíclicoasíncrono.

Contador asincrónico: Si elbit de control SYNC T1 se

activa, la entrada de relojexterna no queda sincroni-zada con el reloj interno.

/ / página 0x34

movwfW_Temp ; Copiamos W a un registro Temporario.- swapf STATUS, W ;Invertimos los nibles del registro STATUS.- movwfSTATUS_Temp ; Guardamos STATUS en un registro temporal.- 

;**** Interrupción por TMR0 **** ISR 

btfss INTCON,T0IF ; Consultamos si es por TMR0.-  goto Fin_ISR ; No, entonces restauramos valores.-  movlw 0x3D ; Actualizo TMR0 para obtener una temporización de 50 ms..

movwfTMR0 ; .. Se hace al principio para mayor precisión.

incf Contador ; Si, Incrementamos contador  movlw 0x04 ; Consultamos si se han producido 4 desbordes..subwf Contador,0 ; ..para obtener 200 ms.-  btfss STATUS,Z ;  goto Fin_ISR ; No, salgo.-  

clrf Contador ; Si, reseteo Contador y controlo Led.-  btfss PORTB,Led ; Si esta apagado, prendo y viceversa.- goto Prendo_led bcf PORTB,Led ; Apago Led.-  goto Fin_ISR ; Restauro valores.-  

Prendo_led bsf PORTB,Led ; prendo Led.-  

; Restauramos los valores de W y STATUS.- Fin_ISR 

bcf INTCON,T0IF ; Borro bandera de control de Interrupción.- swapf STATUS_Temp,W ; Invertimos lo nibles de STATUS_Temp.- movwfSTATUS swapf W_Temp, f ; Invertimos los nibles y lo guardamos en el mismo registro.- swapf W_Temp,W ; Invertimos los nibles nuevamente y lo guardamos en W.- retfie ; Salimos de interrupción.-  

;.......................................... 

end 

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 53/64

 

; **** EJEMPLO #2: MODO CONTADOR ; **** Encabezado **** List p=16f628A ; list directive to define processor #include <p16f628A.inc> ; processor specific variable definitions  __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON &

 _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_ON ;**** Definición de variables **** Contador equ 0x20 ; Contador para detectar 4 desbordes de TMR0.-  W_Temp equ 0x21 ; Registro para guardar temporalmente W.-  STATUS_Temp equ 0x22 ; Registro para guardar temporalmente STATUS  Led equ 0 ; Definimos Led como el bit cero de un registro, en este caso  

; PORTB.-  ;**** Inicio del Micro **** 

Reset org 0x00 ; Aquí comienza el micro.-  goto Inicio ; Salto a inicio de mi programa.-  

;**** Vector de Interrupción **** org 0x04 ; Atiendo Interrupción.-  goto Inicio_ISR 

 ; **** Programa Principal **** ;**** Configuración de puertos *** 

org 0x05 ; Origen del código de programa.-  Inicio 

bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.- movlwb'11111110' ; RB0 como salida.-  movwfTRISB movlw b'00100000' ; Se selecciona TMR0 modo Contador, transición positiva movwfOPTION_REG ; y preescaler de 1/2.- bcf STATUS,RP0 ; Paso del Banco 1 al Banco 0  bcf PORTB,Led ; El Led comienza apagado.-  movlw 0xFB ; Cargamos 251 en TMR0 para contar 10 pulsos en RA4/TOCKI.- movwfTMR0 movlw b'10100000' ; Habilitamos GIE y T0IE (interrupción del TMR0)

movwfINTCON ;**** Bucle **** Bucle 

nop ; Aquí el micro puede ejecutar cualquier otra tarea  goto Bucle ; sin necesidad de utilizar tiempo en un bucle de demora.-  

 ;**** Rutina de servicio de Interrupción ****  ;---> Aquí haremos copia de respaldo para mostrar como se hace aunque no es..; ..necesario ya que el micro no hace otra tarea mientras tanto <--- 

 ; Guardado de registro W y STATUS.- Inicio_ISR 

movwfW_Temp ; Copiamos W a un registro Temporario.-  

/ / página 0x35

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 54/64

 

El temporizador continuaráfuncionando durante el esta-do de SLEEP, y puede provo-car una interrupción en sudesbordamiento que saquede su “siesta” a la CPU.

Se debe conectar uncristal de cuarzo entre laspatillas T1OSI (entrada) yT1OSO (salida del amplifica-dor oscilador). El oscilador se habilita con el bitT1OSCEN (T1CON<3>), yfuncionará en bajo consumoa partir de 200 KHz. Esteoscilador continúa funcionan-do aunque la CPU entre enmodo SLEEP, y está diseña-

do especialmente paratrabajar a 32.768 Hz.

El Timer 1 posee un bit parahabilitación / deshabilitación,

este es el bit TMR1ON(T1CON<0>) y habilita enalto. Además, el Timer 1posee una entrada internade RESET, el cual puede ser activado por el módulo CCP(Más adelante se explicaráen detalle). A continuación sedescribe el principal registrorelacionado con el Timer 1 ytodos sus bits:

Registro T1CON (10h) 

Bits de seleccióndel valor del divisor defrecuencia del preescalador:1 1 = divisor 1/81 0 = divisor 1/40 1 = divisor 1/2

0 0 = divisor 1/1Bit de

control de habilitación deoscilador para TMR1.1 = Oscilador habilitado.0 = Oscilador anulado.

Bit decontrol de sincronización dela entrada de reloj externo de

Timer1.TMR1CS = 11 = Entrada de reloj externo

/ / página 0x36

swapf STATUS, W ;Invertimos los nibles del registro STATUS.- movwfSTATUS_Temp ; Guardamos STATUS en un registro temporal.- 

;**** Interrupción por TMR0 **** ISR 

btfss INTCON,T0IF ; Consultamos si es por TMR0.- 

goto Fin_ISR ; No, entonces restauramos valores.-  btfss PORTB,Led ; Si, Controlamos Led.Si esta apagado, prendo y viseversa.- goto Prendo_led bcf PORTB,Led ; Apago Led.-  

Actualizo_TMR0 ; Cargamos 251 en TMR0 para contar 10 pulsos en  ; RA4/TOCKI.

movlw 0xFB ; d'251'  movwfTMR0 bcf INTCON,T0IF ; Borro bandera de control de Interrupción.- goto Fin_ISR ; Restauro valores.-  

Prendo_led bsf PORTB,Led ; prendo Led.-  goto Actualizo_TMR0 

; Restauramos los valores de W y STATUS.- Fin_ISR 

swapf STATUS_Temp,W ; Invertimos lo nibles de STATUS_Temp.- movwfSTATUS swapf W_Temp, f ; Invertimos los nibles y lo guardamos en el mismo registro.- swapf W_Temp,W ; Invertimos los nibles nuevamente y lo guardamos en W.- retfie ; Salimos de interrupción.-  

;..........................................

end 

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 55/64

 

no sincronizada.0 = Entrada de reloj externosincronizadaTMR1CS = 0En esta circunstancia, Timer-

1 usa el reloj interno.

Bit deselección de la fuente de reloj1 = Modo contador (fuentede reloj: patita RC0 / T1OSO/ T1CKI)0 = Modo Temporizador (fuente de reloj Fosc/4)

Bit dehabilitación / deshabilitacióndel Timer 1:1 = habilita Timer 10 = Deshabilita Timer 1

Para ejemplificar hare-mos uso del simple ejemplo#3, donde lo utilizamos comotemporizador. Se hará titilar un led conectado al PIN RB0

cada 300ms. Como se pue-de ver es idéntico al ejemplorealizado para Timer 0 delPIC16F84A, solo que eneste caso no necesitaremosun registro adicional paralograr la demora deseada.

El Timer es un tempo-rizador (sin opción de traba-  jar como contador) de 8 bitscon preescalador y postesca-lador. Su registro principaldenominado TMR2 (11h) esun registro de 8 bits que seincrementa continuamente ala frecuencia seleccionadade Fosc/4 dividida por un

preescalador.

La frecuencia que incremen-ta al registro TMR2 puedeser dividida por un prees-calador por un factor de 1/1,1/4 o 1/16, seleccionable por 

los bits T2CKPS1:T2CKPS0(T2CON<1:0>)

En operación, elcontenido del registro TMR2se compara continuamentecon un registro de periododenominado PR2 (92h) cuyovalor podemos establecer por software.

Cada vez que lacuenta de TMR2 es igual aPR2, se reinicia el conteo enTMR2 desde cero, y ademásse genera una señal desalida, la cual es tratada por un postescalador, para poder generar una señal TMR2IF

(PIR1<1>) que puede ser usada para solicitar unainterrupción, o para ser leídapor poleo.

El postescalador divi-de la frecuencia con queocurre una activación de la

bandera TMR2IF, es decir, siel valor del postescalador es1/1, esta bandera se activarácada vez que TMR2 sereinicie, en cambio, si es1/16 (por ejemplo), TMR2IFse activará cada 16 reiniciosde TMR2. En forma similar alos otros dos Timers, estabandera debe ser limpiada

previamente, si se quieredetectar su activación, estopuede ser hecho en la rutinade atención a la interrupción,

o bien en la rutina que ladetecta por poleo. El valor dedivisión del postescalador puede establecerse por soft-ware mediante los bits

T2OUPS3:T2OUPS0(T2CON<6:3>).

Nota: Los contadores prees-caladores y postescaladoresse borran con cualquiera deestos acontecimientos:

- Una escritura en el registroTMR2.- Una escritura en el registroT2CON.- Cualquier reset del disposi-tivo.

El registro TMR2 no se borracuando se escribe enT2CON. En este caso latemporización de calcula dela siguiente manera:

Temporización = Ciclo de instrucción * (PR2-TMR2) * Divisor de Frecuencia Pre * Divisor de frecuencia Post 

Vemos que la máximatemporización posible es conTMR2 = 0, Divisor de Fre-cuencia Prescalador en 16,Divisor de frecuencia Postes-

calador en 16, lográndoseunos 65.5 ms aprox. para uncristal de 4MHz.

 A continuación se describe elprincipal registro relacionadocon el Timer 2 y todos susbits.

Registro T2CON (12h) 

Bits de seleccióndel valor del divisor de fre-

/ / página 0x37

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 56/64

 

; **** EJEMPLO #3: MODO TEMPORIZADOR ; **** Encabezado **** List p=16f628A ; list directive to define processor #include <p16f628A.inc> ; processor specific variable definitions  __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON &

 _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_ON  ;**** Definiciones para el ensamblador **** #DEFINE Led PORTB,0 ; Led ubicado en Puerto B, bit 0.-   ;////////////////////////////////////////// ;**** Inicio del Micro **** Reset 

org 0x00 ; Aquí comienza el micro.-  goto Inicio ; Salto a inicio de mi programa.-  

;**** Vector de Interrupción **** org 0x04 ; Atiendo Interrupción.-  goto ISR  

 ; **** Programa Principal **** ;**** Configuracion de puertos *** 

org 0x05 ; Origen del código de programa.-  Inicio 

bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.- movlwb'11111110' ; RB0 como salida.-  movwfTRISB 

bcf STATUS,RP0 ; Banco 0.-  movlw b'00110001' ; Se selecciona TMR1, preescaler de 1/8, modo temporizador.- movwfT1CON bcf Led ; El Led comienza apagado.-  movlw 0x6D ; Cargamos 28036 en TMR1 para lograr 300ms.-  movwfTMR1H ; Byte alto de TMR1.-  movlw 0x84 movwfTMR1L ; Byte bajo de TMR1.-  bsf STATUS,RP0 ; Banco 1.-  bsf PIE1,TMR1IE ; Activar interrupción por TMR1.

bsf INTCON,GIE ; Habilitación general de interrupciones.- bsf INTCON,PEIE ; Habilitación de Interrupción por periféricos.- bcf STATUS,RP0 ; Banco 0.-  

;**** Control de Led **** Bucle 

nop ; Aquí el micro puede ejecutar cualquier otra tarea  goto Bucle ; sin necesidad de utilizar tiempo en un bucle de demora.-  

 

;**** Rutina de servicio de Interrupción **** 

;**** Interrupción por TMR1 **** ISR btfss PIR1,TMR1IF ; Consultamos si es por TMR1.- retfie ; No, salimos de interrupción.-  

/ / página 0x38

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 57/64

 

cuencia del postescalador,de acuerdo a la siguientetabla:

0 0 0 0 = divisor 1/10 0 0 1 = divisor 1/2

0 0 1 0 = divisor 1/3…1 1 1 1 = divisor 1/16

Bit deencendido del Timer 21 = Enciende (energiza) elTimer 20 = Apaga (desconecta) elTimer 2

Bits de configura-ción del valor del preescala-dor de acuerdo a la siguientetabla:0 0 = divisor 1/10 1 = divisor 1/41 x = divisor 1/16

En el ejemplo #4 podemos

ver la configuración necesa-ria para lograr una temporiza-ción de 20ms.

La USART puedeconfigurarse como sistemaasíncrono -full dúplex-, quepuede comunicarse con dis-positivos periféricos comoordenadores personales uotros microcontroladores, opuede configurarse como sis-

tema síncrono -half dúplex-,que puede comunicarse conperiféricos tales como circui-

tos integrados convertidores  A/D y D/A, EEPROMs serie,etc. La USART del PICpuede ser configurada paraoperar en tres modos:

- Modo Asíncrono (Full dú-plex, transmisión y recepciónsimultaneas)- Modo síncrono Maestro

(Hald duplex)- Modo síncrono Esclavo(Hald duplex)

/ / página 0x39

btfss Led ; Si, Controlamos Led. Si esta apagado, prendo y viceversa.-  goto Prendo_led bcf Led ; Apago Led.-  

Actualizo_TMR1 ; Actualizo TMR1 para obtener una temporización de 300 ms.-  movlw 0x6D ; Cargamos 28036 en TMR1.-  

movwfTMR1H ; Byte alto de TMR1.-  movlw 0x84 movwfTMR1L ; Byte bajo de TMR1.-  goto Fin_ISR ; Restauro valores.-  

Prendo_led bsf Led ; Prendo Led.-  goto Actualizo_TMR1

Fin_ISR bcf PIR1,TMR1IF ; Borro bandera de control de Interrupción.- retfie ; Salimos de interrupción.-  

;.......................................... end 

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 58/64

 

:EJEMPLO #4: TEMPORIZACION DE 20MS bcf STATUS,RP0 ; Banco 0.-  

movlw b'01000110' ; Se selecciona TMR2, preescaler de 1/16, postescaler 1/8.- movwfT2CON 

bsf STATUS,RP0 ; Banco 1.-  

movlw 0x9D ; Cargamos 157 en PR2 para lograr 20ms.-  movwfPR2 bsf PIE1,TMR2IE ; Activar interrupción por TMR2.bsf INTCON,GIE ; Habilitación general de interrupciones.- bsf INTCON,PEIE ; Habilitación de Interrupción por periféricos.- bcf STATUS,RP0 ; Banco 0.-  

Control de interrupción: 

ISR 

btfss PIR1,TMR2IF ; Consultamos si es por TMR2.- retfie ; No, salimos de interrupción.-  . ; Si, rutina de interrupción...

Fin_ISR bcf PIR1,TMR2IF ; Borro bandera de control de Interrupción.- retfie ; Salimos de interrupción.-  

/ / página 0x3A

En este modo laUSART usa un formatoestándar NRZ asíncrono, elcual para la sincronizaciónusa: 1 bit de inicio (I), 8 o 9bits de datos y 1 bit de paro(P). Mientras no se estántransmitiendo datos laUSART envía continuamenteun bit de marca. El modoasíncrono se seleccionalimpiando el bit SYNC delregistro TXSTA (98H). Elmodo asíncrono es deshabili-tado durante el modo SLEEP.

Cada dato es transmi-tido y recibido comenzandopor el LSB. El hardware nomaneja bit de Paridad, peroel noveno bit puede ser usa-

do para este fin y manejadopor software.

El módulo Asíncrono

de la USART consta de 3módulos fundamentales:

· El circuito de muestreo· El generador de frecuencia

de transmisión (Baud Rate)· El transmisor asíncrono· El receptor asíncrono.

Eldato en la patita de recep-ción (RB1/RX/DT) es mues-treado tres veces para poder decidir mediante un circuito

de mayoría, si se trata de unnivel alto o un nivel bajo.

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 59/64

 

Este generador consis-te de un contador/divisor de

frecuencia de 8 bits contro-lado por el registro SPBRG(99H) . De tal manera que lafrecuencia de transmisión secalcula de acuerdo a la tablade la figura 6.

En esta tabla X=valor de 8 bits en el registro deldivisor, SPBRG. El bit BRGHcorresponde a TXSTA<2>.

En el datasheet delPIC16F628/648A hay tablasdonde se muestran algunosvalores baud estándares, eldivisor necesario (X =SPBRG) bajo diferentes fre-cuencias Fosc y el error producido en porcentaje.

El corazón de estemódulo es el registro de corri-miento TSR y la única ma-nera de acceder al registroTSR es a través del registroTXREG (19H).

Para transmitir undato, el programa deberáponerlo primero en el registroTXREG. En cuanto el TSR

termina de enviar el dato quetenía, enviando el bit deparo, se transfiere el datocontenido en TXREG (si hayalguno). En cuanto el dato deTXREG es transferido alTSR el TXREG queda vacíoy esta condición se indicadamediante el bit bandera TXIF(PIR1<4>), el cual se pone

en alto. Este bit NO puedeser limpiado por software,solamente se borrará cuandoun nuevo dato se cargue en

el registro TXREG. Si seescribe un dato seguido deotro a TXREG el primero setransfiere inmediatamente aTSR y el otro tiene que

esperar hasta que el TSRtermine de enviar el bit deStop del primero. Duranteesta espera TXIF permaneceen bajo. Mientras el bitindicador TXIF señala elestado del registro TXREG,otro bit, TRMT (TXSTA<1>),muestra el estado delregistro TSR. El bit de estadoTRMT es de lectura, y seactiva cuando el registroTSR está vacío. Ningunainterrupción está unida aeste bit por lo que TRMTestá pensado para ser consultado por “poleo” (sinusar interrupciones).

Para habilitar el mó-dulo de transmisión esnecesario poner en alto el bit

TXEN (TXSTA<5>), mientrasno se habilite el módulo, lapatita de transmisión (RB2 /TX / CK) se mantiene en altaimpedancia. Si TXEN esdeshabilitada a la mitad deuna transmisión, está seráabortada y el transmisor seráreseteado.Para seleccionar una trans-

misión a 9 bits, el bit TX9(TXSTA<6>) deberá activar-se, y el noveno bit deberáescribirse en TX9D (TXSTA<0>). El noveno bit seescribirá antes de cargar los8 bits de datos en el registroTXREG. Esto es necesario,porque al escribir un dato enel registro TXREG puede

tener lugar una transferenciainmediata del dato al registroTSR (si TSR está vacío). Eneste caso, se habrá cargado

un dato incorrecto de nuevebits en el registro TSR. Deacuerdo a lo anterior, lainicialización del módulo detransmisión consiste en los

siguientes pasos:

1. Inicializar baud rate escri-biendo al registro SPBRG eldivisor adecuado y opcional-mente al bit BRGH.2. Habilitar comunicaciónasíncrona limpiando el bitSYNC y poniendo el bitSPEN.3. Si se van a usar interrup-ciones, poner el bit TXIE(PIE<4>).4. Poner el bit TX9 si sedesea transmitir datos de 9bits5. Habilitar transmisión po-niendo el bit TXEN, lo cualpondrá el bit TXIF.6. Colocar el noveno bit deldato en TX9D si se están

usando datos de 9 bits.7. Cargar el dato al registroTXREG (inicia la transmi-sión).

Una vez que se haseleccionado el modo asín-crono, la recepción se habi-

lita poniendo en alto el bitCREN (RCSTA<4>).

El dato es recibidomediante la línea RB1 / RX /DT y se conduce hasta el blo-que Data Recovery (Recupe-ración de dato), la cual mane-  ja un registro de corrimientode alta velocidad (16 vecesel Baud rate).

El corazón del recep-tor es el registro de corri-miento RSR. Este registro noes accesible por software,

/ / página 0x3B

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 60/64

 

pero al capturar del bit deSTOP el dato de RSR estransferido automáticamenteal registro RCREG (1Ah) siéste está vacío y al mismo

tiempo es puesto en alto labandera de recepción RCIF(PIR1<5>). La única manerade limpiar la bandera RCIFes leyendo el/los datos delregistro RCREG. El RCREGes un registro de doble buffer (una FIFO de dos posi-ciones).

Si las dos posiciones

del registro RCREG estánllenas (no han sido leídas) yse detecta el bit de Stop deun tercer dato de recepción,

lo cual ocasiona un transfe-rencia automática del datorecibido a RCREG, esto des-truirá el primer dato recibidoy activará el indicador de

desbordamiento OERR (RC-STA <1>).La única manera de

limpiar el bit OERR una vezque ha sido activado esreseteando el módulo derecepción (limpiando CRENy volviéndolo a poner). Si elbit OERR está en 1, seinhibe la transferencia desdeel registro RSR hasta elregistro RCREG, por lo quees vital borrar el bit OERR, siestuviese activado.

El error de concordanciaFERR (RCSTA<2>) se activasi un bit de STOP se lee ennivel bajo. Tanto esteindicador como el noveno bit

RX9D se memorizan en elmismo canal que el datorecibido, de manera que alleer RCREG se actualizanFERR y RX9D con nuevosvalores, por lo cual estos bitsdeberán ser leídos antes deleer RCREG para no perder su información.

De acuerdo a lo ante-rior, la inicialización del mó-dulo de recepción es comosigue:1. Inicializar el baud rate es-cribiendo al registro SPBRGel divisor adecuado y opcio-nalmente al bit BRGH.2. Habilitar el puerto serieasíncrono limpiando el bitSYNC y poniendo el bitSPEN.

3. Si se van a usar inte-rrupciones, poner el bit RCIE(PIE<5>).4. Si se desea recepción dedatos de 9 bits se deberáponer el bit RX9 (RCSTA<0>).5. Habilitar la recepciónponiendo el bit CREN (RC-STA <4>).

6. El bit RCIF se pondrácuando la recepción de undato se complete y se gene-rará una interrupción si RCIEestá puesto.7. Leer el registro RCSTApara obtener el noveno bit (sise están recibiendo datos de9 bits) o para determinar siha ocurrido un error de recep-

ción.8. Leer los 8 bits del datorecibido leyendo el registroRCREG.

/ / página 0x3C

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 61/64

 

1. Si ocurrió algún error estese limpia al limpiar el bitCREN, el cual deberá volver a ponerse si se deseacontinuar la recepción.

Ejemplo: En este casousando el módulo Usart delPIC16F628A y la interrupciónque genera el mismo alrecibir un dato haremos un

ejemplo donde esperamosdato desde PC, lo recibimosy lo reenviamos inmediata-mente.

/ / página 0x3D

 

; **** Encabezado **** List p=16f628A ; list directive to define processor #include <p16f628A.inc> ; processor specific variable definitions  __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_ON 

;**** Definición de variables **** DATA_RS232 equ 0x20 ; Dato recibido desde PC.-  

Flags equ 0x21 ;  

;**** Definiciones para el ensamblador **** #DEFINE Kbhit Flags,0 ; Indica si se ha recibido algún dato.-  ;**** Definición de macros **** ; Se envía la data de un registro a PC.- Putregmacro Registro 

movfwRegistro call RS232_EnviaDato 

endm ; Se envía un literal a PC.- Putc macro ACKII 

movlwACKII call RS232_EnviaDato endm  

;///////////////////////////////// ;**** Inicio del Micro **** Reset.

org 0x00 ; Aquí comienza el micro.-  goto Inicio ; Salto a inicio de mi programa.-  

 ;**** Vector de Interrupción **** 

org 0x04 ; Atiendo Interrupción.-  goto ISR  

 ; **** Programa Principal **** 

org 0x05  Inicio 

bsf STATUS,RP0 ; Banco 1movlw 0x02 movwfTRISB ; Configuro pines para Usart.-  

movlw 0x04 movwfTXSTA ; Configura modo asíncrono, baud rate de alta velocidad movlw 0x19 ; Configura velocidad a 9600 baudios con cristal de 4 Mhz 

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 62/64

 

movwfSPBRG bsf PIE1,RCIE ; Habilita interrupción de puerto serie para recepción bsf INTCON,GIE ; Habilitación general interrupciones bsf INTCON,PEIE ; Habilitación de interrupciones por periféricos 

; Activar recepción, transmisión.- bsf TXSTA,TXEN ; Habilita transmisión bcf STATUS,RP0 ; Banco 0 bsf RCSTA,SPEN ; Habilitación puerto serie bsf RCSTA,CREN ; Habilita recepción  bcf Kbhit ; Limpiamos bandera.

 Bucle btfss Kbhit ; ¿Se recibió Dato?  

goto $-1 ; No, seguimos esperando.-  bcf Kbhit ; Si, borramos bandera.-  PutregDATA_RS232 ; Enviamos lo guardado en DATA_RS232.- goto Bucle ;  

;.............................................

;**** Rutina de servicio de Interrupción **** ;**** Interrupción por Usart (Recepción de Dato)**** ISR 

btfss PIR1,RCIF ; Consultamos si es Usart.-  retfie ; No, Salimos de interrupción.-  movfwRCREG ; Llego dato, lo guardamos en un registro.

movwfDATA_RS232 bsf Kbhit ; Indicamos que ha llegado Dato.-  

Fin_ISR bcf PIR1,RCIF ; Limpiamos bandera.retfie ; Salimos de interrupción.-  

;..............................................

;**** Rutinas **** ;**** Se envia Dato **** RS232_EnviaDato 

bsf STATUS,RP0 ; Banco 1btfss TXSTA,TRMT ; chequea si esta listo goto $-1 ; Esperamos a que se desocupe.-  bcf STATUS,RP0 ; Banco 0 movwf TXREG ; envía Dato.- return 

;...............................................end 

/ / página 0x3E

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 63/64

 

Esta página está esperandotu anuncio. Comunicate a

[email protected]

5/14/2018 ucontrol_revista_0007 - slidepdf.com

http://slidepdf.com/reader/full/ucontrolrevista0007 64/64