miércoles, 1 de diciembre de 2010

Primer Proyecto con Arduino y motor 12V

Si, ya se, no es el primer tutorial o articulo que se presenta en internet bajo este tema, pero a diferencia de los demás, este tiene los códigos de los componentes correctos, fácilmente adquiribles en las tiendas de electrónica de México, ya que los publicados en otros lados tienen códigos que no existen en el País, y sus equivalencias tampoco se encuentran o no son correctas.


Llevo un poco de tiempo encontrar las equivalencias( y un poco de dinero también) pero aquí esta, y espero que sea de utilidad para todos aquellos que deseen introducirse al mundo de los microcontroladores con Arduino, y muy pronto empezaremos a incluir temas con microcontroladores PIC y ATMEL, asi como interfáses con VISUAL BASIC para mostrar resultados en pantalla.


Comenzamos...................!!!!!!!!!!!!!!!!!


rduino

Control de un motor de 12 v con  MOSFET y Arduino UNO


Resumen


El artículo describe lo que es un Arduino, su arquitectura, su funcionamiento, el porqué usar un Arduino, Arduino UNO  y su función en la actualidad, la implementación, los diagramas, la técnica  y su aplicación para armar un control de un motor de 12 v con MOSFET y Arduino UNO.
Tema clave- Arduino, Porqué Arduino, Hardware,   Hardware open- source y Control de un motor de 12 v con  MOSFET y Arduino UNO.
Palabras claves- Control de un motor, MOSFET, Funcionamiento del MOSFET, Arduino UNO, ATMEGA 168, El diodo 1N4004.





Introducción

El Arduino es un microcontrolador que suele denominarse como “computación física”, está  basado en el micro ATMEGA32 y se programa en C (con algunas variantes), es un sistema mínimo sofisticado y tiene un convertidor TTL a USB  (el chip FTDI), también tiene un cristal de 16 MHz, un switch de reset ( se puede resetear por software) que puede alimentarse externamente. La razón por la cual elegimos utilizar un Arduino UNO es para realizar un control de un motor utilizando un MOSFET, dicha tarjeta y un motor de 12 v.
II.- ¿Qué es Arduino?
Arduino es una herramienta para hacer que las computadoras  puedan sentir y controlar el mundo físico a través de la tarjeta. Es una plataforma de desarrollo de computación física (physical computing) de código abierto, basada en una placa con un sencillo microcontrolador y un entorno de desarrollo para crear software (programas) para la placa.

El lenguaje de programación de Arduino es una implementación de Wiring, una plataforma de computación física parecida, que a su vez se basa en Processing, un entorno de programación multimedia.
III.- ¿Por qué Arduino?
Hay muchos otros microcontroladores y plataformas con microcontroladores disponibles para la computación física. Parallax Basic Stamp, BX-24 de Netmedia, Phidgets, Handyboard del MIT, y muchos
otros ofrecen funcionalidades similares.

Todas estas herramientas organizan el complicado trabajo de programar un microcontrolador en paquetes fáciles de usar. Arduino, además de simplificar el proceso de trabajar con microcontroladores, ofrece algunas ventajas respecto a otros sistemas a profesores, estudiantes y amateurs: Asequible - Las placas Arduino son más asequibles comparadas con otras plataformas de microcontroladores. Multi-Plataforma - El software de Arduino funciona en los sistemas operativos Windows, Macintosh OSX y Linux. La mayoría de los entornos para microcontroladores están limitados a Windows.

Entorno de programación simple y directo - El entorno de programación de Arduino es fácil de usar para principiantes y lo suficientemente flexible para los usuarios avanzados. Software ampliable y de código abierto- El software Arduino esta publicado bajo una licencia libre y preparada para ser ampliado por programadores experimentados. El lenguaje puede ampliarse a través de librerías de C++, y si se está interesado en profundizar en los detalles técnicos, se puede dar el salto a la programación en el lenguaje AVR C en el que está basado. De igual modo se puede añadir directamente código en AVR C en tus programas si así lo deseas. Hardware ampliable y de Código abierto - Arduino está basado en los microcontroladores ATMEGA168, ATMEGA328 y ATMEGA1280. Los planos de los módulos están publicados bajo licencia Creative Commons, por lo que diseñadores de circuitos con experiencia pueden hacer su propia versión del módulo, ampliándolo u optimizándolo El equipo de desarrollo de Arduino lo componen Massimo Banzi, David Cuartielles, Tom Igoe, David Mellis y Nicholas Zambetti. Cuando decimos “Arduino” nos estamos refiriendo a una plataforma abierta, que puede ser utilizada tanto para el aprendizaje como para automatizar prácticamente cualquier proceso en el mundo real. La plataforma está  basada en una simple placa de circuito impreso y un entorno de desarrollo (IDE). Arduino puede ser usado para desarrollar proyectos  interactivos y autónomos,  o bien puede conectarse a un ordenador para ser controlo por este. En ese caso, el software del ordenador puede estar programado en prácticamente cualquier lenguaje o plataforma


IV.- El hardware


Los diseños de Arduino son libres. Esto significa que cualquier persona puede fabricarse su placa de circuito impreso y montarse un Arduino a partir de los esquemas publicados en la Web. Si no tienes los conocimientos necesarios para hacerlo, o no quieres perder el tiempo en ello, los creadores tienen placas fabricadas y montadas industrialmente, que se venden a un  precio bastante accesible para el consumidor.





Como se puede ver, es un circuito bastante simple. De hecho, el módulo principal solo contiene el microcontrolador, la fuente de alimentación y una sencilla interfaz serial (RS-232). Esta interfaz puede ser utilizada  para la programación del micro alojado en la placa y para comunicarse con otros elementos externos que utilicen el puerto serie, ordenadores incluidos.

También se ha previsto un pulsador de RESET (cuando todo falla, ¡dale al RESET!), un conector ISCP y pines que conectan las entradas y salidas (analógicas y digitales) del microcontrolador con el exterior. Estos pines son los que permitirán conectar a nuestro Arduino aquellos circuitos que queramos controlar con él.
El circuito que hemos puesto corresponde a la versión más sencilla de Arduino. En realidad, hay varias alternativas a la hora de armar la placa. Existen versiones que incorporan una zona de prototipos, en las que se pueden soldar más componentes para hacerpruebas y proyectos más complejos (aunque no dispone de puerto serie ni USB, así que necesitaras de otra placa para programar el chip); o incluso una versión que reemplaza el puerto serie RS-232 por uno USB. Esta última es algo más compleja de montar, ya que requiere de un chip adaptador con cápsula SMD.
V.- ¿Hardware open-source?
 El hardware open-source (de fuente abierta) comparte muchos de los principios y metodologías del software libre y de código abierto. El software de Arduino es también open-source. El código fuente para el ambiente Java se publica bajo la GPL y las bibliotecas C/C++ del microcontrolador bajo la LGPL.
VI.-La Tarjeta Arduino UNO:



Existe en la plataforma Arduino una tarjeta oficial básica desde sus inicios, a la cual se le adicionan características o simplemente se transforma en otros tipos de tarjetas, actualmente la versión oficial de esta tarjeta se llama Arduino UNO (2010), la cual utiliza como cerebro el micro controlador Atmega168 o Atmega328, cuenta con 14 pines digitales de entrada y salida, de los cuales 6 pueden utilizarse como PWM, 6 entradas análogas,  alimentación externa regulada, conector USB, 1 puerto serial, conector para bus ICSP, botón de reset y un corazón que late a 16 Mhz. Todos estos componentes forman una plataforma sencilla de programar gracias al lenguaje de programación Wiring y su ambiente de desarrollo, permitiendo montar la tarjeta en Protoboard o circuitos impresos, conectarla al puerto serial y comenzar a programar.



VII.-MOSFET
MOSFET son las siglas de Metal Oxide Semiconductor Field Effect Transistor. Consiste en un transistor de efecto de campo basado en la estructura MOS. Es el transistor más utilizado en la industria microelectrónica. Prácticamente la totalidad de los circuitos integrados de uso comercial están basados en transistores MOSFET.
El hecho por el cual se uso un transistor MOSFET en vez de un normal es por su configuración, la diferencia entre transistores y transistor MOSFET es que la puerta o compuerta está separada de la fuente y el drenaje por medio de un vidrio de oxido de silicio.


VIII.- Funcionamiento del MOSFET







Un transistor MOSFET consiste en un sustrato de material semiconductor dopado en el que, mediante técnicas de difusión de    dopantes, se crean dos islas de tipo opuesto separadas por un área sobre la cual se hace crecer una capa de dieléctrico culminada por una capa de conductor. Los transistores MOSFET se dividen en dos tipos fundamentales dependiendo de cómo se haya realizado el dopaje:
  • Tipo nMOS: Sustrato de tipo p y difusiones de tipo n.
  • Tipo pMOS: Sustrato de tipo n y difusiones de tipo p.
Las áreas de difusión se denominan fuente (source) y drenador (drain), y el conductor entre ellos es la puerta (gate).
El transistor MOSFET tiene tres estados de funcionamiento: Cuando la tensión de la puerta es idéntica a la del sustrato, el MOSFET está en estado de no conducción: ninguna corriente fluye entre fuente y drenador. También se llama mosfet a los aislados por juntura de dos componentes. Al polarizarse la puerta con una tensión negativa (pMOS) o positiva (nMOS), se crea una región de deplexión en la región que separa la fuente y el drenador. Si esta tensión crece lo suficiente, aparecerán portadores minoritarios (electrones en pMOS, huecos en nMOS) en la región de deplexión que darán lugar a un canal de conducción. El transistor pasa entonces a estado de conducción, de modo que una diferencia de potencial entre fuente y drenador dará lugar a una corriente. El transistor se comporta como una resistencia controlada por la tensión de puerta. Cuando la tensión entre


drenador y fuente supera cierto límite, el canal de conducción bajo la puerta sufre un estrangulamiento en las cercanías del drenador y desaparece. La corriente entre fuente y drenador no se interrumpe, ya que es debido al campo eléctrico entre ambos, pero se hace independiente de la diferencia de potencial entre ambos terminales.

X.- Control de un motor de 12 v con  MOSFET y Arduino UNO

Vamos a controlar la velocidad de un motor de cc mediante la utilización de un transistor MJE15028. Se trata de utilizar la posibilidad de enviar una señal de PWM a una de las salidas configurables como salidas analógicas (para ATMEGA 168).




Téngase en cuenta que el motor se conectara con una fuente externa de voltaje, el Arduino no nos da los 12V que se requieren para mover el abanico y segundo porque el transistor es de una corriente limitada. El diodo 1N4004 se coloca como protección para evitar que las corrientes inversas creadas en el bobinado del motor puedan dañar el transistor, y obviamente, el Arduino.
















La tensión que sacaremos a la salida 10 (analógica tipo PWM) variara en forma de rampa ascendente y descendente de manera cíclica tal como vemos en la figura. Este efecto lo conseguimos con una estructura del tipo for:

 for (valor = 0; valor <= 255; valor +=5) (ascendente)

For (valor = 255; valor >=0; valor -=5) (descendente)

Obsérvese que los incrementos del valor de la tensión van de 5 en 5 y tenemos que considerar que 0v equivale a 0 y 5 v. equivale a 255.




Programa:

int valor = 0; // variable que contiene el valor a sacar por el terminal analógico
int motor = 10; // motor conectado al PIN 10
void setup() { } // No es necesario
void loop() {
For(valor = 0 ; valor <= 255; valor +=5){
// se genera una rampa de subida de tensión de 0 a 255 es decir de 0 a 5v
analogWrite(motor, valor);
delay(30); // espera 30 ms para que el efecto sea visible
}
for(valor = 255; valor >=0; valor -=5) {
// Se genera una rampa de bajada de tensión de 255 a 0 es decir de 5 a 0v
analogWrite(motor, valor);
delay(30); }


XI.- Desarrollo

Para el desarrollo de este proyecto, se requirió del siguiente material

  • Una tarjeta Arduino UNO
  • Una resistencia de 470 ohms
  • Un diodo rectificador 1N4004
  • Un MOSFET MJE15028
  • Un Abanico para proyectos de 12V

Se procedió a armar el circuito en una placa de protoboard para asegurarse del correcto funcionamiento del mismo, una vez revisado el esquema de conexionado y hecho lo mismo en físico, se decidió pasar todo a  una PCB, ya que es bien sabido que las placas protoboard  fallan en los momentos más inoportunos y al no estar bien fijos los 
componentes, estos tienden a zafarse constantemente, para esto se hizo el diseño virtual en FRITZING.










FRITZING es un software libre que permite la creación de Diseños Electrónicos a partir de la metáfora del uso del protoboard como instrumento básico para el montaje de circuitos los cuales pueden ser luego convertidos a circuitos impresos de manera rápida gracias a que FRITZING crea los esquemas necesarios para su implementación.


El principal objetivo de FRITZING es proveer de una herramienta que  permita diseñar sus montajes electrónicos basados en plataformas de hardware abierto como Arduino y Wiring, permitiendo al usuario no solo planear el montaje antes de realizarlo físicamente, si no documentar el mismo para posteriores actualizaciones o diferentes usos, además de convertir el montaje realizado en protoboard en el diseño del circuito impreso para la producción en masa de los montajes.

El software cuenta con varias vistas del montaje, en una primera instancia esta el diseño sobre protoboard que permite de forma fácil arrastrar componentes de una lista de partes como resistencias, condensadores, reguladores de voltajes, chips a la protoboard y realizar las conexiones entre ellos, así como también  el uso de  tarjetas de plataformas como Arduino, Basic Stamp o Wiring.

El único defecto de FRITZING es que no permite la simulación, es decir no puedes ver el funcionamiento del circuito en forma virtual, solo las conexiones, asi que si tienes errores solo te darias cuenta hasta que conectaras y vieras que o no funciona o simplemente hace corto circuito, afortunadamente para evitar eso existen otros softwares que si permiten la simulación.

Después de la creación virtual el programa convierte automáticamente las conexiones virtuales en diseño “transfer” que se imprime sobre hojas térmicas para poder hacer la tarjeta PCB, he aquí la vista del diseño “transfer”.



Posteriormente procedimos a taladrar los orificios de la tarjeta para poder montar los componentes, soldándolos y antes de conectar la tarjeta a cualquier voltaje, la inspeccionamos y utilizamos el multímetro en continuidad para checar que no hubiese  conexiones defectuosas o posibles cortos.

Una vez hecho esto, descargamos al Arduino el programa antes descrito, conectamos el ventilador a 12V y pudimos observar como el abanico revolucionaba en forma de rampa hacia arriba y hacia abajo, conectamos el osciloscopio en la salida del transistor al motor y comprobamos como la salida PWM variaba su longitud  según los tiempos e incrementos programados en el Arduino. La ventaja  de alimentar al Arduino directamente en el USB de la computadora es que se pueden hacer modificaciones al programa en tiempo real y descargarlas y podremos ver los cambios automáticamente en el proyecto, así que empezamos a variar los tiempos de respuesta de la PWM y vimos como el abanico se detenía completamente unos segundos antes de revolucionar en rampa ascendente, o como era más largo el tiempo que se mantenía revolucionado arriba antes de ir en rampa descendente.

Aspecto del circuito fisico terminado.


Verificacion de la salida PWM con el osciloscopio de bolsillo DSO NANO




XI.- COMENTARIOS FINALES
El objetivo de este articulo ha sido el que el lector se interese o conozca mas sobre las bondades de los sistemas Open-Source (Código Abierto), con el cual se pueden hacer innumerables proyectos para el aprendizaje y/o enseñanza de la electrónica o mecatronica, los dispositivos o software aquí mencionados son fácilmente adquiribles o descargables de las respectivas páginas (referidas en la bibliografía), actualmente Arduino, FRITZING, y Proccesing, son herramientas ampliamente usadas por estudiantes de muchísimas Universidades tanto públicas como privadas alrededor de todo el mundo.

* El autor es IEC y actualmente cursa la Maestría en Mecatrónica.
                       






10 comentarios:

  1. MJE15032G es el que pude conseguir y tambien consegui un diodo equivalente pero al hacer las conecciones como tu las haces , no logro que el motoro gire , es por esto que estaba pensando usar un rele ,pero tampoco se mucho de como usarlos , si me pudieses ayudar te agradezco














    ResponderEliminar
    Respuestas
    1. estas haciendo bien las conexiones del mosfet??? revisa las hojas de datos, con un multimetro checa si esta pasando voltaje a los componentyes

      http://www.datasheetarchive.com/dlmain/Datasheets-SFU1/DSASFU100016684.pdf

      http://pdf1.alldatasheet.es/datasheet-pdf/view/172439/ONSEMI/MJE15032G.html

      Eliminar
  2. el rele en este caso realmente de poco te serviria porque no vas a poder controlar la rampa, que es lo que estamos haciendo en este tutorial, cuando tu conectas todo y empieza a funcionar el motor del abanico literalmente acelera y desacelera gradualmente, con un rele solo activarias y pararias el motor, o sea, no te sirve

    ResponderEliminar
  3. Falta una llave de cierre al final del Sketck

    ResponderEliminar
  4. Y cuantos motores de 12V puedo utilizar por MOSFET ? Gracias por el ejemplo muy ilustrativo y bueno amigo

    ResponderEliminar
    Respuestas
    1. en una variante posterior se puso otro mas, o sea dos, pero yo no aconsejaria meter mas de 3........

      Eliminar
  5. Puedo controlar un motor de 12 voltios con 9amperes?? Gracias :)

    ResponderEliminar
  6. Puedo controlar un motor de 12 voltios con 9amperes?? Gracias :)

    ResponderEliminar