viernes, 24 de agosto de 2012

Instalaciones Eléctricas Básicas


http://www.electricasas.com/instalacion-electrica-basica/

Instalaciones Eléctricas Básica  

Consejos Para realizar la instalación de cualquier mecanismo eléctrico en condiciones de seguridad total, es necesario tomar las siguientes precauciones:
  • Cortar el suministro eléctrico desconectando el interruptor general.
  • Respetar la normativa vigente recogida en el RBT. En caso de duda, consultar con un instalador autorizado.
  • Utilizar siempre herramientas y productos homologados.
Cables
El color del aislamiento del cable permite su fácil identificación. Se emplean cables rígidos, aunque es aconsejable utilizar cables flexibles porque se manejan mejor.
Secciones
Todas las tomas de corriente se conectan al conductor de fase, al neutro y al de tierra.
La actual normativa obliga a conectar el cable de tierra a todos los circuitos, incluido el de alumbrado.
Tubos
Los tubos flexibles son los más recomendables para viviendas. Su diámetro depende del número y secciones de los conductores que deben alojar.
 
 
Para facilitar el paso de los cables por los tubos, se puede utilizar una guía, anudando los cables en uno de sus extremos.
Conviene situar los tubos empotrados en las paredes en recorridos horizontales a 50 cm, como máximo, del suelo y del techo. En cuanto a los tubos verticales, no se deben separar más de 20 cm de los ángulos de las esquinas.
Estas distancias máximas de seguridad tienen como finalidad que los tubos no interfieran con otras canalizaciones. También se evitan así posibles inconvenientes a la hora de realizar taladros en las paredes.
Cajas
Las cajas sirven para alojar los mecanismos (interruptores, tomas de teléfono y televisión, enchufes, pulsadores, etc.). Los mecanismos se colocan en el interior de las cajas y se fijan con tornillos o con unas grapas que los sujetan por presión. Para permitir el paso de los tubos, las cajas de los mecanismos se perforan por los laterales o por la parte de atrás.
Cajas de derivación
Las cajas de derivación también se perforan para permitir el paso de los tubos y se colocan siempre de 30 a 50 cm del techo. El tamaño de la caja se decide en función del número de tubos que lleguen hasta ella.
Los empalmes en el interior de las cajas se realizan utilizando regleteros de conexión o clemas.

Mecanismos
La altura de colocación de los mecanismos difiere según la habitación de la que se trate y del tipo de mecanismo. En la siguiente tabla se muestran las distancias aconsejables respecto al suelo:
Instalación
Trazar en la pared la posición exacta de la caja y el recorrido del tubo, teniendo en cuenta las distancias recomendadas.
Con el martillo y el cortafríos, se pica la pared para preparar el cajeado de la caja y la roza para el tubo.
Presentar la caja en el cajeado y el tubo en la roza.
Con la ayuda de bridas o mediante clavos, sostener el tubo para que no se mueva de su posición.
Introducir los cables con la guía, procurando dejar suficiente longitud de cable para su posterior conexión al mecanismo.
Recibir la roza y la caja del mecanismo con una paleta y un poco de yeso de construcción. Una vez terminada la instalación, habrá que dar una capa de yeso blanco y las manos necesarias de pintura para igualar la pared.
Una vez pelados los cables, conectarlos a los terminales del mecanismo. Para finalizar la instalación, colocar el mecanismo en el interior de la caja fijándolo mediante los tornillos o lasgrapas del propio mecanismo.
Cuartos de baño
En los cuartos de baño hay que tener especial cuidado a la hora de realizar una instalación eléctrica, distinguiendo entre los volúmenes de prohibición y de protección.
  • Volumen de prohibición: se denomina así al espacio del cuarto de baño en el que no puede existir instalación eléctrica alguna.
  • Volumen de protección: en el interior de este espacio sólo se pueden instalar aparatos de iluminación con protección especial (clase II), sin interruptores ni tomas de corriente. En cuanto a los radiadores eléctricos, deben estar equipados con una protección diferencial de 30 mA.
El calentador de agua o termo se debe instalar siempre fuera del volumen de prohibición. La conexión de este aparato se tiene que realizar mediante un interruptor bipolar.
Circuitos
El circuito sencillo permite encender un punto de luz mediante un interruptor.
  • Para las conexiones en el interior de la caja de derivación, se deben utilizar regleteros normalizados o clemas.
  • El interruptor siempre se conecta al conductor de fase.
Con un circuito conmutado se puede encender un mismo punto de luz desde dos interruptores, de forma independiente.
  • El conductor de fase se conecta al conector común de uno de los interruptores (P1), mientras que el conector común del otro interruptor (P2) se conecta directamente al punto de luz.
  • El color naranja en este cable indica que se puede poner de cualquier color y aprovechar así los sobrantes de cable.
Conexion de Tomas

jueves, 23 de agosto de 2012

Simulador de Circuitos Online

https://www.circuitlab.com/workbench/


Now showing circuits 1-6 of 6. Sort by
circuito1

circuito1 PUBLIC

by profeitm | updated less than an hour ago
Astable555

Astable555 PUBLIC

by profeitm | updated less than an hour ago
Inversora Semana 4

Inversora Semana 4 PUBLIC

by profeitm | updated 1 hour, 41 minutes ago
circuito1 clase semana 4

circuito1 clase semana 4 PUBLIC

by profeitm | updated 1 hour, 44 minutes ago
Circuito 2 Semana 4

Circuito 2 Semana 4 PUBLIC

by profeitm | updated 2 hours, 4 minutes ago
circuito2

circuito2 PUBLIC

by profeitm | updated 1 day, 12 hours ago

miércoles, 22 de agosto de 2012

A Simple PWM Circuit Based on the 555 Timer


http://www.dprg.org/tutorials/2005-11a/index.html

A Simple PWM Circuit Based on the 555 Timer

November 2005, Written by Rick Bickle
One of the most fundamental problems in robotics is DC motor speed control. The most common method of speed control is PWM or pulse width modulation. Pulse width modulation is the process of switching the power to a device on and off at a given frequency, with varying on and off times. These on and off times are referred to as "duty cycle". The diagram below shows the waveforms of 10%, 50%, and 90% duty cycle signals.
As you can see from the diagram, a 10% duty cycle signal is on for 10% of the wavelength and off for 90%, while a 90% duty cycle signal is on for 90% and off for 10%. These signals are sent to the motor at a high enough frequency that the pulsing has no effect on the motor. The end result of the PWM process is that the overall power sent to the motor can be adjusted from off (0% duty cycle) to full on (100% duty cycle) with good efficiency and stable control.
While many robot builders use a microcontroller to generate the required PWM signals, the 555 PWM circuit explained here will give the novice robot builder an easy to construct circuit, and good understanding of pulse width modulation. It is also useful in a variety of other applications where the PWM setting need only be changed occasionally.
The 555 timer in the PWM circuit is configured as an astable oscillator. This means that once power is applied, the 555 will oscillate without any external trigger. Before the technical explanation of the circuit, let's look at the 555 timer IC itself.
The pinouts for the 8 pin DIP package are as follows:
A block diagram of the 555 timer:
Pin descriptions for the 555
PIN DESCRIPTION PURPOSE
1 Ground DC Ground
2 Trigger The trigger pin triggers the beginning of the timing sequence. When it goes LOW, it causes the output pin to go HIGH. The trigger is activated when the voltage falls below 1/3 of +V on pin 8.
3 Output The output pin is used to drive external circuitry. It has a "totem pole" configuration, which means that it can source or sink current. The HIGH output is usually about 1.7 volts lower than +V when sourcing current. The output pin can sink up to 200mA of current. The output pin is driven HIGH when the trigger pin is taken LOW. The output pin is driven LOW when the threshold pin is taken HIGH, or the reset pin is taken LOW.
4 Reset The reset pin is used to drive the output LOW, regardless of the state of the circuit. When not used, the reset pin should be tied to +V.
5 Control Voltage The control voltage pin allows the input of external voltages to affect the timing of the 555 chip. When not used, it should be bypassed to ground through an 0.01uF capacitor.
6 Threshold The threshold pin causes the output to be driven LOW when its voltage rises above 2/3 of +V.
7 Discharge The discharge pin shorts to ground when the output pin goes HIGH. This is normally used to discharge the timing capacitor during oscillation.
8 +V DC Power - Apply +3 to +18VDC here.


The schematic diagram for the 555 PWM Circuit:
The reset pin is connected to +V, so it has no effect on the circuit's operation.
When the circuit powers up, the trigger pin is LOW as capacitor C1 is discharged. This begins the oscillator cycle, causing the output to go HIGH.
When the output goes HIGH, capacitor C1 begins to charge through the right side of R1 and diode D2. When the voltage on C1 reaches 2/3 of +V, the threshold (pin 6) is activated, which in turn causes the output (pin 3), and discharge (pin 7) to go LOW.
When the output (pin 3) goes LOW, capacitor C1 starts to discharge through the left side of R1 and D1. When the voltage on C1 falls below 1/3 of +V, the output (pin 3) and discharge (pin 7) pins go HIGH, and the cycle repeats.
Pin 5 is not used for an external voltage input, so it is bypassed to ground with an 0.01uF capacitor.
Note the configuration of R1, D1, and D2. Capacitor C1 charges through one side of R1 and discharges through the other side. The sum of the charge and discharge resistance is always the same, therefore the wavelength of the output signal is constant. Only the duty cycle varies with R1.
The overall frequency of the PWM signal in this circuit is determined by the values of R1 and C1. In the schematic above, this has been set to 144 Hz.
To compute the component values for other frequencies, use the formula:
Frequency = 1.44 / (R1 * C1)
In this circuit, the output pin is used to charge and discharge C1, rather than the discharge pin. This is done because the output pin has a "totem pole" configuration. It can source and sink current, while the discharge pin only sinks current. Note that the output and discharge pins go HIGH and LOW at the same time in the oscillator cycle.
The discharge pin is used to drive the output. In this case, the output is a IRFZ46N MOSFET. The gate of the MOSFET must be pulled high as the discharge pin is open collector only. Being an N channel MOSFET, the IRFZ46N will conduct from drain to source when the gate pin rises above 4 volts or so. It will stop conducting when the gate voltage falls below this voltage. The configuration of the output also serves to invert the signal from the 555 circuit.
There you have it, a simple 555 PWM oscillator! I hope this is helpful and generates more interest in electronics and robotics. Questions and suggestions can be posted to the DPRG mailing list. Complaints should be kept to yourself. :-)

PCB Trace Width Calculator

http://circuitcalculator.com/wordpress/2006/01/31/pcb-trace-width-calculator/


jump to navigation

PCB Trace Width Calculator January 31, 2006

This Javascript web calculator calculates the trace width for printed circuit boards based on a curve fit to IPC-2221 (formerly IPC-D-275). Also see the via calculator.
New features:
  • Results update as you type
  • Several choices of units
  • Units and other settings are saved between sessions
  • Blog format allows user comments
Inputs:

Current Amps
Thickness
Optional Inputs:

Temperature Rise Deg
Ambient Temperature Deg
Trace Length
Results for Internal Layers:

Required Trace Width
Resistance Ohms
Voltage Drop Volts
Power Loss Watts
Results for External Layers in Air:

Required Trace Width
Resistance Ohms
Voltage Drop Volts
Power Loss Watts
Notes:
The trace width is calculated as follows:
First, the Area is calculated:
Area[mils^2] = (Current[Amps]/(k*(Temp_Rise[deg. C])^b))^(1/c)
Then, the Width is calculated:
Width[mils] = Area[mils^2]/(Thickness[oz]*1.378[mils/oz])
For IPC-2221 internal layers: k = 0.024, b = 0.44, c = 0.725
For IPC-2221 external layers: k = 0.048, b = 0.44, c = 0.725
where k, b, and c are constants resulting from curve fitting to the IPC-2221 curves
For geometry diagrams, click on the pictures below.
pcb-trace-geometry-2.png     pcb-trace-geometry-1.png For frequently asked questions, see the comments.

MAnejo de Protocolo de Control Remoto IR Infrarrojo JVC analizador lógico

http://www.jmnlab.com/receptorir/receptorir.html

Receptor IR.               





Buscando programas en el pc he encontrado uno de los primeros que hice para un pic en ensamblador para parte de un robot que nunca llegó a andar.

Una forma sencilla y barata de controlar un robot o circuito a distancia es usar un mando infrarrojo, como puede ser el de la televisión, cadena etc.. de los muchos que hay por casa. Barato porque sólo necesitaremos un receptor y una resistencia que conectar al microcontrolador, es decir entre uno y dos euros. Como receptor he utilizado un TSOP1738, que se encarga de demodular la señal enviada por el mando y nos la da en una línea en serie. Tiene 3 patas, dos de alimentación y la salida, en la que debemos colocar una resistencia de pull-up y conectarla al microcontrolador. Su montaje es el siguiente:

Circuito TSOP1738



Cada fabricante suele usar sus propios protocolos, por lo que primero tenemos que saber que es lo que buscamos en esa salida que nos proporciona el TSOP.  Para esto yo he usado un analizador lógico de  pc, que nos permite ver los unos y ceros que tienen lugar durante un tiempo, su precio está sobre los 150, 200 euros y nos será útil a la hora de trabajar con microcontroladores para comprobar su correcto funcionamiento. Es recomendable hacerse con uno que su soft tenga un analizador de protocolos. El que yo uso de 8 canales lo compre por unos 180 euros (lo más barato que encontre en su día) .

Analizador lógico.


Para ver los datos que recibimos del mando conectamos un canal del analizador lógico a la salida del TSOP, y procedemos a  pulsar botones. En este caso se está usando un mando de JVC y al pulsar un botón nos manda lo siguiente.

Mando JVC


Esa señal es la que sale del mando cuando pulsamos un botón. Como se puede ver la señal comienza cuando baja la línea, con un pulso de 8.4 ms seguido de uno de 4.2 ms, esto sólo se realiza una vez para indicar que se ha pulsado el botón y diferenciar de cuando se mantiene pulsado, la señal se repite cada 50 ms esta vez sin el pulso de inicio de 8 y 4 ms. Para diferenciar entre 1 y 0 se mide el tiempo que pasa entre dos flancos de bajada, 1 ms corresponde a un 0 y 2.1 ms a un 1, en este ejemplo se mandan 16 bits (8 de dirección y 8 de dato según el protocolo de JVC).  En este caso tenemos 11000101 (197) y 01111000 (120).

Por cada botón nuestro micro va a recibir dos bytes, el primer byte es de dirección, dice para que componente del equipo receptor es el segundo byte que sale del mando, por lo que en el mando nos encontraremos con unos cuántos botones que mandan el mismo primer byte. En este caso en el mando sólo había dos bytes de dirección, es decir todos los botones mandaban uno u otro.

Una vez que sabemos lo que sale del mando tenemos que capturarlo, interpretarlo y usarlo.

Para capturarlo se puede hacer de varias maneras, usando algún periférico del micro para protocolos serie, o en mi caso de la forma larga mediante una interrupción activada por el flanco de bajada de la línea del TSOP y contando tiempos entre flancos de bajada. La ventaja de programar en ensamblador es que en todo momento sabemos lo que está haciendo el microcontrolador y podemos tener un control del tiempo exacto.

Cada instrucción de nuestro programa en ensamblador del microcontrolador tarda una cantidad de ciclos de reloj en ejecutarse, el reloj es el cristal que conectamos externo que puede ser de varios KHz, MHz, o un oscilador interno propio del microcontrolador del orden de KHz a MHz.

Por ejemplo si tenemos el siguiente código para pic:

***************************************************
***************************************************
    org 0
    goto Start
    org 5
Start
    bsf STATUS,RP0        ; select Register Page 1
    bcf TRISC,0                ; make IO Pin C.0 an output
    bcf STATUS,RP0        ; back to Register Page 0
MainLoop

    bcf PORTC,0              ; turn on LED C0
    bsf PORTC,0              ; Turn off LED C0
    goto MainLoop            ; Do it again...
    end

***************************************************
***************************************************

Nuestro programa hace lo que tenemos dentro del  Mainloop de forma repetida, es decir haríamos 3 instrucciones en bucle: 
"bcf PORTC,0" y " bsf PORTC,0" instrucciones de 4 ciclos de reloj, y "goto MainLoop"  instrucción de 8 ciclos de reloj. Es decir cada iteracción del bucle serían 4+4+8 = 16 ciclos de reloj.

Si colocamos el osciloscopio en el puerto C0 tendremos una señal cuyo período es función del valor del oscilador. Por ejemplo si nuestro oscilado funciona a 16 MHz, en el port c tendremos una señal de 16 MHz/ 16 ciclos de reloj, es decir 1 MHz. Nuestro bucle de 3 instrucciones se realizaría en 1 microsegundo.

Cristal de 16 MHz


Primero se realiza la instrucción que pone a cero el pin C0, 0.25 uS a cero la salida. Después ponemos el pin del puerto a 1 0.25 uS y luego con este pin a 1 volvemos a la primera instrucción, esto tarda 0.5 uS, por lo que nos encontramos con una señal con un duty del 75%.

Si por ejemplo utilizamos el oscilador interno del pic a 4 MHz, tendríamos la siguiente salida:

Oscilador 4 MHz


La frecuencia de la señal es 4 MHz / 16 ciclos de reloj = 250 Khz, es decir el bucle de 3 instrucciones se realizaría en 1/250KHz = 4 microsegundos. Luego la primera instrucción tarda 1 uS, la siguiente otro uS y el goto 2 uS, en todal los 4 uS.

De esta forma podemos calcular lo que tarda en realizarse un trozo de código de nuestro programa, que usaremos para capturar los unos y los ceros mandados por el TSOP17.

Nuestro código para capturar la señal salta mediante una interrupción en RB0, cuando se detecta un flanco de bajada en este puerto salta nuestra interrupción y pasamos a ejecutar su código (repito que hay formas más adecuadas de hacerlo), por lo que tenemos que medir el tiempo que pasa entre flancos de bajada para saber si nos llega un uno y un cero, y esto lo hacemos incrementado un contador cada 0.1 ms en un registro del pic, para ello debemos conocer cuánto tarda en ejecutarse cada instrucción.

Si entre dos flancos de bajada nuestro contador vale menos de un valor mínimo o más de uno máximo nos salimos de la interrupción con una condición de error, ya que ningún valor de 1 o 0 se corresponde con estos tiempos, estamos ante un ruido. Si vale más de 0.8 ms estamos ante un 0, y si vale más de 1.7 ms ante un uno. De esta forma capturamos los 1 y 0 y los almacenamos en dos registros del pic.

Una vez que tenemos un montón de unos y ceros debemos de saber que hacer con ellos. Si queremos que nuestro circuito realice una función con cada botón, sólo debemos comparar el valor de cada registro con un valor en otro registro perteneciente a ese botón, y ejecutar cierta acción cuando los registros sean iguales.

En este caso lo que se ha hecho es convertir esos registros en binario a decimal, y sacar este valor convertido por un LCD para comprobar que el valor leído es el mismo que el visto en el analizador lógico, y de esta forma comprobar que nuestro programa funciona. Sobre el tema del LCD pongo un link en español de ionitron donde explica bien el tema http://www.x-robotics.com/rutinas.htm#LCD. Se podía haber sacado en unos y ceros sin convertir a decimal, pero un valor decimal siempre es más fácil de identificar que 16 unos y ceros seguidos.

En el analizador lógico teníamos el 197 y el 120 (tecla + del mando) recibidos por el TSOP1738, se puede ver como esos unos y ceros son capturados, convertidos a decimal y llevados al LCD.

Foto conjunto.



El circuito del pic es un circuito de pruebas con un 16F877A orientado hacía robótica, se puede ver un L298 y algunos componentes más. A la izquierda el receptor de infrarrojos y abajo el LCD con los valores recibidos por el receptor.

Agrego todo el programa al final, fue uno de los primero que hice en ensamblador para probar las interrupciones y tiempos del pic, todos los botones vistos en el analizador lógico se corresponden con los leídos en el LCD, así que supongo que funciona. De todas formas para implementar esto lo mejor es usar un periférico del microcontrolador para tal fin.

Video de funcionamiento. El color azul del led indica que recibe dato.


Para cualquier duda, comentario, corrección etc...

Gracias por pasar por aquí. Saludos.





Código Pic.

;    Designed to run at 20MHz
    list p=16F877a
    #include p16F877a.inc


    __CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _LVP_OFF & _BODEN_OFF

;******************************* DEFINICIONES***************************************************

#DEFINE LED1 PORTA,3 ;Rojo
#DEFINE LED2 PORTA,5 ;Azul
#DEFINE LED3 PORTC,5 ;Verde
#DEFINE PULSADOR2 PORTA,1
#DEFINE DATO0 PORTD,0
#DEFINE DATO1 PORTD,1
#DEFINE DATO2 PORTD,2
#DEFINE DATO3 PORTD,3
#DEFINE DATO4 PORTD,4
#DEFINE DATO5 PORTD,5
#DEFINE DATO6 PORTD,6
#DEFINE DATO7 PORTD,7
#DEFINE ENABLE PORTE,2
#DEFINE RS PORTE,0
#DEFINE W_R PORTE,1
#DEFINE LCD_DATOS PORTD
#DEFINE LCD_CTRL PORTE
#DEFINE IR PORTB,0
#DEFINE PIN_PRUEBA PORTA,0
#DEFINE PIN_PRUEBA2 PORTA,2
#DEFINE PIN_PRUEBA3 PORTC,0

;****************************** REGISTROS RAM ***************************************************

    cblock 0x20
Delay0                    ; Assign an address to label Delay1
Delay1
Delay2
Delay3
DELAY4
DELAY5   
W_TEMP
STATUS_TEMP
CUENTA
UNIDADES
DECENAS
CENTENAS
DATO1IR
DATO2IR
TICTAC
INT_CONTROL   
INT_CONTROL_OLD   
CONTADOR1       

    endc

;**************************** POSICIONES *********************************************************

    ORG 0                ; Posición de memoria donde se coloca la instrucción.
    GOTO Start            ; Salto a Start, se ejecutará la instrucción debajo de Start.
   
    ORG 4
    GOTO ISR

    ORG 5                ; Salta el vector de interrupción

;***************************** CONFIGURAR REGISTROS ************************************************

Start                    ; Inicio del programa
   
;        ****************** BANCO 0 **************************************************************
    BCF STATUS, RP0    
    BCF STATUS, RP1     ; Seleciona el Bank0

    CLRF PORTA             ; Initialize poerts by clearing output                   
    CLRF PORTB            ; data latches
    CLRF PORTC
    CLRF PORTD
    CLRF PORTE

    MOVLW B'10010000'
    MOVWF INTCON        ;GIE e INTE, bit 1 flag de INTE


;        ******************** BANCO 1 **************************************************************

    BSF    STATUS,RP0        ; select Register Page 1

    BCF OPTION_REG,INTEDG    ;Flanco de bajada

    MOVLW B'00000000'    ;Interruptores son entradas
    MOVWF TRISA       
    MOVLW B'00000001'
    MOVWF TRISB
    CLRF TRISC
    CLRF TRISD
    CLRF TRISE

    MOVLW 0X06            ;Configurar los pin de A
    MOVWF ADCON1        ;como entradas digitales.

    BCF STATUS, RP0        ;Bank0


;************************ INICIO PROGRAMA ****************************************************************
           
    BSF LED2            ;Parpadeo de Reset
    CALL Delay_2
    BCF LED2

    CALL INICIALIZA_LCD
    MOVLW B'00000001'    ;Clear Display
    CALL LCD_COMANDO
    MOVLW B'00000110'    ;Entry mode set
    CALL LCD_COMANDO
    MOVLW B'00001110'    ;Activa lcd y cursor
    CALL LCD_COMANDO

    BCF PIN_PRUEBA2
    BCF PIN_PRUEBA


;************************** PROGRAMA PRINCIPAL ********************************************************   

MAIN_LOOP
    BSF LED1
    CALL Delay_2
    BCF LED1
    CALL Delay_2

    GOTO MAIN_LOOP

;*************************** INTERRUPCIONES*************************************************************

ISR

    MOVWF W_TEMP            ;Salva W y Status
    SWAPF STATUS,0
    MOVWF STATUS_TEMP
    BSF LED2
    BCF LED1
    BCF LED3
    CLRF TICTAC
    CLRF DATO1IR
    CLRF DATO2IR
    CLRF CONTADOR1
    CLRF INT_CONTROL        ;bit 7 entrada IR, bit 3 y 4 cambio de byte y salida, bit 0:2 contador
    CLRF INT_CONTROL_OLD
    BCF PIN_PRUEBA
    BCF PIN_PRUEBA2
    BCF PIN_PRUEBA3


ISR_LOOP


;            ********* Se mira el pin de entrada, si no cambia se va a SUBIR_TIC ************************


    BTFSS IR                ;Si es cero se ejecuta la siguiente,PORTB,0 ;0.2
    GOTO PONER_A_CERO                                                    ;---->0.6
    BSF INT_CONTROL,7                                                    ;0.6
    GOTO COMP_ENTRADA                                                    ;---->1
PONER_A_CERO                                                            ;<----0.6
    NOP                                                                    ;0.8
    BCF INT_CONTROL,7                                                    ;1
COMP_ENTRADA                                                            ;<----1
    MOVFW INT_CONTROL_OLD                                                ;1.2
    XORWF INT_CONTROL,W        ;Si son iguales Z=1                            ;1.4
    BTFSS STATUS,Z            ;Si es 0 se ejecuta la siguiente            ;1.6                                   
    GOTO COMPARAR_TIC                                                    ;--->2

;************************** Incrementar el TIC **********************************************************

    NOP                                                                                 ;2
    NOP                                                                                 ;2.2
    NOP                                                                                 ;2.4
    NOP                                                                                 ;2.6

SUBIR_TIC                                                                                ;<--2.6
    NOP                                                                                    ;2.8
    MOVLW D'140'            ;1 Tics = 0.1 mS                                            ;3
    SUBWF TICTAC,W                                                                        ;3.2
    BTFSC STATUS,C            ;Si TICTAC-W mayor que 0, ejecuta la siguiente                ;3.6
    GOTO  ERROR_IR                                                                        ;
    INCF TICTAC,F                                                                        ;3.8

                                                                                ;
    MOVLW D'158'                                                                        ;4
    MOVWF DELAY5                                                                        ;4.2
Delay_5loop                                                                                ;3*0.2*158=94.8
    DECFSZ DELAY5,f                                                                        ;
    GOTO Delay_5loop                                                                    ;
    MOVFW INT_CONTROL                                                                    ;99.2                                                           
    MOVWF INT_CONTROL_OLD                                                                ;99.4
    NOP                                                                                    ;99.6
    GOTO ISR_LOOP                                                                        ;100                                                                           
   


;          ********* El pin de entrada a cambiado, en función de los tics damos 1 o 0 *****************
;          ********* TIC menos 0.8 mS error, mayor de 0.8 mS escribir cero, mayor 1.7 mS escribir uno *
;           **********   Si es el flanco de subida no comparamos ***************************************

COMPARAR_TIC                                                                           
    BTFSC IR                                                                                               
    GOTO SUBIR_TIC                                                                       
   
                                                                       
    MOVLW D'26'                ;1 Tics = 0.1 mS                                       
    SUBWF TICTAC,W                                                                       
    BTFSC STATUS,C            ;Si TICTAC-W mayor que 0, ejecuta la siguiente           
    GOTO COMPARAR_SALIDA         
                                                   
    MOVLW D'17'                ;1 Tics = 0.1 mS                                   
    SUBWF TICTAC,W                                                               
    BTFSC STATUS,C            ;Si TICTAC-W mayor que 0, ejecuta la siguiente   
    GOTO ALMACENAR_UNO                                                       
                                                                           
    MOVLW D'8'                ;1 Tics = 0.1 mS                               
    SUBWF TICTAC,W                                                           
    BTFSC STATUS,C            ;Si TICTAC-W mayor que 0, ejecuta la siguiente   
    GOTO ALMACENAR_CERO                                                           
                                                                           

   
ERROR_IR                                                                                                                                                                                                                               
    BCF LED2                                                                           
    GOTO POP                                                   

COMPARAR_SALIDA
    MOVFW INT_CONTROL                                                                                                                           
    MOVWF INT_CONTROL_OLD                                                               
    CLRF TICTAC                                                                                                                                               
    GOTO ISR_LOOP
                                                                       
   
                                                                       
                                                                                                                                                                                                                                                                                                                                                   
ALMACENAR_CERO                                                                           
    BTFSC INT_CONTROL,3    ;Si el bit 3 es uno se ejecuta la siguiente, vale 8 o mas.   
    GOTO ALMACENAR_DATO2                                                               
    BCF STATUS,C
    RLF DATO1IR,F                                                                                                                                               
    GOTO ALMACENAR_SALIDA                                                               
ALMACENAR_DATO2   
    BCF STATUS,C                                                                   
    RLF DATO2IR,F                                                                                                                                       
    GOTO ALMACENAR_SALIDA                                                               
                                                                                       
ALMACENAR_UNO                                                                           
    BTFSC INT_CONTROL,3    ;Si el bit 3 es uno se ejecuta la siguiente, vale 8 o mas.   
    GOTO ALMACENAR_DATO2_1   
    BCF STATUS,C                                                           
    RLF DATO1IR,F                                                                       
    INCF DATO1IR,F                                                                                                                                       
    GOTO ALMACENAR_SALIDA                                                               
ALMACENAR_DATO2_1   
    BCF STATUS,C                                                                   
    RLF DATO2IR,F                                                                       
    INCF DATO2IR,F                                                                                                                                       
    GOTO ALMACENAR_SALIDA                                                               
                                                                                       

ALMACENAR_SALIDA                                                                       
    INCF INT_CONTROL,F   
    BTFSC INT_CONTROL,4    ;Si el bit 4 es uno se ejecuta la siguiente, vale 16 o mas.   
    GOTO DATOS_A_LCD                                                                                                                                   
    GOTO COMPARAR_SALIDA                                                               
   

DATOS_A_LCD
   

    MOVLW B'10000000'   
    CALL LCD_COMANDO

    MOVFW DATO1IR
    CALL BINARIO_LCD
    MOVFW CENTENAS
    CALL LCD_ESCRIBIR
    MOVFW DECENAS
    CALL LCD_ESCRIBIR
    MOVFW UNIDADES
    CALL LCD_ESCRIBIR
   
    MOVLW B'11000000'
    CALL LCD_COMANDO

    MOVFW DATO2IR
    CALL BINARIO_LCD
    MOVFW CENTENAS
    CALL LCD_ESCRIBIR
    MOVFW DECENAS
    CALL LCD_ESCRIBIR
    MOVFW UNIDADES
    CALL LCD_ESCRIBIR


POP
    SWAPF STATUS_TEMP,0
    MOVWF STATUS
    MOVFW W_TEMP
    BCF INTCON,INTF
    BCF LED2
    RETFIE

;********************************** LCD ****************************************************************

INICIALIZA_LCD
    CALL Delay
    CLRF LCD_CTRL
    MOVLW B'00111000'    ;8 bits, 2 líneas y 5x8 puntos
    MOVWF LCD_DATOS
    CALL LCD_E
    CALL Delay
    RETURN

LCD_E
    BSF ENABLE
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF ENABLE
    RETURN

LCD_COMANDO   
    CLRF LCD_CTRL
    MOVWF LCD_DATOS
    CALL LCD_E
    CALL Delay   
    RETURN

LCD_ESCRIBIR
    CLRF LCD_CTRL
    BSF RS
    MOVWF LCD_DATOS
    CALL LCD_E
    CALL Delay
    RETURN

;********************************** BINARIO A LCD *****************************************************

BINARIO_LCD            ;Para registros de 8 bits, convierte a centenas, decenas y unidades.

    MOVWF CUENTA
    CLRF UNIDADES
    CLRF DECENAS
    CLRF CENTENAS

CENT_LOOP
    MOVLW D'100'
    SUBWF CUENTA,W
    BTFSS STATUS,C
    GOTO DEC_LOOP
    INCF CENTENAS,F
    MOVWF CUENTA
    GOTO CENT_LOOP
DEC_LOOP
    MOVLW D'10'
    SUBWF CUENTA,W
    BTFSS STATUS,C
    GOTO UNIDAD
    INCF DECENAS,F
    MOVWF CUENTA
    GOTO DEC_LOOP
UNIDAD
    MOVF CUENTA,W
    MOVWF UNIDADES

    MOVLW B'00110000'
    ADDWF CENTENAS,1
    ADDWF DECENAS,1
    ADDWF UNIDADES,1

    RETURN

;********************************** DELAYS *************************************************************

Delay                    ;20 mS   
    MOVLW D'65'
    MOVWF Delay1
Delay_loop
    decfsz    Delay0,f    ; Waste time. 
    goto    Delay_loop    ; The Inner loop takes 3 instructions per loop * 256 loopss = 768 instructions
    decfsz    Delay1,f    ; The outer loop takes and additional 3 instructions per lap * 256 loops
    goto    Delay_loop    ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
                        ; call it a two-tenths of a second.
    RETURN

Delay_2                    ;0.86 s
    MOVLW D'22'
    MOVWF Delay2
Delay_2loop
    decfsz    Delay0,f    ; Waste time. 
    goto    Delay_2loop    ; The Inner loop takes 3 instructions per loop * 256 loopss = 768 instructions
    decfsz    Delay1,f    ; The outer loop takes and additional 3 instructions per lap * 256 loops
    goto    Delay_2loop    ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
                        ; call it a two-tenths of a second.
    decfsz     Delay2,f
    goto     Delay_2loop
    return

Delay_3                ;50.2 uS
    MOVLW D'82'
    MOVWF Delay3
Delay_3loop
    DECFSZ Delay3,f
    GOTO Delay_3loop
    RETURN

    end





Reglas Normas Normas básicas para el diseño de circuitos impresos

http://www.info-ab.uclm.es/labelec/solar/Componentes/CIRCUITOS_IMPRESOS.HTM


CIRCUITOS IMPRESOS

  1. La placa virgen
  2. Medios necesarios para el diseño de circuitos impresos
  3. Normas básicas para el diseño de circuitos impresos
  4. Proceso de diseño
  5. Proceso de realización de la placa
  6. Realización de un circuito de ejemplo

Antiguamente, para realizar un circuito electrónico: receptor de radio, receptor de televisión, alarmas, etc.– se recurría a lo que entonces se conocía: el cableado con hilo conductor. Este sistema daba lugar a gran cantidad de averías, además de la complejidad y voluminosidad de los montajes. La implantación de los circuitos impresos facilitó y simplificó enormemente las tareas de montaje y reparación de circuitos electrónicos.

LA PLACA VIRGEN
Una placa para la realización de circuitos impresos consiste en una plancha base aislante – cartón endurecido, bakelita o fibra de vidrio – de diversos espesores; los más comunes son unos 2 mm, y sobre la cual se ha depositado una fina lámina de cobre que está firmemente pegada a la base aislante. En la figura 4.1 se puede ver el corte de una placa de circuito impreso virgen, es decir, sin taladrar ni atacar.
 
MEDIOS NECESARIOS PARA EL DISEÑO DE UN CIRCU1TO 1MPRESO
Para diseñar un circuito impreso es preciso disponer de lo siguiente:
· Un esquema eléctrico. Este consiste en una representación de símbolos normalizados unidos por unas líneas que representan las conexiones (conductores); al lado de cada componente se debe reflejar la denominación de referencia y, optativamente, el valor del componente. Como ejemplo veamos el esquema reflejado en la figura 4.2.a.
· Una hoja de papel cuadriculado en décimas de pulgada. El motivo de utilizar este tipo de cuadrícula es que los componentes se fabrican siguiendo unas normas basadas en dicha cuadrícula de décimas de pulgada. En la figura 4.2.b se puede ver el fragmento de una cuadrícula de este tipo.
· Un lapicero, una goma de borrar, una regla y un compás o plantilla de círculos; optativamente se puede disponer de bolígrafos o rotuladores de varios colores para el acabado del diseño final.

NORMAS BÁSICAS PARA EL DISEÑO DE CIRCUITOS IMPRESOS
Aunque cada caso requiere un tratamiento especial y cada Empresa tendrá sus propias normas, se deben de tener en cuenta unas reglas básicas que podrían considerarse comunes y que pasamos a enumerar:
 1. Se diseñará sobre una hoja cuadriculada en décimas de pulgada, de modo que se hagan coincidir las pistas con las líneas de la cuadrícula o formando un ángulo de 45º con éstas, y los puntos de soldadura con las intersecciones de las líneas (Fig. 4.3.a).
2. Se tratará de realizar un diseño lo más sencillo posible; cuanto más cortas sean las pistas y más simple la distribución de componentes, mejor resultará el diseño.
 3. No se realizarán pistas con ángulos de 90º; cuando sea preciso efectuar un giro en una pista, se hará con dos ángulos de 135º (Fig. 4.3.b) ; si es necesario ejecutar una bifurcacion en una pista, se hará suavizando los ángulos con sendos triángulos a cada lado (Fig. 4.3.c).
 4. Los puntos de soldadura consistirán en círculos cuyo diámetro será, al menos, el doble del ancho de la pista que en él termina.
 5. El ancho de las pistas dependerá de la intensidad que vaya a circular por ellas. Se tendrá en cuenta que 0,8 mm puede soportar, dependiendo del espesor de la pista, alrededor de 2 amperios; 2 mm, unos 5 amperios; y 4,5 mm, unos 10 amperios. En general, se realizarán pistas de unos 2 mm aproximadamente.
6. Entre pistas próximas y entre pistas y puntos de soldadura, se observará una distancia que dependerá de la tensión eléctrica que se prevea existirá entre ellas; como norma general, se dejará una distancia mínima de unos 0,8 mm.; en casos de diseños complejos, se podrá disminuir los 0,8 mm hasta 0,4 mm. En algunas ocasiones será preciso cortar una porción de ciertos puntos de soldadura para que se cumpla esta norma (Fig. 4.3.d)
7. La distancia mínima entre pistas y los bordes de la placa será de dos décimas de pulgada, aproximadamente unos 5 mm.
8. Todos los componentes se colocarán paralelos a los bordes de la placa (Fig. 4.3.e).
9. No se podrán colocar pistas entre los bordes de la placa y los puntos de soldadura de terminales de entrada, salida o alimentación, exceptuando la pista de masa.
10. No se pasarán pistas entre dos terminales de componentes activos (transistores, tiristores, etc.).
11. Se debe prever la sujeción de la placa a un chasis o caja; para ello se dispondrá un taladro de 3,5 mm en cada esquina de la placa.
12. Como norma general, se debe dejar, una o dos décimas de pulgada de patilla entre el cuerpo de los componentes y el punto de soldadura correspondiente (Fig. 4.3.f).
PROCESO DE DISEÑO
Para proceder a diseñar una placa de circuito impreso, es necesario conocer el tamaño y la forma física de los componentes, o, mejor aún, disponer de ellos.
No existe una norma fija para comenzar el diseño, pero expondremos una de las que estimamos mas sencillas. Como ejemplo, consideremos el esquema eléctrico de la figura 4.4.a; en primer lugar, comenzamos por marcar los límites de la placa sobre la hoja cuadriculada normalizada (recordemos que se trata de una cuadrícula en décimas de pulgada) ; a continuación se sitúan los terminales (espadines) A y B, y se distribuyen las resistencias, por ejemplo según la figura 4A.b; como vemos en el esquema eléctrico, las resistencias R1, R2, y R3 están unidas por uno de sus extremos y, a la vez, unidas al terminal A; por tanto tendremos que trazar una pista uniendo un extremo de R1 con un extremo de R2 con un extremo de R3 y con el terminal A (Fig. 4.4.c). Continuando con el esquema, vemos que las otras patillas de R1, R2 y R3 están unidas entre sí, y, a su vez, unidas con una de las patillas de R4; trazaremos, entonces, una pista que las una (Fig. 4.4.d). Continuaremos de la misma forma, hasta que nos encontremos con el terminal B (Fig. 4.4.e). Una vez realizado el boceto, pasaremos a trazar las pistas a su tamaño real, como se refleja en la figura 4.4.f.

PROCESO DE REALIZACIÓN DE LA PLACA
Para transferir el diseño terminado en el apartado anterior, procederemos del modo siguiente:
· Se toma la placa virgen y se coloca bajo el diseño realizado, haciendo que coincidan los bordes de éste con los de aquélla y de forma que la cara de cobre de la placa toque el papel. Para que no se muevan ni el papel ni la placa, se aconseja sujetarlos con cinta adhesiva.
· Con una punta de trazar o un punzón, pinchar exactamente en el centro del punto de soldadura, con el fin de que esta marca quede señalada en la cara de cobre. Se tendrá cuidado de no olvidar ningún punto de soldadura.
· Una vez hecho esto, se separan la placa y el papel del diseño; se notarán los punteados realizados en la operacion anterior.
· Se limpia la cara de cobre de manera que no conserve ningún tipo de suciedad. Esta operación se puede hacer de diversas formas: con agua y jabón, con estropajo en seco o con agua, etc., pero se aconseja hacerlo con goma de borrar.
· Con un rotulador resistente al ataque ácido y, a ser posible, con ayuda de una plantilla de círculos, se dibujarán los círculos correspondientes a los puntos de soldadura, cuidando de que queden perfectamente centrados sobre los puntos marcados. Se tendrá la precaución de no tocar el cobre con la mano, para evitar mancharlo.
· Cuando se haya terminado de dibujar los círculos, con el mismo rotulador y la ayuda de una regla, se trazarán las pistas sobre la cara de cobre, cuidando que sean exactas a las que se trazaron en el papel de diseño.
· Alcanzado este punto, se puede optar por taladrar o por atacar; se aconseja atacar primero para evitar rayar las pistas dibujadas.
· Para proceder al atacado, se puede recurrir a varios tipos de mordiente líquido atacador) : El Cloruro Férrico (muy lento, pero poco corrosivo), el Ácido Clorhídrico (rápido, pero muy corrosivo), u otros métodos que se distribuyen como atacadores rápidos en el comercio. Si el atacado se realiza en el domicilio, se aconseja usar Cloruro Férrico, pues prácticamente carece de emisión de gases nocivos; en cualquier caso, úsese en lugares bien ventilados; se tendrá que evitar el contacto de cualquier metal con el mordiente, pues aquél sería atacado. En nuestro caso, aplicaremos el Ácido Clorhídrico; para ello, tomaremos una medida de este ácido, dos medidas de agua natural (del grifo) y tres medidas de Agua Oxigenada de 110 volúmenes.
¡Cuidado!: Estos líquidos, así como la mezcla, son altamente corrosivos. Si no se manejan con mucho cuidado, pueden provocar quemaduras en la piel o las ropas, por lo que debe prestarse La máxima atención cuando se manipulen. Si, por accidente, el mordiente tocara los ojos o la boca, lavar inmediatamente con agua abundante y acudir urgentemente u un médico.
 Si el atacado se realiza en un laboratorio perfectamente acondicionado, se recomienda utilizar la mezcla de Acido clorhídrico y Agua oxigenada; en caso contrario, por ejemplo en el domicilio particular, se deberá utilizar un producto menos tóxico: cloruro férrico, atacador rápido, etc.
 Depositada la mezcla en una cubeta de plástico (nunca metálica), ya se puede introducir la placa. Dejar actuar a la mezcla dando un ligero movimiento a la cubeta, sin perder de vista la placa, puesto que suele tardar muy poco tiempo en eliminar el cobre sobrante. Cuando se vea que en la placa no queda más cobre que el propio de las pistas, con ayuda de unas pinzas de plástico, extraer la placa y, cuidando el goteo que se produce, colocarla bajo el grifo y lavarla con agua abundante. En el momento de desechar el mordiente utilizado, elegir un desagüe que carezca de tuberías metalicas, pues resultarían atacadas y se podrían producir averías en dichos conductos.
·  Cuando ya esté la placa seca, se eliminara la tinta que cubre el cobre; para ello se puede utilizar disolvente o estropajo.
·  A continuación se procede al taladrado.
Atención a la máquina taladradora: como tal máqainu, si no se maneja con precaución puede ser muy peligrosa.
Para el taladrado de los puntos de soldadura, se usará una broca de 1 mm, exceptuando los puntos de soldadura de espadines y resistencias ajustables, que se efectuarán con broca de 1,25 mm.
·  Terminado el taladrado, sólo queda soldar los componentes a la placa: éstos se insertarán por el lado del aislante para que las patillas del componente sobresalgan por la cara de pistas de cobre y así poder soldarlas (Fig. 4.5).
·  Cuando se hayan terminado las soldaduras, con un alicate de corte se cortarán los trozos sobrantes de las patillas.
Y con esto habremos terminado el diseno, realización, atacado y montaje de una placa de circuito impreso.

Realización de un circuito de Ejemplo
Se diseñará el circuito impreso para el esquema representado en la figura 4.6, teniendo en cuenta las medidas que se dan en la misma figura.
 Para el diseño se necesita el material siguiente:
·  Papel cuadriculado en décimas de pulgada (de venta en papelerías).
·  Lápiz de mina blanda.
·  Goma de borrar.
·  Optativo, plantilla de círculos y regla.
Para la realización de la placa:
·  Punta de trazar o punzón.
·  Rotulador resistente al ácido (de venta en tiendas de electrónica)
·  Plantilla de círculos.
·  Regla.
·  Brocas de 1 mm y 1,25 mm.
 Para el atacado con ácido clorhídrico:
·  Ácido clorhídrico.
·  Agua oxigenada de 110 Vol.
·  Agua del grifo.
·  Una probeta graduada para medir las proporciones de la mezcla.
·  Una cubeta de plástico.
·  Pinzas de plástico.
Cuando se haya terminado el diseño, se procederá a transferir éste a la placa y, seguidamente, al atacado.
Copiar en la cuadrícula siguiente el diseño exacto realizado de este ejemplo: