La resistencia eléctrica es parte fundamental en la creación de circuitos, todas las resistencias pueden ser medidas y para esto se emplea un óhmetro o también conocido como ohmímetro.
¿Como funciona un Óhmetro?
Este dispositivo de medición emplea una batería en su interior con la cual se induce un voltaje a través de la resistencia que se desea medir, este proceso se hace para que posteriormente el galvanometro pueda medir la corriente que circula a través de la resistencia.
Despues de realizar el proceso anterior el Óhmetro puede calcular rápidamente la resistencia utilizando la ley de ohm, para ser más precisos se utiliza esta formula:
En donde:
R = Resistencia
V = Voltaje
I = Corriente
Recordemos que el Óhmetro posee una batería interna cuyo valor esta definido, con esto ya tenemos uno de los valores (V), posteriormente al inducir el voltaje sobre la resistencia a medir el instrumento calcula la corriente (I), al ya tener estos 2 valores el instrumento aplica la formula mostrada arriba y con esta puede determinar de que valor es la resistencia que se esta midiendo.
Para medir resistencia con el PIC utilizaremos la fórmula de un divisor de voltaje.
como observamos en la figura tenemos dos resistencias R1 y R2,entonces fijamos un valor de resistencia en este caso R2,le damos un valor fijo de 1K.luego tenemos q reemplazar y despejar.
Los sensores de distancia permiten medir una longitud desde el punto de ubicación del sensor
hasta un obstáculo puesto en un punto dentro del rango de trabajo del sensor. La implementación
de este tipo de dispositivos es de utilidad en sistemas de control, y en proyectos de robótica. Para
el caso puntual de este capítulo se trabajará con el sensor GP2D12, este dispositivo usa como
estrategia de medida un rayo de luz infrarroja y su reflejo para determinar la longitud.La
apariencia física la distribución de pines y la vista en el simulador ISIS del sensor son los
siguientes:
Este tipo de sensores cuentan con un comportamiento no lineal, esto quiere decir que la salida no
obedece a una función de transferencia lineal. Para comprender de forma clara este concepto se
puede observar y analizar la siguiente gráfica que muestra el comportamiento de la salida en
función de la distancia:
Este comportamiento en un sensor es de difícil aplicación, dado que en algunos casos los
fabricantes no entregan una función de transferencia útil de tal forma que pueda ser usada en una
sola ecuación. Sin embargo no es un obstáculo para el uso del sensor. Como se puede apreciar en
la hoja técnica el rango de acción es de 10 a 80 centímetros tal como se puede apreciar en la
gráfica. La gráfica mostrada está contenida en la hoja técnica del dispositivo y está es realizada
experimentalmente. Para poder caracterizar el comportamiento del sensor y realizar una función
de transferencia es indispensable realizar un proceso matemático conocido como linealización.
Para este fin se hace una interpolación con una cantidad finita de puntos conocidos de la función,
estos puntos se toman de las medidas experimentales. Cuantos más puntos se evalúen más precisa
será la función de transferencia.
Para iniciar este proceso se escogen 2 puntos, que estén equitativamente distribuidos. Por ejemplo
el punto a 10cm, y 80cm. Para cada uno de los puntos se realiza una ecuación de orden igual al
número de puntos menos uno, en este caso serán ecuaciones de primer orden. Se asume como
variable independiente x los datos de entrada que en este caso son el voltaje de salida del sensor,
como variable dependiente y, la distancia en centímetros. Para comprender este concepto observe
la siguiente ecuación que representa el comportamiento exponencial del sensor:
y=A/x+B ; ecuacion12.11
Recordando que y, representa la distancia y que x, el voltaje de salida del sensor, se usan los datos
de dos puntos y se remplazan en las ecuaciones de la siguiente forma:
Tabla 12-3
Sistema de ecuaciones:
10=A/2.35 +B ;
80=A/0.41+B;
Sistema de ecuaciones con dos incógnitas.
Solucionando el sistema de ecuaciones se puede determinar que las constantes son:
A=34,76546392
B=-4,793814433
De está forma se puede formalizar la función de transferencia del sensor con la ecuación:
y=34,76546392/x + 4,793814433; Ecuación 12-14
Como la variable x representa el voltaje de salida del sensor y teniendo presente que el valor del
sensor no supera 2,5 voltios, la referencia del convertidor AD, se puede ajustar a 2,5 voltios. Para
estáblecer la conversión se puede usar la ecuación: (12.15)
Vadc =2,5Radc/1023 ; Ecuación 12-15
Remplazando la ecuación (12.15) en la ecuación (12.14), obtenemos la siguiente relación o
función de transferencia:
y=14226,02784/Radc - 4,793814433 ; Ecuación 12-16
El paso siguiente es implementar un código fuente que use la función de transferencia y que
posteriormente visualice el valor capturado.
Nota:Texto copiado del libro: Diseño y simulación de
sistemas
microcontrolados en
lenguaje C -Capitulo:12.3 Sensores de distancia- Pagina 134
Los estupendos microcontroladores dsPIC33F nos vuelven a sorprender con su módulo Timer, que incorpora hasta 9 Timer que pueden funcionar a 16 o 32 bits.
La serie de micros dsPIC33F dispone de 9 timers de 16 bits, de los cuales el Timer1 trabaja de manera individual, y el resto puede trabajar de forma individual o en parejas como Timer de 32 bits.
Timer1
El esquema del módulo Timer1 es el siguiente:
Como se puede observar en el gráfico, las características del Timer1 son:
Timer de 16 bits
Contador síncrono de 16 bits
Contador asíncrono de 16 bits
Acumulador de pulsos altos en TGate
Prescaler seleccionable en ratios 1:1, 1:8, 1:64 y 1:256
Ajuste fácil del Periodo con PR1
Además, nuestro Timer1 puede seguir funcionando incluso en el modo Idle o Sleep de la CPU.
El Timer1 puede acumular pulsos tanto externos (TCS=1) a través del pin T1CK como internos (TCS=0) al ritmo de la Frecuencia de instrucciones (Tcy). Además, en el modo de trabajo de acumulación de pulsos altos en TGate puede contar los pulsos internos (Tcy) sólo cuando el pin externo T1CK esté a nivel alto lo que permite contar la duración acumulada de una señal a nivel alto. Para seleccionar este modo hay que poner a 1 los bits TCS y TGATE.
El interruptor que nos permite encender y apagar el Timer1 es el bit TON.
A continuación nuestro tren de impulsos atraviesa el prescaler donde es dividido a razón de 1:1, 1:8, 1:64 y 1:256 en función de la combinación seleccionada en los bits TCKPS<1:0>.
A continuación se incrementa en una unidad el registro TMR1. En función del bit de configuración TSYNC, si su valor es 1 el incremento de dicho registro será sincronizado con una señal externa. Cada vez que se incrementa el registro TMR1, se compara con el registro PR1 y en caso de igualdad se pone a 0 el TMR1 y se señala el bit de interrupción T1IF. El registro PR1por defecto vale 0xFFFF con lo que el periodo del Timer1 será ese, pero podemos ajustarlo al valor que queramos, lo que nos permite seleccionar una frecuencia de interrupción programable muy útil.
Timer2/3, Timer 4/5, Timer 6/7 y Timer 8/9
Estos 8 timers pueden funcionar individualmente como timers de 16 bits o en parejas como timers de 32 bits. Su esquema es el siguiente:
Básicamente el funcionamiento de estos Timers a 16 bits es análogo al del Timer1, con excepciones que veremos más adelante0. Para hacerlos trabajar a 32 bits hay que poner a 1 el bit T32. En este caso, los bits de configuración del Timer de 32 bits serán los del Timer par; es decir, si queremos trabajar con la pareja Timer 4/5 hay que setear los bits del Timer4, incluyendo el bit T32=1.
Sin embargo, el bit de señalización de fin de periodo será el del Timer impar, en nuestro ejemplo se activará el bit T5IF.
En el modo de trabajo a 32 bits, la palabra alta la forma el registro TMR impar y la palabra baja el TMR par.
Las excepciones son las siguientes:
Sólo el Timer 2/3 puede servir como base de tiempos al módulo CCP (Capture and Output Compare)
Sólo el Timer 2/3 puede activar una transferencia de datos al módulo DMA
Sólo los Timer 2/3 y Timer 4/5 pueden activar el Trigger del ADC (1 y 2 respectivamente)
Registros
Los registros que utilizaremos para gestionar los Timer son los siguientes:
TMRx
PRx
TxCON
TON: enciende (1) o apaga (0) el timer
TSIDL: el Timer puede seguir trabajando (1) en modo Idle o Sleep o puede quedar parado (0).
TGATE: selecciona el modo de acumulación de pulso a nivel alto (1)
TKCPS: Prescaler, según los ratios 1:1 (00), 1:8 (01), 1:64 (10) o 1:256 (11).
TSYNC: Sincroniza entrada de clock externa (1)
TCS: Selecciona una fuente de clock externa (1) o la frecuencia interna de instrucciones (0).
T32 (sólo en Timer2/4/6/8): activa el modo de 32 bits (1)
IFS0
T1IF / T2IF / T3IF: se activan al finalizar el periodo del Timer.
IFS1
T4IF / T5IF: idem
IFS2
T6IF: idem
IFS3
T7IF / T8IF / T9IF: idem
Texto copiado de la pagina micropic.
-->http://www.micropic.es/mpblog/2007/02/dspic33f-capitulo-2-el-timer/ Example Code Timer32-DsPIC33FJ Freq -->Es la frecuencia de trabajo de su dspic en mi caso es de 40MIPS. Configuracion de registros. void config_TIMER32(void) { float time = 1000; //en milisegundos T3CONbits.TON = 0; //Stop any 16-bit Timer3 operation T2CONbits.TON = 0; //Stop any 16/32-bit Timer3 operation T2CONbits.T32 = 1; //Enable 32-bit Timer mode T2CONbits.TCS = 0; //Select internal instruction cycle clock T2CONbits.TGATE = 0; //Disable Gated Timer mode T2CONbits.TCKPS = 0b10; //Select 1:1 Prescaler Precontador (0 = 01:01, 1 = 01:08, 2 = 1:64, 3 = 1:256) long Time_Setup = (Freq / 64) * time;//Configuramos el tiempo deacuerdo al prescale. TMR3 = 0x00; //Clear 32-bit Timer (msw) TMR2 = 0x00; //Clear 32-bit Timer (lsw) PR3 = (Time_Setup / 1000) >> 16; //Load 32-bit period value (msw) PR2 = (Time_Setup / 1000) & 0xffff; //Load 32-bit period value (lsw) _T3IP = 0x01; //Set Timer Interrupt Priority Level - 7(highest) to 1(lowest) _T3IF = 0; //Clear Timer Interrupt Flag _T3IE = 1; //Enable Timer interrupt T2CONbits.TON = 1; //Start 32-bit Timer } Interrupcion del timer32. void __attribute__((interrupt, auto_psv)) _T3Interrupt(void) { _LATA0 = ~_LATA0; _T3IF = 0; //Clear interrupt flag }
Para los fines prácticos de este capítulo se trabajará con el sensor de presión MPX4115, este
sensor está caracterizado en Kilo Pascal, y permite medir presiones entre 15 y 115 KPa, o entre
2,18 y 16,7 psi. La apariencia física, la distribución de pines y la vista en ISIS, de este dispositivo
es la siguiente:
MPX4115 la función de transferencia
especificada por el fabricante es:Vout =Vs(0.009P- 0.095) donde:Vout :es la señal de salida del sensor. P :es la presion Vs: es el voltaje de alimentacion en este caso es de 5V.
Para calcular la presion debemos de despejar P.
nos queda :P=(111.111111Vout/Vs) +10.555555
El ADC de nuestro microcontrolador esta configurado con 10 bits de resolución se puede concluir
que:
Vout=5Radc/1024
Donde Radc es el el Buffer del ADC(ADC1BUF0).
Luego reemplazamos en P nos queda:
P=0.542535Radc/Vs +10.555555
pero Vs=5V
finalmente nos queda: P=0.108507Radc+10.555555
con esta ecuacion podemos hallar la presion en KiloPascal(KPa).