ARDUINO: Nivel de dos ejes

ARDUINO: Nivel de dos ejes – Construcción de un nivel electrónico de dos ejes, con ARDUINO y MPU-6050. Leyendo los valores que entregan los giróscopos de ambos ejes del MPU-6050, cuya resolución es de 14 bit para los 180º de cada eje. Posteriormente se calibran los valores con un inclinómetro de burbuja, obteniendo una precisión media mejor de 5º. Al mostrar la inclinación de ambos ejes de forma simultánea, este medidor puede ser muy útil para orientar paneles solares, antenas parabólicas, cubiertas de tejados, etc.

Inclinómetro
Inclinómetro

Giróscopo y acelerómetro: MPU-6050

Chip: MPU-60X0
Chip: MPU-60X0
MPU-6050
Módulo: MPU-6050

La construcción de este medidor de ángulos de 2 ejes, puede realizarse sin la necesidad de utilizar el módulo ARDUINO Uno. Aparte del módulo MPU-6050, sólo sería necesario extraer el micro-controlador ATMEGA328P (una vez programado) y montarlo en un circuito impreso aparte. Para realizar este montaje, además del micro-controlador se necesitan algunos componentes más para que el dispositivo funcione. A continuación se muestra un esquema de montaje, en el que se incluye también un circuito de alimentación, compuesto por una batería de Li-ion, junto con su módulo de carga TP4056 y un módulo Step-Up de 5v.

El código de programación para este montaje puede descargarse desde el siguiente enlace (es el denominado): Angulos.ino 

Esquema: Nivel de 2 ejes

Si se quisiera utilizar un medidor con más prestaciones, se podría añadir a este circuito el módulo BMP280, el cual incluye un sensor barométrico y un sensor de temperatura. De esta manera, el medidor podría disponer de dos funciones:

  1. Medidor de nivel de 2 ejes
  2. Altímetro barométrico + temperatura

El código de programación para este montaje puede descargarse desde el siguiente enlace (es el denominado): Alti_Nivel.ino 

Esquema: Altímetro y Nivel

Puede ver más detalles de este montaje en el siguiente video:

ARDUINO: ENTRADAS-SALIDAS

Probaremos las entradas/salidas digitales, las salidas PWM y las entradas analógicas. Como práctica, regularemos el encendido de un diodo LED (salida PWM), dependiendo de la tensión de entrada que obtengamos en una entrada analógica. También construiremos un generador de 4 melodías, utilizando una salida digital de Arduino.

Los archivos de ejemplo que aparecen en el video, puedes descargarlos desde el siguiente enlace: ARDU_IN.rar

Arduino UNO dispone de 20 puntos de conexión: 14 Entradas/Salidas digitales, 6 de ellas podrían utilizarse como salidas PWM, y 6 entradas analógicas.

Las salidas PWM son de 8 bits, y están localizadas en los pines: 3, 5, 6, 9, 10 y 11.

Las funciones PWM hacen uso de los Timer para generar la señal de salida. Cada Timer puede controlar entre 2 y 3 de las salidas PWM. Para ello dispone de un registro de comparación por cada salida. Cuando se alcanza el tiempo correspondiente al valor del registro de comparación, la salida invierte su valor.

Cada salida conectada a un mismo temporizador comparte la misma frecuencia, aunque pueden tener distintos anchos de impulso (Duty cycle), dependiendo del valor de cada registro de comparación.

La frecuencia estándar para las salidas PWM en Arduino Uno, Mini y Nano es de 490 Hz para todos los pines, excepto para el 5 y 6 cuya frecuencia es de 980 Hz.

Al existir una asociación directa entre las salidas PWM y los Timer, es importante saber que no es posible utilizar un Timer en el programa si ya se está utilizando para controlar una salida PWM. Esta es la relación que existe entre los Timer y los controles PWM de Arduino Uno, Mini y Nano:

El Timer0 controla las salidas PWM 5 y 6
El Timer1 controla las salidas PWM 9 y 10
El Timer2 controla las salidas PWM 3 y 11

Por otra parte, la librería servo utiliza el Timer 1, de manera que tampoco podremos utilizar los pines 9 y 10 si estamos utilizando un servo.

Arduino: Entradas-Salidas

Cuando se utiliza una entrada analógica, es importante conocer el nivel de tensión máximo que vamos a muestrear. Nunca se deberían superar los  5V en las entradas, pero si podríamos utilizar umbrales máximos de menor tensión y mejorar la resolución de las medidas. Arduino dispone de la entrada AREF (pin 21 del ATmega328P) destinada para definir el nivel de tensión máximo de su conversor Analógico-Digital (ADC).

Reparación ARDUINO UNO

Sustitución del interface USB (ATMEGA 16U2) y del regulador de 5V (AMS1117), en el Arduino UNO. Localización de los componentes de Arduino UNO v3, siguiendo su esquema eléctrico. Descarga del software FLIP de ATMEL, y proceso de instalación en el PC. Recarga del fichero ‘flash’ correspondiente al Arduino UNO, en el nuevo chip (ATMEGA 16U2) que se ha sustituído. Comprobación de funcionamiento del módulo Arduino UNO, después de la reparación.

Esquema: Arduino UNO (v3)
Esquema: Arduino UNO (v3)

Para sustituir el chip ATMEGA 16U2 es necesario disponer de un soldador de aire caliente. Sin embargo, el regulador de 5V (AMS1117), a pesar de que es un componente SMD, podría sustituirse con un soldador para electrónica de tipo convencional.  Como podemos ver en el esquema anterior, el chip ATMEGA 16U2 es un micro controlador programable, y es necesario cargar un fichero  en su memoria ‘flash’ cuando se sustituye. Para programar la memoria ‘flash’ utilizaremos el software del fabricante ATMEL, el cual podemos descargar desde su página Web en el siguiente enlace:

 http://www.atmel.com/tools/flip.aspx

Una vez que hayamos conectado el módulo Arduino con el PC, mediante su conexión USB. Podremos comprobar con el administrador de dispositivos de Windows si nuestro PC necesita el driver o ya lo tiene instalado. En caso de que tengamos que instalar el driver, lo haremos apuntando a la carpeta en la cuál hayamos instalado el software FLIP…

C:\Program Files (x86)\Atmel\Flip 3.4.7

Una vez que haya detectado el dispositivo nuestro PC, podremos cargar el archivo ‘flash’ que se corresponda con nuestro dispositivo Arduino (UNO, Mega, etc). El archivo que tenemos que cargar está en formato hexadecimal, y lo podemos encontrar en nuestro PC, dentro de la carpeta de Arduino

C:\Program Files (x86)\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\arduino-usbserial

Software: FLIP
Software: FLIP

Dentro de esta carpeta encontraremos varios ficheros, elegiremos el que se corresponda con nuestro dispositivo Arduino. Por ejemplo para el Arduino UNO, podemos cargar el fichero:

Arduino-usbserial-atmega16u2-Uno-Rev3.hex 

Puedes ver la reparación y todo el proceso de programación en el siguiente video: