Documente Academic
Documente Profesional
Documente Cultură
POR TADA
CON TACTO
JUEG OS
FORO S
Artilugios Software
Ciencia
Coches
Ecologa
Electrnica
Entretenimiento
Hardware
Internet
Me gusta
Muchos lectores de NeoTeo se han mostrado interesados en la programacin de microcontroladores. Desde hoy tendrn en forma semanal una entrega de este tutorial que les mostrar como hacerlo. Te apuntas?
Ads By Google
Aprenda Microcontrolador
Aprenda Microcontroladores PIC 8051 Freescale, Interfaceamento Grfico
www.portalwebaula.com.br
www.insead.edu/Official La electrnica ha evolucionado mucho. Casi todo lo que hasta hace unos aos se hacia mediante un grupo (a veces muy numeroso) de circuitos integrados conectados entre si, hoy se puede realizar utilizando un microcontrolador y unos pocos componentes adicionales. De todos los fabricantes de microcontroladores que existen, los ms elegidos por los hobbystas suelen ser los modelos de Microchip, en gran parte debido a la excelente documentacin gratuita que proporciona la empresa para cada modelo. El lenguaje nativo de estos microcontroladores es el ASM, y en el caso de la familia 16F solo posee 35 instrucciones. Pero el ASM es un lenguaje que esta mucho ms cerca del hardware que del programador, y gracias a la miniaturizacin que permite incorporar cada vez ms memoria dentro de un microcontrolador sin aumentar prcticamente su costo, han surgido compiladores de lenguajes de alto nivel. Entre ellos se encuentran varios
Pgina 2 de 14
dialectos BASIC y C. El BASIC resulta bastante ms simple de aprender. Antes de comenzar a ver los temas programacin en si mismos, debemos aclarar algunos conceptos bsicos sobre los microcontroladores para poder entender lo que hace cada instruccin BASIC. Eso ser muy til para los que vayan a comenzar a programar a partir de este artculo. Lo ms interesante de trabajar con microcontroladores es que se necesitan conocimientos tanto de electrnica (hardware) como de programacin (software) as que a lo largo de estos tutoriales iremos viendo temas de ambas disciplinas, ya que ntimamente vinculadas. Un microcontrolador es como un ordenador en pequeo: dispone de una memoria donde se guardan los programas, una memoria para almacenar datos, dispone de puertos de entrada y salida, etc. A menudo se incluyen puertos seriales (RS-232), conversores analgico/digital, generadores de pulsos PWM para el control de motores, bus I2C, y muchas cosas ms. Por supuesto, no tienen ni teclado ni monitor, aunque podemos ver el estado de teclas individuales o utilizar pantallas LCD o LED para mostrar informacin. En general, por cada cuatro ciclos de reloj del microcontrolador se ejecuta una instruccin ASM (una instruccin BASIC consta generalmente de mas de una instruccin ASM). Esto significa que un PIC funcionando a 20MHz puede ejecutar 5 millones de instrucciones por segundo. Los pines del PIC se dedican casi en su totalidad a los puertos que mencionbamos anteriormente. El resto (2 o mas) son los encargados de proporcionar la alimentacin al chip, y a veces, un sistema de RESET. Desde BASIC es posible saber si un pin esta en estado alto (conectado a 5V o a un 1 lgico) o en estado bajo (puesto a 0V o a un 0 lgico). Tambin se puede poner un pin de un puerto a 1 o 0. De esta manera, y mediante un rele, por ejemplo, se puede encender o apagar una luz, motor, maquina, etc. Uno de los microcontroladores ms famosos de todos los tiempos ha sido, sin duda, el 16F84A, que ya es considerado obsoleto. Un buen reemplazo es el 16F628A, y es el que utilizaremos en la mayora de los ejemplos y proyectos que veamos. La disposicin de sus pines es la siguiente:
Pgina 3 de 14
Como podemos ver, los pines 1, 2, 3, 4, 15, 16, 17 y 18 tienen el nombre de RAx. Esos pines conforman el puerto A, PORTA de ahora en ms. Los pines 6 al 13 forman parte del puerto B (PORTB). El pin 5 es el que se conectara al negativo de la fuente de alimentacin. El 14 ir conectado a 5V. Como habrn notado, muchos de los pines tienen ms de una descripcin. Esto se debe a que pueden utilizarse de varias maneras diferentes, seleccionables por programa. Por ejemplo, el pin 4 sirve como parte del PORTA, como RESET (MCLR = Master Clear) y como tensin de programacin (Vpp) No es mala idea descargar desde la web de Microchip la hoja de datos de este microcontrolador (esta en ingls) para tenerla siempre a mano. Ahora bien Cmo colocamos el programa dentro del PIC? Para ello necesitamos algunas herramientas. Por un lado, es necesario un quemador de PICs, como el que publicamos en NeoTeo, o alguno de los varios disponibles comercialmente. Uno que me gusta particularmente es el GTP-USB+, ya que al funcionar conectado al puerto USB es muy veloz. Adems, necesitaremos un software que enve el programa al PIC. Para ello usaremos el WinPIC800, que es un excelente soft gratuito. Y tambin vamos a necesitar un compilador, para traducir nuestro programa en BASIC al ASM que es capaz de entender el PIC. Despus de mirar varios candidatos, en este momento parece una buena eleccin el PIC SIMULATOR IDE, que no solo es un excelente compilador de BASIC, si no que adems (y por solo 29 euros) ofrece un entorno de simulacin de nuestros circuitos. Existe una versin de prueba que se puede bajar gratuitamente desde aqu.
Adriel Anabella Ariel Constanza Federico Fernando Hernn Horacio Ignacio Jernimo Juan Julin Kir Lisandro Lorena Lucas Lucas Marcos Mario Martin Max NeoTeo Nico Patricio Toms Willy
Pgina 4 de 14
El primer ejemplo que veremos, equivalente al hola mundo de cualquier otro entorno de programacin, consiste en encender y apagar continuamente un LED conectado a uno de los pines del micro. Utilizaremos el circuito siguiente: A diferencia de un programa
Pgina 5 de 14
de ordenador, donde uno escribe el programa, lo compila, lo ejecuta y ya, en el mundo de los microcontroladores hay que, previamente, definir el tipo de microcontrolador que se va a utilizar, cual va a ser su frecuencia de clock, como va a ser el circuito en que se va a utilizar el mismo, etc. En primer lugar, vamos a aprovechar el oscilador interno del 16F628A y nos evitaremos el cristal y condensadores asociados. El puerto B del micro tiene su pin 9 conectado a un LED mediante una resistencia de 220ohms, que tienen como funcin limitar la corriente que circula por el LED. Esta ser nuestra "salida". El circuito debe alimentarse con 5v bien filtrados y regulados. Volviendo a nuestro programa, vamos a escribir el "hola mundo" de los microcontroladores: encender un LED. El primer paso es elegir en PIC SIMULATOR IDE, desde el men "Opciones" -> "Select Microcontroller", el microcontrolador PIC16F628A. Luego, debemos configurar los bits correspondientes, como se ve en las figuras de ms abajo. Lo destacable por ahora de esta configuracin es que estamos dejando la memoria (FLASH y EEPROM) sin proteccin, que el pin RESET se va a comportar como I/O y que usaremos como oscilador el oscilador interno INTRC.
Pgina 6 de 14
Una vez hecho esto, arrancamos el editor de BASIC (presionando CTRL-C, por ejemplo), y escribimos el siguiente cdigo: AllDigital TRISA = %11111111 TRISB = %00000000 loop: PORTB.3 = 1 WaitMs 500 PORTB.3 = 0 WaitMs 500 Goto loop Vamos a analizarlo lnea por lnea para entender su funcionamiento: La lnea 1 utiliza la sentencia AllDigital para convertir todos los pines del micro en pines de E/S. Esto equivale a deshabilitar los comparadores, conversores A/D y todos los mdulos que pudiese tener nuestro microcontrolador. No es la nica manera de hacer esto, pero si la mas sencilla. Las lneas 3 y 4 convierten todos los pines del puerto A en entradas ( TRISA = % 11111111 ) y los del puerto B en salidas ( TRISB = %00000000 ). El "%" indica que el numero que viene a continuacin esta en binario. Se podra haber escrito, por ejemplo TRISB = 0 y hubiera sido lo mismo. Personalmente me gusta esta manera, ya que "veo" el estado de cada pin. Por supuesto, es valido activar como entrada algunos pines, y como salidas otros, haciendo algo parecido a TRISB = %11000111. En la lnea 6 encontramos una "etiqueta" ( loop: ). Esta no hace nada, solo sirve como referencia para enviar el flujo del programa a esa lnea desde otro lugar, mediante la sentencia "Goto". La lnea 7 pone en "1" el pin correspondiente a PORTB.3, de manera que en el pin 9 del
Pgina 7 de 14
microcontrolador habr 5V. Esta tensin har que circule una corriente a travs de la resistencia limitadora y el LED1, haciendo que este se encienda, ya que el ctodo se encuentra conectado a 0V. En 8 tenemos la sentencia WaitMs 500. WaitMs se encarga de hacer una pausa en milisegundos. La duracin de la pausa esta dada por el nmero que sigue a la instruccin, en este caso 500 milisegundos, o medio segundo. Luego, en 9, otra vez se vuelve a poner en 0 el pin 9, mediante PORTB.3 = 0 , lo que provoca que ese pin se ponga a 0V, y no haya mas circulacin de corriente a travs de la resistencia y del LED, con lo que este se apaga. En la lnea 10 se hace nuevamente una pausa de medio segundo, y por ultimo, la lnea Goto Loop hace que el programa contine en la lnea 6 (que es donde esta la etiqueta Loop). El programa se repite indefinidamente, encendiendo el LED medio segundo, apagndolo otro medio segundo. Con esto, terminamos la primera entrega de este tutorial. Solamente hemos araado la superficie de un mundo apasionante. No te pierdas la segunda entrega la prxima semana.
Ads By Google
www.insead.edu/Official
Portillones automaticos
Controlan el trafico de clientes supermercados y grandes superficies
www.ivegas.com.co
Pgina 8 de 14
Paneles de control
Diseo y contruccion de paneles electricos , PLC, drivers, HMI
www.industrialautomsystem.us
Estudiar Robtica
Estudia en la U. Tadeo Lozano Solicita Ms Informacin Aqu !
UTadeo.edu.co
Volver a Neoteo
http://www.neoteo.com/tutorial-programacion-de-microcontroladores.neo
Un siglo en escamas
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.
Artculos Relacionados
Motorola Capri Google en los Motorola Programar con Visual BASIC (III) Programar con Visual BASIC (IV) Programar con Visual Basic RoboMind: Aprende programacin jugando MikroBasic - Primera Parte Cientficos desarrollan en EEUU un controlador de voz para ordenadores Motorola confirma un mvil con proyector hologrfico TUTORIAL: Programacin de microcontroladores - Entrega 3
Pgina 9 de 14
Votos: 3 de 3 #1Excelenteyohaceunosmesesempececon esto de los pic por que estudio ingenieria en electronica y gracias a las bases que ya traia de programacion se me facilito demasiado aunque aun si no trajera esas bases resulta muy facil aprenderlo, me parece muy bien que empiecen con este tutorial y mas sabiendo que lo que ustedes estan proponiendo para programas y eso es lo mismo que uso actualmente, bien estare pendiente de los demas tutoriales sale. PolloMorrison
12/04/2007 22:34:17
Responder
Votos: 1 de 1 #2Peroexelente...lohabiaestadoesperamdo, yo era uno de esos que pedia articuos sobre micros jajjaj.....veo que se han cambiado de compilador, pero he escuchado que este es bien bueno, ais que espero que me de buenos resultados, y respondiendo a la pregunta, Yo me anotooo!....saludos;)
Cesar.....
12/04/2007 23:49:52
Responder
Votos: -1 de 1 #3Exelentenohaymsquedecir!!
Jero
13/04/2007 16:17:07
Responder
Votos: 0 de 0 #4Saludos,amigos electrnicos. Cualquier duda que tengais, referirla a nuestros foro, exactamente al tema Tutorial de Programacion de Microcontroladores, as los podemos asistir como corresponde y ms ordenadamente.
Pgina 10 de 14
Max
13/04/2007 23:06:20
Responder
Votos: 0 de 0 #5TienesquesermsoriginalynoPLAGIAR tutoriales de los dems. EL original lo encontrareis en: http://www.ucontrol.com.ar/ Saludos.
Xavi
16/04/2007 21:36:17
Responder
Votos: 1 de 1 #6HolaXavi!Antesquenada,graciaspor salir en mi defensa. Si te fijas, uControl es mi pagina web. Pero lo que ahi alli es un tutorial sobre el PIC SIMULATOR IDE, y aqui tenemos uno sobre programacion, incluyendo toda la parte relacionada con el hard, y los programas necesarios para poder programar correctamente un microcontrolador. Aqui veremos ademas del BASIC la forma de encarar un proyecto, como resolver la conexion de cargas en las salidas o el uso de diferentes sensores (temperatura, humedad, etc.), asi que no dejes de mirar todas las semanas. Un abrazo.
Ariel Palazzesi
16/04/2007 21:47:42
Responder
fede
17/04/2007 12:10:21
Responder
Pgina 11 de 14
Votos: 0 de 0 #8Noencontrequeestuvieseigualal tutorial de ucontrol. Ademas es del mismo autor que el que escribio aca. Encuentro que el aporte est buenisimo....asi que espero que sigas con esos aportes tan buenos, estare semanalmente por aqui entonces.......saludos ;)
Csar......
18/04/2007 8:20:36
Responder
Votos: 0 de 0 #9Holaatodos,encuentrogeniallapaginay sus informaciones. estaba viendo el tutorial del ADC0804 controlado por Puerto paralelo y quiero hacer unas pruebas. quiero conectarle una seal analoga de electrocardiograma. como puedo modificar el programa para que pueda leerlo en tiempo real ???.. Bueno, gracias amigos..chaops.. Jos Ignacio. TUTO
05/05/2007 3:17:24
Responder
Votos: 1 de 1 #10HolaTUTO!Lamentablemente,mispobres conocimientos de Visual Basic no alcanzan para una aplicacion como la que sugieres. Pero el chip que mencionas (y el puerto paralelo del PC tambien)tiene la velocidad suficiente para hacer un muestreo de las seales provenientes del corazon. Estamos hablando de seales debajo de los 200Hz. Eso si, la seal ser muy dbil, asi que tendrs que acondicionarla previamente con un amplificador operacional como minimo. Comentanos tus resultados! Saludos. Ariel Palazzesi
05/05/2007 15:16:54
Responder
Votos: 2 de 2 #11Hola,si,esocreoquehar.primero dejar la seal entre unos 0 y 5 volts. Pero el programa que tu tienes, solo me lle el dato cuando yo lo requiero cierto ? Hola..si..amplificar la seal para dejarla entre 0 -5 volts.. pero el programa q tu tienes le el digito cuando yo quiero cierto ?.. Tuto
TUTO
05/05/2007 23:38:55
Responder
Pgina 12 de 14
Votos: 0 de 0 #12Exacto.ElADC0804tieneunpinquesirve para indicarle que debe comenzar a digitalizar el dato que tiene en su entrada. Despues de unos pocos milisegundos, ese dato esta disponible en las salidas. No lo recuerdo de memoria, pero en su datasheet esta seguro. Si queres, pasame una direccion de correo y te envio la datasheet, asi manejas los tiempos sin problemas. Saludos. Ariel Palazzesi
06/05/2007 0:41:27
Responder
Votos: 1 de 1 #13trabajoenelectronicaindustrial,quiero aprender a programar microcontroladores ,puesto que necesito hacer algunos proyecticos .gracias joaquin ortiz
22/07/2007 3:44:01
Responder
22/07/2007 3:54:21
Responder
Votos: 0 de 0 #15interesante
nestor
23/09/2007 5:14:44
Pgina 13 de 14
Responder
Votos: 0 de 0 #16Muybuenarticulo, espero que trates mas adelante la programacion con lenguaje C
nestor
20/10/2007 22:02:03
Responder
Votos: 0 de 0 #17Muybuenoperoenmipaissemease dificil conseguir las herramientas que se necesitan para programar los micro, No existe otra forma?
locoxp
31/10/2007 23:11:39
Responder
Votos: 0 de 0 #18HolaLocoXp!Lamentablemente,nohay manera de programar un PIC sin tener un programador. Si te fijas, en NeoTeo hay un programador para armar. Y es muy simple de hacer! Saludos.
Ariel Palazzesi
31/10/2007 23:32:29
Responder
Votos: 0 de 0 #19HolaNestor!Esposiblequeenelfuturo hagamos algo con CCS, aunque por lo general los articulos serian demasiado extensos. Pero quizas dividienlos en entregas se pueda hacer. Gracias por la idea.
Ariel Palazzesi
Pgina 14 de 14
31/10/2007 23:34:18
Responder
Votos: 0 de 0 #20Mano,muybuenoperonotengoformade conseguir el sircuito GTP USB+ asi que me quedo con las ganas de aprender
locoxp
31/10/2007 23:37:14
Responder
Datos Ir a login Usuario Email Website
Recordar mis datos
Siguiente
Login
Registrarse
Nuevo comentario:
Enviar
Vista previa