TODO SOBRE ELECTRONICA

Usted aprenderá los diferentes temas de Electrónica que se enseñan en universidades e institutos.

CANAL DE YOUTUBE

Tutoriales de los temas que se publican en blog. SUSCRIBETE

PROGRAMACION DE MICROCONTROLADORES PIC

Programacion en CCS Compiler de Microcontroladores PIC, sentencias y codigos de todos los programas. Archivos y libros relacionados a la programacion de PIC en lenguaje C.

ELECTRONICA BASICA

Conozca como funcionan y como se usan los componentes que encontramos en todo circuito electronico

LIBROS Y TEXTOS SOBRE ELECTRONICA

Libros, revistas y textos que le serviran para ampliar su conocimiento en los diferentes temas de la electrónica.Dale click en la pestaña LIBROS de la parte superior.

domingo, 13 de diciembre de 2015

CCS Compiler (PIC C Compiler) - Uso del Timer 0

TIMER 0

Este timer es un contador (registro) de 8 bits, se incrementado por hadware y es programable.
Su cuenta máxima es de 255(incremento constante e independiente)
  • Temporizador: Cuenta los pulsos internos del reloj.
  • Contador: Cuenta los eventos externos, a través del pin A4/T0CKI
Se puede insertar un preescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128 o 256.

El tiempo de desbordamiento del timer 0 se calcula según la siguiente ecuación:

TIMER 0 EN C

La función para configurar el timer 0 es:
setup_timer_0(modo);

donde modo:


Los distintos modos lo podemos agrupar de la siguiente manera:
ejm.:
setup_timer_0(rtcc_div_2 | rtcc_ext_l_to_h);

Para escribir un valor en el registro:

set_timer0(valor);
valor: entero de 8 bits

Para leer un valor actual del registro:
get_timer0();

LES DEJO LOS TUTORIALES PARA QUE COMPRENDAN MEJOR EL USO DEL TIMER 0

TIMER0 COMO TEMPORIZADOR


TIMER0 COMO CONTADOR


DESCARGA EL PROGRAMA Y LA SIMULACION EN


CCS Compiler (PIC C Compiler) - Comunicación Serial

COMUNICACIÓN SERIAL

Los microcontroladores PIC usan dos formas para poder comunicarse de forma serial. los cuales son:

USART

LA función del USART es la de transmitir y recibir datos en serie

TRANSMISIÓN SINCRONA:  Los datos se transfiere de forma continua, no existe límite de tamaño

Características:

  • Modo semi-duplex
  • La comunicación serie se transmite en una sola línea, en ambos sentidos.
  • No se pueden enviar información en ambos sentidos de forma simultánea
  • La transmisión puede ser maestro o esclavo

TRANSMISIÓN ASÍNCRONA:  En este modo se emplean relojes tanto en el emisor como el receptor

Características:
  • La frecuencia del reloj se acuerda antes de la transmisión
  • La sincronización se realiza durante la transmisión
  • Transmisión es full-duplex (se utilizan dos lineas, una de transmisión (Tx) y otra de recepción(Rx))
  • Cada trama de datos tiene un tamaño fijo y posee un bit de arranque(inicio) y un bit de parada(final).

FUNCIÓN PARA CONFIGURAR EL MODULO USART EN C
#USE RS232(opciones)
     Nos permite configurar las características del modulo USART


ejemplo:
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,parity=N,bits=8)

FUNCIONES DE TRANSMISION DE DATOS
  • putc(data)
  • putchar(data)
         data es un caracter de 8 bits
  • puts(string)
          string es una cadena de caracteres constante o una matriz de caracteres terminada con un cero
  • printf(fname,cstring,values)
         fname: funcion a utilizar para escribir la cadena indicada, por defecto se utiliza putc()
         cstring: cadena de caracteres o matriz de caracteres terminada en 0.
         values: valores a indicar en la cadena, se debe indicar %nt (revisar el post de uso del LCD)


FUNCIONES DE RECEPCION DE DATOS

  • value=getc()
  • value=getch()
  • value=getchar()
         value es un carácter de 8 bits. Espera recibir un carácter por la línea RS232 y devuelve su valor.
  • valor=kbhit()
          valor=0 (false) si getc() debe esperar a que llegue un carácter
          valor=1 (true) si ya hay un carácter para ser leído por getc()

LES DEJO ESTE TUTORIAL PARA QUE PUEDAN VER COMO SE REALIZA LA PROGRAMACION


DESCARGA EL PROGRAMA Y LA SIMULACION EN


sábado, 12 de diciembre de 2015

CCS Compiler (PIC C Compiler) - Conversor Analógico Digital (ADC)

CONVERSOR ANALÓGICO DIGITAL(ADC)

Como su propio nombre lo dice, lo que hace es convertir una señal analógica a digital.
Pasa por los siguientes procesos:

  • Muestreo de la señal analógica
  • Cuantificación
  • Codificación
Estos vendrían a ser los procesos mas básicos que se tiene que realizar para convertir una señal analógica a una digital, ya que puede haber otros procesos más.


El convertidor de aproximaciones sucesivas se utiliza en aplicaciones donde se necesitan altas velocidades de conversión. Se basa en realizar sucesivas comparaciones de forma ascendente o descendente hasta encontrar un valor digital que iguale la tensión entregada por el conversor D/A y la tensión de entrada.

CARACTERISTICAS

  • Rango de Entrada(Vin): Voltaje a leer por el módulo ADC.
  • Número de bits(N): Rango de conversión usado por el ADC. Puede ser 8 o 10 bits, definido por el programador
  • Resolución: Mínimo valor de lectura. viene definido por la siguiente relación.
  • Tensión de referencia(Vref): Es el voltaje base por la cual toma como punto de referencia el modulo ADC para poder hacer sus conversiones, puede ser valor absoluto de 0 - Vref o en un margen de -Vref a +Vref.
  • Tiempo de conversión(Tad): Tiempo que demora el ADC en realizar la conversión.
  • Error de conversión: Bits erróneos generados por una mala conversión, la cual se origina por una alta velocidad o una mala configuración del modulo.
También hay otra manera de expresarla resolución, en el cual intervienen el Vref

Si Vref+ = 5V y Vref- = 0V , tenemos
por ejemplo, si tenemos que la lectura es de 256 LSB, entonces la tensión analógica será:
TABLA DE SELECCION DE FUENTES DE RELOJ

(1): El reloj RC tiene un valor tipico de Tad = 4us
(2): Estos valores violan el mínimo tiempo requerido (1.6us) de Tad
(3): Para conversiones mas rápidas se recomienda otro tipo de reloj
(4): Cuando se usa osciladores mayores de 1MHz, el modo RC es recomendable cuando se esta en el modo SLEEP


TABLA DE CONFIGURACION DE LOS CANALES


MODULO ADC EN C

En el compilador , las instrucciones para manejar el conversor AD son las siguientes:
  • setup_adc_ports(valor)

  • setup_adc(modo)

  • set_adc_channel(canal)

  • valor=read_adc()  --->  Lectura del resultado y almacenado en valor, que viene a ser un numero entero dependiendo de la directiva #DEVICE ADC= empleada.
Estos son algunos sensores cuya salida es en votios, la cual podemos hacer uso de l modulo AD del PIC para poder digitalizar y controlar esta señal.



LES DEJO EL TUTORIAL PARA QUE PUEDAN COMPRENDER MEJOR EL USO DE ESTE MODULO


DESCARGA EL PROGRAMA Y LA SIMULACION EN



miércoles, 9 de diciembre de 2015

CCS Compiler (PIC C Compiler) - Interrupciones

INTERRUPCIONES

Las interrupciones permiten a cualquier suceso interior o exterior interrumpir la ejecución del programa principal en cualquier momento. En el momento de producirse la interrupción, el pic ejecuta un salto, a la rutina de atención a la interrupción, previamente definida por el programador, donde se atenderá a la demanda de la interrupción.



El microcontrolador pic 16f87x posee las siguientes fuentes de interrupción:

  • Interrupción externa por RB0/INT.
  • Interrupción por cambio de nivel lógico en RB4 - RB7.
  • Interrupción por desborde del timer 0.
  • Interrupción del transmisor del modulo USART.
  • Interrupción del receptor del modulo USART.
  • Interrupción del modulo CPP.
  • Interrupción del EEPROM.

INTERRUPCIONES EN C
En el compilador C, la directiva habitual en el manejo de las interrupciones es: #INT_xxxx
ejm: #INT_USB

Las posibles directivas para la familia 16F87x son las siguientes:

#INT_AD            -------------- Conversión AD completa
#INT_BUSCOL --------------- Colisión de bus
#INT_CPP1       --------------- Unidad de captura 1,comparación y PWM
#INT_CPP2       --------------- Unidad de captura 1,comparación y PWM
#INT_EEPROM -------------- Escritura EEPROM finalizada
#INT_EXT        --------------- Interrupción externa RB0
#INT_RB          --------------- Cambio de estado en B4-B7
#INT_RDA      ---------------- RS232 dato recibido
...

Existen directivas mas que pueden ser usadas, tanto para esta familia como para otras. Para mayor información les sugiero revisar el datasheet del microcontrolador

INTERRUPCION EXTERNA POR RB0

La directiva usada es #INT_EXT y se debe acompañar de las siguientes funciones.

EXT_INT_EDGE(H_TO_L);   ----- Cambio de estado de alto a bajo

EXT_INT_EDGE(L_TO_H);   ----- Cambio de estado de bajo a alto

ENABLE_INTERRUPTS (INT_EXT);  ------ Habilita la interrupción RB0
ENABLE_INTERRUPTS (GLOBAL);  ------ Habilita la interrupción de forma global.

INTERRUPCION EXTERNA POR CAMBIO DE ESTADO DE RB4-RB7

La directiva usada es #INT_RB y se debe acompañar de las siguientes funciones.

EXT_INT_EDGE(H_TO_L);   ----- Cambio de estado de alto a bajo

EXT_INT_EDGE(L_TO_H);   ----- Cambio de estado de bajo a alto

ENABLE_INTERRUPTS (INT_RB);  ------ Habilita la interrupción
ENABLE_INTERRUPTS (GLOBAL);  ------ Habilita la interrupción de forma global.

Les dejo un tutorial, en donde podrán observar paso a paso como programar el PIC haciendo uso de estas directivas.


DESCARGA EL PROGRAMA Y LA SIMULACION EN