Este documento describe cómo crear un enlace de comunicación serial entre un microcontrolador PIC16F886 y el software LabVIEW. Explica cómo configurar el entorno de desarrollo MPLAB X para programar el PIC en C, simular el circuito en Proteus, y programar la interfaz de usuario en LabVIEW. Además, incluye el código C para el PIC y el diagrama de bloques de LabVIEW para establecer la comunicación serial bidireccional entre los dos sistemas.
Este documento presenta un marco teórico sobre neumática y fluidos. Explica conceptos clave como presión, densidad, volumen específico, compresibilidad, capacitancia e inertancia. También describe los componentes y funcionamiento de un cañón neumático, incluyendo un tanque de aire, válvula y cañón. Finalmente, proporciona un modelo matemático del sistema neumático que relaciona la presión, flujo de masa y resistencia/capacitancia.
Este documento introduce los conceptos fundamentales de los sistemas de control. Define términos clave como proceso, sistema, control, planta y sistema de control. Explica la metodología aplicada al estudio de los sistemas de control y los elementos básicos de un sistema de control, incluyendo variables, instrumentos y tipos de control. También describe la simbología e identificación de instrumentos utilizados en diagramas de instrumentación.
Este documento describe los conceptos básicos de la cinemática directa e inversa en sistemas robóticos. Explica que la cinemática directa determina la posición y orientación del efector final a partir de las longitudes de los eslabones y ángulos de articulación, mientras que la cinemática inversa determina los ángulos necesarios para alcanzar una posición deseada del efector. También presenta el algoritmo de Denavit-Hartenberg para calcular la cinemática directa mediante transformaciones homogéneas entre marcos de refer
Este documento presenta 7 problemas de control automático relacionados con sistemas de vehículos. Cada problema describe un sistema de control (como control de velocidad, aire acondicionado, limpiaparabrisas) e incluye un diagrama de bloques para ilustrarlo. Los diagramas muestran los componentes clave de cada sistema y cómo fluyen las señales de entrada, salida y realimentación para lograr el control deseado.
Se fabrican 50 unidades del producto A y 20 unidades del producto B para maximizar una utilidad de $18,500. Se utilizan 200, 240 y 190 horas en las máquinas 1, 2 y 3 respectivamente.
Este documento describe el método de asignación de polos para el diseño de controladores. Explica que es posible sintetizar un controlador tal que los polos a lazo cerrado tengan ubicaciones predeterminadas. Presenta dos ejemplos numéricos que ilustran cómo igualar los coeficientes de los polinomios característicos para obtener la solución al controlador deseado. También cubre cómo aplicar este método para ajustar controladores PI y PID, y describe el predictor de Smith como una estrategia útil para plantas con retardo puro.
Este documento presenta un cursillo de electrónica práctica que incluye temas como la soldadura con estaño, componentes electrónicos, diseño de circuitos impresos y uso de equipos de medición. El cursillo está dirigido a personas con conocimientos básicos de electricidad y electrónica y cubre temas como soldadura, resistencias, condensadores, transistores y diseño de circuitos impresos.
Este documento presenta un marco teórico sobre neumática y fluidos. Explica conceptos clave como presión, densidad, volumen específico, compresibilidad, capacitancia e inertancia. También describe los componentes y funcionamiento de un cañón neumático, incluyendo un tanque de aire, válvula y cañón. Finalmente, proporciona un modelo matemático del sistema neumático que relaciona la presión, flujo de masa y resistencia/capacitancia.
Este documento introduce los conceptos fundamentales de los sistemas de control. Define términos clave como proceso, sistema, control, planta y sistema de control. Explica la metodología aplicada al estudio de los sistemas de control y los elementos básicos de un sistema de control, incluyendo variables, instrumentos y tipos de control. También describe la simbología e identificación de instrumentos utilizados en diagramas de instrumentación.
Este documento describe los conceptos básicos de la cinemática directa e inversa en sistemas robóticos. Explica que la cinemática directa determina la posición y orientación del efector final a partir de las longitudes de los eslabones y ángulos de articulación, mientras que la cinemática inversa determina los ángulos necesarios para alcanzar una posición deseada del efector. También presenta el algoritmo de Denavit-Hartenberg para calcular la cinemática directa mediante transformaciones homogéneas entre marcos de refer
Este documento presenta 7 problemas de control automático relacionados con sistemas de vehículos. Cada problema describe un sistema de control (como control de velocidad, aire acondicionado, limpiaparabrisas) e incluye un diagrama de bloques para ilustrarlo. Los diagramas muestran los componentes clave de cada sistema y cómo fluyen las señales de entrada, salida y realimentación para lograr el control deseado.
Se fabrican 50 unidades del producto A y 20 unidades del producto B para maximizar una utilidad de $18,500. Se utilizan 200, 240 y 190 horas en las máquinas 1, 2 y 3 respectivamente.
Este documento describe el método de asignación de polos para el diseño de controladores. Explica que es posible sintetizar un controlador tal que los polos a lazo cerrado tengan ubicaciones predeterminadas. Presenta dos ejemplos numéricos que ilustran cómo igualar los coeficientes de los polinomios característicos para obtener la solución al controlador deseado. También cubre cómo aplicar este método para ajustar controladores PI y PID, y describe el predictor de Smith como una estrategia útil para plantas con retardo puro.
Este documento presenta un cursillo de electrónica práctica que incluye temas como la soldadura con estaño, componentes electrónicos, diseño de circuitos impresos y uso de equipos de medición. El cursillo está dirigido a personas con conocimientos básicos de electricidad y electrónica y cubre temas como soldadura, resistencias, condensadores, transistores y diseño de circuitos impresos.
Este documento describe los pasos para calcular los parámetros cinemáticos de Denavit-Hartenberg para el robot Puma 560. Se asignan sistemas de coordenadas a cada eslabón del robot siguiendo reglas sistemáticas. Luego, se definen los parámetros de Denavit-Hartenberg (θ, d, a, α) para cada articulación siguiendo procedimientos establecidos. El documento ilustra el proceso aplicado a la primera y segunda articulación del robot.
El documento describe los principales elementos de un sistema de control de datos discretos, incluyendo el muestreador, filtro y proceso controlado. Explica conceptos como muestreo periódico, cuantización, reconstrucción de señales continuas a partir de señales discretas usando retenedores, y diferentes tipos de señales y sistemas discretos como estáticos, dinámicos, causales y no causales.
El documento presenta un tutorial sobre el uso del software CADe_SIMU para la simulación de circuitos eléctricos. Explica las funciones del software, como dibujar esquemas eléctricos de forma rápida e insertar componentes como alimentaciones, motores, interruptores y lámparas de señalización. También muestra un ejemplo de simulación de un circuito de arranque directo y resume los componentes físicos comúnmente usados en CADe_SIMU como cables, conectores e interruptores monofásicos, bifásicos y trifás
Presentación Autómatas Finito No DeterministicoScarlinr
Un autómata finito no determinista (AFND) es un autómata que puede tener más de una transición posible desde un estado dado para un símbolo dado, a diferencia de los autómatas finitos deterministas. Los AFND permiten representar lenguajes de forma más simple que los autómatas deterministas y son equivalentes a ellos en poder de reconocimiento. Pueden implementarse de varias formas como convirtiéndolos a autómatas deterministas equivalentes o manteniendo múltiples copias del autómata.
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...Francisco Pérez
Esta tesis aborda el problema del árbol de expansión robusto con incertidumbre en los costos de las aristas, utilizando el criterio de minimización del máximo arrepentimiento (min-max regret). Se implementan algoritmos exactos como descomposición de Benders y branch and cut, así como heurísticas constructivas y metaheurísticas como simulated annealing y GRASP. Los resultados experimentales muestran que el algoritmo branch and cut supera a los demás métodos, obteniendo desviaciones menores al 10% para instancias con 100 nodos. Las metaheurí
Este documento describe diferentes pruebas estadísticas para evaluar la independencia y aleatoriedad de números pseudoaleatorios, incluyendo pruebas de autocorrelación, huecos o distancia, y póquer. La prueba de autocorrelación analiza patrones dentro de una señal desplazada en el tiempo. La prueba de huecos compara el tamaño de los espacios entre números que caen dentro de un intervalo específico. La prueba de póquer clasifica grupos de 5 dígitos y compara las frecuencias observadas con las esper
Este documento define la desviación media y proporciona fórmulas para calcularla para datos individuales y agrupados. La desviación media es la media aritmética de las diferencias entre cada valor y la media. Se proveen ejemplos numéricos para ilustrar el cálculo de la desviación media para datos individuales y agrupados.
El documento describe un sistema de control para llenar un tanque de agua. El sistema consta de una tubería de suministro de agua, un tanque, una válvula electrónica y un sensor de nivel. La válvula electrónica puede ser accionada manualmente o de forma automática por un computador para permitir el flujo de agua hacia el tanque. El sensor de nivel monitorea el nivel de agua en el tanque y envía la señal al computador, el cual puede cerrar la válvula electrónica una vez que el tanque esté
El documento describe cuatro métodos para sintonizar los parámetros (Kp, Ti, Td) de un controlador PID para lograr un comportamiento aceptable de un sistema. El primer y segundo método se basan en las características de la respuesta transitoria de la planta a un escalón de entrada. El tercer método usa oscilaciones amortiguadas. El cuarto método es de prueba y error gradual.
El documento describe la respuesta temporal de sistemas de control de primer orden. Explica que la respuesta temporal consta de una parte transitoria y otra permanente, y define la ganancia y constante de tiempo de un sistema de primer orden. Luego, analiza específicamente la respuesta a un escalón unitario, mostrando que alcanza el 63.2% de su valor final después de una constante de tiempo y converge completamente después de infinito tiempo.
1. El documento describe cómo generar gráficos en MATLAB. Introduce conceptos básicos como vectores, matrices y funciones, y explica cómo crear gráficos 2D, 3D y estadísticos. 2. Se explican comandos para manipular datos como plot, mesh, histogram, entre otros. 3. El documento es una guía para aprender a visualizar y analizar datos de forma gráfica usando MATLAB.
Este documento describe el diseño de un controlador PID para una planta dada su función de transferencia de lazo abierto. Se utiliza el Método 1 de Ziegler-Nichols para determinar valores iniciales para los parámetros del controlador PID (Kp, Ti, Td). Luego se realizan ajustes finos a los parámetros para cumplir con los requisitos de tiempo de establecimiento menor a 5 segundos y sobreelongación menor al 20%. El análisis de la respuesta del lazo cerrado muestra que los valores iniciales no cumplen los requisitos,
Este documento proporciona instrucciones detalladas para ensamblar una computadora personal (PC) desde cero. Explica los pasos como abrir la carcasa, instalar la fuente de alimentación, conectar los componentes a la placa base e instalarla, instalar la CPU, memoria RAM y otras tarjetas, e instalar unidades internas y externas. El objetivo final es proporcionar una guía completa para que alguien pueda ensamblar su propia PC de manera exitosa.
Este documento describe cómo crear gráficas de funciones con MatLab, incluyendo gráficas de una y dos variables, curvas paramétricas en el espacio, superficies y curvas de nivel. Explica cómo generar tablas de valores, dibujar funciones, modificar ejes, añadir cuadrículas y etiquetas, y representar funciones complejas.
El documento presenta la forma matricial del método simplex para resolver problemas de programación lineal. Explica que al usar matrices, el modelo general se puede representar como una maximización sujeta a restricciones. Luego, define las matrices y vectores involucrados, como la matriz de coeficientes, variables de decisión y recursos. Finalmente, analiza cómo clasificar bases como factibles u óptimas usando las matrices inversas.
Unidad 1 introducción a la modelación de sistemas (1)Edwin Hernandez
Este documento presenta conceptos básicos sobre modelado de sistemas. Introduce los conceptos de sistemas, señales, modelos y su clasificación. Explica los pasos para construir modelos matemáticos, incluyendo la conceptualización, formulación y evaluación. Define sistemas dinámicos, determinísticos, de parámetros concentrados y lineales. Los modelos matemáticos descritos son ecuaciones que representan la dinámica de sistemas físicos.
Este documento describe el diseño e implementación de un sistema de control de humedad en el suelo para cultivos utilizando un controlador PID analógico. Se implementan las acciones proporcional, integral y derivativa usando amplificadores operacionales LM741 para lograr el control de humedad deseado mediante la activación de una bomba de agua. El sistema mantiene la humedad del suelo en un punto de referencia establecido a través del sensor de humedad y el controlador PID.
El documento presenta una introducción al modelado matemático de sistemas de control de procesos industriales. Explica que un modelo matemático se define como un conjunto de ecuaciones que representan la dinámica de un sistema. Además, describe conceptos clave como parámetros concentrados y distribuidos, sistemas deterministas y no deterministas, ecuaciones lineales y no lineales, y funciones de transferencia.
Este documento trata sobre el ajuste de controladores. Explica que los controladores tipo PID son los más comunes y describe sus funciones proporcional, integral y derivativa. También describe varios métodos para ajustar los parámetros de los controladores, incluyendo el método de ensayo sistemático y el método de última sensibilidad de Ziegler-Nichols. El objetivo del ajuste es lograr una respuesta estable ante perturbaciones con un amortiguamiento óptimo.
Este documento trata sobre los sensores de presión. Explica que un sensor es un dispositivo que detecta magnitudes físicas y las convierte a señales eléctricas. Describe los tipos de sensores de presión, incluyendo mecánicos, neumáticos, electromecánicos y electrónicos. También cubre cómo elegir el sensor de presión correcto según los requerimientos y especificaciones técnicas.
1) El documento presenta un prólogo que agradece a los lectores por descargar el libro y comparte la pasión del autor por compartir conocimientos sobre microcontroladores.
2) Explica que el autor tuvo dificultades al principio programando en ensamblador y luego encontró herramientas como PicBasic Pro y CCS C que facilitaron su aprendizaje.
3) Con el uso de estas nuevas herramientas, el autor pudo finalmente construir lo que quería y triunfar en el mundo de la programación de microcontroladores.
1) El documento presenta una introducción a los cursos sobre microcontroladores, agradeciendo a los lectores por descargar el libro y compartir conocimientos.
2) Explica la evolución del autor en el aprendizaje de programación de microcontroladores, desde ensamblador hasta lenguajes de alto nivel como C.
3) Detalla los programas y herramientas necesarias para programar microcontroladores, incluyendo MPLAB IDE, compiladores C, simuladores y programadores.
Este documento describe los pasos para calcular los parámetros cinemáticos de Denavit-Hartenberg para el robot Puma 560. Se asignan sistemas de coordenadas a cada eslabón del robot siguiendo reglas sistemáticas. Luego, se definen los parámetros de Denavit-Hartenberg (θ, d, a, α) para cada articulación siguiendo procedimientos establecidos. El documento ilustra el proceso aplicado a la primera y segunda articulación del robot.
El documento describe los principales elementos de un sistema de control de datos discretos, incluyendo el muestreador, filtro y proceso controlado. Explica conceptos como muestreo periódico, cuantización, reconstrucción de señales continuas a partir de señales discretas usando retenedores, y diferentes tipos de señales y sistemas discretos como estáticos, dinámicos, causales y no causales.
El documento presenta un tutorial sobre el uso del software CADe_SIMU para la simulación de circuitos eléctricos. Explica las funciones del software, como dibujar esquemas eléctricos de forma rápida e insertar componentes como alimentaciones, motores, interruptores y lámparas de señalización. También muestra un ejemplo de simulación de un circuito de arranque directo y resume los componentes físicos comúnmente usados en CADe_SIMU como cables, conectores e interruptores monofásicos, bifásicos y trifás
Presentación Autómatas Finito No DeterministicoScarlinr
Un autómata finito no determinista (AFND) es un autómata que puede tener más de una transición posible desde un estado dado para un símbolo dado, a diferencia de los autómatas finitos deterministas. Los AFND permiten representar lenguajes de forma más simple que los autómatas deterministas y son equivalentes a ellos en poder de reconocimiento. Pueden implementarse de varias formas como convirtiéndolos a autómatas deterministas equivalentes o manteniendo múltiples copias del autómata.
Algoritmos para el problema de árbol de expansión mínima robusto con datos in...Francisco Pérez
Esta tesis aborda el problema del árbol de expansión robusto con incertidumbre en los costos de las aristas, utilizando el criterio de minimización del máximo arrepentimiento (min-max regret). Se implementan algoritmos exactos como descomposición de Benders y branch and cut, así como heurísticas constructivas y metaheurísticas como simulated annealing y GRASP. Los resultados experimentales muestran que el algoritmo branch and cut supera a los demás métodos, obteniendo desviaciones menores al 10% para instancias con 100 nodos. Las metaheurí
Este documento describe diferentes pruebas estadísticas para evaluar la independencia y aleatoriedad de números pseudoaleatorios, incluyendo pruebas de autocorrelación, huecos o distancia, y póquer. La prueba de autocorrelación analiza patrones dentro de una señal desplazada en el tiempo. La prueba de huecos compara el tamaño de los espacios entre números que caen dentro de un intervalo específico. La prueba de póquer clasifica grupos de 5 dígitos y compara las frecuencias observadas con las esper
Este documento define la desviación media y proporciona fórmulas para calcularla para datos individuales y agrupados. La desviación media es la media aritmética de las diferencias entre cada valor y la media. Se proveen ejemplos numéricos para ilustrar el cálculo de la desviación media para datos individuales y agrupados.
El documento describe un sistema de control para llenar un tanque de agua. El sistema consta de una tubería de suministro de agua, un tanque, una válvula electrónica y un sensor de nivel. La válvula electrónica puede ser accionada manualmente o de forma automática por un computador para permitir el flujo de agua hacia el tanque. El sensor de nivel monitorea el nivel de agua en el tanque y envía la señal al computador, el cual puede cerrar la válvula electrónica una vez que el tanque esté
El documento describe cuatro métodos para sintonizar los parámetros (Kp, Ti, Td) de un controlador PID para lograr un comportamiento aceptable de un sistema. El primer y segundo método se basan en las características de la respuesta transitoria de la planta a un escalón de entrada. El tercer método usa oscilaciones amortiguadas. El cuarto método es de prueba y error gradual.
El documento describe la respuesta temporal de sistemas de control de primer orden. Explica que la respuesta temporal consta de una parte transitoria y otra permanente, y define la ganancia y constante de tiempo de un sistema de primer orden. Luego, analiza específicamente la respuesta a un escalón unitario, mostrando que alcanza el 63.2% de su valor final después de una constante de tiempo y converge completamente después de infinito tiempo.
1. El documento describe cómo generar gráficos en MATLAB. Introduce conceptos básicos como vectores, matrices y funciones, y explica cómo crear gráficos 2D, 3D y estadísticos. 2. Se explican comandos para manipular datos como plot, mesh, histogram, entre otros. 3. El documento es una guía para aprender a visualizar y analizar datos de forma gráfica usando MATLAB.
Este documento describe el diseño de un controlador PID para una planta dada su función de transferencia de lazo abierto. Se utiliza el Método 1 de Ziegler-Nichols para determinar valores iniciales para los parámetros del controlador PID (Kp, Ti, Td). Luego se realizan ajustes finos a los parámetros para cumplir con los requisitos de tiempo de establecimiento menor a 5 segundos y sobreelongación menor al 20%. El análisis de la respuesta del lazo cerrado muestra que los valores iniciales no cumplen los requisitos,
Este documento proporciona instrucciones detalladas para ensamblar una computadora personal (PC) desde cero. Explica los pasos como abrir la carcasa, instalar la fuente de alimentación, conectar los componentes a la placa base e instalarla, instalar la CPU, memoria RAM y otras tarjetas, e instalar unidades internas y externas. El objetivo final es proporcionar una guía completa para que alguien pueda ensamblar su propia PC de manera exitosa.
Este documento describe cómo crear gráficas de funciones con MatLab, incluyendo gráficas de una y dos variables, curvas paramétricas en el espacio, superficies y curvas de nivel. Explica cómo generar tablas de valores, dibujar funciones, modificar ejes, añadir cuadrículas y etiquetas, y representar funciones complejas.
El documento presenta la forma matricial del método simplex para resolver problemas de programación lineal. Explica que al usar matrices, el modelo general se puede representar como una maximización sujeta a restricciones. Luego, define las matrices y vectores involucrados, como la matriz de coeficientes, variables de decisión y recursos. Finalmente, analiza cómo clasificar bases como factibles u óptimas usando las matrices inversas.
Unidad 1 introducción a la modelación de sistemas (1)Edwin Hernandez
Este documento presenta conceptos básicos sobre modelado de sistemas. Introduce los conceptos de sistemas, señales, modelos y su clasificación. Explica los pasos para construir modelos matemáticos, incluyendo la conceptualización, formulación y evaluación. Define sistemas dinámicos, determinísticos, de parámetros concentrados y lineales. Los modelos matemáticos descritos son ecuaciones que representan la dinámica de sistemas físicos.
Este documento describe el diseño e implementación de un sistema de control de humedad en el suelo para cultivos utilizando un controlador PID analógico. Se implementan las acciones proporcional, integral y derivativa usando amplificadores operacionales LM741 para lograr el control de humedad deseado mediante la activación de una bomba de agua. El sistema mantiene la humedad del suelo en un punto de referencia establecido a través del sensor de humedad y el controlador PID.
El documento presenta una introducción al modelado matemático de sistemas de control de procesos industriales. Explica que un modelo matemático se define como un conjunto de ecuaciones que representan la dinámica de un sistema. Además, describe conceptos clave como parámetros concentrados y distribuidos, sistemas deterministas y no deterministas, ecuaciones lineales y no lineales, y funciones de transferencia.
Este documento trata sobre el ajuste de controladores. Explica que los controladores tipo PID son los más comunes y describe sus funciones proporcional, integral y derivativa. También describe varios métodos para ajustar los parámetros de los controladores, incluyendo el método de ensayo sistemático y el método de última sensibilidad de Ziegler-Nichols. El objetivo del ajuste es lograr una respuesta estable ante perturbaciones con un amortiguamiento óptimo.
Este documento trata sobre los sensores de presión. Explica que un sensor es un dispositivo que detecta magnitudes físicas y las convierte a señales eléctricas. Describe los tipos de sensores de presión, incluyendo mecánicos, neumáticos, electromecánicos y electrónicos. También cubre cómo elegir el sensor de presión correcto según los requerimientos y especificaciones técnicas.
1) El documento presenta un prólogo que agradece a los lectores por descargar el libro y comparte la pasión del autor por compartir conocimientos sobre microcontroladores.
2) Explica que el autor tuvo dificultades al principio programando en ensamblador y luego encontró herramientas como PicBasic Pro y CCS C que facilitaron su aprendizaje.
3) Con el uso de estas nuevas herramientas, el autor pudo finalmente construir lo que quería y triunfar en el mundo de la programación de microcontroladores.
1) El documento presenta una introducción a los cursos sobre microcontroladores, agradeciendo a los lectores por descargar el libro y compartir conocimientos.
2) Explica la evolución del autor en el aprendizaje de programación de microcontroladores, desde ensamblador hasta lenguajes de alto nivel como C.
3) Detalla los programas y herramientas necesarias para programar microcontroladores, incluyendo MPLAB IDE, compiladores C, simuladores y programadores.
Este documento presenta una introducción a la programación de microcontroladores PIC. Explica que el autor encontró diferentes software y lenguajes para programarlos, desde ensamblador hasta C. También describe los programas y hardware necesarios para programar PICs, incluyendo MPLAB IDE, el compilador CCS C y programadores. Finalmente, presenta ejemplos de código C para implementar un contador de 0 a 9 y uno de 00 a 99 usando interrupciones de timer.
Este documento presenta una introducción a la programación en C para microcontroladores PIC. Explica que C es un lenguaje popular para programar sistemas embebidos debido a su eficiencia. También describe los pasos para configurar el entorno de desarrollo MPLAB y el compilador C18 para crear y compilar proyectos en C para PICs.
Este documento describe cómo configurar e implementar un programa "Hola Mundo" básico en MPLAB y el compilador C18 para un PIC18F2550. Explica cómo configurar MPLAB e incluir las librerías y palabras de configuración adecuadas, y luego proporciona un código de ejemplo que enciende y apaga los LEDs en un bucle infinito para demostrar el funcionamiento básico.
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...ezequiel
Este documento presenta una introducción a la programación de los microcontroladores PIC32 de Microchip. Describe el hardware y software necesarios, incluyendo placas de desarrollo, programadores y el entorno de desarrollo MPLAB. Luego, muestra un ejemplo paso a paso de cómo crear un proyecto en MPLAB para encender y apagar luces secuencialmente en la placa de desarrollo Starter Kit utilizando operadores matemáticos en C. Finalmente, explica brevemente las características del hardware del PIC32 como puertos E/S
Este documento explica los cuatro pasos para programar un PIC: 1) editar el código fuente, 2) compilar el código, 3) grabar el programa compilado en el PIC, y 4) probar el programa. Se detalla cada paso y se proporciona información sobre el PIC16F84, incluyendo sus pines, memoria y registros especiales.
Este documento explica los cuatro pasos para programar un PIC: 1) editar el código fuente, 2) compilar el código, 3) grabar el programa compilado en el PIC, y 4) probar el programa. Se detallan cada uno de los pasos y se proporciona información sobre el PIC16F84, incluyendo su memoria y puertos.
Este documento describe el uso de la herramienta de desarrollo MPLAB IDE para programar microcontroladores PIC. Explica cómo crear proyectos, escribir código, compilar, simular y depurar programas para PICs usando MPLAB. También presenta un ejemplo sencillo de un programa que copia los datos del Puerto A al Puerto B de un PIC16F84A.
El documento presenta información sobre la programación de microcontroladores PIC usando el lenguaje C. Se introducen conceptos como el lenguaje C, el compilador Mikro C y la estructura básica de un programa. Se explica que el lenguaje C permite realizar operaciones a nivel de byte y bit de forma portable. Mikro C es un compilador popular para PIC que facilita la programación en C.
Este documento describe los cuatro pasos para programar un PIC: 1) Editar el programa usando MPLAB, 2) Compilar el programa usando MPASM, 3) Quemar el programa en el PIC usando un programador como Prog2, y 4) Probar el programa usando una tarjeta de prueba. También describe los detalles de la memoria y los pines del PIC16F84, un microcontrolador PIC popular.
Este documento describe los cuatro pasos para programar un PIC: 1) Editar el programa usando MPLAB, 2) Compilar el programa usando MPASM, 3) Quemar el programa en el PIC usando un programador como Prog2, y 4) Probar el programa usando una tarjeta de prueba. También describe los detalles de la memoria y los pines del PIC16F84, un microcontrolador PIC popular.
Este documento describe los cuatro pasos para programar un PIC: 1) Editar el programa usando MPLAB, 2) Compilar el programa usando MPASM, 3) Quemar el programa en el PIC usando un programador como Prog2, y 4) Probar el programa usando una tarjeta de prueba. También describe los detalles de la memoria y los pines del PIC16F84, un microcontrolador PIC popular.
Este documento describe los cuatro pasos para programar un PIC: 1) editar el programa, 2) compilar el programa, 3) quemar el programa en el PIC, y 4) probar el programa. Explica cada paso en detalle y proporciona información sobre los requisitos necesarios como el software MPLAB, un programador como Prog2, y tarjetas para probar el programa. También describe las memorias del PIC16F84, incluida la memoria de programa de 1024 instrucciones y la memoria de datos de 80 registros de 8 bits.
Este documento describe cómo programar un microcontrolador PIC12F629 usando el software NIPLE para generar una señal cuadrada de 2 kHz. Explica que NIPLE permite programar el PIC de forma gráfica sin necesidad de usar lenguaje de máquina, a través de iconos que representan las operaciones. Luego guía al lector paso a paso para crear el programa que genera la señal cuadrada deseada en solo unos minutos. Finalmente menciona que se necesita un programador externo para cargar el programa compilado en el PIC.
Este documento presenta un tutorial para crear un contador ascendente de 0 a 9 usando un PIC16F628A y un display de 7 segmentos. Explica los materiales necesarios como el microcontrolador PIC, el display, resistencias y una placa de prueba. Luego detalla los pasos para programar el PIC en lenguaje BASIC para mostrar cada número en el display, haciendo uso de subrutinas para representar cada dígito. El código genera un ciclo que muestra secuencialmente cada número cada 900 milisegundos. Finalmente, muestra un diagrama
Este documento introduce el entorno de desarrollo MPLAB para microcontroladores PIC. Explica cómo crear un proyecto en MPLAB, incluida la selección del dispositivo PIC, la creación de un archivo de código fuente y la configuración del proyecto. También describe cómo depurar y simular el código mediante MPLAB, así como cómo descargar el programa compilado a un microcontrolador PIC conectado a través de un programador.
El documento resume los Capítulos IV y V de un paper sobre computación física. El Capítulo IV explica los componentes básicos de un microcontrolador y cómo construir un primer circuito con un LED. El Capítulo V introduce conceptos básicos de programación como bucles, condicionales, variables y subrutinas, y explica cómo depurar programas.
Este documento describe el entorno de desarrollo integrado Proton IDE Plus y cómo usarlo con el kit de programación PIC Kit 2 Clone para escribir programas en lenguaje BASIC para microcontroladores PIC. Explica cómo instalar el IDE, configurar el programador, escribir un programa simple para encender LEDs y compilarlo y transferirlo al microcontrolador. También resume las características de los puertos del microcontrolador PIC18F4550.
mi sector es muy tranquilo
los vecinos siempre colaboran , lo que mas me gusta de mi sector es el parque salazar, la iglesia el huerto de Dios donde congrego y el complejo deportivo de manco capac
2. LEER PARA APRENDER / Por: Jorge Rdz, Editor
Pasó casi un año desde que ya no había realizado ninguna práctica utilizando
Microcontroladores PIC16, del cual me ha fascinado bastante ya que un día me
pregunte, Es necesario aprender Microcontroladores? Donde lo puedo aplicar? Estas
dos cuestiones me las hacía muy seguido, entonces un día, en mi trabajo encontré en
una maquina avanzada que había tenido una falla, ya que mi trabajo se trata de reparar
fallas en equipos, pues tuve que ir a ver que era esa tal falla, pues no era más que una
tarjeta de control que se había quemado unos diodos, no fue muy difícil saber que era
la falla, y después como tenía tiempo necesario para hacer otras cosas me la pase
revisando que mas tenia o de que estaba compuesto la tarjeta y vi que había un
Microcontrolador y una calcomanía tapando de qué tipo de Micro usaba, no espere
mucho tiempo para saber cual era, y valla sorpresa era un MicroPIC 16C57 cuando lo
vi me recordó todas las practicas que había hecho con anterioridad, desde ese
momento supe que las horas perdidas pasándola programando y realizado proyectos
con esos PIC ahora sé a dónde van los conocimientos adquiridos de tantas horas
programando Microcontroladores PIC y sé que vale la pena seguir programando!.
3. Introducción
Este Manual concerniente a las prácticas sobre la utilización de comunicación serial
utilizando como hardware el Microcontrolador PIC16F886 y Labview para la interface
Hombre-Máquina fueron realizados para abrirnos paso a realizar nuevas maneras de
programar en Labview, y usando el compilador MPLAB X IDE para la programación en
C para Microcontroladores PIC16.
A lo largo de este manual usted entenderá como hacer correctamente un enlace Serial
hacia Labview y PIC16.
4. 1. MPLAB X
Recientemente Microchip ha lanzado un proyecto para mejorar el aspecto de su IDE en
este caso de MPLAB. En su reciente actualización 8.80 ha mejorado en sus aspectos
con unos pocos detalles del cual no son muy impactantes como son la competencia
casi directa con AVR son su AVRStudio 5, del cual es casi como programar en C#. Era
tiempo de que Microchip se pusiera las pilas y que lanzara su nuevo IDE basado en
JAVA, hablamos de MPLAB X.
5. 1.1 PROTEUS
Una de las maneras de realizar un proyecto siempre es simularlo antes de empezar
hacerlo físicamente ya que nos ahorra tiempo en construcción y sacar fallas antes de
proceder, para nuestro caso usaremos una herramienta sumamente importante para la
simulaciones de circuitos lógicos y programables entre varios más, estamos hablando
de PROTEUS, simulador muy conocido entre toda la comunidad de electrónica y de
control.
6. 1.2 LABVIEW
Para la interfaz del usuario usaremos el software Labview 2010 donde aprenderemos a
desarrollar comunicación seriales a su máxima capacidad, entre otras herramientas
necesarias para desarrollar sistemas muy estables para las comunicaciones.
7. 1.3 INICIANDO EN MPLAB X
En esta parte nos enfocaremos en la programación en C usando el compilador HI
TECH FOR PIC16 del cual nos proporcionara la habilidad para programar los PIC de
una manera muy sencilla ahorrando memoria al máximo.
1.3.1 Entorno de MPLAB X
En nuestra primera impresión de usar MPLAB X es como si fuera una sombra de JAVA,
pero es muy distinto ya que es para Microcontroladores PIC.
1. Exploramos librerías del proyecto tanto los archivos principales.
2. Observamos el contenido de los archivos tanto las librerías y el programa principal.
3. Aquí podemos ver la información concerniente al Microcontrolador.
4. Salida donde podemos observar errores al compilarse el archivo también podemos
debuggear el programa.
1
2
3
4
8. 1.3.2 Crear Nuevo proyecto
Para crear nuestro primer proyecto debemos de dar click en donde dice <Create New
Project> o podemos ir a <File><Creare New Project>
Como haremos nuestro proyecto desde cero daremos click en <Standalone Project>
daremos <Next> y elegiremos el Microcontrolador a usar en este caso para todos los
proyectos usaremos el PIC16F886.
9. Si tenemos un debugeador en nuestras manos podemos seleccionar uno de ellos como
puede ser el PICKit 2, 3 etc. Como vamos a usar un emulador simplemente
seleccionamos:
En la siguiente ventana encontraremos que compilador vamos a usar, normalmente por
default encontremos los disponibles en nuestra computadora.
10. Usaremos el compilador Hi tech Compiler for PIC16 , después buscaremos un lugar
para guardar nuestro proyecto y aceptamos.
Como en MPLAB 8.8 al tener el proyecto listo debemos de hacer una extensión “.c”
para ellos vamos a <New File> y en ventana de categorías buscaremos en <Micochip
embedded> y elegimos la carpeta donde está el compilador hi tech y en <File Type>en
la primera opción es que estamos buscando para el compilador hi tech for PIC16. En la
siguiente ventana nos pedirá el Nombre del archivo y la extensión después la ubicación
del archivo del cual debe ser la misma donde creamos el proyecto.
Al agregar el archivo con la extensión “.c” aparecerá en el explorador en <Important
Files> del cual solo debemos de pasarlo nuevamente a la carpeta <Source File> para
que este bien ubicado a la hora de compilar.
11. 1.4 Crear enlaces
Como hemos realizado nuestro primer proyecto en MPLAB X no tiene mucha ciencia la
programación en C, ya que si hemos programado en Hi tech compiler es prácticamente
igual.
La idea de nuestro primer programa en C es hacer una comunicación serial que prenda
un puerto completo del cual podemos usar interrupciones por Recepción de datos o
simple recepción de datos.
1.4.1 Enlace PIC
En la segunda opción podemos hacer un programa que nos quede de la siguiente
manera:
/*
* File: Main.c
* Author: george
*
* Created on November 13, 2011, 6:34 PM
*/
#include "pic.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF
& IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF & BOR4V_BOR40V & WRT_OFF);
/*
* FOSC_HS 20Mhz External Crystal
* WDTE_OFF Watch dog disable
* PWERTE_ON Power System Enable
* MCLRE_ON Master Clear Enable
*/
#define _XTAL_FREQ 20000000 //
#include "libUSART/usartdr.h"//Libreria para usar el serial
/*
* VARIABLES GLOBALES DEL PROGRAMA
*/
unsigned char data;
//ISR Interrupt
static void interrupt
isr(void){}
//Programa Principal
void main(void) {
TRISC=0x80;//RX COMO ENTRADA Y TX COMO SALIDA
TRISB=0X00;//PUERTO COMPLETO COMO SALIDA
/*
* CONFIGURAMOS SERIAL
* VALUE=(FOSC/(BAUD*16))-1
* SIN INTERRUPCIONES
* A 19200
*/
12. OpenUSART(64,OFF,ON);//64=19200
GIE=0; //DESACTIVA INTERRUPCIONES GLOBALES
PEIE=0; //DESACTIVA INTERRUPCIONES POR PERIFERICOS
PORTB=0X00; //INICIALIZA PUERTO B COMO APAGADO
while(1){ //CICLO PERPETUO
data=getch(); //ESPERA A RECIBIR 1 BYTE DEL SERIAL
PORTB=data; //PROYECTA EL BYTE EN EL PUERTO B
}
}
1.4.1 Crear enlace en Labview
Lo que primero se debe de realizar en Labview es crear un <New VI> después al
abrirse las dos ventas de Block diagram y Front Panel , nos pasaremos a la ventana de
Block Diagram del cual buscaremos la opción de SERIAL, que está ubicado en
<Functions> <Instrument I/O> <Serial> y seleccionamos la opción de VISA Configure
Serial Port que nos servirá para configurar los baudios, bits de paridad entre varias
opciones más.
Al agregar el control de configuración de puerto
agregaremos dos controles que harán la función
de buscar el puerto que es VISA resource name
que cada vez que exista un puerto disponible, este
lo visualizara. En baud rate por defecto esta a
9600 que podemos cambiar fácilmente escribiendo
sobre la velocidad de transmisión.
Después de configurar correctamente el puerto,
ahora podemos hacer un ciclo perpetuo hasta que
salgamos con un stop.
Para ello buscaremos la opción de While Loop ,
después buscaremos la opción de escribir en el puerto, que consta de solo enviar una
cadena de caracteres pero en este caso solo enviaremos un byte, pero para enviar
este dato debe de transformarse de un arreglo booleano a numero y de este a un
arreglo de caracteres.
En la siguiente imagen tenemos la programación completa como debe de quedar
nuestro proyecto en Labview, recuerde siempre cerrar el puerto al terminar la conexión
para que este pueda cerrarse correctamente y que pueda seguir funcionando bien el
puerto seleccionado.
13. Si nos pasamos al lado de Front Panel nos quedara de la siguiente manera:
Recuerde que usaremos una velocidad de transmisión de 19200 baud por defecto
siempre aparecerá en 9200 baud.
Se debe de conectar primero el hardware que en este caso es el PIC16 ya que estará
esperando el dato de un byte, al este estar conectado daremos play en Labview para
correr el programa y rápidamente este enviara el primer dato, y ya podremos enviar los
estados de los switches.
Recuerde siempre usar el MAX 232 para las conversiones de niveles RS232.
14. 1.4.2 Esquema del Proyecto
Hemos usado un regulador de voltaje 7805 para proporcionarle al Microcontrolador
exactamente 5 Volts. En el Puerto B está conectado en cada pin un led con su
respectiva resistencia para poder visualizar el interruptor presionado en Labview.
Aunque el esquema es demasiado sencillo, hemos empezado con algo así, para
calentar motores, ay que su usted se ha dado cuenta en la programación hemos usado
una buena lógica para algo tan simple, entonces a lo largo de este curso usted
aprenderá a realizar cosas muy complejas con Labview y los Microcontroladores en
general, ay que este misma función que hemos creado en Labview se puede usar para
distintos Microcontroladores existentes en el mercado.
15. Siempre recuerde usar el circuito MAX232 para las conversiones del protocolo RS232,
ya que este protocolo aunque no sea mucha corriente a usar convierte de 5 volts a 12
volts aproximadamente.
1.5 Recibir datos del Pic Hacia Labview
Al recibir datos del Microcontrolador hacia Labview es un procedimiento demasiado
parecido a la práctica anterior, del cual el pic debe de capturar los datos y después
enviarlos. Para ello se debe de configurar correctamente el periférico de serial del pic a
una velocidad de 19200 baud, al guardar el dato leído del puerto B se debe llamar la
función que realiza el envío de datos hacia Labview. Al recibir los datos Labview este
debe de leer los datos existentes en ese momento para saber cuántos bytes necesita
leer y después capturar todos los datos que están guardados en su buffer, y
procesarlos hacer acciones.
16. 1.5.1 Configuración de PIC16F886
La diferencia del proyecto anterior es que ahora es hacer que el puerto B sea Entrada
digital, y usar interruptores para que tomar los datos y guárdalos en una variable, del
cual se enviara a Labview, para ello se agrega la librería USART como se realizo en la
práctica anterior, al tomar solo los 4 bits de menor peso del puerto B este solo se envía
para después esperar 100mS que servirán para sincronización.
/*
* File: Main.c
* Author: george
*
* Created on November 15, 2011, 8:22 PM
*/
#include "pic.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF
& IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF & BOR4V_BOR40V & WRT_OFF);
/*
* FOSC_HS 20Mhz External Crystal
* WDTE_OFF Watch dog disable
* PWERTE_ON Power System Enable
* MCLRE_ON Master Clear Enable
*/
#define _XTAL_FREQ 20000000 //
#include "libUSART/usartdr.h"//Libreria para usar el serial
/*
* VARIBALES GLOBALES
*/
unsigned char dato;
//Funcion de Tiempo
void dly(unsigned int t){
while(--t)__delay_ms(1);
}
//ISR Interrupt
static void interrupt
isr(void){}
//Programa Principal
void main(void) {
TRISC=0x80;//RX COMO ENTRADA Y TX COMO SALIDA
TRISB=0X0F;//NIBBLE BAJO COMO ENTRADA RESTO SALIDA
ADCON0=0x00;//DESACTIVA ENTRADAS ANALOGAS
ANSELH=0x00;//ENTRADAS ANALOGAS EN PUERTO B APAGADO
/*
* CONFIGURAMOS SERIAL
* VALUE=(FOSC/(BAUD*16))-1
* SIN INTERRUPCIONES
* A 19200
*/
OpenUSART(64,OFF,OFF);//64=19200
GIE=0; //DESACTIVA INTERRUPCIONES GLOBALES
17. PEIE=0; //DESACTIVA INTERRUPCIONES POR PERIFERICOS
while(1){
dato=PORTB&0x0F; //TOMA SOLO NIBBLE BAJO
putch(dato); //CARGA DATO EN EL SERIAL PARA ENVIARLO
dly(100); //ESPERA 100mS
}
}
1.5.3 Configuración de enlace en Labview
Como hemos realizado en el proyecto anterior se debe de crear un Nuevo IV, después
en la ventana Font Panel agregaremos unos cuantos arreglos para que nos quede de
la siguiente forma, note que esto puede ser a su gusto ya que lo más importante esta
en Block Diagram :
Visa resource name es donde podemos agregar el COM disponible del cual se puede
obtener al agregar las configuración del puerto.
Set up 19200 esto nos proporciona la velocidad a que
debe de trabajar la comunicación en Labview, como al
agregarlo por default aparecerá con una velocidad de
9 600 baud solo se debe de escribir la velocidad
deseada que en este caso es de 19200 baud como se
ha configurado el Microcontrolador.
Mientras por ultimo podemos observar un arreglo
boleando compuesto por solo 4 bits, que nos
proporcionara la visualización de 4 interruptores que
estarán conectado al nibble de menor peso del puerto
B del Microcontrolador.
Ahora entrando a lo más complicado que es la programación de este mismo, se debe
siempre de configurar primero que nada el serial, esto se hace buscando el IV <VISA
Configure Serial Port> del cual solo debemos de sacar dos parámetros que son el COM
y los BAUD.
18. Como ya hemos agregado la configuración del puerto, ahora se debe de crear un
evento, esto quiere decir que configuraremos un evento del cual al recibir un carácter o
un byte este rápidamente entrara, para ellos se debe de agregar el siguiente VI <Visa
Enable Event> nos pedirá un parámetro en particular que es la configuración del evento
o la selección del evento, tendremos varios de estos pero el más importante será al
recibir un carácter <Serial Character> después se debe de estar seguro de que este
correctamente sin evento en ese momento del cual se agrega <Visa Discard Event> y
nos quedar de la siguiente manera:
Ahora como puede o no fallar la conexión en un momento inesperado, se debe de
checar siempre el estado de este, se agrega la función <unbundle by name>
Para obtener los status de errores, solo debemos de seleccionar el ‘status’ para luego
usar el bit que nos arroja que es un ‘F’ cuando no hay errores de conexión o un ‘T’
cuando existen algún tipo de falla.
Para cuando la opción en Verdadera (T) solo se agrega un <case structure> que hara
la función de un if-else como en la programación en C.
En la ventana de Verdadero solo se directo las señales fuera del ciclo while-loop, como
se va en imagen siguiente:
19. Como vemos al salir del case structure se usa la misma señal de status para salir del
ciclo while-loop.
En la opción de False entra a esperar evento del cual hemos seleccionado Serial
Character la espera de timeout será de 10,000 mS del cual si en este tempo no se
recibe ninguna señal de recepción de al menos un byte este rápidamente enviara una
señal de error y se saldrá del ciclo o marcara error.
Al recibir una señal este rápidamente pasa al cuantos byte se recibieron del cual es
property node en la forma de <Bytes at port> (bytes en el puerto) este leerá todos los
bytes recibidos para después usarlos para usar el IV para leer los datos, y arrojarlos
como una cadena de caracteres (string)
Como hemos visto al recibir los datos en forma de cadenas de caracteres del cual solo
es un byte, solo se debe de transformar en un arreglo de bytes y después buscar en el
arreglo de bytes el primer byte para después transformar de número a un arreglo
binario que este ya visualizara el estado de los interruptores. Y después solo
cerraremos el puerto pero antes se debe de borrar cualquier evento antes abierto.
20. 1.5.3 Esquema del Diagrama Electrónico
2. Graficando señales análogas con DAC
Las mayorías de las veces necesitamos adquirir datos continuos, por ejemplo de
temperatura, Luz, y entre varios sensores que varíen con respecto a circunstancias
físicas. Después de tomar este dato análogo, se envía a una PC para procesar con
respecto a un algoritmo incluido en un tipo de software donde hace el proceso de
arrojar en la salida un dato digital o variable.
En esta práctica vas a proponer graficar datos continuos esto quiere decir que cada vez
que el Microcontrolador en s entrada análoga consiga leer el estado del sensor
rápidamente lo envié para apreciarlo en una grafica realizada en Labview con respecto
al tiempo.
1.2.1 Realización del Hardware y Software para el Microcontrolador
El primer paso es configurar puertos y entradas digitales o análogas, de esto solo se
debe de incluir la librería para el uso del convertidor análogo a digital, y después usar
solo una entrada análoga en este caso el AN0, estos datos se enviaran casi
21. instantáneo ya que usaremos nada mas un retardo de 1mS del cual nos servirá
también para adquirir correctamente la conversión de la variable análoga, y al tener
cargado esta variable se enviara por serial para que laview procese este dato y lo pase
a graficar.
Todo lo anterior se resume al programa siguiente:
/*
* File: main.c
* Author: george
*
* Created on November 17, 2011, 6:34 PM
*/
#include "pic.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF
& IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF & BOR4V_BOR40V & WRT_OFF);
/*
* FOSC_HS 20Mhz External Crystal
* WDTE_OFF Watch dog disable
* PWERTE_ON Power System Enable
* MCLRE_ON Master Clear Enable
*/
#define _XTAL_FREQ 20000000 //
#include "libADC/adcdr.h"
#include "libUSART/usartdr.h"
/*
* VARIABLES GLOBALES DEL PROGRAMA
*/
unsigned int value_adc;
unsigned char data[2];
/*
* SE OBTIENE EL DATO ANALOGO
* EN ESTE CASO AL LEER EL EL DATO SERA DE 1024 BITS
* DEL CUAL ES 2 BYTES
*/
unsigned int take_data_analog(){
__delay_ms(1);
startADC();
while(GO_DONE!=0);
return readADC();
}
/*
* SE DESPEJA EL DATO ANALOGO Y SEPARA LOS 2 BYTES
* PARQ QUE SE GUARDEN EN UN ARREGLO POR SEPARADO
* PARA PREPARARLO PARA EL ENVIO
*/
void convert_two_byte(unsigned int analog){
22. data[0]=(analog>>8)&0x03; //TOMA BYTE DE MAYOR PESO
data[1]=analog&0xFF; //TOMA BYTE DE MENOR PESO
}
/*
* ENVIA LOS DOS BYTES POR EL PUESRTO SERIAL
* ENVIA PRIMERO EL BYTE DE MAYOR PESO Y DEPSUES EL DE MENOR PESO
*/
void send_data_rs232(void){
putch(data[0]);
putch(data[1]);
}
//ISR Interrupt
static void interrupt
isr(void){}
/*
* FUNCION PRINCIPAL
*/
void main(void){
TRISA=0X01; //RA0 COMO ENTRADA ANALOGA
TRISC=0X80; //SE CONFIGURAMOS TX Y RX
/*
* CONFIGURAMOS SERIAL
* VALUE=(FOSC/(BAUD*16))-1
* SIN INTERRUPCIONES
* A 19200
*/
OpenUSART(64,OFF,OFF);//64=19200
/*
* CONFIGURAMOS ADC
* PUERTOB DESACTIVADO PARA ENTRADAS ANALOGAS
* SOLO SE ACTIVA EL RA0 COMO ENTRADA ANALOGA
*/
OpenADC(FOSC_32,AN0,OFF);
GIE=0;//INTERRUPCIONES GLOBALES ACTIVADAS
PEIE=0;//ACTIVA INTERURPCIONES POR PERIFERICOS
/*
* EMPIEZA EL PROGRAMA PRINCIPAL
*/
while(1){
value_adc=take_data_analog();//TOMA DATO ANALOGO
convert_two_byte(value_adc); //CONVIERTE A DOS BYTES
send_data_rs232(); //ENVIA DATOS
}
}
1.2.2 Graficado en Labview
Como hemos estado viendo en los proyectos anteriores siempre se debe de configurar
el puerto y los baudios que es lo más básico para empezar, ya si el usuario quiere
cambiar más opciones lo puede hacer. Por ahora como vamos a recibir datos debemos
de crear un evento, que es esperar por 10s un carácter del rs232, al recibir estos datos
23. rápidamente debe leerlos y mandarlos a procesar que no es más que juntar los dos
bytes y enviarlo a graficar.
Siempre una buena presentación del programa puede ayudar mucho a la hora de
comercializar un software, por eso nunca deje la presentación su proyecto a un lado.
25. 3. Control de Intensidad de lámpara
Esta práctica conlleva a la manipulación de una lámpara de 12
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
muestra en parte de una hoja de datos de un TRIAC.
Como sabemos un triac es un switch de par de tir
dispositivo puede abrir
corriente
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
3. Control de Intensidad de lámpara
Esta práctica conlleva a la manipulación de una lámpara de 12
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
muestra en parte de una hoja de datos de un TRIAC.
Como sabemos un triac es un switch de par de tir
dispositivo puede abrir
corriente en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
3. Control de Intensidad de lámpara
Esta práctica conlleva a la manipulación de una lámpara de 12
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
muestra en parte de una hoja de datos de un TRIAC.
Como sabemos un triac es un switch de par de tir
dispositivo puede abrir en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
3. Control de Intensidad de lámpara
Esta práctica conlleva a la manipulación de una lámpara de 12
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
muestra en parte de una hoja de datos de un TRIAC.
Como sabemos un triac es un switch de par de tir
en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
Esta práctica conlleva a la manipulación de una lámpara de 12
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
muestra en parte de una hoja de datos de un TRIAC.
Como sabemos un triac es un switch de par de tir
en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
Esta práctica conlleva a la manipulación de una lámpara de 12
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
muestra en parte de una hoja de datos de un TRIAC.
Como sabemos un triac es un switch de par de tiristores invertidos en paralelo,
en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
Esta práctica conlleva a la manipulación de una lámpara de 127VCA
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
istores invertidos en paralelo,
en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
7VCA del cual para
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
istores invertidos en paralelo,
en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
fig 3.0
del cual para
poder controlar corriente alterna se debe de usar un TRIAC de potencia como se
istores invertidos en paralelo,este
en cualquier dirección la corriente aplicando una pequeña
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
puede ser en control de intensidad de una lámpara, o control de velocidad de un motor.
fig 3.0
en la puerta. Es usado en aplicaciones donde involucre corriente alterna como
26. Un triac es un interruptor de estado sólido, una pequeña corriente en la terminal de la
puerta puede conducir una gran corriente, pensando que un triac como dos SCR
puesto en paralelo invertido cada uno de ellos, donde el cátodo de uno de los SCR está
conectado hacia el ánodo del otro y viceversa. La puertas están conectadas juntas,
porque tenemos dos tipos configuración de SCR’s esto permite activar amos a medios
ciclos.
En el ejemplo anterior el interruptor realice la función de cortar la corriente cuando sea
necesario, la idea es usar una pequeña corriente para controlar dispositivos de alto
voltaje como son motores y calentadores. Lo peligroso de aquí es el alto voltaje que
esta prendido en sí mismo. Esto puede ser un gran problema para los controles de
estado lógico al menos que usen un pequeño relay como lo hacen los microondas.
27. Para controlar con un Microcontrolador sin dañarlo por una sobre carga en la etapa de
potencia, se debe de usar un opto acoplador del cual se encarga de separar la etapa
de control que en este caso puede ser un microprocesador con la de potencia.
En la figura se puede observar un simple ejemplo de un control de una carga resistiva
esto puede ser una resistencia para generar calor, o una lámpara entre varios, mientras
en la Figura 8, es para cargas inductivas como puede ser motores con cruce por cero,
este último se refiere a que no hará caso a la onda negativa que genera la onda
sinodal.
Y cuando se desee usar las dos partes de la onda se recomiendo un opto con cruce
por cero.
28. 3.1 Control de Lámpara
Para empezar a entender el funcionamiento de encender lámparas con TRIAC y PIC,
necesitamos hacer una pequeña practica para calentar motores, primero que nada la
idea es encender una lámpara con Labview, del cual solo es ponerlo en encendido y
apagado.
3.1.1 Software para PIC
El programa consta de solo recibir un dato de Labview y reaccionar con forme a ello, el
dato será solo de un 1 byte y que solo responda con un comando cuando hay que
encenderlo o apagarlo, para ello se usara la interrupción por recepción de datos.
/*
* File: MAIN.c
* Author: george
*
* Created on November 24, 2011, 8:53 PM
*/
#include "pic.h"
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF
& IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF & BOR4V_BOR40V & WRT_OFF);
/*
* FOSC_HS 20Mhz External Crystal
* WDTE_OFF Watch dog disable
* PWERTE_ON Power System Enable
* MCLRE_ON Master Clear Enable
*/
#define _XTAL_FREQ 20000000 //
#include "libUSART/usartdr.h"
//definiciones de variables globales
unsigned char DATA;
//definiciones de trabajo
#define LAMPARA_ON RB7=1
#define LAMPARA_OFF RB7=0
//ISR Interrupt
static void interrupt
isr(void){
if(RCIF){ //HEMOS RECIBIDO UN DATO?
RCIF=0; //RESET A FLAG DE INTERRUPCION DE DATO
DATA=getch();//TOMAMOS DATO
if(DATA==0xFF){//ES PARA ENCENDER?
LAMPARA_ON;
}
if(DATA==0x77){//ES PARA APAGAR
LAMPARA_OFF;
}
}
}
29. /*
* FUNCION PRINCIPAL
*/
void main(void) {
TRISB=0; //PUERTO B COMO SALIDA
TRISC=0X80; //SE CONFIGURAMOS TX Y RX
PORTB=0;
/*
* CONFIGURAMOS SERIAL
* VALUE=(FOSC/(BAUD*16))-1
* SIN INTERRUPCIONES
* A 19200
*/
OpenUSART(64,OFF,ON);//64=19200
GIE=1;//ACTIVAMOS INTERRUPCIONES GENERALES
PEIE=1;//ACTIVAMOS INTERRUPCIONES POR PERIFERICOS
while(1);
}
3.1.2 Software para Labview
La estrategia a seguir que al usar un interruptor virtual que solo mande verdadero o
falso, con este dato booleano entrara a un case structure del cual este elegirá que dato
debe de enviar, en este caso como hemos programado en el Microcontrolador que al
recibir el dato 0xFF mande a prender la lámpara sino el dato 0x77 para apagar la
lámpara.
En Labview la programación es muy sencilla como podemos verla en el block diagram:
30. Simple no? Solo enviamos el dato 255 que corresponde en hexadecimal 0xFF, y el
dato 119 que corresponde a 0x77, después es subministrada para convertirse a arreglo
y después convertir de arreglo a string.
En la parte de front panel podemos hacer unos cuantos arreglos para que nuestro
programa quede bien hecho.
3.1.3 Diagramas
El diagrama que a continuación se da es solo la etapa de potencia del cual consta de
un moc3011 que es un optoacoplador a salida a triac esto quiere decir que podemos
usarlo para conectarlo directamente a gate del TRIAC que estará conectado a la carga.
En el Microcontrolador es igual del cual hemos estado trabajando conectado al
max232, nada mas que en el pin RB7 vamos a conectar el led del optoacoplador para
encender la lámpara cuando mandemos el dato de Labview al Micro.
31.
32. 3.1.4 Fotos del Proyecto
3.1.5 Tomando Señal
Ahora antes de desarrollar la practica deseada, debemos de entender cómo debemos
de tomar la referencia de la onda senoidal , esto quiere decir que al tomar la onda
positiva debemos de obtener la señal convertida a un nivel legible por el
Microcontrolador esto quiere decir que debemos de rectificar la entrada usando un
diodo antes de rectificador de onda completa, para después activar un transistor que
está alimentado con tan solo 5 volt esto hará una onda cuadra a nivel TTL, para
después entre el Microcontrolador para saber cuando está en la onda positiva y cuando
está en la onda negativa, o en pocas palabras cuando cruza por cero.
33. Representación de la Idea:
Al realizar el siguiente circuito en la salida del transistor debemos de tener una onda
cuadra de 0 a 5v, del cual este entrara al Microcontrolador para decir cuando esta el
ciclo positivo y cuando está en el ciclo negativo.
La señal generada antes y después del diodo es el siguiente:
Escala 2 volts.
Salida después del transistor
Entrada a la base del transistor
Con esta señal cuadrada que
genera es de 0 a 5 v, del cual ya podemos
trabajar con ella. Es muy fácil ahora que
tenemos esta señal TTL, ya que podemos
usarla como una entrada para el
Microcontrolador, en este caso para el
pic16f886, tiene un PIC muy especial del
cual es la entrada para usar el Timer0
como contador de pulsos externos.
Entrada para el
PIC
34. En la programación del Microcontrolador se debe de hacer un ciclo perpetuo del
cual este integrado por un tiempo de retraso de envio que es de 1 segundo. Después
de este lapso de tiempo será tomado el valor actual del contador (Timer0) para enviarlo
a Labview.
El software es el siguiente:
/*
* File: main.c
* Author: george
*
* Created on November 29, 2011, 8:14 PM
*/
#include "pic.h"
__CONFIG(FOSC_HS& WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF
& IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF & BOR4V_BOR40V & WRT_OFF);
/*
* FOSC_HS 20Mhz External Crystal
* WDTE_OFF Watch dog disable
* PWERTE_ON Power System Enable
* MCLRE_ON Master Clear Enable
*/
#define _XTAL_FREQ 20000000 //
#include "libUSART/usartdr.h"
/*
* VARIABLES GLOBALES DE TRABAJO
*/
unsigned char senal;
/*
* FUNCION DE TIEMPO
*/
void dly(unsigned int t){
while(--t)__delay_ms(1);
}
/////////////////////////////////////////////////
//Funcion de interrupcion
//Si no se usa simplemente no hacemos nada...
//Esto sirve para direccionar lo los datos
//en un lugar muy cercano al Inicio de la memoria
//de datos
////////////////////////////////////////////////
static void interrupt
isr(void){}
/*
* PROGRAMA PRINCIPAL
*/
void main(void) {
/*
* Inicliazamos Puertos
*/
35. ANSELH=0X00;//Analogo desactivado
TRISA=0x10; //RA4 como entrada resto salida
TRISC=0x80;//
ADCON0=0x00;//
/*
* Inicializamos TIMER0
* Entrada de senal extarna,Prescalar 1:2
*/
OPTION_REG=0b10100000;
/*
* CONFIGURAMOS SERIAL
* VALUE=(FOSC/(BAUD*16))-1
* SIN INTERRUPCIONES
* A 19200
*/
OpenUSART(64,OFF,OFF);//64=19200
TMR0;
GIE=0;
PEIE=0;
while(1){
TMR0=0; //Reseteamos Contador
dly(1000); //Esperamos 1 Segundo
senal=TMR0;//Leemos El contador
putch(senal);//Enviamos dato
}
}
El programa en Labview es demasiado sencillo, del cual solo debe de recibir un dato (1
byte) este dato debemos de convertirlo a string, ya que hemos referenciado que el dato
recibido es un dato de Hz, del cual se debe juntar dos string por esta razón se usa la
función, “concaténate” para unir el ‘dato’ + “Hz”
36. En front Panel podemos ver cómo queda
nuestro programa, lo que debemos hacer
primer es Iniciar Labview y después
conectar rápidamente el hardware que es
el Microcontrolador.
Este marcara la frecuencia que tiene la
conexión VCA.
El diagrama a Manejar es el siguiente:
P. 1
P.2
38. 3.1.6 Manipulando la Intensidad de lámpara
Como hemos realizado en las dos prácticas anteriores, al controlar el encendido de la
lámpara y tomando la señal, al combinar las dos podemos crear un controlador de
intensidad de una lámpara, esto va a controlar la onda senoidal de voltaje de entrada
que son 127 VCA.
Para controlar la onda senoidal se debe de rectorar ambas ondas positiva y negativa
para hacer eso se debe de generar un PWM de la misma frecuencia pero cuadrada, del
cual esta señal PWM debe de recortar la onda exactamente cuándo cruce por cero.
He recortado la onda de inicio tanto para la positiva y negativa porque ya que la onda
está decayendo el resultado es menor potencia del cual se reflejara en intensidad, y
podemos ver mucho mejor el descenso de la iluminación de la lámpara. Ya que si fuera
al contrario no veremos mucho el cambio que realiza de intensidad ya que como la
onda empieza a subir tiene mayor potencia y aunque variemos el PWM al principio de
la onda este no reflejara mucho el cambio de intensidad de la lámpara.
Como hemos realizado en la segunda práctica de este proyecto al obtener los ciclos o
los hertz de la corriente alterna, al usar ese método podemos sincronizar la frecuencia
PWM con la onda senoidal, ya que al cruzar por cero podemos apagar el optoacoplador
exactamente e iniciar el pulso PWM donde deseamos y cuando vuelva a cruzar por
cero apagamos y esperamos a iniciar el pulso para que de la lámpara encienda, y
obtendremos un ancho de pulso proporcional a la frecuencia de VCA.
39. El firmware del Microcontrolador es muy sencillo usando l interrupción por recepción de
datos (Rs232) y la interrupción por desbordamiento por timer0, podemos hacer esta
práctica:
/*
* File: main.c
* Author: george
*
* Created on December 3, 2011, 1:45 PM
*/
#include "pic.h"
__CONFIG(FOSC_HS& WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF
& IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF & BOR4V_BOR40V & WRT_OFF);
/*
* FOSC_HS 20Mhz External Crystal
* WDTE_OFF Watch dog disable
* PWERTE_ON Power System Enable
* MCLRE_ON Master Clear Enable
*/
#define _XTAL_FREQ 20000000 //
#include "libTIMER0/OpenTIMER0.h"
#include "libUSART/usartdr.h"
/*
* DEFINICIONES GLOBALES
*/
#define PIN_INTENSIDAD RC0
/*
* VARIABLES GLOBALES
*/
unsigned char BUFFER=127;
/////////////////////////////////////////////////
//Funcion de interrupcion
//Si no se usa simplemente no hacemos nada...
//Esto sirve para direccionar lo los datos
//en un lugar muy cercano al Inicio de la memoria
//de datos
////////////////////////////////////////////////
static void interrupt
isr(void){
if(T0IF){
T0IF=0;
PIN_INTENSIDAD=1;
T0IE=0;
}else if(RCIF){
RCIF=0;
BUFFER=getch();
}
}
/*
* PROGRAMA PRINCIPAL
*/
40. void main(void) {
/*
* CONFIGURAMOS PUERTOS
*/
TRISA=0X10; //RA4 COMO ENTRADA RESTO SALIDA
TRISC=0X80; //RC7 COMO ENTRADA Y RC6 COMO SALIDA
ANSELH=0X00; //PORTB DIGITAL
ADCON0=0X00; //APAGAMOS CONVERTIDOR ANALOGO
CM1CON0=0x00;
CM2CON0=0x00;
/*
* Configuramos Timer 0
* FORMULA:
* TMR0=256-{TIEMPO_DESEADO/[(1/(_XTAL_FREQ/4)*PRESCLAR]}
* Tiempo Requerido T=0.004 s
* Valor del timer 0 a cargar = 50
*/
OpenTIMER0(prescalar_256,OFF);
/*
* CONFIGURAMOS SERIAL
* VALUE=(FOSC/(BAUD*16))-1
* SIN INTERRUPCIONES
* A 19200
*/
OpenUSART(64,OFF,ON);//64=19200
GIE=1; //TODAS LAS INTERRUPCIONES APAGADAS
PEIE=1; //TODAS LAS INTERRUPCIONES POR PERIFERICOS APAGADAS
while(1){
if(RA4==1){
TMR0=BUFFER;
T0IE=1;
PIN_INTENSIDAD=0;
while(RA4==1);
TMR0=BUFFER;
T0IE=1;
PIN_INTENSIDAD=0;
while(RA4==0);
}
}
}
El software en Labview muestra una sencillez ya que solo enviaremos un dato al
Microcontrolador y este al recibirlo solo cargara la variable BUFFER con el dato
enviado desde Labview que es el dato que corresponde a la intensidad de la lámpara.
Hemos configurado el timer0 con un prescalar de 256 y a una frecuencia de trabajo de
20Mhz esto ayuda a que genere exactamente 8mS de desbordamiento como máximo.
Al enviar un dato de 0 a 255 este valor al ser cargado a la variable BUFFER carga
automáticamente al registro TMR0 del timer0 del cual indica cuando hay que
interrumpir para prender el led del optoacoplador, esto realizándose a 60Hz del cual el
PWM será del mismo valor de la frecuencia de VCA.
42. Diagrama:
RETOS:
Esta sección usted deberá de realizar las siguientes practicas que involucren un enlace
con Labview, estará a prueba para conocer si usted allá entendido correctamente las
practicas anteriores:
1.- Visualice y un dato análogo que usted desee, como puede ser un sensor de
temperatura, sensor de proximidad o lo que usted desee, solo que al leer un dato que
este fuera del rango señale cuando este en bajo nivel o alto.
Minvalor< DATO < Maxvalor
2.- Manipule dos lámpara de 127 VCA del cual pueda ajustar la intensidad de cada uno
de ellos por separado.
Nota: Cuando trabaje con 127 VCA tenga mucho cuidado a la hora de conectar o
tener un corto circuito, ya que habla con una de las corrientes más peligrosas.