lunes, 7 de mayo de 2012

Proyecto Integrador PIC Variador de Velocidad de un Motor PWM



Objetivo: Lograr construir un circuito que sea capaz de manipular atravez de 2 pulsadores la velocidad de un pequeño motor DC.

Material:

El material que se utilizo para realizar esta práctica es el siguiente

  • 1 Microcontrolador PIC 16F628A
  • 1 Transistor TIP 110
  • 2 Pulsadores
  • 1 Diodo Rectificador 1N4007

  • 1 Motor de juguete DC
  • 1 Capacitor cerámico de 0,1uF
  • 3 Resistencias de 4.7 KΩ
  • 1 Resistencia de 330 Ω
  • 1 LED
  • 1 ProtoBoard

  • Jumpers o Cables de Interconexión

  • Fuente de Energía de 5V

Diagrama de circuito:

Este fue el diagrama que se realizo, una vez que tenemos el diagrama podemos proceder al armador del mismo. Cabe aclarar que el pin 6 es el que va a la base del TIP110 el emisor a la tierra.


Circuito en Fritzing

Este es un diagrama del circuito ya armado en Fritzing solo hay que tomar en cuenta que el PIC que se coloco en el diagrama no es el que se uso realmente ya que Fritzing no cuenta con el 16F628A pero los pines representan las mismas posiciones que los usados realmente.

Fotos reales del circuito ya armado






Como Funciona

Al momento de conectar el circuito a corriente el led conectado al pin 9 enciende y apaga para confirmar que todo está bien, el motor arranca de inicio en una velocidad media o frecuencia de 125 si pulsamos el botón para subir la velocidad (PIN7) la velocidad aumenta por cada pulsación en 25 hasta llegar al límite de 255, de igual forma con el otro pulsador (PIN8) podemos reducir la velocidad en intervalos de 25. Lo que sucede es que al momento de pulsar los botones el circuito se cierra enviando un 0 al pic que al momento de recibirlos hace que ocurra el cambio de velocidad. El transistor TIP 110 nos ayuda a poder amplificar la señal del pic para que sea suficiente para poder controlar un motor DC, el TIP110 es capaz de manejar un motor de hasta 100V DC a 8 Amperios.


Programación del PIC

El código fue realizado en basic y se utilizo microcode para compilar, el código es el siguiente:


Cargando el programa al pic

Una vez que terminamos de codificar con ayuda de algún programa compilador en este caso yo utilice MicroCode Studio para compilar y PICBasic Pro para generar el archivo .hex, se puede utilizar solamente el PICBasic pro para ambas cosas pero ya es preferencia de cada quien el compilador que se quiera utilizar. La mayoría de estas herramientas y otras de relación se pueden conseguir oficialmente en http://melabs.com/

MicroCode Studio

PicBasic Pro

Para cargar el archivo .hex al Pic necesitamos 2 cosas un programador de pic en mi caso use un programador de puerto serial y icprog, ya tengo una entrada anterior de esto así que solo dejo la liga ahí viene la explicación completa.

http://computoint.blogspot.mx/2012/04/generando-un-programa-y-cargando-al-pic.html


Resultados:

Por último dejo un video del circuito funcionando ya después de su programación.

Fuentes:

http://melabs.com/

http://rcmcomputointegrado.blogspot.mx/

http://synnick.blogspot.mx/search/label/Lab%20Computo%20Integrado

http://compuinteg.blogspot.mx/

http://pepgonzalez.blogspot.mx/search/label/labo%20integrado

http://avecomputointe.blogspot.mx/

http://triana-integrado.blogspot.mx/

http://es.scribd.com/doc/63742141/21/APRENDIENDO-A-PROGRAMAR-EL-PIC16F628A-CON-MICROCODE

http://es.wikipedia.org/wiki/Transistor

lunes, 30 de abril de 2012

Hacer funcionar un motor de CD con Arduino

En esta entrada explicare como hacer funcionar un motor de CD (de corriente directa) en un Arduino UNO. Primero que nada hay que entender que para hacer funcionar dispositivos como motores vamos a requerir algo más que solo el arduino. ¿Por qué? Los microcontroladores con los que comúnmente cuentan los arduinos por ejemplo el ATmega328 son muy poderosos pero están limitados en cuanto a la energía que proporciona cada uno de sus pines.
Este es un microcontrolador Atmega328, el cual es utilizado en la mayoría de los Arduinos actuales cada uno de sus pines es capaz de proporcionar 20ma y todos sus pines combinados 50ma. Entonces como podemos hacer funcionar algún dispositivo que ocupe más corriente.Existen varias opciones por ejemplo para el caso de los motores podemos adquirir un Shield de Motores con el cual podremos conectar de forma directa el motor al arduino pero incluso el shield está limitado a una cierta cantidad de corriente o puede que no exista un shield especifico para algún dispositivo que queramos controlar, para estos casos tendremos que amplificar la señal que proporciona el arduino, esto lo podemos lograr utilizando un transistor, un transistor es un dispositivo eléctrico semiconductor que cumple funciones de amplificador, oscilador, conmutador o rectificador.
Motor Shield:
Ya que sabemos todo esto podemos pasar a realizar el circuito.El material que utilizaremos es el siguiente:
Arduino UNO
Protoboard
Cables Jumpers Macho-Macho
Transistor BC337-25
2 Resistencias de 1KΩ
Motor DC


El diagrama del circuito es el siguiente:Realizado con FritzingComo podemos ver en el circuito con ayuda del transistor logramos amplificar la señal generada por el pin 13 del Arduino para después enviarla al motor y que este logre funcionar correctamente.
El código que utilice es el siguiente:El código no tiene gran ciencia incluso es el mismo de encender y apagar un LED reciclado en este caso lo único que modifique fue los tiempos de encendido y de apagado.Imágenes reales del circuito
Vídeo del circuito funcionando

Fuentes:http://es.wikipedia.org/wiki/Transistor
http://www.youtube.com/watch?v=cEz1i5xzGEE&feature=fvst

viernes, 27 de abril de 2012

Bluetooth Shield

En esta entrada mostrare la información del Shield de Bluetooth que usare para mi proyecto junto con el Arduino.
Este es el Shield Bluetooth comprado en www.seeedstudio.com

El Shield Bluetooth integra un modulo serial de Bluetooth, puede ser utilizado con cualquier versión de Arduino para lograr una comunicación inalambrica. Puede mantener conexion mediante bluetooth con la mayoria de los dispositivos moviles con sistema operativo Android a excepcion de algunos cuantos.

Especificaciones
  • Compatible con Arduino y Seeeduino
  • 10 metros de alcance
  • Interfaz UART con Velocidad de transmicion programable
  • Antena PCB incorporada




Por lo pronto es solo la información del modulo, después pondré entradas sobre el uso del Shield cuando empiece a trabajar con el.

Fuentes:

martes, 24 de abril de 2012

Memoria disponible pics y arduinos

En los microcontroladores la memoria de instrucciones y datos está integrada en el propio circuito integrado. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos.
Ahora plantemos la diferencia entre una PC y un microcontrolador.En un microcontrolador es obvio que no existe un dispositivo de gran capacidad de almacenamiento como un disco duro, por otra parte un microcontrolador se enfoca a cumplir con una sola tarea ya que su memoria solo alcanza para almacenar un único programa de trabajo.

Hay que tomar en cuenta que todos los microcontroladores son diferentes, la aplicación y utilización de los mismos puede varias según sea el uso que le queremos dar. Por lo pronto explicare los 5 tipos de memoria no volátil con la que cuentan la mayoría de los micros disponibles en el mercado.


1. Rom con mascara: Rom con mascara es un tipo de memoria no volatil del tipo solo lectura la cual queda establecida a la hora de fabricar el micro. Máscara viene de la forma cómo se fabrican los circuitos integrados. Estos se fabrican en obleas que contienen varias decenas de chips. Estas obleas se obtienen a partir de procesos fotoquímicos, donde se impregnan capas de silicio y oxido de silicio, y según convenga, se erosionan al exponerlos a la luz. Como no todos los puntos han de ser erosionados, se sitúa entre la luz y la oblea una máscara con agujeros, de manera que donde deba incidir la luz, esta pasará. Debido al alto costo de la fabricación solo es aconsejable su producción cuando se precisan de varias cantidades de dichas unidades.



2. OTP: OTP es un tipo de memoria no volatil de solo lectura OTP significa One Time Programmable lo que quiere decir que solo se puede programar 1 vez. La memoria OTP es recomendable solo para construccion de prototipos y series muy pequeñas.


3. EPROM: EPROM significa Erasable Programmable Read OnIy Memory lo que significa que puede borrarse y grabarse las veces que se desee con ayuda de un grabador de PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material plástico.


4. EEPROM: Electrical Erasable Programmable Read OnIy Memory esta memoria es parecida a la EPROM la diferencia es que tanto la programación como el borrado se realizan electricamente desde un grabador conectado a la PC.


5. Flash: Memoria no volatil de bajo consumo que se puede escribir y borrar. A diferencia de la EEPROM es mas rapida y de mayor densidad.

Ejemplo en PIC16F84A
La memoria de programa se divide en páginas de 2,048 posiciones. El PIC16F84A sólo tiene implementadas 1K posiciones es decir de 0000h a 03FFh y el resto no está implementado. (es aquello que se ve en gris)
Memoria en Arduino
En el caso del Arduino existen 3 fuentes de memoria las cuales vienen del micro utilizado por el Arduino que puede ser el Atemga328 o 168.

Memoria Flash: Memoria no volátil que funciona como almacén para los sketchs que se cargan al Arduino. Cuenta con 16k bytes de los cuales 2k son utlizados por el bootloader.

SRAM: Memoria Estatica de Acceso Aleatorio es donde se manipulan los sketchs y manipulan variables, dispone de 1024 bytes.

EEPROM: Memoria que puede ser utilizada para almacenar informacion de largo plazo, es del tipo no volatil cuenta con 512 bytes.

Algunos aspectos a tomar en cuenta:
  • No hay mucha SRAM disponible
  • Si se acaba la SRAM el programa fallara






Fuentes:
http://es.wikipedia.org/wiki/Microcontrolador#Memoria
http://r-luis.xbot.es/pic1/pic03.html
http://perso.wanadoo.es/pictob/microcr.htm
http://arduino.cc/es/Tutorial/Memory





Amplificar señal de pines de Arduino(Transistor)

En la entrada anterior hable un poco sobre el uso de un Transistor para amplificar la señal de los pines de Arduino. En esta entrada explicare un poco mas sobre el tema, ademas de explicar que es exactamente un transistor como funciona y como conectarlo.



¿Que es un transistor?
Un transistor es un aparato que funciona a base de un dispositivo semiconductor que cuenta con tres terminales, los que son utilizados como amplificador e interruptor. Una pequeña corriente eléctrica, que es aplicada a uno de los terminales, logra controlar la corriente entre los dos terminales.


Como se muestra en la siguiente imagen cada uno de los pines del Transistor tiene una función, el colector, la base y el emisor. Una de ellas es la que se encarga de emitir electrones, por lo tanto, es el emisor. Una segunda parte es la que los recibe, el denominado colector, y por último, una tercera parte que opera como un modulador del paso de los electrones. 


¿De que nos sirve el transistor en el Arduino?
Como ya lo había explicado en la entrada del motor el Arduino cuenta con un microcontrolador Atmega328 el cual puede proporcionar 20ma por pin y 50ma entre todos los pines, es probable que muchos dispositivos que queramos conectar al arduino requieran mas energía por lo cual ocuparemos amplificar la señal de alguna manera.


¿Como lo conectamos?
Por ejemplo en la entrada anterior para el uso del motor conectamos la señal emitida por el Arduino a la base el colector lo conectamos a tierra y por ultimo el emisor debe recibir corriente y a la ves proporcionar una salida al dispositivo que queramos conectarlo.



Tipos de Transistores

Transistores Bipolares: Surgen a partir de la unión de tres cristales de material semiconductor. Este tipo de transistores son generalmente utilizados en aparatos electrónicos analógicos y en ciertos aparatos digitales.
Transistores de efecto de campo: Este tipo de transistores, en la actualidad se encuentran en múltiples aparatos de diversos usos, como calculadoras, radios, televisores, videos, grabadoras, reproductores de mp3, celulares



Fuentes:



jueves, 5 de abril de 2012

Estableciendo comunicación entre el Arduino y CPU

En este ejemplo mostrare como enviar datos del Arduino a la computadora. En los ejemplos pasados lo único que hacía era una ves cargado el programa en el Arduino este actuaba independientemente sin regresar valores ni nada a la computadora.

Pero primero que nada algunos conceptos que son importantes en este ejemplo ya que es importante conocerlos.

¿Que es una librería de software?
Una librería de software es un conjunto de procesos los cuales están todos relacionados. Por ejemplo si queremos controlar un motor o alguna otra cosa lo más conveniente sería buscar una librería sobre lo que estamos haciendo, de esta forma nos ahorramos el trabajo de estar investigando el funcionamiento del motor. En este ejemplo la librería que usare será la serial ya que esta permite que el Arduino sea capaz de enviar datos a la computadora.


¿Que es Serial?
Serial es la transmisión de bits 1 a la vez, por ejemplo en este ejemplo lo que hare será enviar y recibir bits entre la computadora y el Arduino, explicándolo de manera más sencilla se trata básicamente de mandar y recibir 0 y 1.


El material que utilizare es el siguiente:

Arduino junto con el cable USB


Primero que nada hay que conectar el Arduino con la computadora para ya tenerlo listo para realizar la práctica.

Después abrimos el ide de Arduino y creamos un nuevo sketch con el nombre de hola mundo File/New y empezamos a escribir el código.


El código que yo utilice es el siguiente:


Para utilizar la libreria Serial como podemos ver en el codigo y como cualquier otra librería que usemos en programacion basta con escribir el nombre de la libreria un punto y la acción que querramos usar de dicha libreria. Lo primero que se hizo fue el inicio de la comunicación entre el arduino y la computadora con una velocidad de transmision de 9600 bites por segundo. Despues embes de utilizar print line como la libreria serial contiene una funcion de impresión mas corta utilizamos println imprimimos hola mundo y por ultimo ponemos un ciclo sin fin solamente para poder probar el programa ya que sino no podriamos probarlo.

Compilamos el código, lo cargamos al arduino y podemos verlo funcionar abriendo el monitor serial en Tools/Serial Monitor o con Ctrl+Shift+M y nos deberia aparecer la impresion en el monitor como en la siguiente foto.

Si no contamos con un arduino que se reinicie solo, reiniciandolo manualmente podremos lograr que vuelva a enviarse datos.


Fuentes:
http://www.ladyada.net/learn/arduino/lesson4.html