jueves, 3 de mayo de 2012

Frecuencímetro y medidor de capacidad 16f628

Página principal

Frecuencímetro y medidor de capacidad
 16f628
Frequency_counter - capacity meter
Programación en C y Ensamblador
xsetaseta@gmail.com

Como en el anterior montaje frecupl2 teníamos un medidor de frecuencia realizado en torno a un PIC 16f628, me he puesto a realizar un medidor de capacidad aprovechando toda las posibilidades de microcontrolador.
En el montaje Capmeter había realizado un medidor de capacidad, pero no había hecho yo el programa, solo había cogido el firware y lo había grabado en el chip.
Este montaje es una mezcla de ambos montajes, y realizar yo el programa.

El medidor de capacidad se basa en la carga y descarga de un condensador a través de una resistencia.
Esta carga y descarga produce una oscilación de una frecuencia que se mide en el frecuencímetro. Mediante la una formula se despeja C y se visualiza en el LCD.
Vf V.inicial V.final R
4,8V 3,6V 1,5V 10K

Estas medidas son reales medidas con el osciloscopio.


Formula general dela carga del condensador

Vt=Vo(1-e -t/RC)

Carga:
    T=RC*ln((Vf-Vt)/Vf)            C=T/(R*ln((Vf-Vt)/Vf))
   

Descarga:
    T=RC*ln(Vinicial/Vfinal)        C=T/(R*ln(Vinicial/Vfinal))

Con estas formulas se saca un algoritmo que nos da una capacidad dependiendo de la frecuencia.
El que quiera sacarlo que se lo trabaje, no es difícil.

Realizamos un oscilador mediante el comparador que se encuentra en el 16F628.



Oscilador biestable.



Esquema de medidor de capacidad y frecuencímetro.

El rango de medidas está entre 4,7uF y 5pF. Para medir valores de mayor capacidad debería cambiar la resistencia de carga, pero eso no está dentro de mis necesidades.
Como la medida de capacidades pequeñas sería difícil debido a la propia capacidad intrínseca del circuito, se coloca un condensador en paralelo de 1,2nf que se resta automáticamente al resultado.
La puesta a cero es automática con el cambio de escala. Cuando se cambia de escala no debe haber ningún condensador en las puntas de medición.
Puede existir variaciones mínimas en el ajuste, pudiendo aparecer un "-" cuando la puesta a cero no es  exacta.

Esto no es importante en la mayoría de los casos, solo es mínimamente apreciable en valores pequeños de pico faradios. La precisión en la mayoría de los casos es de +- 1pf .


Vemos el prototipo midiendo un condensador de 47pF, señalado con un punto rojo.
En este caso la precisión es exacta, pero lo normal es +-1pF.

Sigo manteniendo las dos líneas de programación, en C y ASM, teniendo algunas diferencias.
Para cambiar de escala debemos que mantener el pulsador apretado hasta que nos muestre en el LCD "Cambiando escala ",
C ASM
0-65500 Hz 0-16MHz  1S
0-655 KHz 0-16MHz  0.1S
0-6.5 MHZ 0-65MHZ  0.4S
0-65 MHz Medidor C    
Medidor C
Ejemplo: 32768 Hz Ejemplo:  000.032.768 Hz
frecapC.hex frecapASM.hex

Como curiosidad he probado el reloj interno del Chip a 4Mhz y como bien dicen las características tiene margen de error. Para medidor de C valdría, pero como medidor de frecuencia presenta margenes no tolerables. Como ejemplo para medir una base de tiempos de 32768, nos da una medición de 31928, -2,5%.

No me pidáis los códigos fuente, hasta dentro de 1 año no los libero.
Al que le interese el Chip 16F628 con el programa grabado, lo vendo por 6€ incluido el porte.
Me ha llegado una partida de 16F648 que es de 4k en vez de 2k, pero el programa funciona igualmente.

Próximamente realizare el montaje en circuito impreso.

Saludos.
SETA43

Juan Galaz

lunes, 23 de abril de 2012

Frecuencímetro 16f628-Frequency_counter

Frecuencímetro 16f628
Frequency_counter
Programación en C y Ensamblador
xsetaseta@gmail.com

Debo tener fijación por los frecuencímetros, pero vuelvo a la carga con ellos.
Después de haber realizado el frecuencímetro con el PIC 16f628 frecupla me he dado cuenta de que debido a los cambios realizados desde el 16f84 al 16f628, todo había mejorado. Cuando se utilizaba el 16f84 se tenía que utilizar el Timer0, que estaba sincronizado por la frecuencia del reloj interno, con lo cual se perdían algunos pulsos. Este problema también me ocurrió con el Atmega88, miATa3 , se perdían pulsos.
Resulta que revisando la estructura del 16f628, resulto que había incorporado un contador
Timer1 que si se quería no se sincronizaba con el reloj interno, además de ser de 16 bits.

Ahora todo es mas fácil, les doy las gracias a los ingenieros de Microchip.
Queda por cambiar la conexión del LCD al PIC y la entrada de la frecuencia,reprogramando todo el programa, quedando el circuito como a continuación se muestra.


Esquema del circuito frecupla2.

Una vez simulado el Proteus se monta el prototipo antes de hacer el circuito impreso.

Prototipo frecupla2.

Se ha realizado dos programas, uno e C y otro en C pero con la rutina en ensamblador y con cuenta de 3bytes.
La realización en C fue bastante fácil, poner los contadores de Timer1 a cero, esperar 1 segundo y visualizar el contenido. Hasta he hecho una rutina que me advierte de si la escala es incorrecta.
Programa frecupla en C.

El segundo programa hecho también en C, pero con la rutina en ensamblador es más complejo debido a que también he incrementado el numero de cuentas a 3 bytes para dar mayor precisión.
Program frecupla en C 3 bytes.

La comparación entre uno y otro programa es difícil de precisar.
Cuando la cuenta es de 3 bytes y con frecuencias altas, la precisión de los cristales es un quebradero de cabeza. Comparas dos cristales de 16Mhz de diferentes marcas y el resultado no es el mismo.
Para una mayor precisión deberíamos colocar condensadores ajustables en el cristal de procesador.

En conclusión , la precisión de utilizar un 16f84 a utilizar el 16f628 es abismal, no hay color, los pulsos no se pierden. Muchos montajes no han aprovechado las ventajas del 16f628, solo han sustituido un procesador por otro sin reprogramar.
Entre utilizar un programa u otro es un dilema. El primer programa cuenta en 2bytes (65536) y el segundo 3bytes (16millones). Realmente las precisiones de los cristales no dan para tanto por lo cual daría lo mismo el de 2bytes o el de 3bytes.

Próximamente lo montare en circuito impreso, hasta entonces...

Saludos
SETA43

Juan Galaz

lunes, 16 de abril de 2012

Modificación frecuencímetro - Programación en C

Modificación frecuencímetro
Programación en C
xsetaseta@gmail.com
Después de realizar el frecuencímetro en la placa hacerCI , he decidido reprogramar en C mi frecuencímetro Frecu32 para montarlo en dicha placa.
Es mas que nada probar la programación en C para un PIC 16f628A y 16f84A utilizando el compilador de C CCS.
La única modificación del circuito es colocar un pulsador para cambiar la escala. He utilizado 2 resistencias y un pulsador, es fácil soldarlos por la parte del cobre. De esta forma permite una precisión en la medición.
El caso es que me ha resultado mas difícil de lo que pensaba, el C utilizado en CCS es un poco particular, lo mejor es que cada uno lo averigüe por si mismo.
También me encontré una cosa de lo mas curiosa. La rutina  frecu3 está hecha en ensamblador y los tiempos deben ser exactos. Pues bien el compilador se dedica a optimizarlos, modificándolos para ahorrar unos pocos bytes. Conclusión no me funcionaba el programa como debería. Esto lo descubrí revisando el código ensamblador que devuelve el compilador de C. La solución la encontré con la orden #OPT 0   que evita la modificación del código.
Ahora dejo una cosa pendiente para los que sean puristas. En la lectura de la frecuencia no realiza una parada del contador, por lo que puede ocurrir una medición incorrecta en ocasiones muy concretas, son raras pero pueden ocurrir. Con solo dos o tres instrucciones en el ensamblador se corrigen, lo dejo para la tarea del que quiera montar el circuito.
También sería una buena opción el autorango, fácil de hacer.


Esquema del circuito con un 16f628A
Archivos 16f628A


Montaje del circuito con el 16f628A



Como tengo algún que otro 16f84A decidí intentar meter el programa en los 1024 bytes.
El caso es que se pasa por poco en memoria, lo cual me ha obligado a modificar el programa en C, recortando varias parte para al final entrar.
He tenido que recortar una escala, comentar parte del programa de manejo del LCD que no se utiliza, y por último quitar la presentación. Total que ha ocupado el 98% de la memoria del 16f84A.

Esquema del circuito con un 16f84A
Archivos 16f84A


Montaje del circuito con el 16f84A

Saludos.
SETA43

viernes, 23 de marzo de 2012

HACER UN CIRCUITO IMPRESO Construcción de un frecuencímetro

HACER UN CIRCUITO IMPRESO
Construcción de un frecuencímetro
xsetaseta@gmail.com
Mi intención es explicar como hago algunos circuitos impresos mediante el método de la plancha. Es un método poco costoso y fácil de hacer.
Aprovechando que quería montar un frecuencímetro, busqué por la red algún montaje. Entre los muchos que encontré he utilizado este:
 http://www.qsl.net/om3cph/counter/lcd/contribs/renato.htm
Lo principal era el tener el dibujo del circuito impreso para hacer la placa.
En primer lugar se debe imprimir el dibujo del circuito en un papel couché mediante una impresora láser. El papel couché es el que tiene brillo, se puede comprar en imprentas o utilizar el que se usa para propaganda y está impreso en una sola cara. En otras ocasiones he utilizado hojas de plástico trasparente, en este caso no se despega con agua.
En propiedades de la impresora colocar máxima densidad para que la tinta dejada sea abundante.
Aconsejo que antes de imprimir definitivamente haga una prueba en un papel borrador. Algunas impresoras escalan los dibujos y luego los pin de los circuitos integrados no coinciden.

Circuito impreso en un papel couché de propaganda.

Ahora de coloca frente a la cara de cobre del circuito impreso y se asegura que no se mueve mediante cinta adhesiva.
La placa de cobre debe encontrarse perfectamente limpia para que se pegue la tinta.

Se coloca un papel entre el papel couché y la plancha. De esta forma no se mueve el papel couché.

Se aplica el calor con la plancha para que se trasfiera la tinta del papel a la lamina de cobre.

Ahora ya tenemos el papel pegado al C.I. Personalmente dejo un pequeño rato que se enfríe la placa de C.I. sobre el mármol.

Dejarlo a remojo un rato para que se humedezca el papel y se pueda despegar. Es conveniente echar un poco jabón al agua.

Se empieza a despegar el papel mojado.

Según se va quitando el papel, se empieza a ver el circuito.

Ya tenemos quitado todo el papel y la tinta se ve pegada en el cobre.
Si por alguna causa queda mal, se puede repetir de nuevo todo el proceso quitando la tinta con disolvente .

Nos toca ahora quitar el cobre que no esta cubierto con la tinta. Yo utilizo Agua oxigenada 110vols mezclada con agua fuerte en la misma proporción. Si no queremos que la reacción sea rápida, podemos rebajar la mezcla con un poco agua. Dependiendo de la mezcla y de la calidad de los líquidos podemos tardar entre 1 y 10 minutos. En la imagen vemos que el cobre no cubierto por la tinta desapareció.


Limpiamos la tinta mediante disolvente.

Vemos el resultado final, antes del taladrado.

Taladramos los agujeros con brocas de 0,8mm y 1mm dependiendo del caso.

Terminamos lijando el C.I. para quitar la rebabas y lo limpiamos bien con alcohol.

Empezamos las soldaduras.

Ya tenemos todos los componentes colocados y soldados en la placa.

Vemos funcionando el montaje del frecuencímetro.

Un saludo.
SETA43

martes, 20 de marzo de 2012

MEDIDOR DE CAPACIDAD

Página principal

MEDIDOR DE CAPACIDAD
xsetaseta@gmail.com
Navegando por la red en páginas electrónicas encontré un medidor de capacidad.
Es un medidor de capacidad basado en el PIC 16f628, con muy pocos componentes, 5 resistencias, 6 condensadores, un cristal de 16Mhz, un regulador 7805, y un LCD de 16x2 standar.
En realidad está basado en otro desarrollo anterior basado en un 16f84 y un 555.  Pero como el 16f628 ya lleva un comparador incluido, se elimino el 555, quedando el circuito aún mas simple.
El funcionamiento es el siguiente:
-Un multivibrador astable oscila a una frecuencia determinada por la resistencia de 10k y el condensador de medida en paralelo con el condensador de ajuste de cero. Este multivibrador se realiza con el comparador incluido en el 16f628.
-El 16f628 cuenta la frecuencia del multivibrador astable  y lo transforma mediante formulas en capacidad, para visualizarlo en el LCD.
Una explicación bastante mejor se encuentra en la propia página del proyecto.
Yo he hecho algunas modificaciones que no cambian el funcionamiento, cambiar las 4 resistencias de 1k5 por 1k, lo he hecho por no disponer en ese momento de los valores pedidos.
El componente que mas quebraderos me dio fue el condensador de ajuste a cero(270pF), después de muchas medidas y comparaciones lo sustituí por uno de 470pF. Con este valor las medidas eran mas exactas en todos los rangos. Aconsejo que cada uno  haga sus propias pruebas con valores conocidos de condensadores.

Esquema de medidor de capacidad.


Disposición de componentes en circuito.


El circuito montado y en funcionamiento.

Fichero del circuito impreso en pdf  capmeter.pdf
Programa para el 16F628  capmeter.hex

Un saludo.
SETA43

miércoles, 7 de marzo de 2012

Construcción de un Arduino

Construcción de un Arduino

Es fácil comprar un arduino, existen multitud de tiendas en España, también lo podemos pedir en internet, los precios rondad desde los 14€ hasta los 25€ dependiendo de versiones.Creo que son bastante asequibles, si lo montáramos nosotros mismos comprando las piezas y contando el tiempo de soldar, nos saldría carísimo.
Claro está, que la satisfacción de hacerlo nosotros mismos es impagable.

Como yo, cacharro que me dan, cacharro que despiezo,(en otro artículo explicare mi sistema de despieze)  tengo muchas piezas de segunda mano. Pues bien, me he puesto la tarea de construir un arduino con piezas de segunda mano que tengo en el taller.Lo único que he comprado es el Atmega8, se puede emplear el Atmega328 que es mas facil de conseguir y mas barato.
Yo voy a construir el Arduino Severino (S3V3) , es un arduino hecho con componentes discretos y conectado al ordenador mediante la conexión serie. Esta conexión serie es difícil de encontrar en ordenadores modernos, e imposible en portátiles actuales. Pero existen conversores de USB-serie baratos, y hacen perfectamente su función.
Lo primero es visitar la página:


En esta página se explica todas las características de la placa y se pueden bajar todos los ficheros necesarios para construirlo.Personalmente he bajado el fichero:


de donde he sacado el circuito impreso y el despiece de componentes.
Lo primero es sacar una copia en papel del circuito impreso, asegurarse de que las proporciones sean reales y coinciden con las patillas de Atmega8. Yo tuve que hacer varias pruebas hasta que me quedo perfecto el alineamiento de las patillas.
El método que utilizo  para hacer el circuito impreso es el de la plancha. Consiste en imprimir mediante una impresora de láser, el circuito en un papel couche, es el papel que tiene brillo y que se utiliza en publicidad. Luego mediante una plancha de planchar ropa, aplicar calor y trasferirlo a la placa de cobre del circuito impreso. Luego el papel se quita mediante agua y jabón . Existe multitud de tutoriales de como hacerlo, algún día haré el mio propio. El resultado no es malo, y muy barato. Lo podéis ver en la imagen.


Ahora solo queda seguir los pasos del montaje que figuran en el manual, está bastante bien explicados. Existe un  dato en las características del condensador C9 valor de 10uF non_polarized electrolytic capacitor , lo que realmente hay que poner es un condensador electrolítico de 10uF, pero con el + puesto a masa.
Después de un tiempo soldando, dependiendo de la habilidad de cada uno, podéis ver el resultado.


Solo nos queda colocar el Atmega8  en el zócalo, pero antes hay que programarlo.
Como programador he utilizado el usbasp construido por mi.


El Bootloader utilizado lo he bajado de:


el fichero es atmega8_19200_16M.zip.
El programa de grabar es el buen avrdude, y las ordenes son las siguientes:

avrdude -p m8  -c usbasp  -V -e -U lock:w:0x3F:m -U hfuse:w:0xD8:m -U lfuse:w:0xFF:m -U efuse:w:0x03:m
avrdude -p m8  -c usbasp   -V -D -U flash:w:atmega_19200_16M.hex:i
avrdude -p m8  -c usbasp  -V -U lock:w:0x0F:m

Ya solo falta probar el Atmega8 en la placa. Se inserta en la placa y se conecta la alimentación. Automáticamente se pone a parpadear el led, esto nos muestra el buen funcionamiento de la placa. Junto con el Bootloader viene el pequeño programa de parpadeo de led.


Solo nos falta probar la conexión serie. Lo primero que probamos es mediante el propio puerto serie del ordenador, y luego probamos mediante el adaptador usb-serie.

Utilizamos el programa que viene en el arduino de ejemplo, Blink without Delay, cambiamos el tiempo de parpadeo, compilamos y lo grabamos en el arduino, viendo el buen funcionamiento en los dos casos.
La construcción de nuestro arduino a sido un éxito.
SETA43
07/02/2012

viernes, 10 de febrero de 2012

DIGITALIZACIÓN DE UNA REVISTA

Página principal

DIGITALIZACIÓN DE UNA REVISTA


Viendo la cantidad de libros y revistas que existen digitalizadas, me decidí hacer una prueba para digitalizar una revista que compro todos los meses.
Lo primero es cortar la revista con un cuter para separar las hojas.



Ahora colocar las hojas, 25 como máximo en mi escaner. Intente colocar muchas hojas a la vez y cogía mas de 1 hoja. El escaner que tengo es un Brother MFC-7420, es una impresora láser multifunción con alimentador automático.



El programa utilizado es gscan2pdf, está en la mayoría de las distribuciones de linux. Este programa digitaliza documentos y luego los guarda en pdf.
Lo primero es seleccionar la resolución, el mínimo que que yo recomiendo es de 150, menos se hace poco legible las letras.



Primero digitalizamos una cara, Anverso.



Y luego digitalizamos la otra cara, Reverso.


Teniendo digitalizadas la 20 página, las guardamos con el nombre de parte1.pdf.
Si por casualidad nos quedan desordenadas las página, podemos ordenarlas en el propio programa antes de guardarlas. También podemos quitar las páginas de publicidad, reduciéndose casi a la mitad el numero de páginas, y como consecuencia el tamaño del pdf a la mitad.
Se repite el proceso con todas las páginas de la revista guardándolas como parte2.pdf...parte3.pdf....
A una resolución de 150 puntos por pulgada 50 paginas tienen un tamaño 12Megas.
Una vez tenidas todos las partes de la revista digitalizadas en pdf, tenemos que unirlas.
El programa utilizado es pdftk , también disponible en la mayoría de las distribuciones linux.
La orden utilizada es:
            pdftk *.pdf cat output final.pdf
Y ya tenemos la revista digitalizada con el nombre final.pdf , tiene 177 páginas sin quitar la publicidad y con un tamaño de 38,5 M.

Un saludo.
SETA43