miércoles, 2 de mayo de 2012

Arduino

Esta entrada consiste en el microcontrolador que estaremos usando para nuestro proyecto final, describiendo mas a fondo como esta conformado y consideraciones que debemos tomar en cuenta. 
Arduino es una plataforma de codigo abierto basada en un microcontrolador sencillo y un entorno de desarrollo para escribir software para la placa.
Puede ser usado para desarrollar objetos interactivos, teniendo entradas de una variedad de interruptores o sensores y controlar una variedad de luces, motores y otras salidas fisicas.

¿Para que sirve arduino?

En la robótica, podemos usar Arduino de 2 formas:

  • Arduino usarse como "cerebro" de nuestro robot, ejerciendo de controlador y coordinador del resto de partes del robot.
  • Si queremos usar un ordenador más potente (o un portátil) como cerebro, Arduino puede servir como interfaz de control entre el ordenador y el resto de partes del robot.

Tipos de tarjetas
Existen varios modelos de tarjetas arduino, cada una tiene un tipo de interconexión con nuestro ordenador:

  • Tarjeta serie
  • Tarjeta USB
  • Tarjeta Bluetooth

La más habitual y sencilla de usar es la tarjeta USB.
Hardware 
Dentro del hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida. Los microcontroladores más usados son los aquí mencionados esto es por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. 

  • Atmega168
  • Atmega328
  • Atmega1280
  • ATmega8
Software
Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque(boot loader) que corre en la placa.

Entradas y salidas
  • Consta de 14 entradas digitales configurables entrada i/o salidas que operan a 5 voltios. Cada pin puede proporcionar o recibir como máximo 40 mA. 
  • Los pines 3, 5, 6, 8, 10 y 11 pueden proporcionar una salida PWM (Pulse Width Modulation). Si se conecta cualquier cosa a los pines 0 y 1, eso interferirá con la comunicación USB. 
  • Diecimila también tiene 6 entradas analógicas que proporcionan una resolución de 10 bits. Por defecto miden de 0 voltios (masa) hasta 5 voltios, aunque es posible cambiar el nivel más alto, utilizando el pin Aref y algún código de bajo nivel.

Descripción general de Arduinos


Arduino Mega
El Arduino Mega es una placa microcontrolador basada ATmeg1280.
Tiene 54 entradas/salidas digitales (de las cuales 14 proporcionan salida PWM), 16 entradas digitales, 4 UARTS (puertos serie por hardware), un cristal oscilador de 16MHz, conexión USB, entrada de corriente, conector ICSP y botón de reset. 
El Mega es compatible con la mayoría de shields diseñados para el Arduino Duemilanove o Diecimila.
Especificaciones

MicrocontroladorATmega1280
Voltaje de funcionamiento5V
Voltaje de entrada (recomendado)7-12V
Voltaje de entrada (limite)6-20V
Pines E/S digitales54 (14 proporcionan salida PWM)
Pines de entrada analógica16
Intensidad por pin40 mA
Intensidad en pin 3.3V50 mA
Memoria Flash128 KB de las cuales 4 KB las usa el gestor de arranque(bootloader)
SRAM8 KB
EEPROM4 KB
Velocidad de reloj16 MHz



Arduino BT

Es una placa electronica originalmente se basó en la ATMega168 , pero ahora se suministra con el 328 y el Bluegiga WT11 módulo bluetooth. 
Es compatible con la comunicación inalámbrica a través de bluetooth de serie 
Cuenta con 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM y se puede utilizar para restablecer el WT11 módulo), 6 entradas analógicas, una de 16 MHz oscilador de cristal, terminales de tornillo para poder, una cabecera de ICSP, y un botón de reinicio. 
Especificaciones
MicrocontroladoresATmega328
Voltaje de funcionamiento5V
Voltaje de Entrada1,2-5,5 V
Digital pines I / O14 (6 de las cuales proporcionan una salida PWM)
Pines de entrada analógica6
Corriente de I / S de CC Pin40 mA
De corriente continua de 3,3 V Pin50 mA
Memoria Flash32 KB (de los cuales 2 KB utilizadas por gestor de arranque)
SRAM2 KB
EEPROM1 KB



Arduino Pro

Placa electronica basada en el ATMega168 o ATmega328
Cuenta con 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM), 6 entradas analógicas, un conector de alimentación de la batería, un interruptor de encendido, un botón de reinicio, y los agujeros para el montaje de un conector de alimentación, una cabecera de ICSP, y pin headers.
La tarjeta viene sin cabeceras de pre-montados, permitiendo el uso de varios tipos de conectores o soldadura directa de los cables. La distribución de los pines es compatible con Arduino Shield.
Especificaciones

MicrocontroladoresATmega168 o ATmega328
Voltaje de funcionamiento3,3 V o 5 V
Voltaje de Entrada3.35 -12 V (3,3 V versiones) o 5 - 12 V (versiones 5V)
Digital pines I / O14 (6 de las cuales proporcionan una salida PWM)
Pines de entrada analógica6
Corriente de I / S de CC Pin40 mA
Memoria Flash16 KB ( ATmega168 ) o 32 KB ( ATmega328 ) de los cuales 2 KB utilizado por gestor de arranque
SRAM1 KB ( ATmega168 ) o 2 KB ( ATmega328 )
EEPROM512 bytes ( ATmega168 ) o de 1 KB ( ATmega328 )
Velocidad de relojMHz (3.3V versiones) o de 16 MHz (versiones 5V)




Arduino Uno
Es una placa electronica basada en el ATmega328Cuenta con 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM), 6 entradas analógicas, una de 16 MHz del oscilador de cristal, una conexión USB, un conector de alimentación, una cabecera de ICSP, y un botón de reinicio.

Especificaciones
MicrocontroladoresATmega328
Voltaje de funcionamiento5V
Voltaje de Entrada (recomendado)7-12V
Voltaje de entrada (los límites)6-20V
Digital pines I / O14 (6 de las cuales proporcionan una salida PWM)
Pines de entrada analógica6
Corriente de I / S de CC Pin40 mA
De corriente continua de 3,3 V Pin50 mA
Memoria Flash32 KB ( ATmega328 ) de los cuales 0,5 KB utilizado por gestor de arranque
SRAM2 KB ( ATmega328 )
EEPROM1 KB ( ATmega328 )
Velocidad de reloj16 MHz


Arduino mini
Es una placa de pequeño microcontrolador basado originalmente en el ATMega168 , pero ahora se suministra con el 328, destinado a circular por paneras y cuando el espacio es una prima. Cuenta con 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM), 8 entradas analógicas, y una de 16 MHz del oscilador de cristal. 
Especificaciones

MicrocontroladoresATmega328
Voltaje de funcionamiento5V
Voltaje de Entrada09.07 V
Digital pines I / O14 (6 de las cuales proporcionan una salida PWM)
Pines de entrada analógica8 (4 de las cuales se desglosan en los pasadores)
Corriente de I / S de CC Pin40 mA
Memoria Flash32 KB (de los cuales 2 KB utilizadas por gestor de arranque)
SRAM2 KB
EEPROM1 KB
Velocidad de reloj16 MHz


Arduino Nano
Es una pequeña tabla, completa y protoboard de usar basado en el ATmega328 (Arduino Nano 3.0) o ATmega168 (Arduino Nano 2.x). Tiene más o menos la misma funcionalidad de la Arduino Duemilanove, pero en un paquete diferente. Le falta sólo una alimentación de CC, y funciona con un cable Mini-B USB en lugar de una normal.
Especificaciones

MicrocontroladoresAtmel ATmega168 o ATmega328
Voltaje de funcionamiento (nivel lógico)5 V
Voltaje de Entrada (recomendado)7.12 V
Voltaje de entrada (los límites)6.20 V
Digital pines I / O14 (6 de las cuales proporcionan una salida PWM)
Pines de entrada analógica8
Corriente de I / S de CC Pin40 mA
Memoria Flash16 KB ( ATmega168 ) o 32 KB ( ATmega328 ) de los cuales 2 KB utilizado por gestor de arranque
SRAM1 KB ( ATmega168 ) o 2 KB ( ATmega328 )
EEPROM512 bytes ( ATmega168 ) o de 1 KB ( ATmega328 )
Velocidad de reloj16 MHz
Dimensiones0,73 "x 1,70"


Esto es todo espero sea de utilidad (:

Referencias: 
Introducción Arduino
http://arduino.cc/en/Main/Hardware
http://es.wikipedia.org/wiki/Arduino



sábado, 14 de abril de 2012

Microcontrolador PIC16F628A

El pic 16f628a es un microcontrolador de 8 bit, posee una arquitectura RISC avanzada asi como un juego reducido de 35 instrucciones. Este microcontrolador es el remplazo del obsoleto pic16f84a, los pines del pic16f628a son compatibles con el pic16f84a, asi se podrian actualizar proyectos que hemos utilizado con el pic16f84a. 

Este es el diagrama de pines. 
Diagrama de pines del PIC16F628A


Caracteristicas del PIC16F628A:
CPU de alto rendimiento RISC:
Velocidades de operación de DC-20 MHz
Capacidad de interrupción
Pila de 8 niveles
Modos de direccionamiento directos, indirectos y relativo
35 simples instrucciones de palabra: Todas las instrucciones de ciclo unico, excepto las de salto.


Característica especial microcontrolador:
Opciones de oscilador externo e interno
Modo de ahorro de energia en modo sueño
resistencias programable pul-ups del PORTB
Multiplexado del pin reset/Entrada-pin
Temporizador Watchdog con oscilador independiente para un funcionamiento fiable.


Microcontroladores que componen esta serie:




Tipos de memoria de PIC16F628A
Memoria flash: esta memoria es de tipo no volátil en esta memoria ira nuestro programa que realicemos.
El pic16f628a tiene una capacidad de 2048 words esto se podria traducir a 2048 líneas de codigo que podemos escribir en lenguaje assembler para este microcontrolador.
Memoria RAM: esta memoria sirve para guardar daos y variables, esta memoria es de tipo volatil es decir perdera la informacion cuando desaparezca la alimentación.
La memoria ram que posee el microcontrolador pic16f628a es de 224 bytes.
Memoria EEPROM: es una memoria de tipo no volatil de poca capacidad sirve para guardar datos aun cuando deje de recibir alimentacion la informacion no se perdera. La memoria eeprom que posee el pic16f628a es de 128bytes.


Tipos de osciladores.
El PIC16F627A/628A/648A puede ser operado en ocho diferentes modos de oscilador, RC, Oscilador con resistencia y condensador(2 modos)
XT ->Cristal de cuarzo.
HS -> Cristal de alta velocidad
LP -> Cristal de baja frecuencia y bajo consumo de potencia.
INTOSC -> oscilador interno de precision de 4mhz(2modos)
EC -> señal externa de entrada de reloj


En la siguiente figura esta el diagrama de bloques del oscilador:
Al momento de programar un micro se debe especificar que tipo de oscilador se usa. Internamente la frecuencia del oscilador es dividida por 4, asi que tenemos un oscilador de 4 MHz, la frecuencia de trabajo es de 1MHz, por lo que cada instrucción se ejecuta cada 1 microseg.


Mapa de memoria del PIC16F628A




Diagrama de bloques del PIC16F628A
En la siguiente figura se muestra el diagrama de bloques del pic16f628a como vemos los puertos a y b son direccionales o sea se les puede configurar como entrada o salida digital.




Referencia:
Microcontroladores
Microcontrolador PIC

martes, 6 de marzo de 2012

Tarea Intro. Ensamblador


Para mi reporte sobre mi tarea intro, decidi hacer un programa que muestra el promedio de n cantidad de numeros.

Codigo en C
Después se compila mediante la siguiente instrucción para asi obtener el código ensamblador

gcc -S factorial.c
Este es el resultado:

Código Optimizado
Optimizar el codigo realiza modificaciones sobre el código intermedio para mejorar la eficiencia en velocidad y tamaño.  En mi caso solo quite intrucciones que me parecierón extras como movimientos de memoria innecesarios y el siguiente es el código optimizado.
Cuando recién compilamos aparecerán muchas líneas, algunas etiquetas como .file, .type, tambien fueron algunas que elimine. Decidi comentarizar las lineas para localizar y entender cada parte de lo que realizaba el programa en este lenguaje.

Aun me faltaron algunas lineas e instrucciones de identificar porque aun no comprendia lo que realizaban pero aqui las explico.
 leal 44(%esp), %edx -> Transfiere la dirección de eax para el registro edx
cmpl %eax, 40(%esp) -> Resta fuente de destino y actualiza las banderas 
leave -> Libera las variables locales creando por la anterior
idivl -> La instrucción IDIV divide el contenido del 64 bits sin signo "edx": 
"eax" (construido mediante la visualización "edx" como los más significativos cuatro 
bytes y "eax" (como los menos significativos cuatro bytes) por el valor de operando 
especificado. El resultado cociente de la división se almacena en "eax", mientras que 
el resto se coloca en "edx".
 
Después realice la prueba con el código optimizado de la siguiente manera 

Referencia :
También tome de base la publicación de mi compañero Juan Carlos  para comprender más algunas lineas de código.

viernes, 17 de febrero de 2012

Arquitectura de microcontroladores

En esta entrada hablare de como se compone la arquitectura de microcontroladores, antes de eso esta es una breve introducción sobre que son estos pequeños dispositivos. 


El microcontrolador es un dispositivo electronico que es puede realizar proceso logicos, estos son programados en lenguaje ensamblador y son introducidos a esto mediante un programador.


Existen algunas ventajas entre un microcontrolador y microprocesador como las siguientes:
Microprocesador: 
  • Un microprocesador requiere de una memoria externa para el alacenamiento de datos/ programas.
  • La ejecución de instrucciones requiere de movimiento en los datos de la memoria externa a la interna y vice versa.
  • Tienen una buena potencia para facilitar los calculos.
Microcontrolador:

  • Un microcontrolador requiere un chip de memoria para los perifericos que contiene.
  • El funcionamiento de un microcontrolador es de usos múltiples.
  • Reducción de la cantidad de espacio en la implementación de un diseño dado.
  • Reduce el costo de implementación.
  • Permite desarrollo de aplicaciones especificas de manera mas rápida y eficiente.
  • Los fabricantes dan mucho soporte sobre las aplicaciones más comunes.
  • Se adaptan mejor a aplicaciones especificas.

Arquitectura:
La arquitectura se puede difinir dependiendo del modo de operación del mismo,  por sus instrucciones y modo de ejecución.
Por instrucciones existen 2 grupos: 
CISC(Complex Instruction Set Computer)

  • Instrucciones especializadas
  • Se requieren un set de instrucciones amplio para dar soporte a una arquitectura.
  • Programas requieren menos código fuente.

RISC(Reduced  Instruction Set Computer): 

  • Set de instrucciones reducido
  • Instrucciones de carácter general
  • Duración homogénea de la ejecución de las instrucciones.
  • Se requiere mas codigo para describir una operación que con una arquitectura CISC.
Von Neuman
  • Ejecución secuencial de las instrucciones
  • Existe solo una unidad de búsqueda y una unidad de ejecución.
  • La instrucción siguiente se busca hasta que se ejecute la instrucción actual.

Segmentada

  • Divide la busqueda de las instrucciones de manera cuando se ejecute la instruccion actual ya se esta ejecutando la siguiente.
  • Multiplica la velocidad de ejecucion al doble que la Von Neman.

Harvard

  • Se conoce como arquitectura de ejecución paralela.
  • Divide los procesos
  • Bus de direcciones y de datos separados en la arquitectura. 




Podemos encontrar elementos comunes en los microcontroladores

  • ADC(convertidor Analogico Digital)
  • USART
  • RTC
  • Puertos entrada/salida paralelos
  • PWM
  • USB
Existen diferentes aplicaciones de los microcontroladores(µcc) donde cualquier problema en el cual se requiera un instrumento digital compacto que sea capaz de realizar funciones como las siguientes, es posible pensar en sistema basado en un µcc: 
  • secuenciamiento
  • codificación/decodificación
  •  monitoreo
  • procesamiento de señales
  • control retroalimentado 
  • temporización
  • cálculos aritméticos sencillos
  • comunicaciones
  • automatización
  • despliegue digital 
  • control on - off etc 
Los siguientes son ejemplos de en que mas podria aplicarse: 


Instrumentos Portátiles Compactos
Dispositivos Periféricos
Dispositivos autónomos (stand  alone)
Subfunciones de instrumentos:
Aplicaciones automotrices:
Radio paginador numérico (beeper)
Modems
Buffer para impresora.
Fotocopiadoras
Panel frontal de un osciloscopio
Control de encendido e inyección de combustible.
Nivelímetro digital
Plotters
Maquinas de escribir
Controlador de display de cristal
Sistemas de frenado anti-
derrapante.
-Identificador-probador de circuitos integrados.
Posicionadores
-Selector
Codificador-Decodificador para T. V.
-Controlador de aspersores para jardín.
-Analizador de espectros (módulos
 de expansión para IR y RF)
-comunicados vía Inter-face serie)
-Control dinámico de la suspensión.
-Sistemas de navegación.
-Alarmas automotrice


Por ultimo podremos encontrar diferentes fabricantes algunos mas comunes que otros de microcontroladores aqui algunos de ellos:

- Microchip: Familas de PIC´s (
- Arquitecturas RISC, Harvard
- Motorola: Familia 68XX(6100, 6800, 6809, 650x).
- Arquitecturas CISC, segmentada
- Intel: Familias 80XX(8008, 80186, 8035, 8080, 8086, z80, etc)
- Arquitecturas CISC, Von neuman
NEC
Referencias: 

Microcontrollers and Applications 
Tecnologia y Electronica
Tipos de Microcontroladores 

jueves, 9 de febrero de 2012

Circuito en Simulador Oregano

Oregano fue desarrollado en un principio por Richard Hult, quien trabajó hasta el año2002, luego fue tomado por Ricardo Markiewics y Andrés Barbará quienes lo mantienen en la actualidad. 

Oregano es una aplicacion que permite el diseño de circuitos, para luego servir de frontend para la simulacion de circuitos de corriente continua y corriente alterna. 
Puede realizar analisis de corriente continua y corriente alterna. Por elmomento sólo utiliza la medida de tensión para realizar el análisis.

Aqui les presento una pequeña simulación de un circuito con solo 3 resistencias una entrada de voltaje y dos fuentes conectados a tierra con este solo existen dos tipos de salidas que es positiva y negativa como se muestra en la imagen.


CIRCUITO


SIMULACIÓN



sábado, 4 de febrero de 2012

Sistemas Integrados

¿Qué son?

Como concepto encontramos que un Sistema Embebido o tambien es llamado sistema integrado puede ser definido como un sistema de control o sistema informático diseñado para realizar una tarea especifica y que cumple funciones de monitoreo.
En la práctica muchos sistemas que poseen una interfaz digital (relojes, micro-ondas, automóviles) utilizan sistemas embebidos. Algunos sistemas embebidos incluyen un sistema operativo, pero muchos son tan especializados que toda la lógica puede implementarse en un solo programa.


El sector de los sistemas integrados se ha convertido en unos de los más atractivos debido a su clara aparición de futuro en cualquier ámbito de la sociedad: comunicaciones móviles, tráfico y transporte (aéreo, autopistas), electromedicina, hogar inteligente, juguetes inteligentes, electrónica en el automóvil. 
En general, un sistema integrado:
  • Es un sistema diseñado para cumplir con su deber, total o parcialmente independiente de la intervención humana.
  • Está especialmente diseñado para realizar algunas tareas de la manera más eficiente.
  • Interactúa con los elementos físicos de nuestro entorno, a saber. controlar y accionar un motor, sensor de temperatura, etc. 




En los últimos años, el hardware tales como microprocesadores, microcontroladores, y los chips FPGA se han convertido en mucho lo más barato. La producción de un chip a medida para manejar una tarea específica o un conjunto de tareas cuesta mucho más tiempo y dinero. Muchos ordenadores integrados incluso vienen con amplias bibliotecas, de modo que "escribir su propio software" se convierte en una tarea muy trivial.
Desde un punto de vista de aplicación, hay una gran diferencia entre un ordenador y un sistema integrado o embebido.
  • Los sistemas integrados son a menudo obligados a proporcionar en tiempo real de respuesta. Un sistema de tiempo real se define como un sistema cuya corrección depende de la oportunidad de su respuesta. 

Podriamos encontrar algunos ejemplos de tales sistemas como sistemas de control de vuelo de un sistema de sensores de aeronaves, en los reactores nucleares y plantas de energía. Para estos sistemas, un retraso en la respuesta es un error fatal. Una versión más relajada de Sistemas de Tiempo Real , es en la que la respuesta oportuna, con pequeños retrasos es aceptable. 
Otro ejemplo de tal sistema sería el sistema de pantalla de Programación en las plataformas ferroviarias. 

Complejidad
Hoy día, un sistema integrado puede constar de cientos de miles de líneas de código de programación. Cada vez más frecuentemente, los productos incluyen sistemas integrados
complejos, esto implica la capacidad para integrar mejores prácticas y el desarrollo de plataformas de productos.
Conectividad
Actualmente, los sistemas integrados suelen formar parte de redes distribuidas refinadas, esto es, se integran numerosos dispositivos complejos por medio de buses de campo.
Sistemas integrados interconectados
Otro importante aspecto de esta evolución son los sistemas integrados distribuidos, llamados sistemas integrados interconectados para resaltar la infraestructura de interconexión y el protocolo de comunicación.


Referencia.
Embedded Systems
Sistemas Integrados con FPGA's y Linux