martes, 24 de abril de 2012

Memorias microcontroladores

Existen diferentes tipos de memorias para microcontroladores con sus diferentes funcionalidades.



Memorias EEPROM:


Esta memoria es comun para los microprosesadores pic, este es un programa de solo lectura, programable de manera electronicamente.
Estos tipos de micro-controladores tienen la cualidad de que permite el almacenamiento y una sobre escritura de datos por medio de diferentes tipos de voltajes de  los circuitos digitales.

Diferencia en las memorias:
Existen dos diferentes de series.
Las series 24LCXX que utilizan una comunicación serial de dos hilos.
Las series 93LCXX que corresponde a una comunicación serial de tres hilos.
Cada una de estas memorias utiliza protocolos de comunicación serial que depende de la acción que se ejecutara.

Principales Características:

1-. Se pueden conectar de manera eficiente y fácil con los microprocesadores 
Ahorro de memoria.

2-. En estas memorias si son de manera serial se han reducido considerablemente gracias la reducción considerable de los pines, ya que los pines pueden servir como entrada y salida de datos.

3-. El consumo de energía es mucho menor que memorias  en paralelo.

Memorias FLASH:




Esta tambien es muy comun tambien en los microprocesadores pic, este tipo de memoria tiene las mismas características que las memorias EEPROM pero con la gran diferencia que consumen menos energia y tienen mejor tamaño de almacenaje


Se trata de una memoria no volátil, de bajo consumo que se puede borrar y escribir o sobre escribir. 
Esta tipos de memorias tienen el mismo funcionamiento como una memoria ROM como una memoria RAM


Estas memorias son utiles para cuando se necesiten re-programación en el mismo circuito donde se encuentre instalado, sin necesidad de sacar la memoria.

Memoria Sram:



Estas tipos de memorias son de manera aleatoria esto quiere decir que la manera para leer esta tipos de memorias y al igual que escritas puede ser de diferentes maneras o formas.
Estas memorias son realmente caras en comparaciones a las anteriores pero con la gran diferencia que son sumamente rápidas


Reposo : Su bus de control esta desactivado.

Lectura :  El ciclo de lectura comienza cargando los buses de datos y con los transistores

Escritura : En el caso de la escritura se inicia de manera aleatorisada cargandolo todo a los diferentes buses de datos

Capacidad de memorias generales en el arduino:



Memoria: flash: 32 kb                                
Memoria: SRAM: 2 kb

Memoria: EEPROM: 1 kb

jueves, 19 de abril de 2012

Lenguajes de alto y bajo nivel

Que es un lenguaje de programación?Un lenguaje de programación, es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML

Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.

El ordenador sólo entiende un lenguaje conocido como código binario o código máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para codificar cualquier acción.

Los lenguajes más próximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran más cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.

¿Qué es un lenguaje de alto nivel?

Un lenguaje de alto nivel permite al programador escribir las instrucciones de un programautilizando palabras o expresiones sintácticas muy similares al inglés. Por ejemplo, en C se pueden usar palabras tales como: case, if, for, while, etc.

Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan al lenguaje natural. Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros:

Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador, que lo suministra el fabricante, para obtener el programa ejecutable en lenguaje binario de la máquina que se trate. Además, no se necesita conocer el hardware específico de dicha máquina.

Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en inglés) en lugar de cadenas de símbolos sin ningún significado aparente.

Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, manejo de tablas, etc, que figuran en una especie de librería del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez.

Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos

Variantes
  •  Genera un código más sencillo y comprensible.
  •  Escribir un código válido para diversas máquinas y, posiblemente, sistemas operativos.
  •  Reducción de velocidad al ceder el trabajo de bajo nivel a la máquina.
  •  Algunos requieren que la máquina cliente posea una determinada plataforma.


Lenguajes de bajo nivel.

Un lenguaje de programación de bajo nivel de abstracción es el que proporciona un conjunto de instrucciones aritmeticológicas sin la capacidad de encapsular dichas instrucciones en funciones que no estén ya contempladas en la arquitectura del hardware. Tambien permite al programadorescribir instrucciones de un programa usando abreviaturas del inglés, también llamadas palabras nemotécnicas, tales como: ADD, DIV, SUB, etc. Un programa escrito en un lenguaje ensamblador tiene el inconveniente de que no es comprensible para la computadora, ya que, no está compuesto por ceros y unos. Para traducir las instrucciones de un programa escrito en un lenguaje ensamblador a instrucciones de un lenguaje máquina hay que utilizar un programa llamado ensamblador.

Variantes.

En este tipo de lenguajes se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle, además, está completamente orientado a la máquina.
  •  Adaptación - Máxima entre programación y aprovechamiento del recurso de la máquina.
  •  Velocidad - Máxima al contar con un acceso directo a los recursos, sin capas intermedias.
  •  Portabilidad - Mínima por estar restringido a las especificaciones del fabricante.
  •  Abstracción - Mínima por depender completamente de la técnica del hardware.
  •  Uso - Requiere de la máxima atención y de una organización estructurada en base a los planos del hardware y del objetivo del software.

Lenguajes de Medio nivel
Se trata de un termino no aceptado por todos, pero q seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.

Generaciones

La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones.
• Primera generación: lenguaje maquina.

• Segunda generación: se crearon los primeros lenguajes ensambladores.

• Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol…

• Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes….

• Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP

Bibliografias:
http://www.todo-programacion.com.ar/archives/2005/04/lenguajes_de_al.html
http://es.wikipedia.org/wiki/Lenguaje_de_bajo_nivel
http://www.carlospes.com/minidiccionario/lenguaje_de_bajo_nivel.php
http://www.desarrolloweb.com/articulos/2358.php

Arduinos


El Arduino es un proyecto libre, que brinda una plataforma de hardware programable muy sencilla y flexible. El entorno de desarrollo se puede descargar gratuítamente, y el hardware se puede montar a mano o bien comprarlo preensamblado, tanto de los creadores del sistema, llamado Arduino, o esambladores secundarios como puede ser el Roboduino, un poco más económico aunque igual de funcional.

Caracteristicas:

Cuenta con un pequeño procesador de 16MHz (Atmega, dependiendo del modelo usan distintas versiones como son el Atmega8, Atmega168, Atmega 328 y Atmega1280, que se diferencian entre si en el tamaño de la memoria Flash, Sram y EEPROM, y en el caso de 1280 en el número de salidas que puede controlar), y los modelos más comunes gestionan 14 patillas de entrada y salida digital, 6 de las cuales son capaces de proveer PWM, y 8 patillas analógicas.

En cuanto a alimentación, las versiones USB se pueden alimentar tanto por este puerto como a través de una fuente alternativa de entre 7 y 12v (6v mínimo y 20v máximo recomendados). Esto lo hace perfecto para poder alimentarlo desde el PC, usándolo a la vez que programamos, escribimos en Twitter o jugamos en Partypoker.

El uso más común del Arduino es el diseño de pequeños modelos robóticos. A parte de para trabajar con robots, el Arduino puede servir para casi de todo, el único límite es nuestra imaginación.

Como ya he comentado hay distintas versiones, que se diferencian entre sí tanto el tipo de conexión (serial o USB), en el tamaño o en las características técnicas. En la web de Arduino tenéis las especificaciones de cada uno de los modelos. Para programar el Arduino se utiliza un lenguaje basado en C y posee muchas instrucciones propias y una amplia variedad de librerías que nos harán el trabajo de programación mucho más fácil.

Aplicaciones.
Entre las aplicaciones, debido a las posibilidades que presentan sus entradas, nos permite utilizar una gran variedad de sensores, como se ha dicho.
  • Control de un relé.
  • Un conmutador.
  • Leer la posición de un potenciómetro.
  • Control de un servo.
  • Motor DC.

Tipos de Arduino.

Bien, lo primero que se debería hacer antes de nada es responder a estas 3 preguntas que agilizarán bastante la elección de una u otra placa:

1.- ¿Qué tamaño tendrán los proyectos que quiero hacer con Arduino?¿Qué me interesa más el espacio o las prestaciones?

2.- ¿Dispongo de un programador de micros o quiero que tanto la alimentación como la programación se pueda hacer con la propia placa?

3.- ¿El Arduino va a interactuar sólo con su propia circuitería o se tendrá que comunicar con más placas u otros dispositivos (móviles, pda's, receptores, etc.)

Conscientes de que cada vez salen a la luz nuevos tipos con nuevas funcionalidades, nos vamos a centrar en los modelos principales más extendidos.

De mayor a menor:

Arduino Mega

 
La Mega es compatible con la mayoría de losescudos diseñados para el Arduino Duemilanoveo Diecimila.

Características

  • Microcontroladores Atmega2560
  • Voltaje de Operación 5V
  • Voltaje de Entrada (recomendado) 7-12V
  • Voltaje de Entrada (límites) 6-20V
  • Digital pines I / O 54 (de los cuales 14proporcionan una salida PWM)
  • Pines de entrada analógica 16
  • Corriente de I / S de CC Pin 40 mA
  • De corriente continua de 3.3V Pin 50 mA
  • Memoria Flash de 256 KB de los cuales 8 KButilizadas por gestor de arranque
  • 8 KB de SRAM

Arduino Diecimila/Duemilanove

El Arduino Uno es una placa electronica basadaen el ATmega328. Cuenta con 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM), 6 entradas analógicas, un oscilador de cristal de 16 MHz, una conexión USB, un conector de alimentación, una cabecera de ICSP, y un botón de reinicio.Contiene todo lo necesario para apoyar a la micro,sólo tiene que conectarlo a un ordenador con un cable USB o el poder con un adaptador AC-DC o la batería para empezar.

Arduino Pro 

Ésta es la versión reducida de la placa Arduino ensamblada con componentes de superficie y quitando algunas partes para mejorar la robustez y la calidad del diseño final.

Características:

  • Microcontrolador ATmega328 con cristal de 16MHz.
  • Pines laterales de conexión del UART
  • Regulador 5V incorporado
  • Protegido contra inversión de polaridad
  • Alimentación: DC de 5V a 12V
  • Protección en caso de cortocircuito
  • Conmutador de ON/OFF

Arduino Nano 


El Arduino Nano 3.0 es una versión de montaje en superficie protoboard compatible con el controlador de la siempre popular Arduino Micro.Es pequeño, tiene USB integrado, y es fácilprotoboard. Tiene más o menos la misma funcionalidad de la Arduino Duemilanove, pero enun paquete diferente. Físicamente, le falta la toma de poder, pero aún así puede sentir y cambiar a lafuente de mayor potencial de la energía. Es perfecto para integrarse en su próximo proyecto.



Características
  • El rearme automático durante la descarga del programa
  • Power OK LED azul
  • Green (TX), rojo (RX) y naranja (L) LED
  • Auto detección / conmutación de potencia de entrada
  • Pequeño USB mini-B para la programación y de serie del monitor
  • ICSP cabecera para su descarga directa de programas
  • Estándar 0.1 "DIP espaciamiento (protoboardamigable)
  • Interruptor de ajuste manual
  • EEPROM de 4 KB
  • Velocidad del reloj de 16 MHz.

Arduino Mini 
El MiniArduino es una placa de pequeño microcontrolador basado en el ATmega168,destinado a circular por paneras y cuando el espacio es muy reducido. Usted puede conectar a una placa o ponerlo en un zócalo soldado en placa de prototipado. Al igual que las placas Arduino de tamaño completo, esto funciona a 16MHz, y susofertas de espacio ATMega168 programa dos veces tanto como el ATmega8 en los tablones deedad (16KB 8KB vs).


Características
  • 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM)
  • 8 entradas analógicas
  • Oscilador de cristal 16MHz
  • 16KB de memoria flash
  • 1 KB de SRAM
  • 512K de EEPROM
  • Se puede programar con el adaptador de Mini USB, o de otro tipo USB o RS232 con adaptador de serie TTL.
Bibliografias:
http://www.pulsaf5.com/que-es-un-arduino/
http://www.hispavila.com/3ds/atmega/introduino.html
http://es.makezine.com/archive/2009/08/tipos_caractersticas_y_diferencias_de_pl.html

miércoles, 18 de abril de 2012

Usando ISIS Proteus

Proteus

En esta ocación  se moostrara el uso de la IDE de proteus para simulacion de diferentes tipos de proyectos electronicos con diferentes tipos de componentes.


Posteriormente que tenemos instalado el programa nos mostrara la siguiente


Esta es la interfaz del proteus
En la barra lateral izquierda nos muestra todas las herramientas que cuenta este programa
En el primer cuadro de esa barra es puntero típico con el que podremos mover los diferentes tipos de componentes. EL siguiente símbolo de abajo con respecto a este, es donde agregamos los componentes, solo se da un click y aparece al lado de esa barra otra, en donde tiene en nombre de devices, en donde se agregaran los diferentes tipos de componentes ya sean micro-controladores o componentes digitales.


En la imagen le damos click en la "P" para agregar los componentes y continuamos con lo siguiente:


En esta parte cuando elegimos el componente electronico lo mas facil para busar el componente deseado es buscarlo desde el campo keywords para poder reducir poco a poco la busqueda que necesitamos y en la ventana grande como se muestra en la pantalla se despliega los diferentes dispositivos que se encuentra con esa palabra, en  este caso se busco un pic y en la barra lateral derecha se muestra como se desplegaria en la interfaz con el dinujo de arrbia y en el de abajo nos muestra las dimensiones reales del dispositivo y su forma verdadera. Ya solo se seleeciona y se agrega a la interfaz.








Posteriormente agregado el dispositivo o los dispositivos es necesario agregar las diferentes entradas de voltaje o tierra, esto se agrega desde la barra lateral izquierda ya antes mencionada con dos flechas en diferentes direcciones y agregamos la tierra y el voltaje a la interfaz y unimos todos los componentes respectivamente.





Para poder correr la simulacion solo se da un click y en caso de agregar pic solo se da un clic ensima de el y se agrega el programa.

     


Y esto es lo que nos genera el isis de proteus :)












lunes, 16 de abril de 2012

Proyecto Pic

Idea principal:


Controlador de semáforos


Contara con los colores convencionales rojo. verde, y amarillo


Explicación:

Estados del semáforo

I-. Verde:
1-. Se podrá oprimir el botón para simular la llegada de los diferentes personas que cruzaran.


II-. Amarillo
1-. En amarillo se anulara el incremento de personas, aunque se presione el botón no se incrementara el numero de personas

III-. rojo
1-. Se disminuirá el contador de personas actualmente, en caso de que no alcanse a pasar todas las personas, en el siguiente estado "verde" se incrementaran el numero de gentes a partir de los que no alcanzaron esperando.


Componentes:
1-.  Cuatro leds
2-. Push button
3-. Display catodo comun
4-. 11 resistencias
5-. Pic16f628a







Diagrama electronico //creado en proteus





Herramientas utilisadas:

MicroCode
ISIS
MicroPro

Codigo:
  Prueba: