miércoles, 23 de marzo de 2016

Arduino Giróscopo o Giroscopio MPU6050

Página principal

Arduino
Giróscopo o Giroscopio
MPU6050


Tenía un MPU6050 hace tiempo, y debía realizar algún montaje con el, pero no tenía claro cual, hasta que me vino la idea de realizar un giróscopo donde los datos se representarían  en un PC.

MPU6050

Este módulo en concreto dispone de regulador de tensión, por lo cual se le puede alimentar a 5V.
El MPU6050 dispone de un giróscopo, un acelerómetro, y un medidor de temperatura.
La comunicación con el arduino se realiza a través de un bus I2C a 400KHZ en Fast mode.
Existe otro modelo MPU6000 que también dispone de una comunicación SPI  de hasta 20MHz.
Recomiendo la lectura de los manuales de fábrica:

MPU-6050_DataSheet_V3 4.pdf
RM-MPU-60xxA_rev_4.pdf


Para este montaje solo utilizaré el giróscopo, 6 bytes a partir del registro 0x3B (59 decimal), que por alguna extraña razón figuran como registros de acelerómetro.????


Como veis en la foto el montaje es muy simple:
A5->SCL
A4->SDA
GND->GND
Como este módulo lleva regulador 5V->VCC , si no llevara 3.3V->VCC



Programa en gambas.

Para probar el el giroscopio he realizado un programa en Basic de Gambas, una especie de VBasic para linux.
En este programa se representa la inclinación del giroscopio a modo de línea, donde Y es la línea del horizonte, y  X es la inclinación de avión o línea roja.
Los datos del giroscopio se mandan cada 250mS a través del arduino por medio de la comunicación serie.
Aunque los datos que nos proporciona el MPU6050 es de 2 bytes , he utilizado solo el byte alto para hacer sencillo el programa.
No he querido tocar nada de los registros del MPU6050 y dejar los valores por defecto, pero se puede regular el grado de sensibilidad.
El dibujo del avión en el programa me ha llevado tiempo, aún así no es tan preciso como la línea roja.

PROGRAMAS

VIDEO






Después de realizar el montaje, me surgió la idea de emplear todos los datos que proporciona el MPU6050, como son aceleración y temperatura.
El problema de detectar la aceleración, es que es no continua, es un momento en concreto y se debe chequear continuamente.
Existe una posibilidad de  emplear la interrupción del propio chip, pero para este montaje sencillo no he querido emplearla. He utilizado la lectura de aceleración cada 100mS que manda la programa en el PC y dependiendo de un valor umbral indico la dirección.
La lectura de la temperatura se realiza cada 1 segundo, y el giroscopio cada 250mS.
Se tiene que programar el arduino con el nuevo programa para que funcione el nuevo programa en el PC.


Nuevo programa.

PROGRAMA2




Saludos.
Juan Galaz

domingo, 20 de marzo de 2016

Gráfica radeon estropeada - HP modelo G62-b4055

Gráfica radeon estropeada.

El otro día me dieron un ordenador portátil HP modelo G62-b4055 , en donde estaba instalado windows 7. Tenía un serio problema, se colgaba de vez en cuando, con pantallas azules.  He de reseñar que en mi opinión se calentaba mucho
Lo primero que suelo hacer es formatearlo y dejarlo con la configuración de fabrica.Parece que al principio funcionaba bien, pero al día siguiente volvieron los cuelgues con pantalla azul.
Me gusta trabajar con linux y suelo probar distintas distribuciones, pero para hacer pruebas tengo un USB en el cual tengo distintas distribuciones. Después de varias pruebas conseguí que arrancara el linux en modo vesa, si colocaba el modo normal de Ati se colgaba.
Volví a windows 7 en modo prueba de fallos y deshabilite la tarjeta gráfica para que funcionase en modo svga. Al volver arrancar el windows 7 cargaba normalmente, pero con una resolución máxima de 1024x768 y sin aceleración gráfica, esto es mejor que tirar el portátil.
Como era de esperar en linux pasaba lo mismo, lo bueno es que nos ofrecia alguna información sobre lo que podía fallar en el ordenador.
[radeon] *ERROR* UVD not responding, trying to reset the vcpu!!
Está claro por alguna razón la tarjeta radeon está estropeada.
¿Que hacer para que funcione bajo linux en modo vesa sin aceleración?
Después de mirar por varias páginas de internet, encontré la solución. Para que arranque en modo vesa y no con los drivers de radeon hay que añadir en la configuración de grub lo siguiente:
nomodeset autoexec=vesa-mode radeon.runpm=0 rd.blacklist=radeon

Quedando el arranque como:

linux    /boot/vmlinuz-3.19.0-32-generic root=UUID=9713194b-9acf-49df-9274-ccd7763bdce8 ro   nomodeset autoexec=vesa-mode radeon.runpm=0 rd.blacklist=radeon


Ahora arranca perfectamente, pero con una resolución máxima de 1024x768 y sin aceleración.

Un saludo.
Juan Galaz

martes, 15 de marzo de 2016

Arduino - Reloj - Termómetro - MAX7219

Página principal

Arduino
Reloj - Termómetro
MAX7219
Matriz de leds


En esta ocasión realizo un reloj y termómetro que muestra alternativamente los datos.
Para el reloj en tiempo real utilizo un módulo de tiempo real que utiliza el chip DS1302.
Como sensor de temperatura utilizo el sensor DS18B20.
El diseño del programa está para colocar hasta 4 módulos MAX7219 en cascada, lo que significa 8 caracteres.
Aunque en el circuito solo se coloquen 2 módulos, los datos mandados a los módulos son para 4 módulos.
En esta ocasión utilizo un buffer de 32 bytes para almacenar la representación de los módulos.
Cuando se ha realizado todas las operaciones sobre el buffer, se llama al procedimiento Refres()  que vuelca todos los datos del buffer a los leds de los módulos.



Esquema del funcionamiento del MAX7219.



Módulo LED - MAX7219
Mando a distancia - PT2272


Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.

   
Reloj y termómetro funcionando.

Con el mando a distancia cambiamos la hora de la siguiente forma:
Si pulsamos el botón  C  entramos en el modo de cambio de hora, poniéndose automáticamente las horas y los minutos a cero.
Si pulsamos el botón  A aumentamos los minutos, y si pulsamos B aumentamos las horas.
Para fijar la hora se pulsa el botón C y queda ajustada la hora.

También se puede utilizar pulsadores si el reloj tiene buen acceso y se puede eliminar el mando a distancia y el receptor.

Para el manejo del DS1302 utilizo la librería DS1302 .
Si se quiere ir al sitio de la librería es :  http://www.rinkydinkelectronics.com/library.php

Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

En un próximo montaje colocare todos los componentes en un circuito impreso, quedando todo el circuito compacto.


PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/
http://www.rinkydinkelectronics.com/library.php

miércoles, 9 de marzo de 2016

Marcador deportivo2 - MAX7219- Modo cascada

Página principal

Arduino
Marcador deportivo 2
MAX7219
Matriz de leds


En el anterior montaje de marcador deportivo, matrix.html , había realizado el montaje con el MAX7219 manejando independientemente por una línea CS. Para este segundo montaje he cambiado de estrategia, utilizando el modo encadenado. Esto facilita la conexión de muchos módulos en cascada, uniendo uno detrás de otro.
El diseño del programa está para colocar hasta 4 módulos MAX7219 en cascada, lo que significa 8 caracteres.
Aunque en el circuito solo se coloquen 2 módulos, los datos mandados a los módulos son para 4 módulos.



Conexionado en cascada del MAX7219


Módulo LED-MAX7219 Mando a distancia - PT2272


Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.


Marcador funcionando.

Con el mando a distancia cambiamos los números, subir o bajar tanteo de cada segmento, hasta un máximo de 25.
Si pulsamos a la vez los botones A y C  del mando a distancia, el marcador se pone a cero.
Si pulsamos a la vez los botones D y B  del mando a distancia, aumentamos progresivamente la luminosidad de los leds hasta un máximo de 15, luego vuelve a 0.
Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

A nivel de programación del arduino he cambiado respecto al anterior montaje varias cosas:
-La conexión del módulo receptor al arduino se realiza a través de las entradas D2-D3-D4-D5 del arduino.
-He modificado el programa para que ocupe la mitad de tamaño, eliminando los String y utilizado librería propia para pasar numero a cadena.
-Como he cambiado el modo de mandar datos al MAX7219, he tenido que rediseñar todas las librerías.
-En aumento de tanteo al apretar los botones A y C del mando, no se auto-aumenta si no sueltas el botón.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/

domingo, 6 de marzo de 2016

Marcador deportivo - MAX7219 - Matriz de leds

Página principal

Arduino
Marcador deportivo
MAX7219
Matriz de leds


En un anterior montaje ardisx.html , había realizado un marcador controlado por bluetooth, utilizando el chip MAX7219.
En esta ocasión utilizo el mismo chip pero manejando 2 módulos de matrices de diodos, y manejados por un control de mando a distancia.
Estos módulos vienen montados con 64 leds manejados por el chip MAX7219, se pueden encadenar conectado el DOUT de un módulo con el DIN del módulo siguiente. Para este montaje no utilizo esta propiedad de encadenado, los utilizo como módulos sueltos manejados independientemente por una línea CS, esto tiene sus pros y sus contras.












Módulo LED - MAX7219 Mando a distancia - PT2272





Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.


Marcador funcionando.

Con el mando a distancia cambiamos los números, subir o bajar tanteo de cada segmento, hasta un máximo de 25.
Si pulsamos a la vez los botones A y C  del mando a distancia, el marcador se pone a cero.
Si pulsamos a la vez los botones D y B  del mando a distancia, aumentamos progresivamente la luminosidad de los leds hasta un máximo de 15, luego vuelve a 0.
Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/