Tema destacado: Nueva página de elhacker.net en Google+ 
Autor
|
Tema: Mis pequeñas prácticas con microcontroladores (Leído 9,752 veces)
|
Tokes
Desconectado
Mensajes: 137
|
Hola a todos:
Debido a la enorme falta de actividad en este subforo con respecto a los microcontroladores, he decidido abrir un nuevo tema en el cual mostraré prácticas sencillas realizadas por mí, para que las personas que no saben o apenas se están introduciendo al mundo de los microcontroladores tengan un apoyo en esta página. Espero, sinceramente, que se unan, si no para compartir, por lo menos para preguntar. Porque, lamentablemente, este foro de electrónica se está perdiendo en la oscuridad.
Como todo, debemos empezar por lo más sencillo; pero como por el momento no tengo nada sencillo que mostrar, me dedicaré a hacer un pequeño programa ilustrativo. Cuando lo acabe lo posteo.
Por su atención, muchas gracias.
P.D.1: Si no les agrada la idea, por favor absténganse de poner comentarios ofensivos.
P.D.2: La programación de microcontroladores es bellísima... ¡¿QUÉ SUCEDE AQUÍIIIIIIIIIIII?!
|
|
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 1.945
Actualizate o muere!
|
Hombre, pues esta muy pero que muy bien la iniciativa, yo tambien voy a cojerle actividad a esta secion, es algo que me gusta y quiero que haya aqui un mundillo  Saludos
|
|
|
|
|
En línea
|
|
|
|
andres_5
Desconectado
Mensajes: 198
|
a mi tambien me interesa, actualmente estoy buscando info respecto a este tema... saludos =D
|
|
|
|
|
En línea
|
|
|
|
|
Mr.Blue
|
Estoy creando un pequeño tuto introductorio al tema cuando lo termino lo subo, esta buena la iniciativa y si esta teniendo poca actividad este subforo. Saludos.
|
|
|
|
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
Tokes
Desconectado
Mensajes: 137
|
Hola a todos:
Como dije anteriormente, empezaré por algo muy, pero muy sencillo: explicar la diferencia entre microprocesador y microcontrolador (aunque para algunos, es muy obvia). Trataré de ser lo más breve y menos aburrido posible.
Un microprocesador es el cerebro de cualquier sistema electrónico. Tiene la capacidad para realizar operaciones lógicas y aritméticas, y también puede comunicarse con otros dispositivos electrónicos.
Un microcontrolador es todo un sistema electrónico dentro de un solo chip, capaz de llevar a cabo el control de una tarea específica.
Claro está que para controlar un proceso se requiere inteligencia, entonces, un microcontrolador contiene un microprocesador dentro de su arquitectura. Figura 1. Diagrama de bloques resumido de un microcontrolador.Es decir, un microprocesador por sí solo no puede hacer absolutamente nada. Pensemos por un momento: Si algún demente le hubiera sacado el cerebro a Einstein y lo hubiera puesto en un frasco con conservadores, ¿Qué habría hecho o producido ese cerebro?
A pesar de ser un cerebro potentísimo, no tendría los medios para comunicarse con el exterior, y por lo tanto, es completamente inútil.
Podemos considerar a un ser humano como un controlador. Un controlador que cambia, y a veces, destruye su entorno. Pero esto lo logra gracias a que dispone de un poderoso “procesador”, el cual puede interactuar con el exterior debido a sus “sensores” (la vista, el oído, el tacto, etc.) y a sus “actuadores” (los nervios, los músculos, etc.) que están conectados al “procesador” (el cerebro).
Como se puede observar en la figura 1, el microprocesador está conectado a una memoria de programa, porque sí, es cierto, el procesador puede realizar muchas operaciones; la pregunta es ¿Qué operaciones va a realizar?
Las operaciones que el microprocesador va a realizar dependen del proceso que debe controlarse. Esas instrucciones están guardadas todas en la memoria de programa, cada una en una dirección específica de dicha memoria. El microprocesador debe extraer las instrucciones una a una e irlas ejecutando. Para ello, primero pone en el bus de direcciones la dirección de la instrucción que se quiere extraer y mediante el bus de control le indica a la memoria de programa que se va efectuar una operación de lectura sobre ella. Acto seguido, la memoria de programa pone en el bus de datos la instrucción solicitada por el procesador, el cual, procede a ejecutarla.
Ahora, supongamos que la instrucción extraída por el procesador es: Sumar A + B. Surge ahora otra pregunta, ¿Qué son A y B? ¿En dónde se encuentran esos valores? La respuesta es: en la memoria de datos. Esta memoria cumple la función de contener datos temporalmente para auxiliar en el procesado de la información. Si a cualquiera de nosotros nos dijeran: multiplica 549823 x 468254, pero sin usar lápiz ni papel, ¡¿Qué hacemos?! Necesitamos lápiz y papel para ir escribiendo los datos hasta llegar al resultado final. Es más, aunque usáramos calculadora, voltearíamos y le diríamos a nuestro sinodal: ¿Me puedes repetir los números, por favor?
Pues bien, el procesador debe extraer los datos necesarios contenidos en la memoria de datos para llevar a cabo el control de un proceso.
Pero, un momento… ¿Cómo puedo controlar un proceso si yo mismo no soy parte del proceso? ¡Debo estar en contacto con el proceso!
Los puertos de Entrada/Salida cumplen la función de comunicar al sistema con el exterior. Mediante los puertos de E/S el procesador puede adquirir y enviar información a los dispositivos involucrados en una tarea determinada.
En fin, un microcontrolador es todo un sistema de control dentro de un solo paquetito; o como dijeran muchos, es un computador completo. Es verdad, un microcontrolador puede realizar las 4 operaciones básicas de una computadora:
- Recibir información - Almacenar información - Procesar información - Enviar información
Bueno, por el momento es todo. Espero no haberles aburrido el día.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
andres_5
Desconectado
Mensajes: 198
|
Muy interesante, ahora mismo estoy intentando conseguir un microcontrolador pic para programarlo y demas, me podrias aconsejar uno tipico y barato para empezar? no me gustaria gastarme una pasta por un componente que valla a poder quemar, :S para programar un componente tengo que conseguir la "base", es decir el circuito que une el PIC con el PC, ¿Que me aconsejais por USB, Puerto Paralelo...? saludos y sigue asi  . ...
|
|
|
|
|
En línea
|
|
|
|
|
|
|
Mr.Blue
|
Aca en este link podes encontrar el quemador pic por puerto DB-45 http://www.megaupload.com/?d=NRBHEVYMFunciona esta probado. algunos ejemplos simples. ;ejercico 1 ;encender un led en rb0 ;pic 16f84 ;oscilador 4MHz (Xtal) ;TTP Montaje ;10/09/2007 ;Autor: Sr.blanco status equ 03 porta equ 05 portb equ 06 trisa equ 85 trisb equ 86 list p= pic 16f84 reset org 0 ;saltar vector de ingreso goto inicio org 5 inicio bsf status,5 ;pasar a banco de memoria 1 movlw b'00000' ;caragr en w palabra de configuracion trisa movwf trisa ;cargar en w palabra de configuracion tris movlw b'00000000' ;cargar en w palabra de configuracion trisb movwf trisb ;cargar en w pqalabra de configuracion trisb bcf status,5 ;pasar a banco de memoria limpio clrf porta ;limpio puerto a clrf portb ;limpio puerto b comenzar movlw b'00000001' movwf portb end
;ejercico 8 ;control de sentido de giro de motor de cc ;pic 16f84 ;oscilador 4MHz (Xtal) ;TTP Montaje ;09/10/2007 ;Autor: Sr.Blanco status equ 03 porta equ 05 portb equ 06 trisa equ 85 trisb equ 86 dato equ 0d list p= pic 16f84 reset org 0 goto inicio org 5 inicio bsf status,5 movlw b'00001' movwf trisa movlw b'00000000' movwf trisb bcf status,5 limpio clrf porta clrf portb leo movf porta,w movwf dato btfss dato,0 goto leo prendo1 movlw b'00001100' movwf portb movlw b'00000110' movwf portb movlw b'00000011' movwf portb movlw b'00001011' movwf portb movlw b'00001001' prendo2 movlw b'00001001' movwf portb movlw b'00001011' movwf portb movlw b'00000011' movwf portb movlw b'00000110' movwf portb movlw b'00001100' goto prendo1| end
;ejercico 12 ;Efecto de luces ;pic 16f84 ;oscilador 4MHz (Xtal) ;TTP Montaje ;Autor: Sr.Blanco [hr] lee movf porta,w movwf dato btfss dato,0 goto lee1 goto lee2 lee1 btfss dato,0 goto lee3 goto lee4 lee2 btfss dato,1 goto lee5 goto lee6 lee3 btfss dato,1 goto luces1 goto luces2 lee4 btfss dato,2 goto luces3 goto luces4 lee5 btfss dato,2 goto luces5 goto luces6 lee6 btfss dato,2 goto luces7 goto luces8 luces1 movlw b'10000001' movwf portb call tiempo movlw b'11000011' movwf portb call tiempo movlw b'11100111' movwf portb call tiempo movlw b'11111111' movwf portb call tiempo movlw b'11100111' movwf portb call tiempo movlw b'11000011' movwf portb call tiempo goto lee luces2 movlw b'10000001' movwf portb call tiempo movlw b'01000010' movwf portb call tiempo movlw b'00100100' movwf portb call tiempo movlw b'00011000' movwf portb call tiempo movlw b'00100100' movwf portb call tiempo movlw b'01000010' movwf portb call tiempo goto lee luces3 movlw b'00000001' movwf portb call tiempo movlw b'00000010' movwf portb call tiempo movlw b'00000100' movwf portb call tiempo movlw b'00001000' movwf portb call tiempo movlw b'00010000' movwf portb call tiempo movlw b'00100000' movwf portb call tiempo movlw b'01000000' movwf portb call tiempo movlw b'10000000' movwf portb call tiempo movlw b'01000000' movwf portb call tiempo movlw b'00100000' movwf portb call tiempo movlw b'00010000' movwf portb call tiempo movlw b'00001000' movwf portb call tiempo movlw b'00000100' movwf portb call tiempo movlw b'00000010' movwf portb call tiempo goto lee luces4 movlw b'11111111' movwf portb call tiempo clrf portb call tiempo goto lee luces5 movlw b'00000001' movwf portb call tiempo movlw b'00000010' movwf portb call tiempo movlw b'00000100' movwf portb call tiempo movlw b'00001000' movwf portb call tiempo movlw b'00010000' movwf portb call tiempo movlw b'00100000' movwf portb call tiempo movlw b'01000000' movwf portb call tiempo movlw b'10000000' movwf portb call tiempo goto lee luces6 movlw b'10101010' movwf portb call tiempo movlw b'01010101' movwf portb call tiempo goto lee luces7 movlw b'11000011' movwf portb call tiempo movlw b'00111100' movwf portb call tiempo goto lee luces8 movlw b'11110000' movwf portb call tiempo movlw b'00001111' movwf portb call tiempo goto lee luces9 movlw b'11001100' movwf portb call tiempo movlw b'00110011' movwf portb call tiempo goto lee luces10 movlw b'10101010' movwf portb call tiempo movlw b'00000000' movwf portb call tiempo movlw b'01010101' movwf portb call tiempo goto lee luces11 movlw b'11100000' movwf portb call tiempo movlw b'01110000' movwf portb call tiempo movlw b'00111000' movwf portb call tiempo movlw b'00011100' movwf portb call tiempo movlw b'00010000' movwf portb call tiempo movlw b'00100000' movwf portb call tiempo movlw b'01000000' movwf portb call tiempo movlw b'10000000' movwf portb call tiempo goto lee
|
|
|
|
« Última modificación: 26 Agosto 2010, 19:05 por Sr.Blanco »
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
andres_5
Desconectado
Mensajes: 198
|
Dios, no hay microcontroladores que sea mas barato, porque en ese caso prefiero hacerme con un arduino que mas o menos me sale unos 10€, ya que para empezar prefiero con lo mas barato, seria muy frustrante que quemase ese microcontrolador con mi inexperiencia... saludos .
|
|
|
|
|
En línea
|
|
|
|
|
Mr.Blue
|
@andres_5 Dependiendo que quieras hacer vas a comprar uno y otro pic si queres hacer practicas simples, como los codigos que puse te recomiendo el 16f84 no son caros, y podes hacer varias cosas con ellos.
|
|
|
|
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
Tokes
Desconectado
Mensajes: 137
|
Mi buen amigo andres_5, me parece que malinterpretaste las cosas (o tal vez no): el microcontrolador que te recomendé (PIC12F510) cuesta 35 pesos mexicanos, aproximadamente 3 dólares de US. Lo que sí cuesta caro es el grabador (300 pesos mexicanos, aprox.), pero ese te sirve para programar casi todos los microcontroladores de Microchip. Claro, el PIC12F510 te lo recomendé por barato, pero sin duda, el más popular de todos los PIC es el famosísimo PIC16F84A, que cuesta aproximadamente 100 pesos mexicanos (10 dólares). Te dejo un enlace a mercado libre, chécalo: http://articulo.mercadolibre.com.pe/MPE-11780541-_JMMi estimado Sr. Blanco, voy a estar ocupado durante 1 hora, más o menos, y regreso para comentarle algo. Saludos y muchas gracias por participar.
|
|
|
|
|
En línea
|
|
|
|
Tokes
Desconectado
Mensajes: 137
|
Ahora sí Sr Blanco: He probado su primer programa, "Encender un led", y sí funciona, pero lo mejor es que cuando un programa realiza un determinado proceso y después ya no tiene nada más que hacer (como es el caso de tu primer programa) entre en un ciclo infinito o entre en modo de bajo consumo. Aquí le dejo su primer programa, pero con el final modificado: ;ejercico 1 ;encender un led en rb0 ;pic 16f84 ;oscilador 4MHz (Xtal) ;TTP Montaje ;10/09/2007 ;Autor: Sr.blanco status equ 03 porta equ 05 portb equ 06 trisa equ 85 trisb equ 86 list p= pic 16f84 reset org 0 ;saltar vector de ingreso goto inicio org 5 inicio bsf status,5 ;pasar a banco de memoria 1 movlw b'00000' ;cargar en W palabra de configuracion trisa movwf trisa ;carga el trisa con el contenido de W. movlw b'00000000' ;cargar en W palabra de configuracion trisb movwf trisb ;cargar en trisb el contenido de W. bcf status,5 ;pasar a banco de memoria 0. limpio clrf porta ;limpio puerto a clrf portb ;limpio puerto b comenzar movlw b'00000001' movwf portb duerme sleep ; Entra en modo de bajo consumo. goto duerme end Gracias por tu aporte. Estaré echándole un vistazo a tus otros proramas. ¡¡Buen día!!
|
|
|
|
« Última modificación: 27 Agosto 2010, 04:56 por Tokes »
|
En línea
|
|
|
|
andres_5
Desconectado
Mensajes: 198
|
Creo que empezasteis un poco lento, pero acabais de dar un aceleron que casi casi me he perdio :S. Aun no tengo el pic pero sabiendo que no es tan caro en unos dias me lo pillo en alguna tiendo de electronica... mas o menos comprendo que eso que estais publicando es el codigo fuente para programar un PIC, hace 2 dias empece C, y eso no me parece que sea C, aunque lo puede ser... que lenguaje de programacion es?, ahora para linux que programa permite programar un pic. Bueno en breves me comprare un PIC supongo el de $35, al menos para empezar, y ya os ire comentando aqui mismo las dudas que me vallan surgiendo. Saludos Y muy util este POST 
|
|
|
|
|
En línea
|
|
|
|
|
Meta
|
Los programadores de USB son caros, y eso que cada vez sacan algunos nuevos. Este es el más nuevo que han sacado.  Ingeniería de Microsistemas Programados presenta el nuevo grabador Universal USB-Pic'Burner. Consiste en un grabador de última generación y bajo coste que admite los dispositivos PIC mas representativos de 8, 18, 28 y 40 patillas, de las familias 12F, 16F, 18F, que se insertan sobre un zócalo ZIF de fuerza de inserción nula. Su interface con el PC (de sobremesa o portátil) se realiza a través de un puerto USB desde donde también se toma la alimentación. Se trata por tanto de un grabador de reducidas dimensiones, potente, económico y totalmente portátil que se controla directamente desde el conocido entorno de desarrollo MPLAB-IDE y/o desde el software de grabación PICKit-2. Ambas herramientas software son originales de Microchip y se pueden descargar sin costo alguno desde www.microchip.comSus características más relevantes son: * Reducidas dimensiones de 77x 62mm * Interface USB con el PC mediante cable USB tipo A a tipo B (incluido) * Alimentación desde el propio puerto USB del PC; consumo de 35mA en standby y 55mA en actividad * Compatible a nievel de hardware con el PICkit-2 de Microchip * Compatible a nivel de software con MPLAB-IDE y PICkit-2 de Microchip. * Se puede configurar para proceder automáticamente a la grabación cada vez que se realiza el ensamblado/compilado de un programa * Zócalo ZIF de inserción nula que admite dispositivos PICde 0.3" y 0.6" de 8, 18, 28 y 40 patillas de las familias PIC12, PIC16 y PIC18 * Selección mediante jumper del dispositivo de 8, 18, 28/40 patillas a grabar * Dispone de conexión ICSP compatible con PICKit-2 que transporta las señales de grabación * Esas señales ICSP es posible conectarlas a múltiples dispositivos PIC de otras familias y encapsulados soportados por MPLAB-IDE y PICkit-2 Ver el programdor y sus características en PDF.Fuente: http://www.msebilbao.com/tienda/product_info.php?products_id=582
|
|
|
|
|
En línea
|
|
|
|
|
Mr.Blue
|
Hola a todos, bueno, creo q adelante y tire codigo muy rapido jaja, pero son algunos ejemplos muy sencillos como veran, los pic se programan en lenguaje assambler para pic, diferente al assembler de maquina, si quieren puedo subir una pequeña introduccion, a lo largo del dia ya que en estos momentos no puedo. Pd: Ahi en mi anterior post subi a megaupload un quemado barato de armar alrededor de unos 30 a 40$ (Argentina) dependiendo de donde vivan. En dolares seran 10dolares masomenos. Edit. Un ejemplo de un pic seria el siguiente 16f84 RA0 a RA4 RA es un puerto bidireccional. Eso quiere decir que puede ser configurado como entrada o como salida. El número que hay después de RA indica el numero de bit (0 a 4). Por tanto, tenemos un puerto bidireccional de 5 bits donde cada bit puede ser configurado como entrada o como salida. RB0 a RB7 RB es un segundo puerto bidireccional. Se comporta exactamente de la misma manera que RA, excepto que este tiene 8 bits. VSS y VDD Estos son los pins de alimentación. VDD es la alimentación positiva, y VSS es el negativo de la alimentación, o 0 Voltios. La tensión máxima de alimentación que puedes utilizar son 6 Voltios, y el mínimo son 2 Voltios. OSC1/CLK IN y OSC2/CLKOUT Estos pines son donde conectaremos el reloj externo, para que el microcontrolador disponga de algún tipo de temporización. MCLR Este pin se utiliza para borrar las posiciones de memoria dentro del PIC (p.ej. cuando quiero reprogramarlo). Durante el funcionamiento normal está conectado a la alimentación positiva. INT Este es un pin de entrada que puede ser monitorizado. Si el pin se pone a nivel alto, podemos hacer que el programa se reinicie, se pare o cualquier otra función de deseemos. No lo utilizaremos mucho. TOCK1 Esta es otra entrada de reloj, que opera con un temporizador interno. Opera aisladamente del reloj principal. De nuevo, este tampoco lo utilizaremos mucho. Como programar  Comentario: Esta imagen creo que lo dice todoBueno en primer lugar se programa en assembler el programa que queremos realizar, existen editores o simplemente un bloc de notas con una extensión .asm. El paso siguiente es tomar ese fichero .asm y pasarlo a .Hex para poder grabarlo en el pic y que este entienda las intrucciones que debe realizar, para esto podemos usar el MASN para dar el mismo ejemplo, pero existen otros. Cuando tenemos el fichero .ASM lo que resta es quemarlo en el pic, para esto utilizamos el IC-Prog, en este programa debemos indicar que pic vamos a usar de una lista que tenemos en el mismo. Y listo ya tenemos el pic programado. Circuito Con un pic  Aca tenemos un circuito sencillo con un pic Fuente: http://wiki.webdearde.com/index.php/Tutorial:_Programaci%C3%B3n_de_PICs_en_EnsambladorPD: De esta misma fuente, se explica como programar en en assembler para pic. Ahi pueden encontrar como programar un pic explicado detalladamente, cualquier duda pregunten, no doy una explicacion propia porq hay mucha info en internet que seguramente lo expliquien mejor que yo. Esta web que paso es una. 
|
|
|
|
« Última modificación: 27 Agosto 2010, 17:10 por Sr.Blanco »
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
|
|