UNIDAD 3 – PASO 4 – CONSTRUCCIÓN COLABORATIVA
Presentado a:
Juan Monroy
Tutor(a)
Entregado por:
Hernando Suarez
Código: 1038097001
Daniela Katerine Diaz
Código: 1.122.651.683
Jesus Esteban Montaña
Código: 1.193.109.256
Jhoan Sebastian Amaya
Código: 1.006.693.446
Bernando Salas
Código: 86088119
Grupo:203037_64
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA - UNAD
ESCUELA DE CIENCIAS BÁSICAS, INGENIERÍAS Y TECNOLOGÍAS
CURSO DE SOFTWARE AVANZADO PARA INGENIERIA
2020
INTRODUCCIÓN
En el siguiente trabajo colaborativo se encontrará un algoritmo elaborado en el software LabView para dar solución a un
problema planteado para simular a través de indicadores led unos tipos de energización aplicada a un motor paso a paso
unipolar. Al cual trabajara a la medida que un auto generador de grados le indique también se tiene la opción para que el
usuario pueda configurar la velocidad de giro para el motor, esta solución se platea basándonos en todos los
conocimientos adquiridos en el desarrollo de la clase tanto en la creación de vectores, llenado, cambio de dirección
como en la generación de datos aleatorios y uso de operadores matemáticas en la herramienta LabView
Problema a resolver
Es necesario construir un instrumento virtual que permita simular a través de indicadores de led, los tipos de
energización que es posible aplicar a un motor paso a paso unipolar, dándole la posibilidad al usuario de:
- Seleccionar el tipo de energización a simular
- La velocidad a la cual trabajar
- Seleccionar el sentido de giro (horario-antihorario)
- La resolución del motor paso a paso
- Pausar la simulación y reanudarla
- Resetear e iniciar de nuevo la simulación
Adicional a lo anterior incluir una sección donde se pueda calcular la cantidad de pasos a generar en el motor, para
lograr un giro de un ángulo x, generado aleatoriamente, así:
- Disponer de un botón para generar el numero aleatorio “n” entre 0 y 720° que indique la cantidad de grados a
rotar por el motor.
- Calcular la cantidad de pasos necesarios para generar la rotación del motor los “n” grados generados
anteriormente, de acuerdo al tipo de energización y resolución de paso ingresados por el usuario
- Exportar la cantidad de pasos calculados, el tipo de energización, resolución, velocidad y sentido de giro en el
que se trabajó el motor, a una hoja electrónica.
Algoritmo de la solución del problema planteado en el curso debidamente comentado:
INICIO
False -> “PAUSAR” //Rocker: Botón que pausa el programa, está conectado con un False Constant//
While Loop {
PAUSAR -> CASE STRUCTURE {// El botón de pausar está conectado con un Case Structures//
Vertical Fill Slide -> Wait(ms) //El Vertical Fill Slide, es la graduación de la velocidad del motor, así mismo está
conectado a un Wait(ms), este es el tiempo de encendido de cada LED, donde identifica los pasos //
// Se está creando las variables de los LEDs//
LEDs: A, A2, A3, A4, A5, B, B2, B3, B4, B5, C, C2, C3, C4, C5, D, D2, D3, D4, D5 <- LEDs indicadores de los tipos
de energización del motor.
Tab Control {// En un Tab Control, se genera 5 ventanas, donde están los tipos de Energización //
“Paso Simple” {
Horizontal Toggle Switch -> CASE STRUCTURE: // Botón que decide la dirección Horario – Antihorario, esta eta
conectado con un Case Structure //
Case: True “sentido Horario” {
// Estructura For Loop, que, para este tipo de energización, tiene 4 ciclos//
For Loop 4;1;1 {
(Se encienden los LEDs (A, B, C, D), uno por uno, y se van apagando sucesivamente, en sentido Horario)
Case: False “sentido Antihorario” {
For Loop 4;1;1{
(Se encienden los LEDs (A, B, C, D), uno por uno, en sentido Antihorario)
“Paso Doble” {
Horizontal Toggle Switch -> CASE STRUCTURE:
Case: True “sentido Horario” {
// Estructura For Loop, que, para este tipo de energización, tiene 4 ciclos//
For Loop 4;1;1{
(Se encienden primero el LED A2 y el LED B2, se apaga el LED A2 y se enciende el LED C2, Se apaga
el LED B2 y se enciende el LED D2, Se apaga el LED C2 y se enciende el LED A2, Se apaga el LED D2 y se enciende
el LED B2, así sucesivamente en sentido Horario)
Case: False “sentido Antihorario” {
For Loop 4;1;1{
(Se encienden primero el LED A2 y luego el LED D2, se apaga el LED A2 y se enciende el LED C2, Se
apaga el LED D2 y se enciende el LED B2, Se apaga el LED C2 y se enciende el LED A2, Se apaga el LED B2 y se
enciende el LED D2, así sucesivamente en sentido Antihorario)
“Medio Paso” {
Horizontal Toggle Switch -> CASE STRUCTURE:
Case: True “sentido Horario” {
// Estructura For Loop, que, para este tipo de energización, tiene 8 ciclos//
For Loop 4;1;1{
(Se encienden primero el LED D3 y el LED A3, se apaga el LED D3 y se enciende el LED B3, Se apaga
el LED A3 y se enciende el LED C3, Se apaga el LED B3 y se enciende el LED D3, así sucesivamente en sentido
Horario)
}
Case: False “sentido Antihorario” {
For Loop 4;1;1{
(Se encienden primero el LED A3 y el LED D3, se apaga el LED A3 y se enciende el LED C3, Se apaga
el LED D3 y se enciende el LED B3, Se apaga el LED C3 y se enciende el LED A3, así sucesivamente en sentido
Antihorario)
“Manual” {
Resolución del Motor: Grados // Se crea una variable, para la resolución del motor, que corresponde a los grados. //
Resolución=Grados/5,625 // El valor de los grados, se divide entre un dato que es dependiente del motor, para este caso,
es un motor unipolar //
Resolución -> N-For Loop {// El resultado de la operación anterior, se le asigna a la variable “N”, de una estructura For
Loop//
(Se encienden Los LEDs (A4, B4, C4, D4), y se van apagando sucesivamente, uno por uno, solamente en
sentido Horario, así cuantas veces sea, según los grados ingresados por el usuario)
// Para mostrar los Pasos dependiendo del grado, se muestra por un Numeric Indicator, está conectado a la variable “i”
dela Estructura For Loop//
i -> Numero de Pasos -> (Muestra la cantidad de pasos, cada vez que se encienden todos los LEDs, o cada vez que da
una vuelta por los 4 LEDs.)
“Aleatorio” {
// Se genera un numero aleatorio con ayuda de un Random Number (0-1), entre 0 y 720, como e proceso de la ventana
“Manual”, este número se divide entre un dato que es dependiente del motor, para este caso, es un motor unipolar, y el
resultado de la operación, se le asigna a la variable “N”, de una estructura For Loop//
Grados_Random: 0 - 720
ResolAleat=Grados_Random /5,625
ResolAleat -> N-For Loop {
(Se encienden Los LEDs (A5, B5, C5, D5), y se van apagando sucesivamente, uno por uno, solamente en
sentido Horario, así cuantas veces sea, según los grados ingresados por el usuario)
// Para mostrar los Pasos dependiendo del grado, se muestra por un Numeric Indicator, está conectado a la variable “i”
dela Estructura For Loop//
Numero de Pasos -> (Muestra la cantidad de pasos, cada vez que se encienden todos los LEDs, o cada vez que da una
vuelta por los 4 LEDs.)
APAGAR -> Loop Condition // Botón que apaga el programa //
FIN
Código de la solución del problema planteado en el curso (diagrama de bloques) debidamente comentado:
Rocker conectado a una Case
Structure, para realizar una pausa
cuando lo requiera el usuario
False Constant conectada
con una Variable Local del
botón para PAUSAR,
donde el valor inicial es
pausar en falso
Para el encendido de los LEDs, se utiliza una estructura For
Loop, se evidencia su operación para encendido de los
LEDs según el tipo de energización del motor; como puede
ser el paso Simple, el Paso Doble, el Medio Paso.
Con un Tap Control, se Con este Botón se decide la dirección de
crean las ventanas de los motor, dependiendo de su valor, puede
tipos de energización del seleccionar False o True, en cualquiera de
motor los casos, el orden de los LEDs es
contrarios, así se define la dirección.
Con este Vertical Fill Slide, según su
valor numérico; de 1 a 10, se Ok Button conectado al Loop Condición
multiplica por 1000, que de la estructura While Loop.
corresponde a un segundo, luego
este resultado se conecta aun
Wait(ms)
En la ventana “Manual”, del Tab
Control, tenemos un Numeric
Control, este son los grados que el
usuario puede decidir ingresar,
este valor se divide por un dato
que dependiendo del motor es un
valor único, en este caso es un
motor unipolar; este resultado se
le asigna a la variable “N” de la
estructura For Loop En una estructura Flat
Sequence, donde permite
definir en cada caso, que
LED encender y que apagar.
En un Numeric Indicator, se
evidencia el valor de los pasos que
debe dar el motor, según el grado
ingresado, este está conectado con
la variable “i” de la estructura For
Loop.
En una estructura Flat
Sequence, donde permite
definir en cada caso, que
LED encender y que apagar.
Se genera un numero aleatorio entre 0 y 720,
esto son los grados para analizar en el motor,
Se debe dar dos clics, a la vez, para general
dicho número aleatorio.
Como en la ventana anterior “Manual”, se
hace la misma operación y se le asigna el
resultado a la variable “N”, de la estructura
For Loop.
Numeric Indicator,
se evidencia el valor
de los pasos que
debe dar el motor.
Tab Control
Ventanas que definen los tipos de energización de
un motor paso a paso unipolar
Horizontal Toggle Switch
Control Booleano que contiene dos
Vertical Fill Slide estados True-False, On-Off. Controla el
sentido de giro del motor.
Control numérico. El
usuario programa la
velocidad de giro del
motor
Round LED OK Button
Indicador Booleano que representa datos que tienen dos Control Booleano que
estados True-False, On-Off. Simula el tipo de energización del contiene dos estados True-
motor paso a paso (Paso simple, Paso Doble, Medio Paso, False, On-Off. Va a resetear e
Manual, Aleatorio) iniciar de nuevo la simulación.
Rocker
Control Booleano que contiene dos
estados True-False, On-Off. Va a pausar
o reanudar la simulación.
Numeric Control
Control numérico
donde el usuario
ingresa el grado que va
a girar el motor.
Numeric Indicator
Indicador numérico
donde se visualiza el
número de pasos que
va a realizar el motor
según la resolución
programada.
Numeric Indicator
Indicador numérico
donde se visualiza el
número aleatorio que
es el grado a rotar del
Push Button
motor
Control Booleano que contiene dos
estados True-False, On-Off. Genera el
número aleatorio
Numeric Indicator
Indicador numérico
donde se visualiza la
cantidad de pasos para
generar el ángulo
aleatorio
CAPTURAS DE PANTALLA DEL FUNCIONAMIENTO DEL APLICATIVO:
CONCLUSIONES
Se da solución al problema planteado elaborando un algoritmo en LabView con indicadores led, botones y un motor
paso a paso.
La ayuda que entrega LabView es muy amplia, a este programa se le puede hacer una configuración donde puede ser
compatible con ARDUINO, funciona para hacer controlar el motor; en este caso. Pero sus trabajos y usos pueden ser
muy amplios
REFERENCIAS BIBLIOGRAFICAS
Lajara, V. J. R. (2007). LabVIEW: entorno gráfico de programación. Barcelona, ES: Marcombo. Capítulo 4. pág.
91-114. Recuperado de: https://elibro-net.bibliotecavirtual.unad.edu.co/es/ereader/unad/35715
National Instruments Corporation (2015) [Software LabView]. Recuperado
de: https://lumen.ni.com/nicif/esa/acadevallvdl/content.xhtml
Monroy, J. (2017). Tipos de datos. [OVI] Recuperado de: http://hdl.handle.net/10596/12744
Monroy, J. (2017). Optimización de instrumentos virtuales. [OVI] Recuperado de: http://hdl.handle.net/10596/12747