Mostrando entradas con la etiqueta Electronic Circuits. Mostrar todas las entradas
Mostrando entradas con la etiqueta Electronic Circuits. Mostrar todas las entradas

20 feb 2008

Presentando Arduino


Arduino es una plataforma de desarrollo gratuito para microcontroladores de gama baja. Tiene como principales virtudes para el aficionado:
  • Muy bajo coste, en eBay se puede encontrar el kit completo por unos 20€. En realidad todo es gratuito, pero si te compras los componentes por separado te sale mas caro.

  • Entorno de programación extremadamente sencillo y fácil de entender. Totalmente gratuito y constantemente mejorado por la comunidad.

  • No es necesario ningún programador.

  • Se programa y en tiempo real se ven los resultados.

  • Lenguage de programación extremadamente simple, es muy fácil realizar tareas sencillas.

  • Hay muchas aplicaciones disponibles para implementar en Arduino desarrolladas por la comunidad virtual.

  • Hay una version mini que ocupa muy poco y pesa solo unos gramos, ideal para proyectos embarcados en el avión (por ejemplo el típico circuito de leds)


No obstante, Arduino tiene algunas limitaciones:

  • Tiene limitaciones de velocidad y fiabilidad que la invalidan para uso profesional, al menos de momento. Esto quiere decir que no vale para aplicaciones muy exigentes.

  • Si no se compra el microchip de Atmel ya programado, entonces hay que programarlo uno mismo la primera vez. Para ésto sí haría falta un programador adicional. Esto no es un problema real en realidad ya que el chip de Atmel programado es muy barato si se compra todo en un kit.

  • El lenguaje Wiring es simple pero limitado si se compara al C o al ensamblador.

En breve pondré un ejemplo sencillo para uso en RC: un chequeador de Servos.

Algunos enlaces de interés:

30 may 2007

LipoChecker - el revisor de Lipos


Un circuíto muy simple para, en unos pocos segundos, decirte en casa o en el campo de vuelo si la lipo está cargada, a media carga, etc, y si tiene los elementos sin balancear.

He buscado algo similar y no lo he encontrado, ni siquiera a nivel comercial -aunque no digo que no exista-. Sí que hay circuitos mas simples que te dicen si la lipo esta cargada o no, pero no detectan medias cargas, ni tampoco te dicen si hay elementos sin balancear (excepto que un elemento esté totalmente descargado y los otros no).

De momento solo para 3 elementos (que al menos para mí es el mas popular de los formatos de Lipo) este es un extremadamente barato y sencillo chequeador de lipos. Cumple las siguientes funciones:

* Indica el voltage por celda, con precisión de 0.1V.

* Comprueba que no estén desequilibradas.

* Comprueba que el voltage de celda no sea superior a 4.2v ni inferior a 3V.

* Calibración automática

Para mantener el diseño compacto y barato, utilizo un simple led para dar información. Esto tiene el inconveniente (habitual ya en muchos variadores, pero en forma de pitidos) que hay que codificar la información de una forma un poco peculiar (por ejemplo, en los variadores tienes que escuchar una serie de pitiditos determinados para configurar una cosa u otra, reconozco que es un poco rollo, pero es lo que hay si quieres hacerlo barato).

Este es el circuito:
Y tiene ésta pinta una vez montado, he soldado un adaptador para las típicas lipos de Himodel o las Hextronic, pero se puede soldar obviamente cualquier conector acorde con las lipos usadas.


El micro usado es el PIC12F683 de Microchip, una pequeña maravilla de 2KB de pequeño tamaño (DIP8) que tiene los ADCs necesarios para éste circuito y a la vez reloj interno.

Para programarlo, mira el post en ésta web sobre el programador JDM, aunque se puede usar cualquier otro que sea compatible con éste PIC. La ROM la envío por email. No la pongo directamente aquí porque no quiero dar facilidades a copias comerciales de la misma, no es que el circuito ni la ROM sean muy complejas, pero ya que le he dedicado un rato a hacerlo, me niego a dar facilidades a que alguna marca lo copie sin mas y lo venda. Así que si quieres la ROM mándame un email indicando explícitamente que no lo usarás con fines comerciales sino privados, y te lo mando por email totalmente gratis. No envío el código fuente.

También tengo por aquí algún excedente de componentes necesarios para montar el circuíto, incluído el PIC ya programado, si te interesa mándame un email y hablamos de cómo mandártelo. Lo que no hago, por falta de tiempo, es montar circuítos.

¿Cómo funciona?

Pues básicamente te indica en el led los siguientes estados, en un bucle infinito que se repite mientras la lipo esté conectada:

Indicación de inicio de comprobación: 2 flashes muy cortos, medio segundo, 2 flashes muy cortos otra vez.

* Si alguna celda (no te dice cual) no está balanceada (>0.1v de diferencia con las otras): 30 flashes muy cortos, indicando "peligro".

* Si alguna celda tiene una tensión demasiado elevada (>4.2v): LED encendido continuo por 5 segundos.

* Si alguna celda tiene una tensión demasiado baja (menor de 3.0v): LED con dos flashes de 0.5 segundos, luego uno largo de 5 segundos.

* Si ninguna de las comprobaciones de arriba falla, entonces da la lectura, en un flash de 1 segundo por cada 0.1V, de la celda lipo comparada con 3V. Es decir, si la celda lipo tiene 3.2V, entonces 2 flashes, si tiene 3.8V, 8 flashes, y si tiene 4.2V justos, 12 flashes. Es mas sencillo usarlo que explicarlo.

Estoy preparando un LipoCheckerPlus que usa un LCD para dar la lectura, comprueba hasta 6S, y tiene mas florituras, pero necesita mas componentes y es obviamente mas caro.

Calibrado

Como podéis ver, el circuíto utiliza un integrado de referencia de tensión de precisión, que da exactamente 1.235V, de forma que el micro lo usa como tensión estable de referencia para los ADC que establecen cuánto tiene exactamente cada celda. El problema de la precisión viene de las resistencias principalmente, que con un 5-15% de tolerancia típica pueden variar demasiado nuestras medidas y el micro puede informar de un desbalanceo o tensión demasiado alta o baja simplemente porque las resistencias no dividen el voltage correctamente. Asi que no hay nada mas apropiado que dejar que el micro se calibre solo, para que sin importar la tolerancia de las resistencias, de una lectura positiva. No entro aquí en la tolerancia adicional por temperatura o edad de los componentes, porque la precisión que necesitamos (0.01V sobre 3V) es muy baja e inmune a estas variables para componentes estándar.

¿que pasa si no calibro? Pues nada, no es imprescindible, simplemente tu chequeo de lipos será menos fiable. Si no está calibrado, podría ser que a 3.1V te indique demasiado baja, o a 4.1V demasiado alta, etc, ya que la lectura del ADC del PIC tendrá unas referencias inexactas.

El proceso de calibrado es el siguiente (hace falta un polímetro):

1) Carga una lipo de 3S completamente, asegúrate que está equilibrada.
2) Comprueba con el polímetro que cada celda tiene 4.2V. Para que la calibración funcione, es importante que la variación entre celdas sea muy baja, idealmente menor qu 0.01V, y que la tensión se ajuste dentro de éste margen a los 4.2V. Es decir, nos valen 4.21V o 4.19V, pero ya algo como 4.14V no nos vale, puesto que afectará a la precisión posterior del sistema. Ver variante 2b) mas abajo.
3) Con una lipo en éstas condiciones, conectarla al circuíto y esperar que pasen unos segundos para asegurar una lectura inicial.
4) Quitar el Jumper de calibración JP2.
5) Esperar a que el LED indique fin de calibración: Destello de 1 sg, seguido de dos muy muy cortos, y luego uno largo de 10 sg. En ese caso, volver a enchufar el JP2 y ya podemos considerar el circuíto completamente calibrado. No necesitaréis repetir este proceso nunca mas, excepto si sospecháis que el circuito no está leyendo las tensiones correctamente (usad un polímetro en ese caso para comprobarlo en la lipo).

Variantes

*) Tengo por casa LM385 de una subasta de eBay, asi que puedo enviarlos si alguien no los consigue en su tienda habitual. No obstante, hay otra opción: el LM385 es para dar una buena precisión y estabilidad a la lectura, pero se puede obtener un resultado aceptable usando una resistencia variable de unos 10K que sustituya a R2-VR1, a condición de que con un polímetro obtengas en GP0 una tensión de 1.2V. Con esta variante, te ahorras el LM385 pero dependes de la precisión del regulador 7805, que la verdad no es muy buena.

*) 2b - Si no consigues que tu cargador de lipos / equilibrador te deje la lipo con una tensión clavada a 4.2V, puedes fabricarte un puente de resistencias ajustables que den esa tensión. No lo explico más por lo obvio, pero en cualquier caso se trata de conseguir, en el momento del calibrado, una tensión de 4.2V lo mas precisa posible por celda.

8 may 2007

Programando microcontroladores PIC

En próximas entregas iré poniendo algunos circuítos útiles, muchos de ellos usan micros PIC o incluso dsPIC de la casa Microchip. Los circuítos sencillos los publicaré incluído el firmware para poder montarlos por cualquiera, mientras que los mas completos solo a través de pedidos, dado que gestionar programas grandes lleva mucho tiempo.


Una pregunta habitual es qué hace falta para programar un PIC: es decir, tengo el circuíto, lo he montado, tengo incluso el micro pero ¿cómo lo programo?. Pues depende, hay muchas opciones, pero la mas sencilla para programar un PIC con un firmware disponible en una página como ésta, es comprarse un programador JDM, que cuesta unos 10 o 15€ en eBay, puesto en casa.


Este sencillo programador se conecta a un puerto serie del PC (cuidado porque el de algunos portátiles no valen ya que tienen una tensión demasiado baja para el estándar RS232 real).
Una vez conectado el programador JDM, se descarga el fichero xxx.hex y se lo lee con Winpic: http://freenet-homepage.de/dl4yhf/winpicpr.html, seleccionas el modelo de PIC (por ejemplo el 12F683) y el programador JDM y puerto serie (por ejemplo COM1), se selecciona "Record" y en unos segundos el PIC está listo para funcionar en el circuíto final.

15 oct 2006

Simple charger for Multiplex EVO [English only]

After months using a simple 12v wall charger for my EVO, I ended up adding a simple constant current source to guarantee 1/10C charge and also a simple LED to guarantee the EVO is charging.

See http://docs.google.com/View?docid=ddmbp9v7_1gb3fnh for more info and circuit schematic.

By the way, none of the components are critical. You can use almost any PNP transistor, and the resistor values are not critical either, except the 8.2ohms resistor to guarantee 150mA constant current.