Páginas

viernes, 6 de abril de 2012

[Emb Comb Lab] Casas Inteligentes



El hogar digital es una vivienda que a través de equipos y sistemas, y la integración tecnológica entre ellos, gracias a la domótica, ofrece a sus habitantes funciones y servicios que facilitan la gestión y el mantenimiento del hogar, aumentan la seguridad; incrementan el confort; mejoran las telecomunicaciones; ahorran energía, costes y tiempo, y ofrecen nuevas formas de entretenimiento, ocio y otros servicios dentro de la misma y su entorno sin afectar a las casas normales.

El Hogar Digital, incorpora un sentido más amplio que la domótica. No consiste simplemente en la instalación de dispositivos para controlar determinadas funciones en los edificios (viviendas, indutrias, oficinas...) tales como alarmas, iluminación, climatización, control energético... sino que, al incorporar las tecnologías de la Información y las Telecomunicaciones, permite controlar y programar todos los sistemas tanto en el interior de la vivienda como desde cualquier lugar, en el exterior de la misma, a través de distintas redes como Internet, mediante una interfaz apropiada.

Wikipedia: Hogar Digital





Historia



El concepto de casa inteligente fue desarrollado en Escocia por la compañia X10.
Su sistema de automatización permitía a los productos (compatibles) interactuar y comunicarse entre ellos a traves de la instalación electrica de la casa.

Incluye una suite completa de componentes, entre dispositivos, terminales, conectores, transmisores y receptores. La comunicación era sencilla, un comando númerico codificado que contenía la siguiente información:
  • Número del dispositivo que envía el comando o alerta
  • Número del dispositivo que se quiere controlar
  • Número del comando a aplicar
Todo esto sucedía en menos de un segundo.

A pesar de todo esto, X10 tenia algunas limitaciones, la comunicación a través del cableado electrico sufria de demasiado "ruido" debido a las variaciones de corriente, los dispositivos podian interpretar dicho ruido como un comando y reaccionar o viceversa, al enviar un comando éste no podía ser interpretado.

Poco a poco el sistema fue mejorando, y otras compañias comenzaron a desarrollar tecnologías propias.


¿Cómo funciona una casa inteligente?


Una casa inteligente se encarga de conectar todos los dispositivos dentro de ella a través de una red, la cual les posibilita comunicarse entre si y contigo.
Por medio de un control remoto o comandos de voz, la casa inteligente puede reaccionar y controlar diferentes componentes como los son ventilación, iluminación, puertas o ventanas.
La casa inteligente también es capaz de llevar un registro preciso del uso de los servicios de agua, electricidad o gas y tomar decisiones sobre su uso, lo cual permite ahorrar algo de dinero.

Comunicación




Las comunicaciones dieron un paso agigantado desde la tecnología utilizada por la compañía X10. Actualmente, en lugar de comunicar los dispositivos vía red eléctrica, se hace por medio de ondas de radiofrecuencias como Wi-Fi o celular.

Existen sistemas un poco más dedicados para esta tarea como lo son ZigBee y Z-Wave ya que la información transmitida es poca y se desperdicia mucho ancho de banda con sistemas como el Wi-Fi.

Las tecnologías ZigBee y Z-Wave permiten construir mallas de comunicaciones, lo que significa que hay más de camino para que la información llegue a su destino. Se utilizan algoritmos de ruteo para garantizar que los mensajes lleguen por el camino mas corto.

Las redes inalambricas proveen mayor flexibilidad ya que es posible situar los diferentes dispositivos en cualquier ubicación dentro de la casa.

En la actualidad existen las denominadas Redes de Malla Dual, es una combinación de la red por medio de la instalación electrica y por medio de red inalambrica; si el mensaje no es recibido por una malla, se prueba con la otra.

Dispositivos y Sensores



Algunos ejemplos pueden ser:
  • Camaras: Permiten monitorear interiores y exteriores.
  • Dimmers: En lugar de switches binarios, permiten adaptar la iluminación de la casa. Algunos incluyen sensores de iluminación automáticos.
  • Sensores de Movimiento: Permiten enviar alertas cuando se detecta movimeinto alrededor o dentro de la casa. Pueden ser programados para diferenciar, por ejemplo, entre mascotas y ladrones, y para activarse en ciertos horarios.
  • Puertas: Se pueden integrar diferentes sensores para abrir y cerrar puertas, ya sea por medio de huella digital, escaneo de pupila, tarjetas inteligentes, keypads, etcétera. Eliminando el uso de llaves.
  • Multimedia: Sistemas de audio y video distribuido en pantalla y bocinas ubicadas alrededor de la casa.
  • Smart Metering: Medidores de eficiencia electrica, uso de agua, gas o para monitorear la eficiencia de paneles solares.


Diseño



El diseño de una casa inteligente involucra mucho tiempo e inversión. Se debe tener una idea clara de lo que se quiere o necesita antes de comenzar la construcción del hogar ya que resultaria muy costoso el recableado y renovación de las instalaciones y la integración de nuevos módulos.

Existen compañías dedicadas a realizar esta labor, que incluso otorgan una certificación.

El costo de un hogar inteligente varía dependiendo de la instalación y puede ir desde los $10,000 a $250,000 dólares para sistemas bastante sofisticados.

También es posible diseñar una casa para que crezca a futuro, integrando todo el sistema de cableado y dejandolo sin utilizar hasta que se decida integrar algún módulo adicional.

Beneficios


Dejando de lado los costos de planeación, diseño y fabricación Las casas inteligentes pueden proporcionar una gran cantidad de confort y ahorros.

Una casa inteligente puede ser autosustentable si se integran, por ejemplo, paneles solares y aislamiento inteligente, eliminando los costos de los servicios públicos de electricidad.

Elimina las preocupaciones por dejar dispositivos encendidos, por la seguridad de la misma, emergencias, etcétera.

Algunos ejemplos sencillos y comunes de las caracteristicas que podemos disfrutar con una casa inteligente pueden ser:
  • Programar dispositivos para que enciendan y apaguen a cierta hora
  • Monitorear la actividad de niños pequeños
  • Ajustar la temperatura de la casa según la época del año o clima exterior
  • Ajustar la iluminación o crear perfiles de iluminación para ciertas horas
  • Ajustar los niveles de consumo electrico del hogar.

Desventajas y retos


Al igual que las ventajas, las desventajas también son importantes de revisar. Más que desventajas, la casa inteligente proporciona algunos retos que de no pasarlos correctamente pueden afectar demasiado el rendimiento del sistema. Por ejemplo:
  • Calcular el tamaño del sistema: Qué es necesario integrar y que no lo es. La cantidad de personas que lo utilizaran.
  • Usabilidad: El sistema debe ser intuitivo y facil de utilizar, tiene que enfocarse 100% en el usuario
  • Evolución: Si el sistema puede crecer en un futuro, si se puede adaptar a nuevas necesidades. Se puede actualizar a nuevas tecnologías.
  • Seguridad: El sistema es seguro, inaccesible a personas no autorizadas. Es robusto.

Se debe tener en cuenta quién será el usuario final, personas jovenes, adultos, ancianos; y cuánto tiempo tardarán en adoptar el sistema.

La seguridad es otro tema bastante importante, el sistema debe ser resistente a ataques (hackeos) y evitar en todo momento dejar la casa vulnerable. La información recolectada debe ser guardada en dispositivo aislado y la información como contraseñas, números de identificación y comandos de control deben ser cifrados.


Las casas inteligentes son aún un tema bastante delicado, sobre todo en temas de seguridad, una casa bien gestionada proporciona grandes ahorros, una seguridad inigualable y un gran confort. La tecnología es bastante robusta en la actualidad, solo es necesario aceptar el cambio y estar dispuestos a integrar estos sistemas en nuestra vida.

Referencias

[Emb Com Lab] Automóviles Inteligentes


En la actualidad, los automóviles se están volviendo cada vez mas complejos, eficientes e inteligentes.

Todos los automóviles fabricados en los estos últimos años tienen por lo menos una computadora integrada, encargada de monitorear la eficiencia del vehículo. Para realizar esta tarea, el automóvil esta equipado con una gran cantidad de sensores los cuales envían la información a la computadora, la que posteriormente los procesa y así poder controlar ciertos componentes del motor o transmisión.

Las razones por la que las empresas fabricantes han decido integrar una cantidad cada vez mayor de computadoras y sensores:
  • Tener un control mas sofisticado sobre el motor y sus funciones.
  • Diagnósticos mas precisos y avanzados
  • Simplificar el diseño y manufactura de componentes
  • Reducir el cableado y centralizar la distribución del mismo
  • Mejores sistemas de seguridad
  • Lograr un mayor confort

Al mismo tiempo, se necesita tener cada vez mas conocimiento sobre el funcionamiento de estos componentes, dificultando la labor de mantenimiento y y evitando que cualquier persona modifique los mismos, sin embargo, lo que en realidad sucede es que se esta facilitando el servicio de mantenimiento del mismo cuando manos expertas lo realizan.

Y algunos ejemplos de cosas que las computadoras de los automóviles pueden hacer son:
  • Controlar las velocidades y la transmisión
  • Controlar la velocidad de frenado y de las ruedas
  • Controlar las bolsas de aire y otros componentes de seguridad
  • Sistema de seguridad, candados
  • Control de la temperatura del clima y ventilación
  • Posición de los asientos y espejos
  • Reproductores de música, sonido, etcétera.
  • Sistemas para el control de rutas, GPS.

Motor: Engine Control Unit (ECU)


Ejemplo ECU Ford Ranger

El trabajo mas complicado es controlar el motor. El ECU es una computadora especialmente diseñada para realizar este trabajo, y es la computadora mas poderosa integrada en los automóviles. Esta basada en el sistema Closed-Loop Control, este esquema monitorea las salidas del sistema para así controlar las entradas del mismo, es decir, toma decisiones a partir de los resultados obtenidos en el proceso anterior.

Obtiene información de los sensores distribuidos en el motor, y con dicha información realiza millones de cálculos y comparaciones, y así tomar la mejor decisión. Con ello se puede determinar, por ejemplo, la cantidad de combustible y oxigeno que serán inyectados en los pistones, la velocidad del sistema de ventilación, etcétera.

Su función principal es hacer más eficiente el funcionamiento del motor, reduciendo las emisiones de gases y obteniendo el mejor kilometraje por cada unidad de combustible.

Un ECU moderno contiene un procesador de 32bits, con una velocidad de 40Mhz; trabaja con una memoria de 1 megabyte. Posiblemente no es la computadora más veloz del mundo, sin embargo, es una computadora dedicada y el código que corre esta optimizado para la misma.

Componentes del ECU

  • Convertidores Análogo-a-Digital: Reciben información de los sensores, que por lo general son señales de voltaje o luz. Convierten estas señales en digitos de 10bits
  • Salidas digitales de alto nivel: Sirven para controlar las compuertas de los inyectores, bujías, sistemas de ventilación. Las salidas son binarias, es decir 0 o 1 (para abierto o cerrado, encendido o apagado). Las salidas estan dadas por una cantidad de voltaje, la salida suele ser muy pequeña la cual entra a un relevador para intensificarla poder alimentar correctamente algun componente.
  • Convertidores Digital-a-Anáñogo: Sirven para el trabajo antes mencionado, las salidas digitales necesitan ser convertidad en una cantidad de voltaje para poder controlar algún componente.
  • Chips de Comunicación: Implementan un estándar de comunicación llamado CAN (controller area network). Trabaja a una velocidad de 500Kbps, la cual es suficiente para realizar el trabajo de comunicar los componentes y sensores con el ECU y viceversa. El bus CAN utiliza solamente 2 cables para toda la comunicación.


Comunicaciones


Ejemplo Bus de Comunicaciones

El bus de comunicación otorga el beneficio de disminuir la cantidad de cableado dentro del automóvil, esta conectado directamente al ECU el cual almacena la información obtenida.
El bus de comunicación también permite la transmisión de errores y fallos para facilitar la tarea de diagnostico a los técnicos.
Trabaja por medio de Multiplexación lo cual resulta bastante eficiente, por ejemplo, el panel de control en una puerta suelte tener muchos botones, por ejemplo: para abrir o cerrar la misma, subir o bajar los espejos, controles de los asientos, etcétera. No sería muy práctico cablear cada uno de estos controles, es por ello que un solo bus de comunicaciones recibe la información y la transmite multiplexando los datos.

Cluster de Intrumentos


Se le conoce como cluster de instrumentos al conjunto de computadoras que, de manera independiente, monitorean instancias en el automóvil y después, de manera conjunta, comparten información a traves del bus de comunicaciones. Algunos ejemplos son:
  • La ECU
  • El controlador de la Transmision
  • El sistema ABS (Anti-Lock Brake System)

Ejemplo Panel Digital

La información recibida es procesada y desplegada en el panel de instrumentos (velocidad, kilometraje, gasolina, temperatura, luces de motor, etcétera).
El inconveniente es que la mayoría de los fabricantes tienen la responsabilidad de ajustar los datos a su propio panel de instrumentos, es decir, el diseño aún no esta centralizado.

Sensores

Existen una gran cantidad de sensores que pueden ser integrados al sistema, sin embargo, no todos son necesarios. La mayoria de los fabricantes en la actualidad proveen sensores inteligentes los cuales cumplen varias funciones. La calibración de los mismos debe ser bastante precisa para obtener los resultados esperados. Actualmente los sensores incluyen algo de electrónica la cual facilita la tarea de procesamiento y no sobresaturar el bus de comunicación. Algunos ejemplos son:
  • Sensores de Temperatura en motor y ventilación
  • Sensores de velocidad en las llantas
  • Sensores de oxigeno y combustible


Un sensor para los neumáticos nos permite identificar el inflado y presión de las llantas, el mismo que nos avisará de cualquier irregularidad en ellas. Igualmente, el sensor en las luces que permite regularlas de acuerdo a las condiciones del momento; como por ejemplo durante las curvas.

Los sistemas de comunicación y enlace entre vehículos serán esenciales en todo momento, con sistemas de radio, GPS, láser o satélites, que podrán actuar durante todo el recorrido guiando nuestra trayectoria y servirnos en caso de emergencias, previniéndonos del peligro en la ruta y avisándonos de las condiciones meteorológicas o del tráfico existente.

Servicios multimedia en el auto, televisores en los asientos posteriores, control de identificación del conductor del vehículo y de su condición física, radares anti-colisiones y controles de trayectorias, frenos ABS, y muchas otras cosas más que en algunos casos ya se encuentran disponibles en el mercado automovilístico y otras que están a la vuelta de la esquina.

Seguridad y Confort


En la última década la seguridad y el confort de loa vehículos ha aumentado mucho. Sistemas como ABS, bolsas de aire, sistemas de control de tracción y estabilidad, entre otros, se han convertido en estándares que deben ser integrados en todos los automóviles.

Cada nuevo módulo integrado agrega más poder de procesamiento, y en años posteriores tendremos nuevas características de seguridad y confort.

En la actualidad existen sistemas que permiten personalizar el automóvil, cámaras integradas en los volantes y demás sistemas biométricos permiten identificar al conductor que entra al automóvil y asi configurar el vehiculo a las preferencias de cada uno.


Muchas cosas nos esperan en el futuro y aún hay mucho que ver por partede os fabricantes


Referencias

jueves, 29 de marzo de 2012

[MDE Class] Avances del Proyecto - Medio Curso


Importancia e impacto esperado del proyecto


He investigado en la web acerca de los proyectos de domotica, y me he dado cuenta que estas iniciativas están tomando mucha fuerza, y a pesar de que el impacto de las mismas es muy limitado en el país, decidí realizar el proyecto para demostrar lo sencillo que ésto puede resultar.

Los beneficios son inmensos, en los últimos años ha habido un boom tremendo por las tecnologías verdes, sin embargo, la mayoría aún están fuera de nuestro alcance o son muy costosas de implementar, sin embargo, es posible poner algo de verde a las tecnologías actuales si somos capaces de generar conciencia en las personas. He aquí la importancia de mi proyecto, ya que, ahorrar energía puede ser unos de los métodos más comunes y sencillos de implementar, y con ello, ayudar a la economía personal y a contribuir con el cuidado del medio ambiente.

Espero que el impacto de mi proyecto sea significativo, espero que las personas se den cuenta de la importancia de ahorrar energía y se den cuenta la cantidad de dinero extra que gastan al año por descuidos en sus instalaciones eléctricas.
Espero que se genere conciencia sobre el tema y contribuir activamente a este tipo de proyectos y sienta lo fácil que es tener el control de su hogar en la palma de su mano.

Herramientas y Tecnologías Utilizadas



1. ANDROID 2.3


Porque es una plataforma de código libre, fácil de adquirir y programar; además de tener una amplia aceptación entre los usuarios y un mercado bastante distribuido.

En mi caso, utilizaré un celular LG Optimus Black P970 en el cual instalaré la interfaz de monitoreo y control local y remoto.



2. Titanium Mobile SDK

Es una herramienta que suplirá a mi eclipse, sin embargo, tiene integración con la SDK de Android (siempre y cuando esté instalada). Me servirá para optimizar la creación de la interfaz gráfica, desarrollo de funciones, programación y todo lo demas que conlleve el desarrollo de la app.


3. Herramientas WEB
  1. Apache Web Server
  2. MySQL
  3. php
  4. Ruby on Rails
  5. Highcharts

4. Open Energy Monitor


Es un proyecto existente, cuyo objetivo es el monitoreo del consumo y/o producción de energía eléctrica. Mas específicamente, me centrare en su división EMONcms que es una librería open source para la visualización de datos de consumo eléctrico.




5. Hardware
  1. Arduino UNO
  2. Xbee
  3. CT Sensors
  4. Adaptador de Corriente modificado
  5. Protoboard y demás componentes electrónicos

Calendarización




Consideraciones de Usabilidad


  1. Manténlo simple: viene a ser lo principal, una aplicación donde el usuario con unos sencillos taps vaya a donde quiere, cuando quiere.
  2. Navegación: en qué pantalla se encuentra el usuario, cómo puede regresar.
  3. Botones grandes: Al tratarse de una aplicación móvil, los botones deben ser lo suficientemente grandes para permitir un control adecuado
  4. Adaptable y fácil de configurar: Layout personalizado.


A continuación les dejo las diapositivas presentadas en clase.

jueves, 1 de marzo de 2012

[Emb Comp Class] Proyecto 1 "Dado PIC"

Descripción

Realizar un dado electrónico, sera "lanzado" presionando un Push Button y mostrará el resultado con un arreglo de 7 leds y mediante la combinación de las salidas del PIC. (B0, B1, B2, B3, B4, B5, B6, B7)

Materiales

  • 1 microcontrolador PIC16F628A
  • 1 diodo rectificador 1N4007
  • 1 regulador de voltage MC7805CT
  • 1 capacitor 470 microFaradios a 16 volts
  • 2 capacitores ceramicos 0.1 microFaradios
  • 1 resistor 10 kiloOhms
  • 1 resistor 270 kiloOhms
  • 3 resistores 33 ohms
  • 1 Protoboard

Procedimiento

Podemos leer un poco de Teoría sobre Microcontroladores para saber con que trabajaremos.
Es necesario tener conocimientos básicos en lenguaje BASIC, podemos leer este articulo
Prácticamente armaremos el hardware del proyecto desde cero, siguiendo el siguiente mapa esquemático.



La parte superior es una fuente que regula el voltage cuando colocamos la bateria, ya que de los 9Volts que nos provee solo son necesarios 5Volts.

Conexion de los LEDS

Para el correcto funcionamiento del dado, los leds deben conectarse correctamente. Son necesarias 4 salidas, 3 de ellas encienden 2 leds cada una, y la que sobra enciende solamente uno, el cual es el LED central.



Estas son las salidas correspondientes en binario, traducidas a hexadecimal para cargarlas en el programa



Como podemos ver, es necesario conectar las parejas en forma cruzada para poder reproducir correctamente los patrones del dado.



Armado en Protoboard



Código


El programa fue realizado en el programa PIC Simulator IDE, es una aplicación bastante completa que permite escribir nuestro código, compilarlo y realizar una simulación del mismo. No nos permite armar un circuito, pero nos permite simular que las salidas de nuestro microcontrolador sean correctas. El programa es de pago y nos permite tener 30 sesiones, cada una con una duración de 2 horas; agotadas dichas sesiones sera necesario pagar por el mismo, sin embargo, el código del dado es super rápido de programar



Referencias

[Emb Comp Lab] Sintaxis BASIC en PIC

BASIC es el acrónimo de Beginners All-purpose Symbolic Instruction Code ("Código de instrucciones simbólicas de propósito general para principiantes")

"Forma parte de la familia de lenguajes de alto nivel. Originalmente fue desarrollado como una herramienta de enseñanza; se diseminó entre las microcomputadoras hogareñas a partir de la década de 1980. Actualmente continúa siendo muy popular, en muchos dialectos bastante distintos del original. FUENTE: http://es.wikipedia.org/wiki/BASIC

Se dice que es un lenguaje hecho para niños, que ya esta en desuso, pero la verdad es de los pocos lenguajes "old school" que siguen vigentes para su uso.

BASIC fue diseñado para permitir a los estudiantes escribir programas usando terminales de un computador en tiempo compartido. Estaba pensado para reducir notablemente la complejidad de los otros lenguajes del momento, diseñado específicamente para un usuario más sencillo fuera del área de las ciencias de la computación y a quien no le interesaba tanto la velocidad, sólo el hecho de ser capaz de programar y usar la máquina sin demasiadas complicaciones. Los diseñadores del lenguaje también querían que permaneciera en el dominio público, lo cual contribuyó a que se diseminara rápidamente.

Los ocho principios que rigeron el diseño de BASIC fueron:
  1. Ser fácil de usar para los principiantes.
  2. Ser un lenguaje de propósito general (no orientado).
  3. Permitir a los expertos añadir características avanzadas, conservando simple el lenguaje para los principiantes.
  4. Ser interactivo.
  5. Proveer mensajes de error claros y amigables.
  6. Responder rápido en los programas pequeños.
  7. No requerir un conocimiento del hardware de la computadora.
  8. Proteger al usuario del sistema operativo.

Tipos de Datos


En BASIC existen 4 distintos tipos de variables, según el dato que puedan almacenar:
  • Bit (un bit de longitud, almacena 0 o 1 únicamente)
  • Byte (un byte de longitud, almacena números enteros entre 0 y 255)
  • Word (dos bytes de longitud, almacena números enteros entre 0 y 65,535)
  • Long (cuatro bytes de longitud, almacena números enteros entre 0 y 4,294,967,295)
La declaración de variables puede ser hecha en cualquier parte del programa, y todas son consideradas globales, es decir, su valor es accesible desde todas las subrutinas y zonas del programa. El numero de variables esta lógicamente limitado al monto de memoria RAM disponible en cada microcontrolador.
Las variables deben ser declaradas antes de utilizarlas, mediante la instrucción DIM, como se muestra en los siguientes ejemplos:
 DIM A AS BIT
 DIM B AS BYTE
 DIM X AS WORD
 DIM Y AS LONG
También es posible utilizar vectores o arreglos, es decir, una matriz de dimensiones 1xN . Por ejemplo:
 DIM A(10) AS BYTE
aqui declaramos un vector de diez elementos del tipo BYTE, que serán accedidos mediante el uso de subíndice (entre paréntesis) del 0 al 9.

Las variables tipo WORD están compuestas por dos bytes. el primero de ellos es llamado byte "alto" y el otro "bajo", dado que el primero contiene los 8 bits mas significativos. En BASIC podemos acceder individualmente a cada uno de los bytes que componen un Word mediante las extensiones ".HB" (High byte, o byte alto) y ".LB" (Low Byte o byte bajo) . Veamos un ejemplo:
 DIM A AS BYTE
 DIM B AS WORD
 A = B.HB
 A = B.LB 'Esto es lo mismo que A = B
 B.HB = A
 B.LB = A
 B = A 'Esto también borra el byte alto de la variable B
Los bits individuales de cada variable BYTE pueden ser accedidos individualmente también, simplemente poniendo como extensión ".n" donde "n" es el numero de bit (1,2, 3, etc. )
 DIM A AS BYTE
 DIM B AS BIT
 B = A.1
 B = A.7
 A.0 = A.5

RESERVE


La sentencia RESERVE le permite al programador reservar un numero de posiciones de la RAM para su uso en rutinas en assembler o para el In-Circuit Debugger de MPLAB. Simplemente, si queremos reservar 20 bytes de RAM, escribimos:
 RESERVE 20

Puertos


Todos los registros del microcontrolador esta disponibles para usar en los programas BASIC, como si se tratase de variables del tipo BYTE con el nombre del registro utilizado en las datasheet (PORTA, PORTB, TRISA, etc.). Por supuesto, se puede acceder a bits individuales de los registros con la técnica vista párrafos atrás. Algunos ejemplos:
 TRISA.1 = 0
 TRISB = 0
 PORTA.1 = 1
 PORTB = 255
Existe una "forma corta" de acceder a los bits individuales de cada port, simplemente usando las variables BASIC tipo byte RA, RB, RC, RD, RE o bien las tipo bit RA0, RA1, RA2, ..., RE6, RE7
 RA = 0xFF
 RB0 = 1
Los registros PORTA, PORTB (y en algunos casos PORTC) contienen el estado de los terminales de entrada-salida correspondiente.
Los registros TRISA, TRISB (y en algunos casos TRISC) se utilizan para configurar los terminales de entrada-salida.

SYMBOL


Una forma de escribir programas que nos resulten mucho mas fáciles de entender es el uso de nombres simbólicos, o SYMBOL. Un "symbol" es una cadena que contiene código, asignado a un nombre. Al momento de compilar, PIC BASIC hace la "búsqueda y reemplazo" de nuestros símbolos y luego genera el código ASM y el HEX. Supongamos que tenemos un LED conectado al bit cero del puerto B. Mediante SYMBOL podemos hacer:
 SYMBOL LED1 = PORTB.0
Luego, si queremos encender el LED, en lugar de
 PORTB.0 = 1
podemos hacer
 LED1 = 1
que es mucho mas claro y fácil de leer. Por supuesto, el código que aparece a la derecha del igual no puede contener instrucciones o comandos reservados del sistema.

Las constantes (valores que usamos en nuestro programa, y que, por ejemplo, asignamos a las variables) pueden ser escritas en decimal (directamente el valor), en hexadecimal (anteponiendo "0x" o posponiendo "H" al valor) o en binario (anteponiendo "%" al valor). Por ejemplo:
 DIM A AS BIT
 DIM B AS BYTE
 A = TRUE
 B = 0x55
 B = %01010101
Por supuesto, se pueden asignar nombres a las constantes, usando la instrucción CONST:
 DIM A AS WORD
 CONST PI = 314
 A = PI

GOTO


Esta es una de las instrucciones más polemicas que se encuentra en todos los dialectos BASIC. GOTO significa literalmente "IR A", y sirve justamente para desviar el flujo del programa a otro punto. Para usar GOTO, es necesario poner una etiqueta en el lugar al que queremos "saltar". Las etiquetas son simplemente nombres terminados en ":", tal como se ve a continuación:
 ...
 calculos:
 ...
 ...
 ...
 GOTO calculos
 ...
En el ejemplo anterior, el programa se ejecutará hasta encontrar la instrucción "GOTO calculos", que hara que se ejecuten nuevamente las instrucciones siguientes a la etiqueta "calculos:". Cabe aclarar que las etiquetas no son un código ejecutable, es decir, no realizan ninguna acción, solo son un "marcador" del lugar al que se puede saltar con GOTO.

Operaciones Lógicas y Matemáticas


Se dispone de cinco operaciones matemáticas básicas, disponibles para las variables tipo BYTE y Word. Estas son
  • suma (operador +)
  • resta (operador -)
  • multiplicación (operador *)
  • division (operador /)
  • módulo (operador MOD)
Por supuesto, el compilador es capaz de combinarlas para obtener operaciones matemáticas mas complejas. Ejemplos:
 DIM A AS WORD
 DIM B AS WORD
 DIM X AS WORD
 A = 123
 B = A * 234
 X = 2
 X = (12345 - B * X) / (A + B)
Tambien es posible calcular raíces cuadradas (aunque el resultado debe ser entero) con la función SQR:
 DIM A AS WORD
 A = 3600
 A = SQR(A)
Para las variables de tipo BIT existen siete operaciones lógicas disponibles. Estas operaciones también están disponibles para variables tipo WORD o BYTE. Por ejemplo:
 DIM A AS BIT
 DIM B AS BIT
 DIM X AS BIT
 X = NOT A
 X = A AND B
 X = A OR B
 X = A XOR B
 X = A NAND B
 X = A NOR B
 X = A NXOR B
 DIM A AS WORD
 DIM B AS WORD
 A = A OR B
 PORTB = PORTC AND %11110000

CICLOS

IF - THEN - ELSE - ENDIF


Como sabemos, al igual que en otros lenguajes de programación, esta sentencia sirve para tomar alguna decisión durante el flujo del programa.
El caso mas simple para utilizar esta instruccion es:
 IF condición THEN instrucción
"IF" significa "SI....", y "THEN" significa "LUEGO" o "ENTONCES". El caso anterior puede leerse como "SI se cumple la condición, entonces ejecuto la instrucción" La "condición" es una expresión lógica que puede ser verdadera o falsa. En caso de ser verdadera, la instrucción a continuación del THEN será ejecutada. En caso de la condición sea falsa, el programa seguirá su ejecución con la instrucción siguiente al "IF - THEN".

Muchas veces, luego de evaluar la condición necesitamos ejecutar mas de una instrucción. En los ejemplos vistos en el CASO 1 siempre se ejecutaba una sola instrucción cuando la condición era cierta. La manera de ejecutar múltiples sentencias dentro de una estructura IF-THEN implica emplear el ENDIF:
 IF condición THEN
   instrucción 1
   instrucción 2
   ...
   instrucción n
 ENDIF


Otras veces que de acuerdo a la condición, queremos ejecutar un grupo u otro de instrucciones. Para eso, utilizamos el ELSE:
 IF condición THEN
   instrucciónv 1
   instrucciónv 2
   ...
   instrucciónv n
 ELSE
   instrucciónf 1
   instrucciónf 2
   ...
   instrucciónf n
 ENDIF
Es decir, si la condición es verdadera, se ejecutan las sentencias entre THEN y ELSE. Y si la condición es falsa, las que estén entre ELSE y ENDIF. "ELSE" puede ser traducido como "en otro caso" o "si no...".

FOR - TO - STEP - NEXT


Nos permite repetir un proceso una determinada cantidad de veces.
Esta estructura necesita una variable (tipo Byte o Word) para funcionar. En cada iteración del bucle, la variable va cambiando su valor. Cuando el valor de la variable alcanza o supera el valor prefijado, el bucle termina. La forma del bucle es la siguiente:
 FOR variable = valor_inicial TO valor_final STEP paso
  instruccion1
  instruccion2
  ...
  instruccionn
 NEXT variable
De la misma manera que ocurría con IF-THEN-ELSE-ENDIF, pueden anidarse diferentes bucles FOR-TO-STEP-NEXT , uno dentro de otro:
 FOR variable1 = valor_inicial1 TO valor_final1 STEP paso1
  FOR variable2 = valor_inicial2 TO valor_final2 STEP paso2
     instruccion1
     instruccion2
     ...
     instruccionn
  NEXT variable2
 NEXT variable1

WHILE - WEND


Tiene el mismo proposito que la estructura anterior. Su declaracion es:
 WHILE condición 
  instruccion1
  instruccion2
  ...
  instruccionn
 WEND
Mientras que la condición sea verdadera, el grupo de instrucciones dentro del cuerpo del WHILE-WEND se ejecuta. Por supuesto, si no somos cuidadosos al momento de elegir la condición, puede darse el caso de que el numero de repeticiones del bucle sea infinito, y nunca salgamos de el. De hecho, esta circunstancia se aprovecha en algunos programas para repetir indefinidamente un grupo de instrucciones. También hay que tener presente que si la condición no es cierta al momento de ejecutar la primera vez el WHILE, el flujo del programa pasara directamente a la instrucción posterior al WEND y las instrucciones dentro del bucle no se ejecutaran ninguna vez.

LOOKUP


La función LOOKUP puede ser utilizada para seleccionar un Byte desde una lista de constantes del mismo tipo, de acuerdo al valor de un índice (también de tipo Byte). El resultado de la selección se almacena (como no!) también en una variable tipo byte. La forma de la función LOOKUP es la siguiente:
 variable = LOOKUP(byte0, byte1, ..., byteN), indice
Por ejemplo:
 DIM indice AS BYTE
 DIM variable AS BYTE
 indice = 3
 variable = LOOKUP(25, 35, 55, 70, 85, 100), indice
variable tendrá el valor "70" (decimal) al ejecutar este código. El primer elemento de la lista, recordemos, corresponde al valor "0" de indice. Si bien la lista puede contener un máximo de 255 elementos, que es el máximo direccionable por una variable indice de tipo byte, hay que asegurarse que el microcontrolador que estamos empleando tenga memoria suficiente para albergarla.

Cabe mencionar que la version de BASIC utilizada en los microcontroladores es mas sencilla que la utilizada en las versiones de escritorio, si desean saber mas sobre este lenguaje pueden visitar este tutorial:
Tutorial BASIC

Referencias

[MDE Lab] Comparativa Sistemas Operativos Móviles

Imagen tomada de: http://es.engadget.com/2009/03/19/la-gran-comparacion-de-los-sistemas-operativos-moviles/

En la actualidad existe una gran tendencia a incorporar en los dispositivos móviles el poder de los sistemas operativos, y esto no es de sorprendernos ya que cada vez vemos dispositivos mas poderosos que necesitan de ellos para gestionar la gran cantidad de funciones incorporadas y procesar todos sus datos.

Un sistema operativo móvil es mas simple y orientado a realizar otras funciones. Por lo general necesita de mucho middleware que le ayuda a realizar las funciones básicas para el cual fue creado (como las funciones de telefonía). Comparemos algunos de los sistemas operativos móviles mas influyentes y algunas de sus características.

Android




Para las personas que buscan toda una experiencia de comunicación y entretenimiento, Android es la opción correcta. Desarrollado por Google y Open Handset Alliance, es un sistema operativo que trabaja en una plataforma de código abierto, usa un kernel Linux, con una mezcla especial de Java. . Esto da libertad al desarrollador, el fabricante y al usuario para personalizar el teléfono de acuerdo a sus gustos y necesidades. Actualmente es el sistema operativo con mayor crecimiento en el mundo y uno de los más importantes debido a su estabilidad, funcionalidad y fácil uso.

Además, puedes encontrar miles de canciones y aplicaciones en Android Market, además de tener acceso a correo electrónico, redes sociales (Facebook, Twitter, Myspace, etc.), chats (Google Talk, MSN Messenger, etc.), mapas (Google Maps y otros) y muchas cosas más.

Interfaz




La nueva interfaz de Android se llama Roboto, y sera incluida en la versión 4.0. Entre las caracteristicas incluidas se encuentra:
  • Versión que unifica el uso en cualquier dispositivo, tanto en teléfonos, tablets, televisores, netbooks, etc
  • Interfaz mas limpia y moderna con una nueva fuente también llamada "Roboto"
  • Opción de utilizar los botones virtuales en la interfaz de usuario, en lugar de los botones táctiles capacitivos
  • Aceleración por hardware, lo que significa que la interfaz podrá ser manejada y dibujada por la GPU y aumentando notablemente su rapidez, su respuesta y evidentemente, la experiencia de usuario
  • Las notificaciones tiene la posibilidad de descartar las que no son importantes y también desplegar la barra de notificaciones con el dispositivo bloqueado
  • La captura de pantalla, con solo pulsando el botón de bajar volumen y el botón de encendido
  • Android Beam es la nueva característica que nos permitirá compartir contenido entre teléfonos. Via NFC (Near Field Communication)
  • Reconocimiento de voz del usuario
  • Reconocimiento facial, lo que haría que puedas cambiar la vista
  • Las carpetas son mucho más fáciles de crear, con un estilo de arrastrar y soltar
  • Soporte nativo para el uso de Stylus (lápiz táctil)

Pros


Open Source, que es en definitiva la mayor ventaja tanto para los que desarrollan sus aplicaciones como para sus usuarios. Puedes personalizar tu teléfono al máximo y modificar funciones del teléfono simplemente instalando una aplicación.
Otro tanto a favor de Android es la confianza que está recibiendo de los fabricantes. Gracias a ello, la oferta de teléfonos con Android es amplia y la oferta es variada tanto en marcas como en precios.

Contras


Uno de los aspectos negativos de Android es su fragmentación: aunque va mejorando, actualizar el sistema operativo a nuevas versiones no es tan sencillo como con un iPhone. También comparando con iPhone, la cantidad de juegos disponible para Android es menor. Esto se espera resolverlo con la salida de Ice Cream Sandwich.

Windows Phone




Para las personas que buscan una oficina móvil además de todas las herramientas que brinda Microsoft Windows (Office, MSN Messenger, etc.), Windows Mobile es la opción correcta. El sistema operativo desarrollado por Microsoft, es la adecuación de la conocida plataforma Windows, utilizada en la mayoría de las PCs alrededor del mundo. En su versión móvil se encuentran la mayoría de las aplicaciones ya conocidas como la “barra de inicio” y la “barra de tareas”, además de programas de productividad como Outlook, Microsoft Office, y de entretenimiento como MSN Messenger, o Windows Media Player.

Ha sido la única compañía en dar a conocer una lista de los requerimientos mínimos necesarios para hacer funcionar su sistema de manera óptima:
  • Pantalla capacitiva, 4 puntos multitouch pantalla con resolución WVGA (800x480)
  • 800 MHz o Mejor ARM v7 "Cortex/Scorpion" - Soportados Snapdragon QSD8X50, MSM7X30, y MSM8X55
  • DirectX 9 rendering-capable GPU
  • 256MB de RAM con al menos 8GB de memoria Flash
  • Acelerómetro con brújula, sensor de luz, sensor de proximidad y A-GPS
  • FM radio
  • 6 botones de hardware dedicados - Volver, Inicio, buscar, cámara, ON/OFF y Volumen Arriba y Abajo.


Interfaz




Metro es el nombre del sistema de diseño de las interfaces de Windows Phone. El nombre es debido a que utiliza el mismo lenguaje visual que aparece en aeropuertos y en la señalización de las redes de metro. La meta de utilizar Metro es facilitar que los usuarios lleguen al contenido que deseen gracias al uso de una tipografía conocida por medio de un diseño simple y claro logrando una experiencia de usuario fluida.
Cabe mencionar que la interfaz gráfica de Windows Phone 7 es bastante diferente a cualquier otra vista anteriormente.

Los menús y la interfaz tienen animaciones fluidas y un tipo de letra limpia.

La pantalla de inicio es muy rápido y está muy lejos, por mucho, de la pantalla de inicio antiguo Windows Mobile. Baldosas grandes y coloridas sirven como accesos directos a tus aplicaciones más usadas o sitios web. También puede colocar las baldosas en vivo en la pantalla con enlaces a su perfil de Facebook o amigos, estas baldosas en vivo cambian la imagen o animación si el contenido de la aplicación o el sitio se actualiza.

Interfaz "toque y arrastre", fácilmente podemos movernos en cualquier orden que deseemos. Al deslizar la derecha te lleva a una lista de todas sus aplicaciones. Si deseas mover una de sus aplicaciones a la pantalla de inicio rápido, simplemente presionala y deja así por un momento y en el menú seleccionar "añadir a inicio rápido". Cuando estás en una aplicación, verás una fila de otras opciones de menú en la parte superior de la pantalla. Si desea volver al menú anterior, sólo tiene que pulsar la tecla de la flecha en la parte superior de la interfaz.

Pros


Un diseño moderno, práctico, atractivo y con características innovadoras han sorprendido ya a más de uno. Windows Phone cuenta con una gran inversión y se ha diseñado para competir con los más grandes: el resultado es un sistema moderno y capaz.

Contras


La variedad de móviles con Windows Phone no es tan amplia como la que ofrecen Android o Symbian, aunque está en crecimiento.

Por otra parte, al llegar algo más tarde a la primera división del firmamento móvil, la cantidad de aplicaciones disponibles en estos momentos es baja, aunque están facilitando el trabajo a los desarrolladores para llenar el hueco rápidamente.

iOS




Desarrollado por la compañia Apple, esta incluido en la mayoría de sus dispositivos (iPhones, iPods y Tabletas). El iPhone se basa en OS X, que a su vez es una variante de Unix, uno de los sistemas operativos más poderosos en el mundo de la informática.

Es el sistema operativo de los iPhone. Ha demostrado ser un excelente producto pero limitado única y exclusivamente a los terminales producidos por Apple lo que limita su crecimiento en el mercado y obliga al consumidor a depender de un solo fabricante.

Interfaz




El nombre de la interfaz es Cocoa Touch. Se trata de un API para la creación de programas para el iPad, iPhone y iPod Touch de la compañía Apple Inc. Cocoa Touch proporciona una capa de abstracción al sistema operativo iOS.
Cocoa Touch se basa en el set de herramientas que proporciona el API de Cocoa para crear programas sobre la plataforma Mac OS X.
Herramientas para desarrollar aplicaciones basadas en Cocoa Touch se incluyen en el SDK de iOS.

La interfaz de usuario de iOS está basada en el concepto de manipulación directa, usando gestos multitáctiles. Los elementos de control consisten de deslizadores, interruptores y botones. La respuesta a las órdenes del usuario es inmediata y provee de una interfaz fluida. La interacción con el sistema operativo incluye gestos como deslices, toques, pellizcos, los cuales tienen definiciones diferentes dependiendo del contexto de la interfaz. Se utilizan acelerometros internos para hacer que algunas aplicaciones respondan a sacudir el dispositivo (por ejemplo, para el comando deshacer) o rotarlo en tres dimensiones (un resultado común es cambiar de modo vertical al apaisado o horizontal).

Pros


Buen diseño, funcionalidad, facilidad de uso y una variedad de aplicaciones y juegos enorme lo convierten en un referente. Si has tenido un iPhone, te costará cambiar.
Su perfecta integración con servicios en la nube y equipos de sobremesa, especialmente Mac, es otro de sus puntos fuertes. Tu correo, tus redes sociales... podrás estar siempre conectado.

Contras


El sistema de Apple es cerrado, lo que quiere decir menos posibilidades de cambiar la forma de funcionar del teléfono y un control más rígido de las aplicaciones publicadas. Además, si quieres disfrutar de un iPhone, sólo te queda desembolsar un precio bastante alto puesto que sólo hay un fabricante y un modelo.

Symbian




Symbian es un sistema operativo que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Ericsson, Psion, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION.
El 24 de junio de 2008, Nokia decidió comprar Symbian, adquiriendo el 52% restante de las acciones de la compañía, tras un acuerdo con el resto de socios. El objetivo era establecer la Fundación Symbian y convertir este sistema operativo en una plataforma abierta.

Symbian OS está hecho para las personas que buscan un sistema operativo intuitivo y estable, además de reproductor multimedia, cámara fotográfica, video y música. El sistema operativo también trabaja en una plataforma de código abierto y lo desarrolla Symbian Foundation desde hace poco menos de 10 años. Ahora se puede disfrutar de stream de música, bajar aplicaciones, revisar correo electrónico y mucho más.

Interfaz




Symbian Belle es el nombre de la nueva version e interfaz Symbian, Una de las tantas mejoras que trae Symbian Belle es el poder utilizar las aplicaciones para la función NFC que los equipos ya traían pero que no funcionaban. Además cuenta con nuevos widgets y la posibilidad de personalizar mucho más el equipo.

Otro detalle de Symbian Belle es que permite personalizar los widgets al tamaño y la función que necesitemos para tener a la vista todo lo que más usemos, además de darlos la posibilidad de trabajar con hasta 6 pantallas de inicio -recuerden que hasta Symbian Anna sólo se podía tener hasta 3-. También tiene una gran similitud con Android, en el sentido de que permite ver las un tab de notificaciones con configuraciones y notificaciones de mensajes nuevos, llamadas perdidas y demás, que se pueden ver también con una pantalla bloqueada; y se ha mejorado la función multitasking.

Obviamente como no podía ser de otra manera, incorpora todo un set de aplicaciones de Microsoft, como Lync, Sharepoint, One Note, Exchange ActiveSync y PowerPoint Broadcaster.

Pros


Symbian ha sido siempre fiable e innovador. Con fuerte énfasis en las funciones básicas de telefonía y multimedia de sus dispositivos, también cuenta con un amplio mercado de aplicaciones externas y con una tremenda variedad de dispositivos disponibles.
Se trata de una excelente opción para conseguir terminales de gama media y baja, gracias a su fiabilidad, una cantidad razonable de buenas aplicaciones, posibilidades multimedia y al precio asequible de muchos de sus modelos.

Contras


Symbian ha perdido protagonismo con la llegada de iPhone y Android, sobre todo en los smartphones punteros. Hay muchas y muy buenas aplicaciones para Symbian, pero no se puede comparar con la cantidad de oferta de nuevas aplicaciones de la competencia.

BlackberryOS




Blackberry tuvo un duro 2011, debido a que estaba orientado mas al mundo de los negocios, sin embargo, estas personas comenzaron a irse con otros fabricantes causando una baja significativa en las ventas de la compañias.

Actualmente Blackberry ha estado modificando su vision y actualmente, los modelos de Blackberry cuentan con todo lo que se puede esperar de un móvil moderno, no sólo para el trabajo, sino también para uso personal.

RIM usa un kernel propio, que al igual que Android, tiene un motor Java, y aunque han mejorado la interfaz notablemente, suele mostrar algunas limitaciones propias de su edad.

Interfaz




El sistema operativo mas nuevo de esta compañía se llama BlackBerry 7 e incluye varias características y servicios nuevos muy interesantes, así como algunas mejoras en las características existentes.

Se puede utilizar la voz para buscar ayuda, contactos, documentos, imágenes, vídeos y mucho más en su smartphone BlackBerry y en Internet. Para obtener más información, consulte Buscar un elemento utilizando la función de búsqueda por voz.

Personalización de la pantalla de inicio, aún más ocultando los paneles que no utiliza con frecuencia, y ocultando los iconos en paneles específicos o en todos los paneles. Para obtener más información, consulte Mostrar u ocultar un panel de la pantalla de inicio y Mostrar, ocultar o encontrar el icono de una aplicación.

Mejoras en la galería de imagen, cuando gira imágenes en formato JPEG y PNG, éstas se guardan automáticamente en la vista girada.
Ordene las imágenes de la más nueva a la más antigua, o de la más antigua a la más nueva, para ver una presentación de diapositivas en el orden en que se tomaron las imágenes.
Ahora puede ver las imágenes en una presentación de diapositivas mediante transiciones como el deslizamiento, el zoom o la panorámica. Para obtener más información, consulte Cambiar las opciones de presentación de diapositivas.

Pros


Perfecto para el uso de correo electrónico, Blackberry destaca también por los aspectos de seguridad y por sus teclados QWERTY que, al estilo de un teclado de PC, permiten una escritura muy rápida.

Contras


No se puede comparar su tienda de aplicaciones con las de Android o iTunes.
Tampoco existen tantas posibilidades de elección en cuanto a dispositivos y el potencial multimedia no es su fuerte principal.

Estadísticas


Antes de que aparecieran los sistemas operativos móviles como tales, la mayoría de las compañías tenían sus propias versiones de software embebido, la mayoría basado en Java MIPS; poco a poco estos sistemas han comenzado a verse desplazados y casi han desaparecido por completo y se pueden ver solo en aquellos dispositivos de años anteriores y que hasta la fecha siguen funcionando. En la siguiente gráfica se observa la cuota de mercado, el gran vencedor es Android gracias al gran alcance que este tiene por estar presente en los dispositivos de la mayoría de las compañías de telefonía.



Referencias

domingo, 19 de febrero de 2012

[Emb Comp Lab] Microcontroladores

Un microcontrolador (abreviado μC,UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres unidades funcionales principales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada y salida.

Al ser fabricados, la EEPROM del microcontrolador no posee datos. Para que pueda controlar algún proceso es necesario generar o crear y luego grabar en la EEPROM del microcontrolador algún programa, el cual puede ser escrito en lenguaje ensamblador u otro lenguaje para microcontroladores; sin embargo, para que el programa pueda ser grabado en la EEPROM del microcontrolador, debe ser codificado en sistema numérico hexadecimal que es finalmente el sistema que hace trabajar al microcontrolador cuando éste es alimentado con el voltaje adecuado y asociado a dispositivos analógicos y discretos para su funcionamiento.1

Microcontrolador



Componentes

  • Unidad de Procesamiento Central (CPU): Típicamente de 8 bits, pero también las hay de 4, 32 y hasta 64 bits con arquitectura Harvard, con memoria/bus de datos separada de la memoria/bus de instrucciones de programa, o arquitectura de Von Neumann, también llamada arquitectura Princeton , con memoria/bus de datos y memoria/bus de programa compartidas.
  • Memoria de Programa: Es una memoria ROM (Read- Only Memory), EPROM(Electrically Programable ROM), EEPROM (Electrically Erasable/Programable ROM) o Flash que almacena el código del programa que típicamente puede ser de 1 kilobyte a varios megabytes.
  • Memoria de Datos: Es una memoria RAM ( Random Access Memory)que típicamente puede ser de 1, 2, 4, 8, 16, 32 kilobytes.
  • Generador del Reloj: Usualmente un cristal de cuarzo de frecuencias que genera una señal oscilatoria de entre 1 a 40MHz, o también resonadores o circuitos RC.
  • Interfaz de Entrada/Salida: Puertos paralelos, seriales (UARTs, Universal Asynchronous Receiver/Transmitter), I2C(Inter- Integrated Circuit), Interfaces de Periféricos Seriales (SPIs, Serial Peripheral Interfaces), Red de Área de Controladores (CAN, Controller Área Network ), USB ( Universal Serial Bus).
  • Conversores Análogo-Digitales (A/D, analog - t o- digital ): para convertir un nivel de voltaje en un cierto pin a un valor digital manipulable por el programa del microcontrolador.
  • Moduladores por Ancho de Pulso (PWM,Pulse - Width Modulation): para generar ondas cuadradas de frecuencia fija pero con ancho de pulso modificable.


Características

  1. La arquitectura del procesador sigue el modelo Harvard.
  2. Se aplica la técnica de segmentación ("pipe-line") en la ejecución de las instrucciones.
  3. El formato de todas las instrucciones tiene la misma longitud.
  4. Procesador RISC (Computador de Juego de Instrucciones Reducido).
  5. Todas las instrucciones son ortogonales.
  6. Arquitectura basada en un banco de registros.
  7. Prácticamente todos los PIC se caracterizan por poseer unos mismos recursos mínimos.
  8. Modelos de arquitectura cerrada y de arquitectura abierta.
  9. Diversidad de modelos de microcontroladores.
  10. Amplio margen de alimentación y corrientes de salida elevadas.
  11. Herramientas de soporte potentes y económicas.


Arquitecturas


Hay dos arquitecturas conocidas; la clásica de von Neumann, y la arquitectura Harvard, veamos como son...

Arquitectura Von Neumann: Dispone de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control).



Arquitectura Harvard: Dispone de dos memorias independientes, una que contiene sólo instrucciones, y otra que contiene sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias, ésta es la estructura para los PIC's.



Tipos de Microcontroladores



No existe una verdadera clasificación de Microcontroladores, debido a que cada vez aparecen microcontroladores adaptados a cierto tipo de situaciones, sin embargo, podemos agruparlo según ciertas características:

Familia de productos
  • PIC10
  • PIC12
  • PIC14
  • PIC16
  • PIC17
  • PIC18


Tipo de memoria
  • FLASH
  • OTP
  • ROM
  • EEPROM


Número de I/O
  • 4 - 17 patillas
  • 18 - 27 patillas
  • 28 - 44 patillas
  • 45 - 80 patillas


Tamaño de memoria (bytes)
  • 0.5K - 1K
  • 2K - 4K
  • 8K - 16K
  • 24K -32K
  • 48K - 64K
  • 96K - 128K


En la clasificación por familias, las principales diferencias radican en el número de instrucciones y su longitud, el número de puertos y funciones, lo cual se refleja en el encapsulado, la complejidad interna y de programación, y en el número de aplicaciones.

Proceso de desarrollo en un microcontrolador


Consiste en 3 etapas principalmente:

1. Desarrollo del software


En esta etapa consiste en escribir y compilar/ensamblar el programa que determinara las acciones del Microcontrolador y su funcionamiento.
Existen distintas maneras de desarrollar el programa, dependiendo del lenguaje inicial que se utiliza para escribir el programa:
  • Lenguaje Assembly -> Lenguaje de Maquina/Código/Objeto
  • [(.asm) -> ensamblador -> (.hex, .o, .bin, .coff )]
  • Lenguaje de Alto Nivel -> Lenguaje Assembly -> Lenguaje de Maquina/Código/Objeto
  • [(.c, .cpp) -> compilador -> (.asm) -> ensamblador -> (.hex, .o, .bin, .coff )]




2. Programación del Microcontrolador


Este proceso corresponde a utilizar un programa en el PC que toma el código ensamblado (.hex, .o, .bin, .coff )para el microcontrolador específico, y lo envía mediante algún puerto (serial, paralelo, USB, etc.) a un dispositivo que lo escribe en la memoria del microcontrolador.
Se acostumbra denominar programador tanto al software como al hardware involucrado para este propósito, lo cual puede prestarse a confusión. El software programador a veces recibe también el nombre de downloader, ya que su propósito es descargar o transferir desde el PC al microcontrolador el código ensamblado.



3. Pruebas y verificación


Una vez programado el microcontrolador, se puede instalar en el circuito final para comprobar su adecuado funcionamiento.
Existen herramientas de software que permiten simular el comportamiento de un microcontrolador, muy útiles cuando el programa alcanza cierta complejidad.
Para resolver problemas en un circuito real, el instrumento mas utilizado es el analizador lógico.



Esto es todo para la entrada, me sirvió bastante para entender la arquitectura de los microcontroladores, sin embargo, esto es un resumen de lo que pude leer, les comparto las referencias donde se habla mas ampliamente de los conceptos. Saludos.

Referencias