El acelerómetro analógico MMA7260

Introducción

Un acelerómetro, es un dispositivo electrónico, en el que su señal de salida, es dependiente de la aceleración a la que ha sido sometido.

El acelerómetro MMA7260 de Freescale Semiconductors tiene las siguientes características:

  • Mide la aceleración en tres ejes.
  • Sensibilidad configurable (1.5g/2g/4g/6g)
  • Bajo consumo de corriente: 500 uA.
  • Modo sleep: 3uA.
  • Alta sensibilidad (800 mV/g @ 1.5g)
  • Bajo voltaje de operación: 2.2V – 3.6V.

Y se utiliza típicamente en:

  • Discos duros de reproductores MP3: Detección de caída libre.
  • Laptops.
  • Celulares.
  • En brújulas electrónicas para compensar la inclinación.
  • En juegos: para detectar la inclinación y el movimiento.

Su bajo consumo de corriente lo hace ideal para trabajar en aplicaciones donde su fuente de alimentación principal son baterías.

Plot con pyqt4 y qwt5 primera parte

Python es un lenguaje de programación interpretado muy fácil de aprender y de utilizar, con una gran cantidad de módulos que nos permiten hacer casi cualquier cosa.
En este ejemplo, se muestra como crear una interfaz grafica sencilla hecha en Qt en conjunto con la librería qwt para hacer un grafico de una onda senoidal que podamos manipular. Elegí qwt sobre matplotlib, por que para graficas en tiempo real, es mucho mas rapida la libreria qwt que matplotlib.

Lo que debe hacer la grafica es lo siguiente:

    Dibujar una onda seno y una onda coseno.
    Tener limites el eje X de [0,100] y en el eje Y de [-100,100].

Este ejemplo es de referencia para futuros proyectos.

Por comodidad hice la plantilla en qt designer, utilizando un widget vertical layout como contenedor de la gráfica. Para que el código creado en qt designer pueda ser usado en python, se utiliza pyuic que viene incluido en el paquete PyQt. Con esta línea

pyuic4 -o nombredelarchivodesalida.py nombredelarchivo.ui

el archivo con extension ui es el que se crea en qt designer y se obtiene un archivo de salida que puede ser utilizado en python.

La plantilla de la ventana es la siguiente:

Le quite el tool bar y el status bar. El cuadro rojo es del vertical layout donde se inserta el grafico.
Para poder utilizar la interfaz hecha en qt designer, la importamos como si fuera un modulo:

  1. from Ui_ejemploqwt_ui import Ui_MainWindow

Primero creamos el marco donde se dibujarán todos los elementos que incluyamos en la gráfica, esta clase se llama qwtplot. Esto se hace con la siguiente función:

  1. def createPlot(self, color):
  2.     #en esta parte se crea el plot que seria todo el marco y los numeros "el cascaron"
  3.     plot = Qwt.QwtPlot()
  4.     plot.setCanvasBackground(QtGui.QColor("black"))
  5.     plot.setAxisTitle(Qwt.QwtPlot.xBottom, 'X Axis')
  6.     plot.setAxisTitle(Qwt.QwtPlot.yLeft, 'Y Axis')
  7.     plot.setAxisScale(Qwt.QwtPlot.xBottom, 0, 100)
  8.     plot.setAxisScale(Qwt.QwtPlot.yLeft, -100, 100,10)
  9.     plot.setAxisAutoScale(Qwt.QwtPlot.xBottom)

Corremos el programa y obtenemos la siguiente ventana:

Plot con pyqt4 y qwt5 Segunda parte

En esta segunda parte las funciones que se añadirán a la grafica son las siguientes:

    Una línea (marker) que corte el gráfico por el centro, Y= 0
    Un indicador de coordenadas.
    Marcar cada punto en la grafica en el que se hace clic.
    Además de crear una línea horizontal donde se haga clic que “corte” la grafica.
Para crear el indicador de coordenadas se utiliza la clase QwtPlotPicker. La estructura general de este objeto es la siguiente:
  1. QwtPlotPicker (int xAxis,
  2. int yAxis,
  3. int selectionFlags,
  4. RubberBand rubberBand,
  5. DisplayMode trackerMode,
  6. QwtPlotCanvas *)
Donde:
xAxis: Es el eje de donde toma el valor mostrado con respecto al eje X. El plot puede tener dos ejes X, uno a la izquierda y otro a la derecha. En es elemento se indica de donde se tomará el valor de referencia.
yAxis: Tiene la misma función que xAxis pero tomando el eje Y como referencia.
selectionFlags: Puede seleccionarse entre PointSelection que devuelve un valor tipo QPoint o RectSelection que devuelve un valor tipo QRect.
Rubberband: Establece la forma de las líneas que indican el punto a seleccionar. Puede ser, una cruz que muestra lar coordenadas X y Y, una línea horizontal que solo muestra las coordenadas del eje X, una línea vertical que solo muestra las coordenadas del eje Y, sin líneas, una elipse, y un rectángulo. Estos dos últimos modos, solo se pueden utilizar con el tipo RectSelection.
DisplayMode: Puede ser siempre visible, visible cuando solo cuando se haga clic o invisible.
QwtPlotCanvas: Es el objeto tipo plot al que se le va a insertar el selector (picker).
En el siguiente ejemplo se creará un selector que indique las coordenadas X y Y, que sea visible solo cuando se haga clic en el plot, con el color de texto en blanco, y color de las líneas en color magenta.
  1. picker = Qwt.QwtPlotPicker(Qwt.QwtPlot.xBottom,
  2.         Qwt.QwtPlot.yLeft,
  3.         Qwt.QwtPicker.PointSelection,
  4.         Qwt.QwtPlotPicker.CrossRubberBand,
  5.         Qwt.QwtPicker.ActiveOnly,
  6.     plot.canvas())
  7.     picker.setTrackerPen(Qt.QPen(Qt.Qt.white)) #text color
  8.     picker.setRubberBandPen(Qt.QPen(Qt.Qt.magenta))
Cuando ejecutamos el programa, al hacer clic en cualquier punto del plot obtenemos lo siguiente:
Ahora crearemos una línea horizontal que corta el gráfico por la mitad, esto se hace con un objeto qwtMarker. Solo necesitamos indicar las coordenadas de la línea, si es horizontal o vertical, y el color. Esto se hace de la siguiente manera: