jueves, 2 de abril de 2009

Kalman y AVR

Navegando un poco con la red me encontre con el siguiente proyecto de mpthompson.

Lo interesante es que se ha dado modos de implementar un filtro de Kalman en un atmega. Lo mejor de todo es que ha publicado el codigo para el que quiera usarlo. Si alguien esta interesado, el codigo se lo puede descargar en:


http://home.comcast.net/~michael.p.thompson/kalman/AVR_IMU_3.zip

jueves, 26 de marzo de 2009

Termometro de red

Jugando un poco con el codigo del voltimetro publicado anteriormente, se me ha ocurrido ahora hacer un termometro que me permita revisar la temperatura en mi sotano, desde mi habitacion.

El esquema es el siguiente:

El servidor contiene una aplicacion en c# que lee periodicamente los datos del voltimetro (en este caso configurado como termometro). Esta aplicacion se encarga de esperar por maquinas cliente que se conecten al puerto 9050.

El circuito es muy simple, el atmega lee los datos del sensor. Estos datos son leidos por el servidor, que espera a su vez conexiones desde el cliente.

El cliente fue escrito tambien en c#. Consiste en un timer que regularmente se conecta al sevidor y pregunta por la temperatura. Esta es mostrada en un indicador, en el panel lateral se muestran las variaciones diarias.

El codigo fuente se lo puede descargar aqui. El codigo del Microcontrolador corresponde al voltimetro presentado anteriormente.

viernes, 20 de marzo de 2009

Adaptador USB - Puerto Serie

Recientemente me compre una portátil. Me ha dejado satisfecho hasta el momento, pero desgraciadamente no trae el puerto serie RS232, solo puertos USB. Lo cual es un poco molesto cuando trabajo con microcontroladores.

Si bien hay adaptadores disponibles, me pareció mas divertido construir mi propio adaptador. Afortunadamente, ahora estan disponibles adaptadores usb-serie en un chip, como el FT232BL usado en este proyecto. El chip contiene todo lo necesario, solo se necesita adicionar un cristal y unos cuantos componentes externos.

Ademas de eso, es una buena idea, al menos para mi, disponer de una fuente de alimentación que pueda utilizar donde sea. Asi que se me ocurrio adicionar al adaptador usb-rs232 un par de fuentes, una de 5v que se puede conseguir muy simple desde el puerto USB, y una de 3.3v, para los nuevos circuitos integrados de bajo voltaje. Ademas, claro, de disponer todo el circuito en una platina para una conexión rápida al protoboard.

Ok. Entonces el circuito se presenta asi:

- Conversor USB-RS232 + fuente de alimentacion +5V y otra de +3,3V. La fuente de alimentación de 5V se obtiene directamente desde el USB, a travez de un varistor de 100mA para protejer al puerto USB de algún ocacional cortocircuito. La fuente de 3.3V se consigue mediante un MAX1658.

Este es el circuito terminado. Se puede ver el max1658 el cristal y el conector usb, todo en un empaq apenas mayor que una targeta sd

SDC11130.JPG

Del otro lado se encuentra el FTDI232BL. Un poco dificil soldar el smd, pero con algo de paciencia se puede lograr.

SDC11131.JPG

Bueno, con algo de paciencia y un prototipo destrozado. Esto paso al tratar de desoldar el ftdi con la pistola de aire caliente.

SDC11114.JPG

Esta es la culpable.

SDC11113.JPG

Bueno, para los interesados, se puede descargar el circuito, en conjunto con el pcblayout desde:

http://h1.ripway.com/fasanza/USB-Serial.zip

Salu2.

lunes, 16 de marzo de 2009

Voltimetro multicanal con ATMega16

Los microcontroladores avr de atmel, son de lo mejor en micros de 8 bits. Compilador en C gratuito, y montones de periféricos, ademas de ser muy sencillos de usar. A continuación un sencillo voltimetro para PC, realizado a partir de un ATMega16.

HARDWARE

El hardware es muy simple. Un atmega16 tiene casi todo lo necesario. Lo único adicional es un conversor de nivel, para la comunicación con el pc. Un MAX232, hace el trabajo. Ademas de una fuente de alimentación, claro.

FIRMWARE

El firmware del micro fue escrito en C, con el entorno AVRStudio, y WinAVR. El código fuente, con comentarios se puede descargar de aqui.

El protocolo de comunicación es muy simple. Una vez conectado al computador, usando hyperterminal, por ejemplo, la secuencia "RCH X" donde X representa un número entre 0 y 7, devuelve el valor en voltios en el canal seleccionado.

Ejemplo: (en hyperterminal) ( baudrate 57600, 8bits, noparidad, 1 stop bit)

RCH 1 /// escribir esto en hyperterminal. lee el voltage presente en canal 1

CH 1 = 2.345345 /// valor devuelto por el micro.

SOFTWARE

La aplicación para la PC fue escrita en C#. Para recompilar el código, es necesario el visual studio (express). El código lo pueden descargar aqui.

Archivo del blog