Ccs Eeprom Pwm

51
GAMA ALTA DE MICROCONTROLADORES COMPILADOR C CCS SISTEMAS EMBEBIDOS DIG ITA LES III : 1

description

Electrónica programación pic 16f877A

Transcript of Ccs Eeprom Pwm

Diapositiva 1

GAMA ALTA DE MICROCONTROLADORESCOMPILADOR C CCS SISTEMAS EMBEBIDOSDIGITALES III: 1

1

GAMA ALTA DE MICROCONTROLADORESPIC18F4550MEMORIA EEPROMDIGITALES III: 22GAMA ALTA DE MICROCONTROLADORES3MEMORIA EEPROM INTERNALos microcontroladores cuentan con memoria EEPROM interna en la cual se almacenan datos de 8 bits. La memoria EEPROM permite hasta un millon de ciclos de lectura y escritura.

La familia 18, en especial el pic18f4550 cuenta con una capacidad de 256 posiciones. Para acceder a elle se utilizan funciones como: read_eeprom y write_eeprom.

READ_EEPROMPermite leer la memoria del microcontrolador, el resultado de esta se asigna auna variable de tipo entero 8, como parmetro se enva la posicion en la cual se desea leer.

Estructura: variable=READ_EEPROM( Posicin )

Posicin corresponde a un avlor entre 0 y 255.GAMA ALTA DE MICROCONTROLADORES4WRITE_EEPROMPermite escribir datos en la memoria EEPROM del microcontrolador, el dato es de tipo entero 8, como parametro se envia la posicion en la cual se desea escribir y el dato.

Estructura: WRITE_EEPROM(Posicion, DATO)

Posicin corresponde a un valor entre 0 y 255.Ejemplo:Int8 cuenta; cuenta=read_eeprom(0); SET_TIMER0(cuenta);

#ROMPermite insertar datos en la memoria de programa, no se recomienda su uso. Ejemplo:#rom 0x2100={1,2,3}4EJERCICIO EN CLASEGAMA ALTA DE MICROCONTROLADORES - COMPILADORESEl siguiente ejercicio guarda en memoria el valor de la cuenta en RA4: lcd_init(); contador=0; printf(lcd_putc,"\fmodulo contador"); if (read_eeprom(0)==255) { write_eeprom(0,0); SET_TIMER0(0); } else { cuenta=read_eeprom(0); SET_TIMER0(cuenta); } for(;;){contador=get_timer0();write_eeprom(0,contador);printf(lcd_putc,"\nContador=%u",contador);delay_ms(1000);}5Diagrama de conexionesGAMA ALTA DE MICROCONTROLADORES - COMPILADORES

6

GAMA ALTA DE MICROCONTROLADORESPIC18F4550PWMDIGITALES III: 7PWMMODULACION POR ANCHO DE PULSO

Aplicaciones: Controlar La Velocidad De Giro De Motores, Intensidad De Brillo De Bombillas Algenas, GENERADOR DE FRECUENCIA.

7GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 8

Genera una salida de 10 bits de resolucin

La salida PWM se compone de un ciclo en alto denominado DUTTY y un ciclo en bajo, el tiempo del ciclo se denomina periodo.

La velocidad de un motor depende del ciclo DUTY, entre mas pequeo el motor gira a menor velocidad, con duty mas grande que el tiempo en bajo, el motor gira a mayor velocidad. Los clculos de tiempo y periodo se describen a continuacinLas PWMs tendrn la misma frecuencia y tasa de actualizacin(interrupcin TMR2)8GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 9

Pasos a seguir para definir una onda PWMCuando se utilizaba el ensamblador se definian los siguientes pasos:Establecer el periodo T escribiendo en el registro PR2.2. Establecer el ciclo de trabajo D en CCPRxL y en CCPxCON.3. Configurar el pin CCPx como salida.4. Fijar el prescaler de TMR2 y activar el temporizador.5. Configurar el mdulo CCP para funcionar en modo PWM.

9Clculos de PR2

T = (PR2 + 1) 4 TOSC PRESCALERTMR2Ejemplo: deseamos obtener una frecuencia de salida de 320 Hz, con ello aplicamos la formula anterior, pero es importante recordar que:

El periodo PWM es igual a : 1 / frecuencia solicitada

Primero debemos calcular el periodo en PWM, para ello se aplica la siguiente formula:

PWM period = [(PR2)+1] 4 TOSC (TMR2 prescaler value)Establecer el periodo T escribiendo en el registro PR2.GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 10Clculos de PR2

T = (PR2 + 1) 4 TOSC PRESCALERTMR2TOSC, es el periodo del oscilador, y recuerde en este caso que es igual a: 1 / frecuencia del oscilador

Una vez aclarados estos dos valores la funcin se puede expresar como:

1/frecuencia = (PR2+1). 4 . (1/fosc) * Prescaler TMR21/frecuencia = (PR2+1). (4/fosc) * Prescaler TMR2

Con oscilador de fosc=4MHz y un Prescaler TMR2 = 16, se obtiene que para 320Hz, se debe asignar PR2 el valor d194GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 11

Ejemplo: deseamos que la frecuencia de salida de 320 Hz, tenga un ciclo DUTY del 50%, para ello aplicamos la formula anterior, pero es importante recordar que:

TOSC, es el periodo del oscilador, y recuerde en este caso que es igual a: 1 / frecuencia del oscilador

El segundo paso consiste en calcular DUTY, para ello se aplica la siguiente formula:

duty cycle =(CCPR1L:CCP1CON) TOSC (TMR2 prescaler)2. Establecer el ciclo de trabajo D en CCPRxL y en CCPxCON.GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 12

Una vez aclarados este dato es importante mencionar que el ancho de pulso (tiempo en estado alto) es la mitad del periodo de la seal, por ello la funcin se puede expresar como:

1/(2*frecuencia) = (CCPR1L&2bits de CCP1CON) *(1/fosc) * Prescaler TMR2

Es decir que (2 * frecuencia solicitada) es: 2 * 320 = 640, este valor indica la mitad del periodo para una frecuencia inicial de 320 Hz 2. Establecer el ciclo de trabajo D en CCPRxL y en CCPxCON.GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 13Remplazamos los valores en la formula y tenemos:

1/(2*frecuencia) = (CCPR1L&2bits de CCP1CON) *(1/fosc) * Prescaler TMR2El circuito tiene un cristal de 4MHz y se trabaja con un preescaler de 16 en TMR0.1/(2*320) = (CCPR1L&2bits de CCP1CON) *(1/4000.000) * 161/640 = (CCPR1L&2bits de CCP1CON) *(16/4000.000)1 * 4000000/640 * 16= (CCPR1L&2bits de CCP1CON)4000000/10240= (CCPR1L&2bits de CCP1CON)=(CCPR1L&2bits de CCP1CON)= 0110 0001 10=(CCPR1L&2bits de CCP1CON)

Los dos bits de menor peso se asignan a CCP1CON, esto debido a que el valor de resolucin se debe ajustar a 10 bits, luego:CCPR1L = 0110 0001 base 2= 97 base 10 CCP1CON= 10 base 2 = 2 en base 10

2. Establecer el ciclo de trabajo D en CCPRxL y en CCPxCON.GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 14Cuando se trabajaba en ensamblador era necesario escribir un cdigo extenso para realizar el control del PWM, CCS simplifica esta operacin, pero Usted debe conocer que PWM desea generar, para ello ya debi calcular el valor de carga del registro para establecer el periodo y el calculo para establecer el Dutty.

El PICWIZARD le permite seleccionar la frecuencia deseada y el porcentaje del ciclo Dutty, esta opcin se selecciona en la etiqueta rotulado como: Otros, esta pantalla desplegada por CCS se observa a continuacin:

PWM en CCSGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 1516

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 16

CCS cuenta con las siguientes funciones para controlar el modulo PWM as:

SETUP_CCPx()Permite establecer el modo de trabajo, ya sea como PWM, comparador o captura. Este es similar a los bits 0 a 3 del registro CCPxCON, x puede ser 1 o 2. Este registro se ilustra en la figura siguiente.

Para establecer CCP en modo PWM se carga el valor:CCP_PWM y otras opciones para Habilitar el Pulse Width ModulatorEjemplo:setup_ccp1(CCP_PWM);

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 1718

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 18 set_pwm1_duty(valor) Permite establecer el valor asignado a los registros CCPRxL y en CCPxCON este valor se obtiene de la formula ya mencionada en secciones anteriores.

Valor puede ser una constante o una variable de 8 o 16 bits. Este valor se establece teniendo en cuenta el preescaler del timer 2

Ejemplo: set_pwm1_duty(391);

Para ello se establecer el timer2 con un preescaler de 16 y un postscale de 1

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 19

setup_timer_2()La sintaxis es: setup_timer_2 (modo, periodo, postscale)El modo puede ser una de las siguientes opciones:T2_DISABLEDT2_DIV_BY_1T2_DIV_BY_4T2_DIV_BY_16El periodo es un entero entre 0 a 255 que determina cuando el valor del reloj se resetea.

postscale es un nmero de 1 a 16 que determina cuantos desbordamientos del timer se ejecutan antes de una interrupcin. Para PWM este se debe fijar en 1.Ejemplo:setup_timer_2(T2_DIV_BY_16,194,1);

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 20

Para observar la validez de las formulas, se desea obtener una frecuencia de 320 Hz por C2, el ciclo Dutty es del 50%, para un pic18f4550 con un cristal de 4Mhz y un preescaler de 16 en TMR0.

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 21

Las formulas permiten establecer que PR2 debe valer 194 y que los registros para Duty deben ser iguales a 391. El cdigo que se programa es el siguiente:22GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 22

La siguiente grafica ilustra su correcto funcionamiento:

Ejercicio en clase:Desarrolle un programa que lea un canal de conversin anloga a digital y segn esta se afecte el duty de PWM, observe la siguiente grfica para un pic 16f870:

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 23

GAMA ALTA DE MICROCONTROLADORESPIC18F4550CONTROL REMOTO POR INFRARROJODIGITALES III: 24

24

MODULOS DE CONTROL REMOTO POR INFRARROJOMODULOS DE CONTROL REMOTO POR INFRARROJOModulador receptor de infrarrojo diseado para aplicaciones de control remoto sintonizado a 40Khz. Incluye amplificador de entrada, limitador, varios filtros pasabandas, demodulador, integrador y comparador.

Existen diversos modelos entre ellos encontramos el:

TFM5360SHARP S26 GP1UM28YK

13232GP1UM27XK SeriesGP1UM27XK SeriesGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 25

MODULOS DE CONTROL REMOTO POR INFRARROJOMODULOS DE CONTROL REMOTO POR INFRARROJO

31212GP1UM27XK SeriesGP1UM27XK SeriesGP1UM28YK Series

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 26MODULOS DE CONTROL REMOTO POR INFRARROJO

DIAGRAMA DE BLOQUES INTERNOS

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 27MODULOS DE CONTROL REMOTO POR INFRARROJOMODELOS SHARP

Voltaje de alimentacin tpicoParmetros de funcionamientoGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 28MODULOS DE CONTROL REMOTO POR INFRARROJOSistema ptico estndar

http://pablob86.elapco.net/2010/05/transmisor-infrarrojo-ir-con-pic-16f87.htmlhttp://www.puntoflotante.net/MODEXPANSION4.htmGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 29MODULOS DE CONTROL REMOTO POR INFRARROJOFormato de trama

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 30

MODULOS DE CONTROL REMOTO POR INFRARROJOPara transmitir se requiere:

-control PWM de 30 Khz a 50 Khz y con la seal acoplada de la lnea de transmisin rs232 permite encender el led infrarrojoGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 31MODULOS DE CONTROL REMOTO POR INFRARROJODiagrama de bloques:

MICROPIC16F877MICROPIC16F628TxRx

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 32

MODULOS DE CONTROL REMOTO POR INFRARROJO

- TRANSMISORNPN3904GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 330011parpadeaConduce pulsosNPN39041100EnciendeNo Conduce pulsos1El anterior anlisis hace necesario agregar otra compuerta para que se pague cuando no hay que transmitir.

MODULOS DE CONTROL REMOTO POR INFRARROJO- TRANSMISORGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 34NPN39041100No EnciendeNo Conduce PWM10

NPN39040011Enciende Conduce PWMXXXXXEl receptor ante la ausencia hace salida igual a 1El receptor ante la presencia hace salida igual a 0MODULOS DE CONTROL REMOTO POR INFRARROJOMODULOS RECEPTOR

PNP3906GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 35MODULOS DE CONTROL REMOTO POR INFRARROJOCONEXIONADO DEL TRANSMISOR MODO SERIAL ORIGINALConstruya en clase un modulo que transfiera por medio de infrarrojos datos

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 36PROGRAMANDO LOS MICROCONTROLADORESMODULOS DE TRANSMISION Y RECEPCION ADAPTACION MODO SERIAL ORIGINALAntes de programar debemos tener en cuenta los tiempos mximos de alto y bajo, para la clase he modificado la librera RS232 debido a que el tiempo en alto no supera de 1200 Us y el tiempo en bajo no supera 900 uS; el tiempo del bit se ajusta a 500us, para no exceder los limites, pero es necesario recordar que no puede enviar mas de 50 pulsos continuos.

El tiempo apropiado es 833.33 uS para una velocidad de 1200 bps, el cual se ajusta a los parmetros de mximo y mnimo tiempo

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 37PROGRAMANDO LOS MICROCONTROLADORESMODULOS DE TRANSMISION RS232 MODIFICADOPero antes de continuar hay que recordar que el sensor recibe mximo una seal en bajo de 900 us y 1200 us en alto, el problema es que pasa si se enva la letra A utilizando RS232, es decir el valor binario B'0100 0000', solo existe un uno, en consecuencia el sensor no responde y si enva mas de un 1 consecutivo , por ejemplo el numero 255 tambin se presenta el problema; la solucin es asignar un tiempo en bajo y un tiempo en alto enviar el bit y la negacin del mismo en el protocolo.

Ejemplo de negacin del bit:ASCCI de A=0 1 0 0 0 0 0 0 Byte a enviar, pero se debe transmitir el siguiente valor: A=01 10 01 01 01 01 01 01Lo anterior requiere que el protocolo RS232 debe trabajar como si configurara a un bit de parada.

En internet se encuentran otros sensores de infrarrojo que cuando detectan la seal sin importar el tiempo esta asigna cero a su salida.

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 38MODULOS DE CONTROL REMOTO POR INFRARROJOCONEXIONADO DEL TRANSMISOR MODO SERIAL MODIFICADO

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 39PROGRAMANDO LOS MICROCONTROLADORESSe requiere modificar o crear sus propias libreras de comunicaciones tanto en el receptor como en el transmisor y en el receptor el programa debe ser capaz de determinar si una comunicacin se obstruyo para reiniciar.

Aplicaciones :Desde enlazar dispositivos de entrada o salida a un microcontrolador, hasta transferir datos de un PC a otro. En el rea de domtica piense en disear un control remoto para apagar o encender luces, atenuar el brillo de una lmpara o incluso abrir una chapa electrnica.

Tambin si se implementa un transmisor o un receptor por dispositivo se puede consultar datos y establecer una comunicacin entre diferentes mdulos.

Si se considera que el acabado del mdulo transmisor es muy artesanal, puede usted comprar un control universal de televisin y construir el receptor que sea capaz de decodificarlo. GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 40PROTOCOLOS DE INFRARROJOSLa siguiente es la documentacin que se encuentra en pginas web disponibles entre ellas: http://www.ucontrol.com.ar/Articulos/protocolo_de_los_controles_remotos_philips_RC5/protocolo_de_los_controles_remotos_philips_RC5.htm,esta fue consultada el 18 de mayo de 2011 a las 07:40 a.m.; en ella se encuentra la siguiente informacin que es de utilidad en la decodificacin del protocolo philips RC5.

Caractersticas:

5 bits de direccin y 6 bits para el comando (7, en el caso del RC5X)

Codificacin tipo Manchester (Bi-phase coding)

Frecuencia portadora de 36KHz.

Tiempo constante para cada bit, de 1.778ms (64 ciclos a 36KHz.)GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 41PROTOCOLOS DE INFRARROJOSEl protocolo consiste en un tren de pulsos cuadrados de 36Khz (la denominada "portadora"). Cada "1" esta codificado como 889 microsegundos de pulsos, y 889 microsegundos de "silencio". El "0" se codifica como 889 microsegundos de "silencio" y 889 microsegundos de pulsos. La longitud total del "0" y del "1" es idntica, y son 1778 microsegundos (o 1,778 milisegundos).GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 42

Para la practica se encuentra en el comercio algunos mdulos receptores para infrarrojo, entre ellos el GP1U587Y, el cual trabaja a 56800 hz, su costo es de 1500 pesos colombianos.GP1U587YGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 43

Las siguientes son las caractersticas del modulo receptor GP1U587Y que se encuentran en las tiendas de electrnica de la ciudad

De ellas se puede establecer que se debe trabajar con mximo 600us en bajo y en alto, la informacin se debe codificar en Manchester.GP1U587YGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 44Su forma fsica es:

PROTOCOLOS DE INFRARROJOSGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 45La siguiente descripcin se toma de la pgina web en mencin:

Para que el receptor sepa que le esta "diciendo" el emisor remoto, debe poder interpretar las "tramas" de ceros y unos que este le enva. Cada trama es un comando, y esta compuesto por 14 bits (15 en el caso del RC5X). De esos 14 bits, los primeros 2 bits son de "start" (arranque): siempre son "1". El tercer bit se invierte cada vez que una tecla se pulsa y se suelta nuevamente, para poder distinguir si una tecla permanece presionada o se ha presionado mas de una vez. Los siguientes 5 bits corresponden a la direccin del dispositivo receptor, y los ltimos 6 al comando trasmitido. Esto permite utilizar un mismo control remoto para comandar diferentes equipos, simplemente asignando a cada uno un cdigo de direccin diferente.PROTOCOLOS DE INFRARROJOSGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 46

Hay una variacin del cdigo RC5 llamada RC5X que dispone de 7 bits para determinar el comando (lo que permite 128 comandos diferentes vs. los 64 comandos del RC5 tradicional). La forma de la trama es la misma, pero el segundo bit de start (S2) es utilizado como el bit 7 del comando.Actividad en clase:

ACTIVIDAD EN CLASERealice el montaje correspondiente en clase y construya el protocolo en CCS.El montaje se ilustra en la siguiente imagen:INFRARROJOS CON MICROCONTROLADORESGAMA ALTA DE MICROCONTROLADORESDIGITALES III: 47

Las pantallas de virtual terminal solo funcionan si trabajara con un protocolo RS232 sobre infrarrojos, pero por sus caractersticas esto no funciona.GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 48El siguiente es el segmento de cdigo que permite calcular la frecuencia en PWM de 56800hz con un duty del 50%, debe Usted construir la funcin que enve por el puerto el dato, teniendo en cuenta los unos y ceros. Recuerde que segn las caractersticas no deben enviarse mas de dos unos o ceros en forma consecutiva.

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 49

INFRARROJOS CON MICROCONTROLADORESDECODIFICADOR DE CONTROL IR UNIVERSAL

GAMA ALTA DE MICROCONTROLADORESDIGITALES III: 50

Olger Erazo De La Cruz

Imagen de otra fuente

Olger Erazo De La Cruz51