miércoles, 30 de abril de 2014

  • Ley de corriente de Kirchhoff (KCL)

" La suma  algebraica de  las corrientes que entran y salen de un nodo es igual a cero ".
.


Las corrientes que entran al nodo se les asigna el signo (+) y a las corrientes que salen se les asigna el signo (-).

Otra forma de decir la ley de corriente de kirchhoff es:

La suma algebraica de las corrientes que entran en un nodo es igual a la suma algebraica de las corrientes que salen del nodo. 
En efecto despejando en (1)  las corrientes que salen del nodo nos queda:


Una expresión compacta de KCL es:

Ley de tensión de Kirchhoff (KVL)

"La suma algebraica de las tensiones alrededor de cualquier trayectoria cerrada es cero".

Se puede aplicar KVL a un circuito de varias maneras diferentes. un método que propicia menos errores de escritura de ecuaciones, en comparación con otros, consiste en moverse mentalmente alrededor de la trayectoria cerrada  en la dirección de las manecillas del reloj y escribir de manera directa la tensión de cada elemento a cuya terminal (+) se entra, y después expresar el negativo de cada tensión que se encuentre primero en el signo (-).

Aplicando lo anterior al lazo de la siguiente figura:


En la figura nos damos cuenta que el signo marcado(primer signo con el que se encuentra i1) en amarillo es el signo que lleva la tensión correspondiente. 

Así la ecuación en esta malla aplicando KVL nos queda:


Despejando la ecuación nos queda:


Una expresión corta de KVL es:


Ley de Ohm

La resistencia es el elemento pasivo mas simple, la ley de Ohm establece que la tensión entre los extremos de los materiales conductores es directamente proporcional a la corriente que fluye a través del material, o:

V= R( i )

donde R= resistencia, la unidad de la resistencia es el ohm, que corresponde a 1 V/A. La ecuación V=R(i) es una ecuación lineal.

.EJEMPLO 1

Para el siguiente circuito calcular i2, i3 e i4.


 Si nos damos cuenta este circuito solo cuenta con dos nodos, el nodo de referencia (conectado a tierra) y el nodo A. La tensión (voltaje) entre el nodo de referencia y el nodo A es VA.
Aplicando KCL al circuito:

 Aplicando la ley de ohm obtenemos:

 Sustituyendo los valores de i2, i3 e i4 en (1):

Factorizando VA y despejando (3) :


Sustituyendo los valores de i1, R2, R3, R4 en (4) y haciendo los cálculos obtenemos el valor de VA:

 Sustituyendo el valor de VA (5), R2, R3 y R4 en la ecuaciones dadas en (2):

  Comprobación:


EJEMPLO 2
 
Para el siguiente circuito calcular V2, V3 y V4.
 
 
Aplicando KVL al circuito:
 

Se aplica la ley de ohm para saber el valor de V2, V3 y V4:


Sustituyendo (2) en (1) y factorizando i :


Despejando i de (3) y sustituyendo los valores de R1, R2, R3 y V1:


Sustituyendo el valor de i (4) en (2) obtenemos:

 
 Comprobacion:



  •  REFERENCIA

     Análisis de circuitos en ingeniería, William H. Hayt Jr., Jack E. Kemmerly, Steven M. Durbin.


miércoles, 26 de febrero de 2014

 FOR

Se utiliza para repetir alguna sentencia

For (inicialización; condición de finalización; incremento)
{
sentencias;
}

En las expresiones del FOR la inicialización es una variable a la cual se le asigna un valor inicial con el que controlar en bucle. Por ejemplo si se utiliza la variable a se puede indicar como inicialización a=0 (se le asigno un valor inicial de 0).

La condición de finalización sirve para evaluar ANTES de ejecutar las sentencias si es cierta o no, en caso de ser cierta se ejecutan las sentencias ( como prender o apagar un led, un motor, etc.). y en caso contrario se sale del FOR. Por ejemplo cuando a es igual a 9 (a=9) entonces se sale de la sentencia FOR.

Por ultimo, la expresión de incremento o decremento modifica la variable de control DESPUÉS de ejecutar el bucle. Por ejemplo si la variable a decrementa (a++), y la inicialización es a=0  y la finalización es a=9 entonces la variable a incrementa de 1,2,.....,8 en este intervalo se repite el bucle hasta que la variable a es igual a 9 (a=9) se sale del bucle.

Se pueden anidar bucles FOR utilizando distintas variables de control.

Si se ejecuta la siguiente expresión se consigue un BUCLE SIN FIN:

For( ; ;)
{
sentencias;
}


For (A=0; A=9; A++)
{
PORTB=0x01;
}

Ejemplo 1: temporizador de 9 a 0 segundos con PIC 16f84a.

MATERIAL:

1- PIC16f84a.

1- Crystal 4Mhz.
2- Capacitores cerámicos 22pf.
1- Pushbutton.
1- Resistor 10k.
1- Display 7 segmentos cátodo común.


7-Resistores de 220.

CÓDIGO:

#include <16f84a.h>
#use delay(clock=4000000)
#fuses xt,nowdt,noprotect,noput
#byte trisa=0x85
#byte trisb=0x86
#byte porta=0x05
#byte portb=0x06
byte display[10]={0xDB,0xFB,0x0B,0xF9,0xD9,0xCA,0x9B,0xB3,0x0A,0x7B};
int8 a;
void main(){
trisa=0xff;
trisb=0x00;
while(true){
if(bit_test(porta,0)==1){
for(a=1;a<10;a++){
portb=display[a];
delay_ms(1000);
}
}
else{
portb=display[0];
}
}
}
 // Cada vez que se aprieta el porta,0 se inicializa el temporizador hasta que llega a 0.

SIMULACION:



 SWITCH

Switch es un caso particular de una decisión múltiple

Swich (expresión)    // expresión puede ser a, b o por ejemplo el porta
{
case constante 1:     // constante 1 puede ser 1, 2,  o 0x01, 0x02 o 0b00001,000010
sentencias;              //podemos activar un puerto
break;
case constante 2:
sentencias;
break;
 ...........................
[default:                  
sentencias;]
 }


Evalúa la expresión y en orden a la constante adecuada realiza las sentencias asociadas. Si ninguno de los case corresponde a la constante se ejecuta default (este comando es opcional).
El comando break provoca la salida de swich, de lo contrario se ejecuta el siguiente case.
No puede existir dos case con la misma constante.
el switch tiene una ventaja en comparación con el if cuando se refiere a decisiones múltiples ya que con el if necesitamos anidar demasiados if.
El switch se puede utilizar cuando se tiene un gran numero de combinaciones  por ejemplo en un seguilineas al haber un gran numero de sensores y cada combinacion binaria de estos sensores realiza una acción en los motores, es conveniente utilizar un switch en lugar de anidar if.


Switch(A){
case 0:
bit_set(portb,0);
break;
case 1:
bit_set(portb,1);
break;
case 2:
bit_set(portb,2);
break;
}

Ejemplo 2: convertidor de binario a hexadecimal .

MATERIAL:

1- PIC16f887.
1- Cristal 8 Mhz.
2- Capacitores cerámicos.
2- Display 7 segmentos cátodo común.
14- Resistores de 220.
5- Resistores 10k.
1- Dipswitch 5 posiciones.
1- Fuente de 5v.

CÓDIGO:

#include <16f887.h>
#fuses hs,wdt
#use delay(clock=8000000)
#byte trisb=0x86
#byte trisa=0x85
#byte trisd=0x88
#byte portb=0x06
#byte porta=0x05
#byte portd=0x08
byte display[16]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB,0xEB,0xF8,0x71,0xBA,0xF1,0xE1};
byte display_2[4]={0x7B,0x0A,0xB3,0x9B};
int8 a;
void main(){
trisa=0xff;
trisb=0x00;
trisd=0x00;
portb=0x00;
portd=0x00;
while(true){
a=porta;
Switch (a){
case 0:
portd=display[0];
portb=display_2[0];
break;
case 1:
portd=display[1];
portb=display_2[0];
break;
case 2:
portd=display[2];
portb=display_2[0];
break;
case 3:
portd=display[3];
portb=display_2[0];
break;
case 4:
portd=display[4];
portb=display_2[0];
break;
case 5:
portd=display[5];
portb=display_2[0];
break;
case 6:
portd=display[6];
portb=display_2[0];
break;
case 7:
portd=display[7];
portb=display_2[0];
break;
case 8:
portd=display[8];
portb=display_2[0];
break;
case 9:
portd=display[9];
portb=display_2[0];
break;
case 10:
portd=display[10];
portb=display_2[0];
break;
case 11:
portd=display[11];
portb=display_2[0];
break;
case 12:
portd=display[12];
portb=display_2[0];
break;
case 13:
portd=display[13];
portb=display_2[0];
break;
case 14:
portd=display[14];
portb=display_2[0];
break;
case 15:
portd=display[15];
portb=display_2[0];
break;
case 16:
portd=display[0];
portb=display_2[1];
break;
case 17:
portd=display[1];
portb=display_2[1];
break;
case 18:
portd=display[2];
portb=display_2[1];
break;
case 19:
portd=display[3];
portb=display_2[1];
break;
case 20:
portd=display[4];
portb=display_2[1];
break;
case 21:
portd=display[5];
portb=display_2[1];
break;
case 22:
portd=display[6];
portb=display_2[1];
break;
case 23:
portd=display[7];
portb=display_2[1];
break;
case 24:
portd=display[8];
portb=display_2[1];
break;
case 25:
portd=display[9];
portb=display_2[1];
break;
case 26:
portd=display[10];
portb=display_2[1];
break;
case 27:
portd=display[11];
portb=display_2[1];
break;
case 28:
portd=display[12];
portb=display_2[1];
break;
case 29:
portd=display[13];
portb=display_2[1];
break;
case 30:
portd=display[14];
portb=display_2[1];
break;
case 31:
portd=display[15];
portb=display_2[1];
break;
case 32:
portd=display[0];
portb=display_2[2];
break;
case 33:
portd=display[1];
portb=display_2[2];
break;
case 34:
portd=display[2];
portb=display_2[2];
break;
case 35:
portd=display[3];
portb=display_2[2];
break;
case 36:
portd=display[4];
portb=display_2[2];
break;
case 37:
portd=display[5];
portb=display_2[2];
break;
case 38:
portd=display[6];
portb=display_2[2];
break;
case 39:
portd=display[7];
portb=display_2[2];
break;
case 40:
portd=display[8];
portb=display_2[2];
break;
case 41:
portd=display[9];
portb=display_2[2];
break;
case 42:
portd=display[10];
portb=display_2[2];
break;
case 43:
portd=display[11];
portb=display_2[2];
break;
case 44:
portd=display[12];
portb=display_2[2];
break;
case 45:
portd=display[13];
portb=display_2[2];
break;
case 46:
portd=display[14];
portb=display_2[2];
break;
case 47:
portd=display[15];
portb=display_2[2];
break;
case 48:
portd=display[0];
portb=display_2[3];
break;
case 49:
portd=display[1];
portb=display_2[3];
break;
case 50:
portd=display[2];
portb=display_2[3];
break;
case 51:
portd=display[3];
portb=display_2[3];
break;
case 52:
portd=display[4];
portb=display_2[3];
break;
case 53:
portd=display[5];
portb=display_2[3];
break;
case 54:
portd=display[6];
portb=display_2[3];
break;
case 55:
portd=display[7];
portb=display_2[3];
break;
case 56:
portd=display[8];
portb=display_2[3];
break;
case 57:
portd=display[9];
portb=display_2[3];
break;
case 58:
portd=display[10];
portb=display_2[3];
break;
case 59:
portd=display[11];
portb=display_2[3];
break;
case 60:
portd=display[12];
portb=display_2[3];
break;
case 61:
portd=display[13];
portb=display_2[3];
break;
case 62:
portd=display[14];
portb=display_2[3];
break;
case 63:
portd=display[15];
portb=display_2[3];
break;
}
}
}

SIMULACION:


 




REFERENCIA:
  • COMPILADOR C CCS Y SIMULADOR PROTEUS PARA MICROCONTROLADORES PIC.



lunes, 10 de febrero de 2014

-Compilador C CCS y simulador proteus para microcontroladores PIC 

-Eduardo Garcia Breijo




DESCARGAR:






miércoles, 15 de enero de 2014

 

MATERIAL:

1- PIC 16f887.


2- Display cátodo común.


1- Cristal de 8Mhz.
2- Capacitores cerámicos de 22pf.
3- Resistores de 10k.
16- Resistores de 220.
3- Pushbutton.
1- Borne (kulca).
1- Portaintegrados de 40 pines.

El programa del PIC lo realice en lenguaje C en el compilador CCS C, la simulación en  proteus y el PCB en PCBWizard. El circuito se debe alimentar con una fuente de 5v.

CÓDIGO:

#include <16f887.h>
#fuses hs,wdt
#use delay(clock=800000)
#byte trisb=0x86
#byte trisc=0x87
#byte trisd=0x88
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
byte display[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB};
byte display_2[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB};
int8 a;
int8 b;
void main(){
trisd=0x00;
trisc=0xff;
trisb=0x00;
inicio:
portd=display[0];
portb=display_2[0];
while(true){
if (bit_test(portc,1)==1){
delay_us(100);
a++;
p1:
if(bit_test(portc,1)==1){
portd=display[a];
goto p1;
}
}
if(a==10){
a=0;
b++;
portb=display_2[b];
}
if((b==10)||(bit_test(portc,2)==1)){
a=0;
b=0;
goto inicio;
}
}
}

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

int8 a= dato de 8 bits.
int8 b= dato de 8 bits.
a++= incremento del dato a.
b++= incremento del dato b.

Cada vez que se aprieta el pushbutton se incrementa el dato a cuando el dato llega a 10 (es decir a 9 en el primer display)  se incrementa el dato b y se borra el dato a (es decir el numero 10 en los diplays), así hasta que el dato b llega a 10 (es decir a 99 en los displays)  entonces se borran los datos para comenzar de nuevo el conteo.

Para saber el funcionamiento del if, while y los tris checar los siguientes tutoriales:



SIMULACIÓN: 

 

  PCB:

Hoja para imprimir.


Vista real del circuito.


 

DESCARGAR SIMULACIÓN, PCB  Y PROGRAMA EN C:



REFERENCIAS;

  • Compilador C CSS y simulador proteus para microcontroladores PIC, Eduardo García Breijo 



SIGUEME EN FECEBOOK

MI TWITTER

Translate