Medidor de inductancias

#21
Gabriel,

Me alegra mucho que hayas podido hacer andar el programa. A lo que vos te referís con AL y AH supongo que será al 80x86 de intel (el de la PC) que combina estos registros en el AX. Esto en el PIC16F no existe porque es un microprocesador de 8 bits y sólo maneja estos registros. De todas maneras no es muy complicado (yo he calculado raices cuadradas, eso sí que es feo).
La cuenta que hay que hacer es f=TMR1*76.294 (con cinco cifras significativas para no agregar error al resultado), y lo que el multiplicador es fijo, el algoritmo es sencillo, no son más que rotaciones de registros y sumas.

Igualmente si lo vas a hacer en basci creo que no necesitás todo esto, podés hacer la cuenta directamente definiendo la variable F como de 24 bits y hacer:

F = TMR1H*256+TMR1L
F = F*76.29394531

Y asunto solucionado, el basic se ocupa de todo, en F tenés la frecuencia.

Yo nunca programé un micro en basic, así que si esto no es posible y hay que hacerlo de una forma parecida al assembler lo vemos. *** La cosa sería hacer la cuenta por partes tomando en cuenta que 76.294 =aprox= 64+8+4+1/4+1/32+1/128+1/256+1/1024, dejando un error de solo 2Hz en el peor de los casos. Estas cuentas son sencillas porque son todas potencias de 2 lo cual el micro siempre maneja bien. ***

Slds...

Mariano
 
#22
Mariano

Creo que me expliqué mal la última vez, pero ya logré lo que preguntaba, bueno mas o menos...

Lo que pasa es que no sabía como guardar TMR1H como los 8 bits mas significativos y TMR1L como los 8 bits menos significativos de una variable que declaré como "palabra" (16 bits), y lo del registro AH y AL solo era una forma de tener una referencia, debido a que cuando usé el micro había hecho algo similar, al final era sencillo:

dim y as word 'declaro y como palabra (16 bits)
y.HB = TMR1H 'el High Bank de y va a ser igual a TMR1H
y.LB = TMR1L 'el Low Bank de y va a ser igual a TMR1L
------------------
Ya simplifiqué mi formula para mostrar el valor de la inductancia directamente del TMR1 y queda así: L = 4.99049507 *10³ / (TMR1)² y la de la frecuencia con la formula que pusiste arriba.

Pero como me mencionaste anteriormente para la frecuencia tengo que declarar una variable de 24 bits (de tipo long en basic), pero el problema que tengo es que cuando trato de compilar el programa en basic me aparece el siguiente error: "Support for 32-bit variables not enabled" y no he podido encontrar la opción para habilitar el uso de las variables de 32 bits, no sé si me podrás ayudar en esto...

Gracias

Gabriel
 
#23
Gabriel,

Buenísimo que hayas solucionado, perdón por la mala interpretación.
Respecto de las variables de 32 bits la verdad no te puedo ayudar porque nunca usé Basic para programar microprocesadores, siempre lo hice en assembler.
Sin embargo me gustaría que me digas qué Basic usás por dos motivos:
1) Para buscar información a ver si te puedo dar una mano.
2) Sería bueno que me empiece a meter en el tema porque a veces programar en assembler lleva mucho tiempo y es ineficiente.

Slds...

Mariano
 
#24
Mariano

Primeramente la versión de Basic que uso: Basic Compiler del programa PIC SIMULATOR IDE versión 6.34. Lo de programar en assembler es cierto que es más tardado pero por un parte se ve más interesante ya que uno controla casi todo, y por lo tanto supongo que se llega a tener más dominio y a aprender más acerca de los registros y demás...

Igual lo que se me ocurrió (solución temporal con fines de prueba) para no usar palabras de 32 bits era dividir la frecuencia por 10³ por ejemplo, y colocar como que fuera la escala de megas por ejemplo, no se si me explico, pero cuando el resultado de la variable fuera 3000, en realidad debido a la división sería 3000000, aunque se perdería exactitud en la medición; además al medir inductancias que me dieran valores menores que 1000 de frecuencia entonces el resultado sería 0.algo (aunque no creo que utilice ese tipo de inductores por el momento) similar pasaría con el cálculo de las inductancias solo que en vez de dividir, multiplicaría... Una pregunta y según lo que he probado (simulado) es que depende los comandos que use para calcular los valores de las formulas, el valor de la variable que contiene el resultado me va aproximando al entero más próximo sino estoy mal...

También estaba leyendo acerca del uso de una LCD para mostrar el resultado, espero hacer funcionarla también para que tenga más presentación el proyecto...

Gracias...

Gabriel
 
#25
Que tal gfmo2002. Soy de Mexico(san luis) estoy en finales de proyectos. Y me pidieron un Medidor de inductancias. He encontrado infinidad de proyectos pero con diferentes pics y con diferentes lenguajes de programacion. Se trabajar con
basic y el pic16f877a. Ya tengo el oscilador colpits http://www.unicrom.com/Tut_osciladores_LC.asp estoy
utilizando el de OA. Ojala me puedas ayudar con el codigo completo y el circuito de tu oscilador que utilizaste, saludos.
 

DOSMETROS

High 2m Modereitor
#27
La medición de inductancias es importante para hacer sus propios inductores especialmente cuando usted mismo enrolla la bobina (bricolaje). Un circuito adaptador de medición de inductancias será útil, ya que puede medir la inductancia utilizando el voltímetro digital del tester (DVM). Éste circuito cuesta mucho menoso en comparación con un Inductómetro comprado. Aquí está el diagrama esquemático del circuito:

Adaptador medidor de inductancias.gif

El circuito es muy simple, contiene solo un regulador de voltaje y unas compuertas NAND 74HC132. Éste adaptador medidor de inductancia proporciona dos rangos de medición, rango bajo para medir valores de inductor de 3uH a 500uH, y rango alto para 100uH a 5mH. Calibrar este medidor de inductancia es fácil. Primero necesita calibrar el offset cero.

Conecte su tester (DVM) a la salida de éste circuito y seleccione un rango de 200 mV, ajuste la calibración del cero para obtener lectura de cero Volts en su tester (DVM). Para calibrar el rango bajo, elija un inductor conocido alrededor de 400uH. Seleccione el rango de 2V para su tester (DVM). Mida el inductor y calibre la banda baja para obtener 1 mV por UH. Por ejemplo, si usa 450uH, debe ajustar el potenciómetro de calibración baja para obtener una lectura de 450mV en su tester (DVM). Para calibrar el rango alto, cambie el rango del circuito adaptador a alto, y úselo para medir un inductor conocido con valores alrededor de 5 mH. Calibre la rango alto para dar una lectura de 100 mV por 1 mH. [Fuente: Marc Spiwak]

Enjoy :)
 

Temas similares

Arriba