viernes, 4 de mayo de 2012

Programando algo base en pic!

En esta entrada mostrare un programa sencillo para programar pic.


Para esto utilize el pic 16F628A (18 pines) es el siguiente:


Como había mencionado en una entrada anterior sobre la arquitectura de los pics cada patita tiene una función especifica, pueden ser de entrada y/o salida, entre otras funciones. Ademas de que en la entrada anterior escribi algunas caracteristicas referentes a este pic.

Para programar el pic utilice:

  • mikroBasic
  • Pic 16F628a
  • protoboard
  • cables para conexiones y Leds
  • Programador de Puerto serial
  • Ic-Prog 




Para llevar la programacion primero utilice un codigo sencillo en mikrobasic que es el siguiente:

En este codigo se programan todos los puertos A y los puertos B como salidas y se les da un tiempo de espera de 1 segundo. Una vez construido el programa seleccionamos la opcion Build lo que nos generara el codigo .hex , con esto pasamos al Ic-prog para ahora si programar nuestro Pic.

Una vez programado conectamos nuestro pic al protoboard y colocamos el Led en cualquier patita. El led debe prender asi como se muestra:



En este Link se puede encontrar el Ic-prog asi como su driver para utilizarlo en Windows XP







lunes, 30 de abril de 2012

Shield Ethernet



En esta entrada hablare sobre el Shield de Ethernet para Arduino

Este shield permite a una placa Arduino conectarse a internet. 
Esta basada en el chip ethernet Wiznet W5100 (datasheet). El Wiznet W5100 provee de una pila de red IP capaz de TCP y UDP. Soporta hasta cuatro conexiones de sockets simultaneas. Usa la libreri­a Ethernet para escribir programas que se conecten a internet usando la shield.


El ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y apilarlas sobre la placa Arduino.


La shield provee un conectore ethernet estandar RJ45, El boton de reset en la shield resetea ambos, el W5100 y la placa Arduino.


La shield contiene un numero de 

  • LEDs para información:
  • PWR: indica que la placa y la shield están alimentadas
  • LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos
  • FULLD: indica que la conexión de red es full duplex
  • 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)
  • RX: parpadea cuando la shield recibe datos
  • TX: parpadea cuando la shield envi­a datos
  • COLL: parpadea cuando se detectan colisiones en la red

Shield Ethernet con placa Arduino

Aqui dejo un video de un tutorial de como conectar el arduino a Internet



Referencias

domingo, 29 de abril de 2012

Memoria en PIC y Arduino


Los microcontroladores PIC tienen una serie de registros que funcionan como una RAM de propósito general
que esta destinada a guardar las variables y los datos.
Otra parte de la memoria es de tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación.

Existen una gran cantidad de micro-controladores diferentes por lo tanto la aplicación y utilización de los mismos es diferente.




Ya que el microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control, Existen varios tipos de memoria:


  • ROM con máscara: se graba mediante el uso de máscaras. Sólo es recomendable para series muy grandes debido a su elevado coste. Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip.
  • OTP: El microcontrolador contiene una memoria no volátil de sólo lectura "programable una sola vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger el código contenido.
  • EPROM:  Erasable Programmable Read-Only Memory
    se graba eléctricamente con un programador controlador por un PC. Disponen de una ventana en la parte superior para someterla a luz ultravioleta, lo que permite su borrado. Puede usarse en fase de diseño, aunque su coste unitario es elevado.
    Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material plástico. Hoy día se utilizan poco, siendo sustituidas por memorias EEPROM o Flash.
  • EEPROM:  Electrically Erasable Programmable Read-Only Memory
    Es un tipo de memoria ROM que puede ser programada, borrada y reprogramada eléctricamente, a diferencia de la EPROM que ha de borrarse mediante un aparato que emite rayos ultravioletas. Son memorias no volátiles.
    Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada entre 100.000 y un millón de veces.
  • Flash:  La memoria flash es una forma avanzada de EEPROM, que permite la lecto-escritura de múltiples posiciones de memoria en la misma operación. Gracias a ello, la tecnología flash, siempre mediante impulsos eléctricos, permite velocidades de funcionamiento muy superiores frente a la tecnología EEPROM primigenia, que sólo permitía actuar sobre una única celda de memoria en cada operación de programación.
Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados "en circuito", es decir, sin tener que sacar el circuito integrado de la tarjeta.La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto.


Memoria en Arduino

Existen tres tipos de memoria en los microcontroladores utilizados por las placas Arduino (ATmega168, ATmega328, ATmega1280, etc.): 



  • Memoria Flash:  La memoria Flash (espacio del programa) es donde Arduino almacena el sketch. Un sketch es el nombre que usa Arduino para un programa. Es la unidad de código que se sube y ejecuta en la placa Arduino. Esta memoria es no volátil, si Arduino deja de ser alimentado eléctricamente los datos que haya en esta memoria permanecerán. El tamaño de la memoria Flash de Arduino puede variar dependiendo del microcontrolador, aunque no es muy grande. Por ejemplo, para el chip ATmega168 el tamaño de la memoria Flash es de 16 kilobytes, de los cuales 2 kilobytes son utilizados por el bootloader. Para el caso del microcontrolador ATmega328 (como el que incorpora Arduino UNO) el tamaño de la memoria Flash es de 32KB, de los cuales el bootloader usa 0,5KB. Se recomienda que se realicen programas de manera optimizada.
  • Memoria SRAM:   Static Random Access Memory ó memoria estática de acceso aleatorio es de tipo volátil, es el espacio donde los sketches (programas) almacenan y manipulan variables al ejecutarse. La información guardada en esta memoria será eliminada cuando Arduino pierda la alimentación. Esta memoria es de uso exclusivo para el programa en ejecución.  La memoria SRAM de Arduino es muy pequeña, por lo que debemos optimizar nuestros programas al máximo y no abusar de variables de tipo char muy grandes. Hay que tener en cuenta que cada carácter de una variable char utiliza un byte. En el microcontrolador ATmega 168 el tamaño de la memoria SRAM es de 1024 bytes, para el caso de un chip ATmega328 (como el que incorpora Arduino UNO) el tamaño es de 2KB (2048 bytes).
  • Memoria EEPROM: es un espacio de memoria que puede ser utilizada por los programadores para almacenar información de largo plazo.  El tamaño de la EEPROM para un chip ATmega128 es de 512 bytes, para un chip ATmega328 es de 1KB (1024 bytes). Hay que tener en cuenta que el tamaño de la memoria EEPROM interna de Arduino es "pequeño" pero Arduino admite añadir módulos de memoria EEPROM externa de mayor tamaño.



El almacenamiento en Arduino es posible ampliarlo, una manera de hacerlo es usando una memoria EEPROM externa.
También es posible ampliar la memoria con una SD Card, para esto existen varios módulos SD Card para arduino un ejemplo es el siguiente:



Para utilizar estos módulos existen varias librerías que pueden ser muy útiles.


Referencias



domingo, 25 de marzo de 2012

PIC 16F628A


El pic 16f628a es un microcontrolador de 8 bits, es el remplazo al pic 16f84a, ya que sus pines son compatibles. Posee una arquitectura RISC ( reduced instruction set computer) así como un juego reducido de 35 instrucciones.

El lenguaje de este microcontrolador es el asm, y ya que es un lenguaje que esta mucho mas cerca del hardware que del programador, han surgido compiladores de lenguajes de alto nivel, entre ellos se encuentran el BASIC y C.

Este es su diagrama de pines:

Cuenta con 16 pines de entrada/salida, dos temporizadores de 8 bits y uno de 16, ademas de dos comparadores. El pin # 5 es el que se conecta al negativo en la fuente de alimentación para los puertos de i/o. El pin # 14 es el que se conecta al positivo, pin #4 es el reset del dispositivo.


Pines principales


Características del PIC 16F628a:
  • Velocidades de operacion de DC - 20 MHz
  • Capacidad de interrupcion
  • Pila de 8 niveles
  • Modos de direccionamiento directos, indirectos y relativo
Algunas características especiales del microcontrolador:
  • Opciones de oscilador externo e interno
  • Modo de ahorro de energía
  • Multiplexado del pin reset/entrada-pin
  • Alta durabilidad de la memoria Flash/EEPROM
Tipos de memoria del pic 16f628a:
  • Memoria flash: memoria de tipo no volátil, aquí se almacena el programa que realicemos.
  • Tiene una capacidad de 2048 words osea 2048 lineas de código que se pueden escribir en assembler
  • Memoria RAM: sirve para guardar datos y variables, esta memoria es tipo volátil.
  • Memoria eeprom: memoria de tipo no volátil de poca capacidad sirve para guardar datos, aun cuando deje de recibir alimentación la información no se pierde.

Referencias:

viernes, 16 de marzo de 2012

Jugando con el Arduino!

En esta entrada hablare un poco sobre lo que es el arduino y de los pasos que segui para hacerlo funcionar con algo sencillo :).

Para comenzar...

Que es Arduino?

Arduino es una plataforma open source, basada en una placa con un microcontrolador diseñada para facilitar el entorno de desarrollo en proyectos electronicos.

Que modelos de placas existen?

Arduino Mega: es de los mas potentes y cuenta con mas i/o, es apto para trabajos complejos y cuenta con un microcontrolador Atmega1280 la cual le brinda mas memoria para el programa.

Arduino Bluetooth: tiene incorporado un modulo para la transmisión de datos de hasta 100 metros, se puede programar sin cables y se pueden realizar comunicaciones en serie con cualquier otro dispositivo que tenga bluetooth.

Arduino Pro: incorpora funcionalidades tales como un conector especial para conectar una bateria LiPo y realizar un montaje portatil

Arduino Nano

Arduino Duemilanove: placa estandar de arduino xD

Arduino Diecimila: es exactamente igual al duemilanove, solo que el chip de este es un atmega 168, no tan potente como el atmega328, pero en todo lo demas es igual.

Arduino Mini: es una version miniatura de la placa Arduino, lo cual permite ahorrar espacio en proyectos. y funciona igual que un arduino duemilanove.







En la siguiente entrada posteare que fue lo que hice para hacer funcionar el arduino ;)



domingo, 26 de febrero de 2012

Tarea intro

La primera practicá consiste en elaborar un programa en lenguaje ensamblador, pero antes de pasar al código pondre un poco de lo que es el lenguaje ensamblador en si:

"El lenguaje ensamblador es un lenguaje de bajo nivel, es un derivado del lenguaje máquina y esta formado por abreviaturas de letras y números."

Para generar el código ensamblador primero utilizare el siguiente codigo en C el cual es para generar números aleatorios aqu,í el código:


Después compile el archivo para obtener mi código ensamblador utilizando el siguiente comando:
gcc -S rand.c

Despues de Compilar Obtuve el siguiente código:


Un código muy largo.. para esto analice el código y lo optimice un poco eliminando algunas lineas y este fue el resultado:


Para entenderle un poco mejor Comentarice algunas lineas para ubicar que era lo que hacia el programa. Para probar si funcionaba el codigo con menos lineas cree su ejecutable gcc -s Rand.s -o Rand.exe y lo ejecute ./Rand y este fue el resultado


Referencias:

Tambien me ayude con un post que mi companiero Juan Carlos hizo con anterioridad.

jueves, 16 de febrero de 2012

Arquitecturas de microcontroladores

En esta entrada hablare de las arquitecturas de los micro controladores, pero primero una breve definición de lo que son:

"Un microcontrolador es un circuito integrado que puede ser programable y capaz de ejecutar las ordenes que han sido programadas en el."

Ahora algo sobre las arquitecturas de los microcontroladores...

Inicialmente los microcontroladores tenian la arquitectura clasica de Von Neumann, esta arquitectura estaba caracterizada por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta, y a esta memoria se accede a través de un sistema de buses único.
La arquitectura Harvard dispone de dos memorias. una que contiene el programa y otra para almacenar los datos, permitiendo así accesos simultáneos utilizando buses diferentes. Actualmente la mayoría de los microcontroladores responden a esta arquitectura, como ejemplo: los microcontroladores PIC.




Microcontrolador PIC
Usare de ejemplo el PIC16F8X para mostrar la función de las patitas y de como pueden ser asignadas (entradas, salidas, etc..)

Los puertos A (color azul) pueden ser configurados como entradas o salidas. La pata 3 (RA4/TOCKI) puede ser configurado como entrada/salida o como temporizador. El puerto B (color naranja) tiene ocho pines que también se pueden configurar como entrada o salida. Los pines 15 y 16 son únicamente para el oscilador externo*. El pin 4 (Reset) se debe conectar a una resistencia para que el Pic funcione, y si se desea resetear entonces se conecta a un micropulsador con una resistencia de 100 Ohm a tierra.

Los pines 14 y 5 son de alimentacion los cuales no pueden pasar de 5 voltios.


Buscando informacion sobre los microcontroladores pic, encontre un proyecto diseniado con microcontroladores similar a algo de lo que haremos en la clase, este habla de como hacer para evitar que se quemen las cerraduras electricas de puertas comunitarias, mostrando un panorama de el lugar en el que usa y de como se puede implementar utilizando un Pic 12f629.


* Oscilador Externo: Es un circuito que indica al micro la velocidad a la que debe trabajar, se le conoce como oscilador o reloj, y es de vital importancia para que el sistema tenga un buen funcionamiento.

Referencias: