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


domingo, 29 de noviembre de 2015

CCS Compiler (PIC C Compiler) - Teclado matricial

TECLADO MATRICIAL (KEYPAD 4x4)

utilizados en el desarrollo de proyectos con microcontroladores PIC y que tienen su aplicación en el ingreso de datos de manera manual por parte del usuario, en aquellos casos en que el empleo de pulsadores simples no es lo más apropiado, ya sea por la presentación final del producto o por la restricción del número de líneas de entrada de los microcontroladores PIC.

El teclado matricial 4x4 está constituido por una matriz de pulsadores dispuestos en filas (A,B,C,D) y columnas (1,2,3,4), con la intención de reducir el número de pines necesarios para su conexión. Las 16 teclas necesitan sólo 8 pines del microcontrolador, en lugar de los 16 pines que se requerirían para la conexión de 16 teclas independientes.




LIBRERIA A USAR

El compilador C incluye la librería KBD.c para manejar el teclado 3x4. las funciones que se incorporan son las siguientes:

Kbd.init();   inicializa el sistema debe ser la primera función a ser llamada
Kbd_getc();  devuelve el valor de la tecla pulsada en función a la tabla que se tiene programada.

En el caso que se quiera utilizar un teclado matricial de 4x4, tendremos que modificar la librería KBD.c

Pueden descargar la librería ya modificada para hacer uso con un keypad 4x4.

En los tutoriales se podrá ver como se realiza la programacion para poder usar el teclado, asi como tambien como modificar la libreria KBD.c para usarlo con un keypad 4x4.


Tutorial - Modificacion de Libreria KBD



Tutorial -  Programacion del PIC para uso del keypad 4x4


DESCARGA EL PROGRAMA Y LA SIMULACION EN

EL PROGRAMA

sábado, 28 de noviembre de 2015

CCS Compiler (PIC C Compiler) - Manejo de Display

DISPLAY DE 7 SEGMENTOS

Componente electrónico compuesto por 7 LED's uno en cada segmento




Existen dos tipos de este display: ánodo común (el punto común entre todos los segmentos es Vcc) y cátodo común (punto común entre segmentos es la tierra-GND)

Esta ultima imagen muestra como esta conectado cada segmento y el punto común entre ellos

¿Cómo conecto el display?

En el caso de un ánodo común, el pin común debe de estar conectado a Vcc (5V-12V) y el segmento que queremos que encienda a 0V o GND

La imagen muestra como conectar para poder visualizar el numero 1


En el caso de cátodo común, el pin común debe ir conectado a 0V-GND, y el segmento que queremos encender a Vcc (5V-12V)

La imagen muestra la conexión para poder visualizar el numero 4

¿COMO LO CONECTAMOS AL PIC?

Para poder trabajar directamente con el PIC sin hacer uso de un 7447 o 7448 (conversor de BCD a 7 segmentos), para poder visualizar los números del 0 al 9 en un display cátodo común, haremos lo siguiente:


La imagen nos muestra que valor debemos darle al puerto (el que vamos a usar) para poder visualizar el numero que deseamos.
Ejemplo: para poder visualizar el numero 5, hacemos lo siguiente:

output_b(0x6D);  ó   output_b(109);

Recordar que esto sirve para un display cátodo común.
Ustedes lo pueden realizar para un display ánodo común, recordando que estos tienen Vcc en común y para poder encender un segmento éste tiene que estar conectado a 0V.



DESCARGA EL PROGRAMA Y LA SIMULACION EN

EL PROGRAMA

lunes, 16 de noviembre de 2015

CCS Compiler (PIC C Compiler) - Tipo de variables y manejo del puerto del PIC

El  CCS acepta el los siguientes tipos de variables

CONSTANTES
Las constantes se pueden especificar en octal, decimal, hexadecimal o en binario.

VARIABLES
La variables se utilizan para nombrar posiciones de memoria RAM.
Se deben de declarar obligatoriamente antes de utilizarlas, para ello se debe indicar el nombre y el tipo de dato que se utilizará.
Se definen de la siguiente manera.

tipo  nombre_variable = valor inicial
Ejemplo:

float voltaje=0;
int8 suma=0;
int contador=10;

MANEJO DE PUERTOS

El compilador nos ofrece funciones predefinidas que nos ayudan a trabajar con los puertos

Ejemplos:

output_B(0b11001100);       //saca un uno lógico por el pin(b7,b6,b4,b3)
valor = input_A();                //lee el valor del puerto A y lo almacena en valor

También existen funciones asociadas a un solo pin, tales como:
Ejemplos:

output_toggle(pin_b6);      //complementa el valor del pin b6
input(pin_c3);                    //lee el valor del pin c3
output_low(pin_b0);         //Pone el pin b0 a un cero logico

Les dejo el tutorial para que puedan entenderlo mejor.


DESCARGA EL PROGRAMA Y LA SIMULACION EN

EL PROGRAMA

lunes, 9 de noviembre de 2015

Primer programa en CCS Compiler (PIC C Compiler)

Para iniciarnos en la programación de los microcontroladores PIC, haremos el clásico HOLA MUNDO, que consiste en el encendido y apagado de un led.
Explicaremos cada una de las instrucciones del programa, así como también les dejaré el video tutorial correspondiente.

Para empezar este es nuestro entorno de programación

Para empezar a escribir nuestro código, creamos un archivo en blanco



Colocamos un nombre a nuestro proyecto, en¡ este caso yo le colocare el nombre de encendido y apagado de un led

Una vez creado nuestro archivo en blanco, empecemos las líneas de código de nuestro programa

Lo primero que debemos de hacer es incluir el PIC con el que trabajaremos, en este caso será el 16F877a, lo siguiente que haremos es escribir con velocidad de cristal trabajará nuestro PIC, en este caso será de 20MHz; y tambien mencionar los fusibles, en este caso será el HS, que se usa para cristales de alta velocidad. Si usted usará un cristal menor o igual a 4MHz, deberá colocar #fuses XT. Nuestro programa estaría quedando de la siguiente manera:

#include <16f877a.h>
#use delay(clock=20M)
#fuses hs, nowdt

El nowdt, deshabilita el watchdog timer(perro guardian). Para mayor información de este fusible ver el datasheet del PIC

Ahora llamaremos a nuestra función principal, que es el void main, el programa quedaría de esta manera:

Luego agregamos un bucle infinito para que nuestro programa se repite indefinidamente

Dentro de este bucle infinito escribiremos las instrucciones que ejecutara nuestro PIC.
El programa quedaría de la siguiente manera

La velocidad con la que el PIC realiza cada instrucción es de 20MHz/4, que vendría a ser igual a 5MHz, por lo tanto el tiempo que demorá el microcontrolador en ejecutar cada instrucción es de  0.2 microsegundos


Es por ello que se añade un retardo en el programa, ya que sino, no se vería el cambio de alto a bajo en el pin b0 del microcontrolador.

Por ultimo compilamos el programa.

Con esto quedaría listo nuestro programa para poder simularlo, así como también grabarlo o quemarlo en un PIC real.
La simulación lo podrá ver en el siguiente video tutorial.



Pueden descargar el programa y la simulación en: