lunes, 13 de septiembre de 2010

Puente H para motores

Si recorrimos los foros de electrónica de la web, siempre se encuentran con el dilema de que se desea controlar un motor para ser usado para un carro automatizado con un microcontrolador, o para manejar cualquier otra aplicación. Cuando necesitamos hacer esto siempre se llega a que se necesita usar un circuito denominado por Puente H. Existen variedad de soluciones, la más usada en forma de integrados, pero la mayoría de estos son algo limitados en la corriente que soportan y muchas veces son muy costosos y difíciles de conseguir. Así se llega a que la mejor solución a esto es utilizar un puente H construido con transistores, pero les surge siempre otro problema… ¿Qué es y cómo funcionan estos puentes H?, ¿Cuál es el mejor de todos?, Si no se mucho de electrónica, ¿podre armar uno?, etc… Bueno, según el nivel de conocimientos estas preguntas pueden crecer más y más… pero voy a limitarme a responder estas 3 preguntas, así que vamos por partes: Para responder a la primera pregunta (¿Qué es y cómo funcionan estos puentes H?) me apoyare en información obtenida de la misma red, y les dejare el link, para que el que tenga esta pregunta lo revise, dado que no es mi intención explicar esto en el presente post.

http://es.wikipedia.org/wiki/Puente_H_(electr%C3%B3nica)

Ahora respondiendo a ¿Cuál es el mejor de todos?, en realidad esto va a depender claramente de cuál es la necesidad que tengamos. El puente H que les presentare, es un circuito que me ha dado muchas satisfacciones y el que he usado en una gran cantidad de aplicaciones, y por ello le he desarrollado un pcb en el cual trabaje un buen poco para que tuviese unas dimensiones buenas para ser utilizado en un pequeño carro automatizado y además tuviese grandes prestaciones para ser utilizado en variedad de aplicaciones. Sin más preámbulos, el circuito que he utilizado lo he obtenido de esta página PUENTE H PARA MOTOR DC y el circuito es el siguiente:


Y finalmente respondiendo a “Si no se mucho de electrónica, ¿podre armar uno?”, con este post esto es lo que estoy tratando de resolver, entregando toda la documentación necesaria para que puedan construirse uno sin ningún problema. En la misma página de la que obtuve el circuito, se podrá encontrar un pcb listo para armar el circuito, pero es un pcb un poco grande para ser utilizado en un carro automatizado, además que necesitas 2 de estos para manejar ambos motores. Así que diseñe el siguiente pcb de 7,5 cm x 4,5 cm, el cual posee 2 puentes H en la misma placa.


Ahora la lista de materiales, para una placa es la siguiente (recordar que son 2 puentes H por placa):

1 – Bornera (para la alimentación)

8 – transistores 2n2222

4 – resistencias de 470 ohm

4 – resistencias de 10k ohm

4 – resistencias de 3,3k ohm

4 – resistencias de 100 ohm

4 – transistores de potencia NPN

4 – transistores de potencia PNP

En los transistores de potencia, personalmente e usado los BD y los TIP. En el esquemático utilizan los TIP que soportan corrientes de hasta 5 amperes, en cambio los BD solo soportan 1,5 amperes.

Sí desean usar los TIP tienen las siguientes opciones:

...NPN.. | .. PNP.. | ..Voltaje..

TIP 120 | TIP 125 | 60 V

TIP 121 | TIP 126 | 80 V

TIP 122 | TIP 127 | 100 V

Si desean usar los BD tienen las siguientes opciones:

..NPN..| ..PNP..|..Voltaje..

BD135 | BD136 | 45 V

BD137 | BD138 | 60 V

BD139 | BD140 | 80 V

Ahora dirán… que elijo? BD o TIP?, todo depende de que es lo que quieren hacer, en la imagen ven que ese lo hice con los BD138 y  BD139, eso es dado que era para unos motores que consumían 1,3 amperes, así que con estos tenia para moverlos sin problemas. Otros puentes que tengo hechos los hice con TIP dado que los quería para mover unos motores bipolares y estos me consumían 3 Amperes, así que con los 5 amperes que soportan los TIP tenia de sobra. Así que es decisión suya ver que transistor usar. Como adjunto pueden encontrar el .pcb que se abre con el PCBWizard, también para el que no lo tenga lo he dejado en formato pdf para llegar e imprimir. En el pcb se encuentra la versión para 2 puentes H en una placa (el de la primera imagen) y una versión para un solo puente H, si solo se necesita para 1 solo motor. Para saber dónde va cada componente guiarse por la siguiente imagen, en donde también se puede ver el patillaje que tienen los diferentes transistores (BD y TIP).


Si siguen bien el montaje de los componentes no deberían tener problema alguno para hacer su propio puente H.  También como adjunto encontraran un .doc con la definición de los terminales y una pequeña explicación.

Bueno finalmente dejo un rar con todo lo mencionado anteriormente.

Saludos!!

lunes, 12 de abril de 2010

Primer proyecto con Microcontroladores PIC (Led intermitente con Pic 16f84a)


En la siguiente entrada abordare un proyecto con microcontroladores, mas específicamente el hacer un led intermitente, el "Hola mundo" de los microcontraladores. Para ello utilizaremos el software que he añadido recientemente a mi blog, que es Pic Simulator IDE, el que nos entrega un entorno de desarrollo para la programación de estos microcontroladores, como también poder simular su actuar (aunque por ahora solo se vera la generación del .hex, para Simulación  en el mismo entorno, revisen la entrada en donde publique el programa). Y para ver o simular lo que estamos programando usaremos Proteus, programa que también ya había subido al blog y pueden encontrarlo en entradas anteriores.


Si hasta ahora no has entendido nada de lo que e dicho, te recomiendo no seguir y leer sobre microcontroladores y aprender lo básico de electrónica, esta entrada no esta dedicada a enseñar que es un microcontrolador o a enseñar electrónica, solo quiero explicar o enseñar a trabajar con el entorno de trabajo Pic Simulator IDE y su simulación en Proteus. Por lo tanto si no sabes nada de electronica y menos de microc0ntroladores, primero te invito a revisar las siguientes paginas:

http://www.neoteo.com/microcontroladores.neo

http://r-luis.xbot.es/descarga/files/ebasica.pdf

Tutorial de electrónica digital 1
Tutorial de electrónica digital 2
Tutorial de electrónica digital 3
Tutorial de electrónica digital 4
Tutorial de electrónica digital 5

Después de esta introducción vamos a lo nuestro.

Primero: el datasheet de este pic lo encontramos aquí --> http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf

Segundo: el pinout de este integrado lo podemos ver en la siguiente imagen:


En donde Vss es el negativo o tierra, y VDD el positivo.


Tercero: debemos montar el siguiente circuito:



Cuarto: ya con esto podemos empezar a hacer lo mas interesante de todo esto, que es PROGRAMARLO.


Para ello, debemos abrir el Pic Simulator IDE (que obviamente ya descargaron e instalaron) le damos a Options --> Select microcontroller --> buscamos el 16F84A


Ahora vamos a Options--> Configuration Bits y nos aseguramos de que el Watchdog este desactivado, el power up timer este activo y el oscilador en modo XT (mirar datasheet pág. 24).

Ahora vamos a Tools --> BASIC Compiler y se nos abrirá la ventana en donde escribiremos nuestro código. El código que escribiremos ahí sera el siguiente:



Ahora explicare linea a linea:


AllDigital : esta linea lo que hace es desabilitar todos las funciones especificas de los pines como comparadores, entradas o salidas seriales, etc, dejandolas simplemente como una entrada o salida digital, es decir, puede dejarse en un estado alto o bajo. (5 volts, 0 volts).


TRISB=%00000000 : esta linea dice al puerto B (TRISA si se quiere trabajar con el puerto A) que sus pines seran todas salidas, el % indica que es un binario y cada numero (bit) representa un Pin del puerto, en donde si le ponemos 0 a ese pin lo estamos declarando como una salida y si le ponemos un 1 lo estamos declarando como una entrada. Para este proyecto esta linea también puede haber sido : TRISB.0=0 , dado que solo ocupamos el pin 0 del puerto B, y los demás pines no nos interesan.


loop: estamos marcando una etiqueta dentro del codigo, en donde luego podemos llamarlo y seguir desde ese punto hacia adelante, en otras palabras, es una marca en el código a la cual podremos luego llamar.


High RB0: aqui estamos poniendo en un estado alto (5 volts) al pin 0 del puerto B (RB0), esta linea tambien puede haber sido : PORTB.0=1  en donde decimos que el pin 0 del puerto B le estamos asignando un 1, que en electrónica digital nos representa un estado alto.


WaitMs 1000: aquí estamos provocando una pausa de 1000 milisegundos o lo equivalente a 1 segundo.


Low RB0: aqui estamos poniendo en un estado bajo (0 volts) el pin 0 del puerto B, esta linea tambien puede haber sido : PORTB.0=0  en donde decimos que el pin 0 del puerto B le estamos asignando un 0, que en electrónica digital nos representa un estado bajo.


WaitMs 1000: aquí estamos provocando una pausa de 1000 milisegundos o lo equivalente a 1 segundo.


Goto loop: aquí estamos diciendo que nuestro código va a volver o saltar en donde se encuentre la etiqueta "loop" y seguir con el programa desde esa etiqueta, con lo cual estaríamos como bien dice el nombre de la etiqueta generando un loop infinito.


End: fin del programa. (en este caso nunca llegara ahí dado que al colocar Goto loop anteriormente,  el código saltara arriba y comenzara otra vez a hacer lo programado)


En pocas palabras lo que hicimos fue, primero configurar los puertos, luego poner en alto un pin (en el que tenemos conectado el led), esperamos un cierto tiempo, luego lo ponemos a bajo, esperamos otro cierto tiempo y luego volvemos a repetir lo mismo..


Ahora solo queda Compilar y cargar nuestro código.. para ello vamos a Tools--> luego a Compile & Assemble & Load, o simplemente presionamos F9, nos pedirá, donde guardar el código o proyecto y en esa misma dirección generara el archivo .HEX .


Ahora para simular y ver que es lo que realmente hace, con el .hex listo y con el circuito en proteus ya hecho, hacemos doble click en el microcontrolador y en "Program File" seleccionan el archivo .hex generado, luego solo echan a andar la simulación y verán su Led parpadeando (Si no les a funcionado algo hicieron mal, revisen nuevamente todo.. mas abajo dejo una carpeta con el proyecto hecho.)


Ahora si quieren ir probando ya con este código o ir agregando mas leds, solo deben detener la simulación, hacer los cambios que quieran en el programa, compilan (F9) y si no an cambiado de dirección el .hex, ejecutan o echan a andar la simulación (con esto digo que si hacen cambios al .hex, el proteus solo se actualiza si es que no an cambiando el .hex de dirección, por lo cual no es necesario decirle donde esta el .hex cada vez que modifican el programa).


Como opcion de investigacion o de prueba utilicen el comando Toggle el cual hace cambiar de estado un un pin, es decir si esta en alto lo deja a bajo o si esta en bajo lo deja en alto, con lo cual pueden acortar un poco el código, que quizás para este proyecto es muy poco provechoso, pero luego cuando hagan proyectos mas grandes, ahorrarse un poco de código, les vendrá muy bien, dado que cabe recordar que estos microcontroladores no tienen una gran memoria, así que no se pueden dar lujos de derrochar memoria.


Y eso es todo, si quieren llevarlo a la realidad deben hacerse de un grabador de Pic's como este --> http://213.97.130.124/progs/pipo2/pipo2.htm el cual es muy fácil hacerlo. O para mas información al respecto lean este enlace --> http://r-luis.xbot.es/project/grab_pic.html


Acá les dejo los archivos del proyecto, simulación en  proteus y el .hex y .bas del Pic Simulator IDE.




Hasta la próxima!


Pic Simulator IDE

 


Pic Simulator IDE es un entorno de programación integrado para microcontroladores o microprocesadores, que además de permitir la creación de programas en lenguaje assembler incorpora un muy completo BASIC, con soporte para dispositivos 1-wire, LCD, RS-232y muchos más.

Otro aspecto destacable es la inclusión de una gran cantidad de módulos de E/S que simulan exactamente lo que esta pasando en nuestro programa, incluidos un módulo LCD, teclado, osciloscopio,displays de 7 segmentos entre otros.

La pagina de dicho productos es: http://www.oshonsoft.com/

En la siguiente dirección (acá) podemos encontrar una muy buena explicacion de las funcionalidades del programa y en esta otra dirección (acá) podemos encontrar un tutorial acerca del lenguaje del programa (Basic), tambien acá tenemos un manual de referencia hecho por el creador del programa, en donde encontramos información sobre declaraciones, operaciones matemáticas que soporta el lenguaje, estructuras, elementos básicos del lenguaje, etc..

Descarga