{"id":110,"date":"2018-04-10T19:03:58","date_gmt":"2018-04-10T19:03:58","guid":{"rendered":"http:\/\/jagumiel.xyz\/blog\/?p=110"},"modified":"2025-03-04T23:22:00","modified_gmt":"2025-03-04T23:22:00","slug":"simulacion-de-automatismos-en-labview","status":"publish","type":"post","link":"https:\/\/jagumiel.xyz\/blog\/2018\/04\/10\/simulacion-de-automatismos-en-labview\/","title":{"rendered":"Simula automatismos en LabVIEW con Arduino"},"content":{"rendered":"<h2>Introducci\u00f3n a los automatismos en LabVIEW<\/h2>\n<p>Hoy comparto en el blog un peque\u00f1o proyecto que he hecho usando el software de National Instrument LabVIEW, acompa\u00f1ado de una placa Arduino Uno. El objetivo: Simular automatismos en LabVIEW con Arduino,<\/p>\n<h3>\u00bfQu\u00e9 es LabVIEW?<\/h3>\n<p>LabVIEW es un entorno de desarrollo para dise\u00f1ar sistemas. Utiliza un lenguaje de programaci\u00f3n gr\u00e1fico propio. A diferencia de los lenguajes tradicionales, aqu\u00ed se usan funciones predefinidas y se unen mediante cables, es un paradigma distinto. En mi caso, como ingeniero inform\u00e1tico, estoy acostumbrado a leer y escribir c\u00f3digo, por lo que el cambio al lenguaje gr\u00e1fico, a veces es costoso.<\/p>\n<p>Para este proyecto trato de simular a trav\u00e9s de sensores el climatizador de un coche, el sistema de encendido de luces en modo autom\u00e1tico y la direcci\u00f3n. Es un ejemplo que me servir\u00e1 como excusa para jugar con las entradas anal\u00f3gicas y las salidas digitales.<\/p>\n<h2>Materiales<\/h2>\n<p>Los componentes electr\u00f3nicos utilizados se exponen a continuaci\u00f3n:<\/p>\n<p style=\"padding-left: 30px;\">\u2022 Arduino Uno<br \/>\n\u2022 Protoboard o placa de pruebas<br \/>\n\u2022 Sensor de temperatura LM35<br \/>\n\u2022 Diodos led<br \/>\n\u2022 Fotoresistencia<br \/>\n\u2022 Resistencias de 10k\u2126<br \/>\n\u2022 <a href=\"http:\/\/sine.ni.com\/nips\/cds\/view\/p\/lang\/es\/nid\/212478\" target=\"_blank\" rel=\"noopener\">Librer\u00eda LINX para LabVIEW de MakerHub<\/a><\/p>\n<div id=\"attachment_112\" style=\"width: 746px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Circuito_Sim_Arduino.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-112\" class=\"wp-image-112 size-full\" src=\"http:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Circuito_Sim_Arduino.png\" alt=\"Esquema b\u00e1sico de los materiales y su conexionado.\" width=\"736\" height=\"578\" srcset=\"https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Circuito_Sim_Arduino.png 736w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Circuito_Sim_Arduino-300x236.png 300w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Circuito_Sim_Arduino-150x118.png 150w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/a><p id=\"caption-attachment-112\" class=\"wp-caption-text\">Imagen 1. Diagrama del circuito sobre el Arduino Uno.<\/p><\/div>\n<h2>Desarrollo del Proyecto de automatismos en LabVIEW<\/h2>\n<p>LabVIEW tiene dos partes, por un lado, est\u00e1 el panel frontal, donde se dibujan los elementos gr\u00e1ficos de nuestro instrumento, y el diagrama de bloque, que es donde se \u201ccablean\u201d los diferentes componentes del sistema.<\/p>\n<h3>Dise\u00f1ando el Panel Frontal<\/h3>\n<p>En el panel frontal de este proyecto he puesto un salpicadero, con un potenci\u00f3metro que regula el PWM como volante del veh\u00edculo, a su izquierda, est\u00e1n los elementos del climatizador, que consta de un term\u00f3metro que representa gr\u00e1ficamente la temperatura real que recoge del sensor, un interruptor de dos posiciones para activar o desactivar el sistema y otro potenci\u00f3metro para seleccionar la temperatura deseada. En caso de que la temperatura real sea inferior a la deseada se encender\u00e1 un led rojo, indicando que sale calor, en el caso contrario, el led encendido ser\u00e1 de color azul. En el mismo panel, tambi\u00e9n hay la foto de un coche con dos leds en los faros. Se encender\u00e1n cuando haya menos de 300 l\u00famenes y se apagar\u00e1n si hay suficiente luminosidad.<\/p>\n<p>La direcci\u00f3n, como no dispon\u00eda de ning\u00fan servo por casa, la he simulado con dos leds. En caso de girar el volante a la izquierda, se iluminar\u00e1 el led izquierdo y variar\u00e1 su intensidad en funci\u00f3n del grado de giro, y al rev\u00e9s en caso de girar el volante a la derecha.<\/p>\n<p>El panel frontal se puede ver en la siguiente imagen. He reorganizado los componentes para que quepan bien en la imagen y se puedan mostrar todos a la vez.<\/p>\n<div id=\"attachment_114\" style=\"width: 862px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-114\" class=\"wp-image-114 size-full\" src=\"http:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal.png\" alt=\"Pantalla en la que se observa el panel frontal. Aqui veremos el reflejo de los automatismos en LabVIEW.\" width=\"852\" height=\"447\" srcset=\"https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal.png 852w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal-300x157.png 300w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal-768x403.png 768w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal-150x79.png 150w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><\/a><p id=\"caption-attachment-114\" class=\"wp-caption-text\">Imagen 2. Panel Frontal en LabVIEW.<\/p><\/div>\n<h3>Programando con Diagramas de Bloque<\/h3>\n<p>He querido mostrar un poco c\u00f3mo se programa en este lenguaje, y dado que el esquema del circuito es demasiado grande, he decidido cortar algunos cables y poner un peque\u00f1o fragmento. Para que funcionase ser\u00edan necesarios otros bloques, esto que muestro es s\u00f3lamente parte del algoritmo para leer la entrada anal\u00f3gica de Arduino \u00abA1\u00bb, que se corresponde al voltaje de la fotoresistencia. Con las operaciones que se hacen entre medias, es posible obtener, de una forma aproximada, la cantidad de luz en l\u00famenes.<\/p>\n<div id=\"attachment_116\" style=\"width: 473px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Algoritmo_lumenes.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-116\" class=\"wp-image-116 size-full\" src=\"http:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Algoritmo_lumenes.png\" alt=\"Diagrama de bloques en LabVIEW.\" width=\"463\" height=\"319\" srcset=\"https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Algoritmo_lumenes.png 463w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Algoritmo_lumenes-300x207.png 300w, https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Algoritmo_lumenes-150x103.png 150w\" sizes=\"auto, (max-width: 463px) 100vw, 463px\" \/><\/a><p id=\"caption-attachment-116\" class=\"wp-caption-text\">Imagen 3. Fragmento del diagrama de bloques en LabVIEW.<\/p><\/div>\n<h2>Resultado Final: Simulando el comportamiento<\/h2>\n<p>Y aqu\u00ed vemos el resultado final de los automatismos en LabVIEW. En los siguientes enlaces est\u00e1 el acceso al programa generado y al repositorio de adquisici\u00f3n de datos:<\/p>\n<p><a href=\"https:\/\/github.com\/jagumiel\/Data-Acquisition\" target=\"_blank\" rel=\"noopener\">Repositorio de adquisici\u00f3n de datos<\/a><br \/>\n<a href=\"https:\/\/github.com\/jagumiel\/Data-Acquisition\/tree\/master\/LabVIEW\/car_simulation\" target=\"_blank\" rel=\"noopener\">Programa\/Simulaci\u00f3n en LabVIEW<\/a><\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/6TQPyJZ6jhY\" width=\"520\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 33%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-110 gallery-columns-3 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/jagumiel.xyz\/blog\/2018\/04\/10\/simulacion-de-automatismos-en-labview\/circuito_sim_arduino\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Circuito_Sim_Arduino-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/jagumiel.xyz\/blog\/2018\/04\/10\/simulacion-de-automatismos-en-labview\/panel_frontal\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Panel_Frontal-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/jagumiel.xyz\/blog\/2018\/04\/10\/simulacion-de-automatismos-en-labview\/algoritmo_lumenes\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/jagumiel.xyz\/blog\/wp-content\/uploads\/2018\/04\/Algoritmo_lumenes-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/>\n\t\t<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Aprende a simular automatismos en LabVIEW en Arduino con un sistema de calefacci\u00f3n e iluminaci\u00f3n para coches, con sensores seg\u00fan temperatura y luz ambiente.<\/p>\n<p class=\"continue-reading-button\"> <a class=\"continue-reading-link\" href=\"https:\/\/jagumiel.xyz\/blog\/2018\/04\/10\/simulacion-de-automatismos-en-labview\/\">Continue reading<i class=\"crycon-right-dir\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":112,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[7,5,6],"tags":[12,14,13,15],"class_list":["post-110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adquisicion-de-datos","category-hardware","category-sieav","tag-arduino","tag-hardware","tag-labview","tag-programacion-grafica"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":25,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":557,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/posts\/110\/revisions\/557"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jagumiel.xyz\/blog\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}