lunes, 22 de noviembre de 2010
PROYECTO FINAL
En este archivo podrán encontrar una descripción general del desarrollo del trabajo (circuito utilizado, diagrama de bloques, funcionamiento, etc.)-Girasol electrónico-.
El siguiente video muestra una simulación del proyecto desarrollado y su funcionamiento:
El plano 3d del modelo es el siguiente:
Ahora salgamos un momento del desarrollo mecánico del trabajo y pasemos a la electrónica:
-DISEÑO DE PLACA: La placa del circuito fué diseñada en la aplicación Protel 99 SE (Archivo del trabajo) resultando de ello los siguientes circuitos esquemático y PCB:
-PROGRAMACIÓN:
Para la programación del cerebro de nuestro proyecto utilizamos el lenguaje C, implementando la aplicación "PIC C Compiler (CCS)". La elección fue fundamentada principalmente por la mayor facilidad de desarrollo del programa frente a otras aplicaciones o lenguajes, además de que contamos con toda la configuración interna de nuestro PIC. A continuación mostraremos y describiremos paso a paso los códigos utilizados para hacerlo funcionar:
Ya armado el girasol y posteriormente desarrollada su programación, realizamos las primeras pruebas:
Los siguientes links corresponden a las diferentes páginas que hemos visitado para lograr la meta dipuesta:
-Página visitada para desarrollar el circuito del LED, sensible a los cambios de iluminación:
http://www.electro-tech-online.com/electronic-projects-design-ideas-reviews/109227-reverse-engineering-solar-garden-light.html
-Páginas y foros visitados para llevar a cabo la programación:
http://picmania.garcia-cuervo.net/picc.php
http://robots-argentina.com.ar/MotorServo_basico.htm
Este link permite descargar un archivo PDF que usamos como guía en la programación para el giro del servo (SERVOS).
Bueno, así concluimos con el proyecto, y con este ciclo lectivo de Laboratorio II.
lunes, 15 de noviembre de 2010
TPNº15 "Contador" ----- Décimaoctava clase
Assembler (A continuación los códigos imlementados en este lenguaje):
C (A continuación los códigos imlementados en este lenguaje):
Al igual que en el trabajo anterior, antes de escribir nuestro microcontrolador para llevar el programa a la práctica, simulamos su funcionamiento a través del Multisim:
Comprobado el funcionamiento del programa en la PC, lo llevamos a la práctica:
martes, 9 de noviembre de 2010
TPNº14 "Secuencias" ---- Décimaséptima clase
Lo que haremos será generar cuatro secuencias distintas, cada una de las cuáles se ejecutará cuando las llaves se encuentren en una posición específica. El trabajo lo desarrollamos en dos lenguajes de programación:
-Assembler:
-C:
Veamos cómo resultan en la simulación por computadora (El programa utilizado a continuación es el "ISIS Professional -Multisim-"):
Tras una simulación exitosa, pasamos a la práctica. A continuación, antes de ver el resultado final en la placa ejercitadora, vamos a dar una breve explicación de cómo "escribir" el programa en el microcontrolador a través de nuestra placa programadora PIC KIT 2 anteriormente descripta:
jueves, 2 de septiembre de 2010
TPNº13 "Microcontroladores" ---- Décimasexta clase
-En el siguiente apartado incluiremos una guía de como comenzar a utilizar el MPLAB:
A continuación vemos la lista de instruciones que fue necesario confeccionar para lograr el objetivo planteado en programación "asembler" (En el incluimos una serie de acotaciones para explicar que realiza cada instrucción):
Veamos una simulación de su funcionamiento en Proteus:
-Ahora vamos a llegar al mismo resultado pero esta vez valiéndonos de la programación en C, veamos la lista de instrucciones necesarias:
En este caso intentaremos lograr una frecuencia de 500Hz a la salida. Acá hay una miniguia de como comenzar a utilizar el CCS.
Veamos una simulación del funcionamiento del programa:
Programación --- Décima Quinta Clase
Vimos hasta el momento 2 tipos difertentes llamados "Asembler" y "Programación en C".
Asembler: En este tipo de programación utilizamos la aplicación MPLAB IDE v8.40.
Este programa genera un tipo de documento en el cual podemos escribir las diferences instrucciones de los uC (Nosotros utilizamos el PIC16F84A, por eso usamos las instrucciones correspondiente a este uC).
Para programar en C tenemos varios programas:
-----------C18: Es de MICROCHIP, sirve solo para los uC's serie 18F.
-----------C30: Idem del anterior, solo que sirve para uC's más grandes.
-----------JAL: Esta muy restringido en dispositivos, en la programación y en la actualización.
-----------SDCC: Cuyas carcterísticas son muy similares a las del JAL.
-----------CC5X: El problema con este programa es que puede llegar a presentar inconvenientes con la licencia.
-----------CCS: Dentro de los nombrados presenta mayores facilidades en su utilización y una gran cantidad de librerías (Este es el que vamos a usar).
-----------HI-TECH: Tiene soporte de MICROCHIP, posee menos funciones lo que hace más complejo su uso.
------*NOTA: Estos últimos dos se integran al MPLAB, puedo usar el entorno del MPLAB para escribir el código; y desde el MPLAB lo puedo compilar.
Para llevar a la práctica todas las instrucciones establecidas a traves de estas aplicaciones al grabarlas en un uC necesitaremos de un programador, sin embargo esta no es la única opción.
Hoy en día algunos microcontroladores incorporan ICSP (In Circuit Serial Programming, programación serie incorporada) o LVP (Low Voltage Programming, programación a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1 o el RA0 y RA1) como clock y datos y el MCLR para activar el modo programación aplicando un voltaje de 13 voltios.
Otra forma de programar es el BootLoader, un pequeño conjunto de instrucciones que forman un programa y se graban, en este caso en un microcontrolador, para permitir un posterior manejo y actualización de sus programas internos (firmware) sin necesidad de utilizar programadores (hardware) específicos. Es decir, utilizas un programador de microcontroladores una única vez para cargarle el mencionado BootLoader al microcontrolador y luego te bastará con una sencilla aplicación en tu ordenador para cambiar a tu antojo el funcionamiento de tus sistemas. Todo mediante una conexión al puerto USB
Razones por las cuales no decidimos armarlo: Básicamente por lo siguiente, la diferencia de costos es mínima y al comprarlo no solo ahorramos trabajo sino que garantizamos un buen funcionamineto del instrumento desde el comienzo.
Entonces comenzamos a indagar acerca de los distintos programadores disponibles en el mercado.
De todas las opciones que encontramos elegimos el programador "PICKIT 2" de Microchip por las siguientes razones:
Tiene salida USB, lo que resulta mas practico a la hora de conectarlo a la PC ya que garantizamos su funcionamiento (si posee una salida, como ser, para "Port paralelo" o "Port RS232", podríamos tener problemas con la alimentación del programador, sin mencionar las probabilidades que existen de no contar con entradas de estas características dependiendo
del ordenador que utilizemos).
Posee un zócalo ZIF-PK que nos da una mayor facilidad para conectar y desconectar el microcontrolador a la placa del programador y nos permite trabajar con una amplia gama de uC's.
sábado, 28 de agosto de 2010
TPNº7 "Comparadores analógicos "--- Decima séptima clase
Para empezar miremos un poco el circuito:
La primera experiencia consistió en oscurecer el sensor de luz (LDR) y observar como reaccionaba el sistema.
Es así como esto se llevó a cabo:
Al final del video anterior lo que hacemos es acercar la lámpara encendida al sensor, entonces se produce una variación constante en la cantidad de luz que recibe el LDR. Vamos a numerar los sucesos para que sea más fácil de comprender:
Podemos concluir que el sistema no es estable ya que reacciona de distintas formas ante variaciones muy pequeñas en los parámetros externos (en este caso: luz), es decir, es muy sensible. Este circuito, por ejemplo, no nos sería útil para efectuar un control de luz crepuscular, puesto que la elevada sensibilidad haría variar su respuesta constantemente.
Llevado a la práctica:
De esta manera logramos reducir la sensibilidad ya que ahora la reacción del circuito a los cambios de luminosidad está dada por dos valores de tensión de referencia y no uno como ocurriera anteriormente:
-Cuando la tensión de referencia supere el valor de Vref1 la lámpara se enciende y no se apaga hasta que el esta caída sea menor que Vref2.
Otra forma de representar esto es a traves del gráfico de histéresis:
-Este gráfico representa el estado en que debe encontrarse el circuito para reaccionar de determinada manera. Aquí se ve que a los 6,5 V reaccionará de una forma: dará la alimentación sufuciente a la lámpara para que esta se encienda; y al disminuir esta tensión a 1,3 V la alimentación suministrada caerá a tal punto que la lámpara se apagará.
En este caso la diferencia entre el valor de tensión de encendido y apagado de la lámpara es de 4,7V, este es el factor que determina que la sensibilidad disminuya.
Logramos con esto que el sistema sea mucho más estable y ahora sí podríamos llegar a implementar un circuito de estas características si quisieramos diseñar un control de luz crepuscular.
jueves, 5 de agosto de 2010
TPNº6 "Restador"--- Décima Sexta Clase
Una vez confeccionado el siguiente circuito en la protoboard:
Debemos calcular Rf y R1; para esto debemos elegir un valor para cada una de estas resistencias y comprobar que se cumpla la siguiente relación:
En valores comerciales nosotros usamos las siguientes:
Rf=1Kohm R1=39ohm
En el ejercicio tres debimos simular una temperatura de 30 y 40 ºC; para hacerlo variamos los valores de los potenciómetros R1 y Rf:
miércoles, 30 de junio de 2010
Memorias Microcontroladores --- Décima Cuarta Clase
- Flash ROM: En esta memoria se encuentra el programa, teine 1024 posiciones de memoria y es regrabable.
- RAM: Es la memoria desde donde el procesador recibe las instrucciones y guarda los resultados.
- EEPROM: Es una memoria ROM menos eficiente.
RAM: Se divide en 2 campos:
♦ SFR (Registros de funciones especiales)
♦ GPR (Registros de propositos generales; tiene 68 posiciones de 8 bits. En este registro se colocan las variables)
La SFR se divide, a su vez, en 2 columnas denominadas bancos (banco 0 y banco 1), cada banco tiene 12 instrucciones de 8 bits cada una, en el banco 0 se encuentra el PORT A (0x05) y el PORT B (0x06); en el banco 1 se encuentra el TRIS A (0x85) y TRIS B (0x86), estos registros indican si el puerto es de entrada o salida. Ej: si TRIS B = 01010001 siginifica que RB0, RB4 y RB6 son puertos de entrada y los demás puertos de salida. Otro dato importante es que en cada banco se encuentra el registro STATUS, con él (cuando programamos) podemos controlar que banco estamos utilizando en la programación gracias al bit RPO.
jueves, 10 de junio de 2010
TPNº5 "Amplificadores Operacionales" --- Décima tercer Clase
Los integrados que usamos en esta ocasión fueron el LM741 (aquí su datasheet) y el TL081 (aquí su datasheet).
-Lo primero que hicimos fue armar el siguiente circuito en la protoboard.
Lo que hicimos a continuación fue controlar el offset para variar la tensión proporcionada.
Luego medimos las tensiones Vs y Vo del circuito y completamos la tabla de más abajo.
Si queremos reducir el nivel de offset tenemos dos maneras:
1- Podemos conectar un potenciómetro (nosotros usamos uno de 10kohm, lineal) entre las patas 1 y 5 del integrado como se muestra a continuación:
2- Podemos realizar el siguiente circuito:
El hecho de colocar un resistor en el terminal no inversor ayuda a disminuir la tensión de offset, ya que de este modo reducimos la corriente de base del amplificador operacional (AO).
Esto no influye en el cálculo de la ganancia de tensión porque esta depende teórica y prácticamente del realimentador, siendo Av=1/Beta.
A continuación trabajamos con una señal de 50mVpp y de 1KHz de frecuencia y verificamos que la fase de la señal de entrada es opuesta a la de salida y que la ganancia de tensión
se mantiene constante a pesar de imponerle una señal senoidal de 1 KHz.
Al cambiar el LM741 por el TL081 notamos que tanto el defasaje entre las señales de entrada y salida como la ganancia se mantienem iguales, pero hay una disminución en la tensión de saturación.
A continuación veremos los efectos de aumentar la frecuencia del generador hasta un determinado valor:
Para medir la impedancia de entrada del amplificador inversor aplicamos el método de la máxima transferencia de energía a partir de la confección del siguiente circuito:
Lo que logramos al colocar el potenciómetro a la entrada es un divisor de tensión. Medimos la caída de tensión a la salida del mismo mientras regulamos su valor, cuando esta tensión llega a valer Vcc/2 quiere decir que Z1 y Z2 son iguales, por lo tanto para medir la impedancia de entrada del amplificador lo que tendríamos que hacer es medir la resistencia que en ese momento tiene el potenciómetro.
Vcc/2=Vcc . Z2 / (Z1+Z2)
-Para que la igualdad se cumpla Z2/(Z1+Z2)=1/2 ; Z1=Z2.
Veamos ahora algunas ideas sobre diseño, en principio el de un amplificador no inversor: para la elección de los componentes externos nos basamos en la ecuación de ganancia:
Como queremos que la ganancia sea de 26 dB entonces lo que hacemos es reemplazar este valor en la ecuación, darle un valor a, por ejemlo, R2 y despejar la resistencia restante:
Para R2= 150 Kohm ; R1= 380 ohm.
domingo, 6 de junio de 2010
TPN°4 "Monoestables" --- Décima segunda Clase
En esta configuración, el LM555 funciona como una llave de tiempo, cuando pasa cierto tiempo esta llave pasa a un estado lógico nulo e impide el paso de la correinte a la carga. Este tiempo esta determinado por un circuito R-C donde:
Luego de calcular los resistores y condensadores comenzamos a armar en la protoboard este circuito:
Así nos quedó el circuito del monoestable en la protoboard...
En este video vemos la simulación del circuito monoestable, del circuito monoestable combinado con el astable y su diseño en placa:
Acá les dejamos la simulación, el esquemático y el diseño de la placa.
viernes, 4 de junio de 2010
Teoría microcontroladores --- Décima primer clase
-Microchip {Su sistema de isntrucciones es el RISC}
-Atmel {Su sistema de isntrucciones es el RISC}
-Freescale (Motorola) {Su sistema de isntrucciones es el CISC}
Nosotros vamos a especializarnos en la marca Microchip.
Los uC se dividen en 3 grandes gamas:
-Baja: Se caracteriza porque responden únicamente a 33 instrucciones de 12 bits de longitud cada una y disponen de una pila con solo dos niveles de profundidad. Esta compuesta por 14 modelos, de los cuales 6 están encapsulados con 6 pines (razón por la cual se les suele apodar enanos). Estos PICs se utilizan mucho para resolver aplicaciones simples, gracias a su reducido tamaño y precio. En estos dispositivos se usan dos pines para la alimentación, quedando solo 4 pines libres para las Entradas/Salidas y las funciones de sus periféricos (10Fxxx y 12Fxxx; los más usados son los 10F202 - 12F509).
-Media: Dispone a un repertorio de 35 instrucciones, 14 bits de longitud cada una, pila de 8 niveles, un vector de interrupción, 71 modelos diferentes y encapsulados de 8 a 64 pines (parte de los 12Fxxx y todos los 16Fxxx; los mas usados son 16F84A - 16F628 - 16F877A).
-Alta: Dispone a un repertorio de 77 instrucciones, 16 bits de longitud cada una, pila de 16 niveles, esta gama es la que mas números de dispositivos posee, la memoria programable puede alcanzar los 128 KB, la memoria de datos puede alcanzar los 3963 bits; tiene periféricos muy especializados, interfaces de comunicación con bus I²C, SPI, USART, CAN 2.0B y posee un rápido hardware (18Fxxxx , 24Fxxxx [16 bits] y los dsPIC [16bits]; los mas usados son 18F452 - 18F4550 - 18F1320).
Si echan un vistazo al primer trabajo práctico recordarán que ya trabajamos con microcontroladores; para esa ocasión usamos el PIC 16F84A-04 (o4; este número representa la cantidad de MHz que posee el microcontrolador, puede ser de 4MHz o de 20 MHz)
Tres cosas escenciales que necesita un uC para funcionar son: VDD (+5V), MCLR (Reset, o se lo conecta a Vdd y no se usa), CLOCK (velocidad interna [LP{menor a 100KHz}, RC{10KHz a 1MHz},XT{1MHz a 4MHz} y HS{Mayor a 4MHz}] o externa [Usando un oscilador externo]).
Este uC tiene 2 puertos (uno de 5 pines o de 5 bits {Es incompleto porque no llega al byte} y otro de 8 pines o de 1 byte), estos puertos son una serie de pines que se comunican con el mundo exterior, pueden ser de entrada o de salida. Los puertos los puedo programar como entrada (SINC) o como salida (SOURCE).
-------------SINC--------------------------------SOURCE--------
Si queremos trabajar con tensiones mas grandes (Una etapa anterior, por ejemplo) lo que podemos hacer es conectar un fototransistor de esta manera.
De esta forma nos aseguramos de que el uC no se nos queme, si se produce algún desperfecto lo que se quema es el fototransistor.
Existen otras formas de lograr un sistema de seguridad semejante que permita trabajar con distintos niveles de tensión; elegimos enseñarles este puesto que es de muy buena fidelidad y simple de armar.
jueves, 13 de mayo de 2010
Nueva Instrumentación --- Décima Clase
Además de su tamaño (que es considerablemente menor al del modelo anterior), este osciloscopio posee una serie de funciones que simplifican mucho su manejo; en principio vamos a detallar aquellas que fue necesario conocer para efectuar los trabajos:
- La configuración original se efectúa oprimiendo el botón "Storage" y eligiendo (moviendo y presionando la perilla que se encuentra al lado de la pantalla) la opción "almacenamiento" que aparece en la pantalla , luego "fábrica" y por último "carga".
- El auto set (que sirve para acomodar la escala y ajustar la señal en la pantalla) se genera apretando el botón "Auto" que se encuentra en el extremo superior derecho del osciloscopio; a su lado se encuentra el botón "Run/Stop" con el que podemos congelar la imagen.
- Para poder ver los valores de la señal apretamos el botón "measure" y luego elegimos la opción "mostrar todo" que aparece en la pantalla.
- Para almacenar una imagen desde el puerto USB presionamos nuevamente "storage" y luego "almacenamiento"; después elegimos la opción "mapa de bits", seleccionamos la opción "externo" y "nuevo archivo"; por último seleccionamos "guardar".
miércoles, 5 de mayo de 2010
TPNº3 "Astables" --- Novena Clase
Para calcular el valor de los resistores debemos utilizar estas ecauciones:
Siendo:
Para un valor de frecuencia de 1KHz utilizamos un condensador de 100nF.
Luego de calcular los resistores, realizamos el siguiente circuito en la protoboard.
-Así nos quedó armado:
NOTA: Habrán notado que falta un condensador en el circuito de la protoboard; este capacitor cerámico se coloca para reducir el ruido y mejorar la lectura de la señal en el osciloscopio por lo que no es indispensable conectarlo.
Al finalizar la medición con el osciloscopio nos dimos cuenta de que los valores obtenidos no coincidían con los calculados; esto es porque al calcular trabajamos en un campo ideal y al llevarlo a la práctica entran en juego muchos factores que afectan los resultados.
La siguiente imagen fue extraída del osciloscopio, aquí se pueden apreciar las variaciones que mencionamos; un ejemplo sería la frecuencia: utilizando los mismos valores de componentes, en el cálculo obtuvimos 1KHz y noten que el osciloscopio mide 1.064KHz.
Para calcular el error cometido reemplazamos los valores reales de los componentes en las siguientes ecuaciones:
Ra=2.88k
Rb=5.6k
C=100nF
D=39.97---y ---f=1023Hz (Calculadas con los valores de resistores reales).
Sabiendo que f=1khz (ideal)---y---D=40 (ideal), el error cometido se calcula de la sigueinte manera.
Calculando, nuestros errores (En porcentaje) fueron del:
En el siguiente video podemos ver como varía la frecuencia al modificar determinados parámetros del circuito:
Para obtener otras frecuencias de oscilación en el mismo circuito lo que hicimos fue cambiar el valor del capacitor C:
-Para: 1Hz empleamos: 100uF
-Para: 10Hz empleamos: 10uF
-Para: 100Hz empleamos: 1uF
-Para: 10KHz empleamos: 10nF
La caída en el condensador de 0.01uF (el que utilizamos para reducir el ruido) es de aproximadamente Vcc-3v.
Por último, simulamos este trabajo en el programa "Proteus 7.6 SP0" (Manual y apuntes), aca la página oficial y desde acá pueden descargar el programa, asi nos quedó la simulación.
Acá les mostramos un video con unos simples consejos básicos del Proteus y la simulación de este trabajo práctico: