TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Fer_TACA en 06 de Julio de 2011, 13:04:24
-
Bueno como se aproximan las vacaciones quiero aprovechar el tiempo y avanzar más en el conocimiento de la programación y sobre todo de PICs.
Como dice el titulo quisiera embarcarme en un proyecto de mayor envergadura que los realizados hasta como leer entradas, escribir entradas, lecturas analógicas, visualizaciones en LCD.
En resumidas cuentas se trataría de realizar, a base de Pic naturalmente, una tarjeta adquisidora de datos y que a la vez pueda visualizar y/o presentar los datos en una pantalla bien sea de un Pc, pantalla táctil (HMI) algo similar.
Pretendo es que una vez capturados los datos pueda verlos, como digo, en la pantalla realizando la presentación como por ejemplos botones de leds que cambian de color al ser activados o no, graficar señales analógicas, activar salidas al actuar sobre un interruptor situado en la pantalla,……
La adquisición de datos no es que la tenga resuelta, pero pienso que no me podría dar muchos problemas, no necesito de momento velocidades de muestreo o captura grandes.
Lo que no tengo claro es como hacer la presentación en la pantalla, ni el software a utilizar. Sé que existen aplicaciones de NI como Labwiew o similares, pero aparte de ser muy costosas quisiera realizar yo mismo algo que fuese parecido pero de más bajo costo. Una vez realizado el programa que se compilase, se crease un ejecutable y no se necesitase tener los programas de diseño.
No sé qué software puedo utilizar y que no sea muy complicado de aprender. Tampoco sé si Visual puede valer o no, pero no tengo ni idea de cómo empezar. Me parece que existen otros de menor coste como el Profilab de Abacom (http://www.abacom-online.de/uk/html/dmm-profilab.html) pero no sé si se podría utilizar.
Resumiendo, agradecería cualquier sugerencia, guía de cómo empezar, si hay algo parecido, en fin todas esas cosas.
Agradecido de antemano
F.
-
Para aplicaciones PC creo que podrías usar Visual Studio, VB.net (Hay una versión gratuita) es bastante sencillo y hay bastante información. Hay ejemplos para comunicación serial o USB, como para establecer comunicación con el microcontrolador. Para dibujar la forma de la señal podes usar las herramientas de dibujo, lo cual permitirá realizar una visualización sencilla, o sino usar Dundas Charts, que tiene versiones de evaluación.
Cuando hablas de pantallas táctiles, te referís a pantallas gráficas con touch screen?
Saludos!
-
Hola, muy interesante tu proyecto.
concuerdo con suky en que puedes usar visual studio, yo en lo particular he usado el C# para hacer adquisicion de datos desde el pic y mostrarlos en pantalla de la pc, te pongo unas imagenes del programa que hice
esta es la interfaz
(http://img4.imageshack.us/img4/7931/hiper3.png)
y algunas imagenes de las graficas que me genero
(http://img263.imageshack.us/img263/5515/otherimage3.jpg)
(http://img199.imageshack.us/img199/2769/otherimage12.jpg)
me suscribo al hilo, quiero mejorar mi interfaz para hacerla un modulo de adquisicion de datos completo y poder contribuir en lo que pueda a este proyecto
-
Yo también me suscribo al hilo para ver cómo avanzas.
Coincido en que Visual Studio es idóneo, gratuito y, seguro que si buscas bien, encontrarás muchas cosas ya hechas que te sirvan.
-
Gracias a todos por las respuestas.
Por lo que paree la opcion del Visual Studia parece la mas votada, me pondré de lleno a buscar.
Cuando hablas de pantallas táctiles, te referís a pantallas gráficas con touch screen?
Si me refería a ellas.
Yo también me suscribo al hilo para ver cómo avanzas.
Tranquilo don manuel, que yo voy muy despacito con estas cosas. pero no dudes que lo que vaya avanzando lo iré indicando aunque me parece que al principio van a ser mas las dudas y preguntas :D ;-)
F.
-
Cuando hablas de pantallas táctiles, te referís a pantallas gráficas con touch screen?
Si me refería a ellas.
Bueno, allí hay que separar en 2, una parte es el LCD y su controlador, y otra es el touch screen y su controlador. Allí ya con el conjunto seleccionado hay que comenzar a buscar información. Si piensas usar una pantalla color, hay que utilizar un microcontrolador de buena capacidad, velocidad, pines I/O o PP, etc...
Saludos!
-
Bueno ya tengo el pc de nuevo casi operativo despues del ataque de troyanos.
Ya tengo descargado e instalado el Visual studio conel C++ y el Visual Basic.
Ahora voy a probar cada uno de ellos y recopilar informacion, asi como intentar trabajar con cada uno haciendo alguna cosilla muuuuuuuuuuy basica y ver por cual me decido.
F.
-
no incluiste el C#?
-
no incluiste el C#?
Si pero no sabia como escribirlo:
Ya tengo descargado e instalado el Visual studio con el C++ y el Visual Basic.
F.
Ahora estoy buscando algun tipo de miniguia para "TORPES"
F.
-
Está muy bueno el tema, lo voy a seguir de cerca. Tal vez pueda colaborar en algo
-
Hola amigos me apunto al tutorial :mrgreen:
Ahora bien donde me puedo bajar el VB.net que dice suky?
Y abra algun tutorial bueno por alli que me recomeniden para empesar?
Gracias
-
Hola Fer, si estás pensando mostrar los datos a través de un ordenador puede interesarte este programa sobre el que estuve leyendo ayer:
http://www.micset.net/
Se trata de un software que te permite crear una interfaz gráfica muy fácilmente, con controles que no son fáciles de encontrar en la mayoría de los lenguajes dee programación visual.
-
Muy interesante jfmateos2!
Lo estoy viendo porque precisamente eso quiero una interfaz grafica sencilla y con comunicacion serial!!! :mrgreen:
-
Ahora estoy buscando algun tipo de miniguia para "TORPES"
F.
hola, mira en esta pagina, es de la materia de programacion que tome en la licenciatura, espero te sirva, el tema 4 es de programacion orientada a objetos, tal vez a partir de ahi te sirva para empezar.
si no estan activas las practicas me dices y te las paso, creo que las tengo guardadas
http://gc.com.mx/tecnicas/ (http://gc.com.mx/tecnicas/)
-
hola, mira en esta pagina
Cual pagina?
-
hola, mira en esta pagina
Cual pagina?
:roll:
jeje, perdon, ahi va la pagina
http://gc.com.mx/tecnicas/ (http://gc.com.mx/tecnicas/)
-
Muchas gracias a todos por las respuestas.
¡¡ No pensaba al crear el tema que iba a tener tanta aceptacion !!!
Solo pretendia empezar a avanzar un poquito mas en mis conocimientos desde lo mas basico y veo que algunos ya van muchiiiiisimo mas adelantados. Si dije "Torpes" es por que prefiero empezar desde 0 patatero, peo vamos mas que nada si lo digo es por eso, soy torpe y duro para aprender
¡¡ No se si llegaré a estar a la altura !!!! Solo pretendo entretenerme un poquito durante las vacaciones.......
F.
-
Bueno despues de varios dias de leer un poco las prestaciones de cada programa que me han recomendado, al final creo que me voy a decidir por labwiew.
Ahora pasaré a ir realizando el esquematico y asignacion de pines al pcb que me estoy proponiendo realizar para luego comunicarme.
Segun vaya haciendo progresos, los iré posteando.
¡¡¡ Feliz vacaciones a los que las empicen o esten ya disfrutando!!!!!
F.
-
Mi tarjeta se basaria en tener disponobles las siguientes señales:
- 8 señales digitales de salida
- 8 señales digitales de entrada
- 8 señales analogicas
- 2 señales de PWM de salida
- 1 señal de entrada de frecuencia
- 1 señal de salida de frecuencia
- conexion RS232/485
- Comunicacion I2C para colocar algun integrado para ampliar los puertos de entrada de salida.
Aunque en la imagenaparecen pics de las serie 16F8xx, a la hora de realizar esquemtico y pcb voy a estudiar la viabilidad de colocar jumpers en los lugares (señales) adecuados para que se puedan seleccionar al menos algun pic de la serie 18F4xxx.
Bueno les adjunto una imagen, como ejemplo, de la asignacion de las señales a pines respectios que me gustaria utilizar
-
me gusta la idea de usar un 18F, se podria usar USB.
nopuedo ver la imagen, me aparece una cruz
-
Imagen solucionada
-
Y un PIC18F66J50 ? Podes implementar todo a la vez por la cantidad de pines que tiene sin utilizar jumpers, 2 MSSP, 2 UART, USB, etc... Genial para una placa de adquisición del estilo que comentas
Saludos!
-
Yo nose como rivale habrá hecho ese gráfico (talvez en el VC# 2010 venga una implementacion para esto (yo tengo el 2008)) pero en su tiempo encontre esta libreria muy flexible para crear graficos de este tipo y de otras muchas formas mas, aqui; http://www.codeproject.com/KB/graphics/zedgraph.aspx (http://www.codeproject.com/KB/graphics/zedgraph.aspx)
Lo he probado (Y)
-
Yo nose como rivale habrá hecho ese gráfico (talvez en el VC# 2010 venga una implementacion para esto (yo tengo el 2008)) pero en su tiempo encontre esta libreria muy flexible para crear graficos de este tipo y de otras muchas formas mas, aqui; http://www.codeproject.com/KB/graphics/zedgraph.aspx (http://www.codeproject.com/KB/graphics/zedgraph.aspx)
Lo he probado (Y)
en efecto estan hechos en C#2010, usando la herramienta que se llama chart precisamente, esa ya estaba en el 2008, y me parece que desde el 2005.
si ayuda mucho para gestionar los puntos y sobre todo acomodando los ejes. antes de saber que existia la funcion chart hice una aplicacion parecida que graficaba datos ajustando los ejes de las graficas, pero esto lo hice usando los GDI, fue un codigo muy extenso solo para hacer que se ajustara automaticamente al tamaño adecuado para mostrar los datos :2] :z).
pero ya usando chart se simplifico mucho, si quieres te paso el codigo del programa con el que hice las graficas de la pagina anterior para que lo cheques
-
Claro. Dale, Ponlo todo en un RAR :lol: Porcierto, no encuentro eso de chart por ningún lado (al menos no en el cuadro de herramientas...).
-
Claro. Dale, Ponlo todo en un RAR :lol: Porcierto, no encuentro eso de chart por ningún lado (al menos no en el cuadro de herramientas...).
enviado por correo, ya que no lo pude subir aca.
Saludos
-
epa, gracias.
-
Para vc++ se puede usar signalLab y para vb y vc# se puede usar dundas, seguramente para esto ultimo hay alguna herramienta free...
Saludos
-
Si, el zedgraph.
-
por pinouts el 16f877 y el 18f4550 son similares, salvo que el 4550 no tiene RC3 porque lo usa para el condensador del usb. Si finalmente usas labview te vendria bien hechar un vistazo al hilo de groundman sobre el uso de los Vis. Personalmente me gusta mucho labview tambien porque podes integrarll con Matlab que es poderosisimo y su lenguaje de programacion es sencillo.
-
por pinouts el 16f877 y el 18f4550 son similares, ...
No tanto, los pines de SPI e I2C no corresponden, RC4 y RC5 son solo de entrada, y como comentas no tiene RC3... Si usas SPI no podes usar UART, o por lo menos el pin RC7 :undecided:
-
Ya se que tiene diferentes funcionalidades los pines y por eso de los jumpers. Tambien que si uso la usart no puedo utilizar otro tipo de comunicaciones, pero tengan en cuenta que esto, como bien dije anteriormente, lo haria solo para aprender un poco el tema de las comunicaciones. Ademas ya engo algun montaje por ahi mas o menos para simular y tpuedo poner esos micros.
Quizas me haya puesto el liston muy alto, pero bueno me conformaré si consigo hacer pequeñas cositas y sobre todo el aprender como y por que funcionan.
SuKy: con respecto al micro PIC18F66J50, echaré un vistazo a su datasheet y poder tenerlo en cuenta si al final saco algo que pueda ser semiprofesional y montarlo en una pcb nueva.
Fermin
-
Avance de proyecto:
- Localizado labview: OK
- Instalado labview: OK
- Lectura de manuales: Algunos basicos
- 1º ejemplo: OK. Se adjunta imagen
F.
-
HOla, yo use recientemente el PlotLAB, pude hacer algunas cosas en Visual C++ y otras en Visual Basic.
Si interesan, me avisan y les envío los archivos.
SALUDOS!
-
tambien puede checar los ejemplos de VI de labview para los bloques que necesites(p.e. el de comunicacion serial), ayudan mucho
-
Bueno aqui les dejo unas capturas de los que pretendo hacer mas o menos con Labview.
Una vez accionado el boron de grafica 1, 2, 3 o 4 se desplegará una segunda pantalla donde una vez activado el boton de run em pezará a graficar hasta que se peresione el boton stop.
Mas adelante intentaré que se guarde en un fichero lo que se visualize en la pantalla, para mas tard poder imprimir si es que se quiere realizar.
Bueno ya ire presentando mas avances.
F.
P.D.: Para no llenar el foro, me podrian decir como adjuntar las imagenes desde algun servidor externo y a ser posible gratuito.
-
:-) :-)muy buenos avances.
para subir fotos puedes usar imageshack.com (http://imageshack.com) es gratuito y no borra las imagenes que subas
-
Bueno dejo un avance mas , despues de leer mucho y ver algunos ejemplos por ahi.
Pero tengo algun problemilla. En la imagen, en un recuadro en rojo, la conexion de paridad al Visa me aparece en rojo, creo que es un error pero por mas que configuro la cajita dichosa, no me desaparece. Lo digo por que en las otras me aparecian tambien y cambiando el tipo de datos se borraba la marca roja.
Otra cosa es que estoy intentando es que una vez que se lee el dato, poder tabajar con el y no encuentro la cajita que lo capturaria ni como tratarla.
Agradeceria alguna ayuda. ;-)
Una vez realizado lo anterior pasaria a conecarlo a las entradas y despues pasaria a realizar la parte de la escritura en el puerto serie para que el pic reciba el dato y pueda manejar las salidas. ero eso será despues. Que al paso que voy, creo que me demoraré, pero no cabe duda que estoy aprendiendo sobre todo donde se encuentran los controles.
F.
-
Hola Fer, para leer los datos usas el modulo VISA read, te dejo una imagen de ejemplo, una vez que conifigures tu puerto entras a un ciclo while para que este leyendo los datos, y haces lo que quieras con ellos.
(http://img204.imageshack.us/img204/5373/labviewserial.png) (http://imageshack.us/photo/my-images/204/labviewserial.png/)
para ponerle el control adecuado a la paridad, te recomiendo que sobre la terminal del modulo VISA le pongas boton derecho y luego le pongas "add control" o agregar control, no recuerdo muy bien la intruccion, pero te pone el contrl adecuado a esa variable
Saludos
-
Gracias por la ayuda Rivale, voy a probar.
Una cosa ¿la cajita esa rosa que aparece dentro del circulo rojo donde se localiza, pues por mas que la busco no la encuentro? ¿Una descripcion breve de la misma, podria ser?
-
Hola Fer, esta dentro de "programing" y luego en "string" es un cuadrito rosa que dice ABC. solo te sirve para imprimir lo que lees.
mas tarde te pongo una explicacion mas detallada
SAludos!
-
hola Fer_TACA.yo estoy usando la version de estudiante. 8.6
no se si habras conseguido enviar o recivir datos.te paso un archivo con un programa que realize hace ya tiempo.la forma basica de recivir un caracter desde
un puerto RS232.
lo primero que tienes que hacer es instalar el VISA 4.10 ese es el que tengo instalado.luego instalas el VSPE.es un programa para crear un puerto serie virtual.
para el ejemplo que te he adjuntado selecciona el com2.aunque puedes modificarlo si quieres.
y luego ejecutas el Hiper Terminal de windows.
ya solo tienes que ejecutar el programa y pulsar cualquier tecla.el programa visualizara la tecla pulasada.
tambien puedes enviar un dato por el puerto fisico del PC.pero con el emulador es mas facil.
si tienes alguna problema no dudes en decirmelo.
saludos.
-
Gracais a ambos Rivale, Groundman.
Esta tarde lo revisaré con calma.
Aunque, Groundman, me parece que no voy a poder abrir el fichero. Mi version es 8.2 y no creo que pueda abrir una version superior. Estoy al tanto de adqirir ;-)la version 10.
de todas formas voy a ir probando las cosas que me habeis comentado como pruebas adicionales.
F.
-
Sigo avanzando lentamente con el programita. ¡¡¡ Cuan dificil es encontrar la cosas!!!!
Bueno conseguí eliminar el error de la configuracion de la Visa serial. Ahora veo qu lo mas facil es una vez colocada en la pantalla el situarse encima de cada terminal y con el boton derecho seleccionar "ADD control" y despues si no te gusta pasarlo a Constante siempre y cuando vayas a utilizar siempre la misma configuaracion y que durante tu programa no terngas que cambiar ni velocidad, paridad,......
Tambien encontre el simbolito de leer buffer segun se ve en la figura. Localizada de la misma forma y ahora me encuentro con el siguiente problema que es que voy a recibir 5 bytes: el primero sera para activar los indicadores digitales de arriba a la izquierda y los cuatro siguientes uno para cada indicador analogico( arriba a la derecha).
La verdad es que no se como lo trata labview para saber cual es cual. ¿Alguna idea?
f.
-
llevo mucho tiempo sin programar en labview.asi que el celebro no lo tengo muy bien sintonizado. :D
no se si voy por buen camino por lo que te he dicho antes.pero mas o menos me acuerdo de algo.
lo primero que tienes que hacer es tratar los bytes recividos uno por uno.para eso habria que separar esos datos y gestionarlos.
hace tiempo te daria la solucion rapidamente.pero ahoramisno necesitaria trabajarlo un poco para recordar las cosas.
asi que si pones el archivo intentare darte la solucion.
-
mira.ahora me acorde de un programa que realize para activar cosas.
(http://img402.imageshack.us/img402/3920/labviewregleta.jpg) (http://imageshack.us/photo/my-images/402/labviewregleta.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)la imagen puede ayudarte para conocer nuevos VIs.este programa hace lo contrario de lo que tu quieres hacer.pero igual te sirve algo.
aqui al pulsar un boton.el ordenador envia una secuencia de caracteres.que posteriormente un microcontrolador los identifica y activa una salida determinada.
en el principio de la estructura flat secuence no le hagas caso.solo solo sirve para almacenar el nombre de los botones en un archivo de texto creado en la unidad c:
es porque los ocho botones de programa puedes modificar el texto por si quieres activar una impresora.o un disco duro.u otra cosa.
la imagen puede ayudarte para conocer nuevos VIs.este programa hace lo contrario de lo que tu quieres hacer.pero igual te sirve algo.
aqui al pulsar un boton.el ordenador envia una secuencia de caracteres.que posteriormente un microcontrolador los identifica y activa una salida determinada.
en el principio de la estructura flat secuence no le hagas caso.solo solo sirve para almacenar el nombre de los botones en un archivo de texto creado en la unidad c:
es porque los ocho botones de programa puedes modificar el texto por si quieres activar una impresora.o un disco duro.u otra cosa.
-
Gracias por el aporte Groundman pero en la imagen no aprecio nada esta muy borrosa.
de todas forma por lo que indicas en tu post, esa seria un accion posterior, pues si ves mi imagen anterior hay colocado una cajita para escribir en el puerto 232, pero eso será mas adelante, quiero ir despacito intentando comprender todo.
En primer lugar los 5 bytes de que sadran del pic para ser leidos.
Como dije en el primer post pretendo enviar 5 bytes desde el pic para ver: 8 señales digitales(un puerto 1º byte) y 4 bytes de unas presiones analógicas previamnete pasadas a digitales (4 bytes siguientes). A continyacion seria mandar 3 bytes desde la pantalla de labview: el 1º el estado de 8 interruptores para mandar 8 salidas digitales del pic y los 2 bytes siguientes mandar sendos valores para comandar 2 salidas de PWM a traves del pic. Ese sería el proyecto.
Mas adelante, una vez conseguido, lo siguiente será poder graficar las señales analogicos recibidas.
F.
-
ya la he cambiado.aunque ahora creo que me he pasado. :lol:
-
entiendo que el pic mandara 5bytes.el primero lo utilizas para visualizar los bits en unos led del labview.y los otros 4bytes los utilizas para comandar algun
istrumento virtual del labview.
posteriormente quieres que unos interruptores del labview envien su valor en el primer byte.y los dos sigientes bytes,supongo que seran valores de entre 0 y 255 bytes.
que tiempo de actualizacion de datos vas a necesitar?
-
Hola Groundman:
Efectivamnete eso que indicas es lo que pretendo realizar en una primera fase.
Lectura por labview: 5 bytes, el primero para los leds y los 4 siguientes paara representarlos en inos, digamos relojes, instrumentos y ver el valor. En una 2ª fase estas 4 byes luego serian bien o tratados para realizar una grafica bien de tendencias o bien que a aprtir de un momento determinado empice a representarse ese valor en una grafica hasta que se decida parar de registrar.
Esritura desde labview: Siempre se enviaran 3 bytes uno que representaran el estado de 8 interruptores que se activaran en el labview y serviran para activar 8 salidas digitales del pic. Los 2 bytes siguientes se guardaran en unos registros para poder realizar el mando del duty cicle para unas señales de PWM
Respecto al tiempo de actualizacion todavia no lo he pensado lo ideal que fuese lo mas rapido posible, pero seria luego ir probando hasta dar con el mas idoneo.
Mas o menos las pantallas que prtendo realizar, se pulirán mas adelante, son las puestas en los primeros post.
Ahora si que veo la imagen mucho mejor, a mi edad la vista empiza a dar problemas........ :mrgreen: :D
Fermin
P.D.: Ahora es tan grande que no se aprecia, al menos en mi Pc la parte de la derecha donde estan las conexiones del 232. Si no es mucho pedir ¿no puedes adjuntar un pdf a oalgo asi para verlo mas nitidamnete.
¡¡¡ No he dicho nada en el pd!!!
-
Estoy intentando localizar los simbolos que has utilizado en la imagen para escribir en la 232 y a la hora de realizar la union entre 2 de ellos me sale error de conexion. Veo que en uno ess de color rojo el de la izquierda y el de la derecha es rosa por eso el error. Creo que el problema está en el de la izquierda creo que es el que has utilizado pero parece ser que no es el adecuado.
Adjunto una imagen con el mismo, dentro del circulo rojo.
F.
-
cuando sale la x roja.es porque no coincide los tipos.es decir.no se puede conectar un binario con un entero.
el VI que parece un triangulo.es como un interruptor.de las tres entradas el del centro.linea verde es un tipo binario.segun el valor que le indiques
1 o 0 pone en contacto el F "false" o la T"true" con la salida.
lo que tienes que hacer es conectar primero la salida con el cncatenate strings.y luego en la entrada del select function con el segundo boton del raton create constant.
prueva asi.muchas veces los tipos se seleccionan automaticamente segun los tipos que le conectes.
ah.ya he modificado la imagen.pero no se ve tan bien como antes.pero lo veras en el monitor.
-
Hola Fer, puedes realizar un array de booleanos y luego utilizas un bloque que se llama "boolean array to number". asi despues de la funcion ya tienes un byte para poder enviar por rs232
-
unas imagenes de lo que te comente arriba
(http://img225.imageshack.us/img225/4640/arreglo.png)
(http://img577.imageshack.us/img577/1801/sinttulokbf.png)
tambien adjunto el VI, pero esta hecho en lña version 10, a ver si lo puedes abrir
-
cuando sale la x roja.es porque no coincide los tipos.es decir.no se puede conectar un binario con un entero.
Ya lei que era por eso.
lo que tienes que hacer es conectar primero la salida con el concatenate strings.y luego en la entrada del select function con el segundo boton del raton create constant. Prueva asi.muchas veces los tipos se seleccionan automaticamente segun los tipos que le conectes.
Pues ese es el problema que no se deja
La imagen ya la vi perfectamnete.
Tambien adjunto el VI, pero esta hecho en la version 10, a ver si lo puedes abrir
De momneto no puedo hasta que no consiga esa version sigo con 8.2. Hasta la semana que viene no creo que disponga de ella.
voy a probar lo que has puesto, Rivale
F.
-
Bueno, he probado lo que indica Rivale y veo siempre el valor que tengo seleccionado con los inerruptores¿pero no se como introducirlo en el Wisa-Write para enviar el byte?
-
Bueno, he probado lo que indica Rivale y veo siempre el valor que tengo seleccionado con los inerruptores¿pero no se como introducirlo en el Wisa-Write para enviar el byte?
el visa write recibe como argumento una cadena de texto, en el ejemplo anterior solo tenia un control para ver que numero estabas creando con el arreglo de bits, enlugar de eso puede poner un VI para que convierta de numero a string y luego enviarlo por el visa.
pongo una imagen de ejemplo:
(http://img51.imageshack.us/img51/7020/visabyte.png) (http://imageshack.us/photo/my-images/51/visabyte.png/)
el visa no lo conecte completamente, solo le puse el buffer, pero ponle lo que falta y funciona
-
Muchas gracias Rivale, he probado y funciona correctamente como se puede ver en las graficas adjuntas.
Ahora me van saliendo nuevas dudas ya que segun el dibujo1 se ve en "write buffer" que estan los 3 valores juntos sin separacion y entiendo que de alguna forma se deberian de separar ¿Quizas intercambiando algun caracter especial entre los bytes?
Sin embargo en el digujo2 he duplicado las "wisa write" y tengo 3 bytes distintos como se ve en la grafica y que forma será la mas idonea y si alguna hay que corregir mas cosas.
De momento voy a seguir practicando con las salidas y me pondré a tratar las entradas que quizas sera como las anteriores pero al reves.
¡¡Hay que ver lo que me cuesta encontrar los simbolitos!!!
Gracias de nuevo
fermin
-
yo votaria por que concatenes varias cadenas, si quieres algun caracter especial para separar tus numeros puedes agregarselo ccon una constante dentro de la concatenacion
-
Fer_TACA me alegro de que vallan saliendo bien las cosas.me encantaria poder ayudar mas pero por ahora solo tengo un rato por la noche.y tengo tanto sueño que no puedo ni pensar.menos mal que rivale parece estar bien puesto en el tema.
me gusta mucho este software de programacion.pero como tu dices,es muy dificil encontrar las cosas.
ah rivale.no sabia que ya estubiera la version 10.espero que hayan arreglado lo de insertar imagenes en los botones.por si queremos poner un icono personalizado por nosotros mismos.
-
Rivale,
Yo tgenia pensado realizarlo con la concatenacion pues de ese modo podria deducir luego que es cada uno de los bits.
me imagino que la trnasmision segun la pantalla, primero mandaria el" 8" que se correspsonde con el byte de los interruptores; luego " 15 " que se corresponde con la señal de mando PWM1 y para finalizar el "35 "que es el corresponde con la señal de mando de la PMW2. Aunque estos dos valores al estar en decimal me imagino que habra que pasarlos a binario o hexadecimal antes de pasarlos al "concadenate" ¿Me equivoco?
Seguire realizando pruebas el lunes.
F.
-
para mayor facilidad lo que concatenarias serian los strings, es decir, primero tienes un muero en decimal, hexa, binario o como quieras, y ese numero lo conviertes a string (hay bloques para convertir tu numero en cualquier formato a string) y una vez convertidos a strings entonces los concatenas y lo envias por el puerto.
por ejemplo, si quieres unir varios numeros separados por una ',' primero conviertes tu primer numero 102 por ejemplo a string y lo concatenas con una constante que seria tu ',', despues concatenas tu segundo numero ya convertido a string 203 pe y por el puerto enviarias una cadena asi
102,203,#,#,#.
donde tu coma ',' seria una constante entre todos tus numeros
-
Gracias Rivale,
entiendo que lo quieres decir es lo que pongo en las imagenes.
Una pregunta mas: ¿una vez recibido un hexadecimal-string como puedo descomponer ese numero para llevarlo a unos leds?
f.
-
Felicidades por el avance, se ve muy bien tu programa :-/ :-/ :-/
para hacer lo opuesto existen los inversos de todos los bloques que usaste, hay uno que se llama "hexadecimal string to number", con este convertirias lo que recibes por rs232 a un numero
y luego hay otro con el que conviertes un numero a un arreglo de booleanos y a la salida de este ultimo tendrias solo boleanos que puedes conectar a leds o cualquier indicador que quieras
-
Gracias, pero sin todos vosotros que me vais ayudando no lo iria cosiguiendo.
Respecto a la lectura, he realizado lo que me has comentado en el ultimo post. Adjunto otra imagen y seguro que estoy realizando algo mal pues al ir a unirlo a los leds el cables se queda en error.
Otra cosa no encuentro el bloque conrtario al "concadenate " para cuando reciba los5 bits que necesito.
Voy a seguir mirando
F.
-
Alguien que conozca labview ¿me podria decir como descomponer un array booleano en 8 digitos para mandar un led segun el valor de cada digito?
¿y la funcion "unconcatenate string"
F.
-
Hola Fer para separar un string puedes usar un bloque que se llama "string subset", te devuelve una parte del string, necesitas decirle donde iniciar y cuantos caracteres tomar. necesitarias un for para descomponer un string en un arreglo de varios strings mas pequeños.
para descomponer el array bolleano, no recuerdo si hay una funcion que te lo separe en 8 señales diferentes, pero tal vez te serviria el bloque "index array", le dices de que tamaño es tu array y le dices que elemento quieres a la salida, entonces usas un for para ir incrementando tu contador y vas sacando los elementos uno por uno.
perdon por no responder antes, espero te sirva la informacion.
Saludos
-
No hay nada queperdonar Rivale, sino todo lo contrario darte las gracias por las ayudas que me estas prestando.
La verdad que mo dificultad como ya lo espresé anteriormente es por no conocer donde localizar muchas de las funciones y sobre todo que rrealizan cada una de ellas. de momento y aparte de tus ayudas es ir buscando, colocando y probando lo que realizan cada una de ellas.
Bueno cuando pruebe lo comnetado ya posteo como fue o va la cosa.
fermin
-
aqui esta explicado. http://www.todopic.com.ar/foros/index.php?topic=30223.0
-
aqui esta explicado. http://www.todopic.com.ar/foros/index.php?topic=30223.0
muy buena explicacion groundman.
-
aprobeche el estudiar los VIs realizando una explicacion de cada uno.creo que hice 3 tipos.numeric,boolean y strings.
por el foro estan los temas.muchas veces me redirijo a ellos para acordarme de algunos.
queria haberlos estudiado todos.pero hay muchisimos.necesitaria otra vida para estudiar tantas cosas. :D
-
aprobeche el estudiar los VIs realizando una explicacion de cada uno.creo que hice 3 tipos.numeric,boolean y strings.
Los descargue todos y me he estoy realizando un pequeño word con todos ellos. Los estoy organizando un poquito y cuando esté acabado, con tu permiso podriamos colocarlo de alguna manera para el que pudiese servir.
Hola Fer para separar un string puedes usar un bloque que se llama "string subset", te devuelve una parte del string, necesitas decirle donde iniciar y cuantos caracteres tomar. necesitarias un for para descomponer un string en un arreglo de varios strings mas pequeños.
Para descomponer el array bolleano, no recuerdo si hay una funcion que te lo separe en 8 señales diferentes, pero tal vez te serviria el bloque "index array", le dices de que tamaño es tu array y le dices que elemento quieres a la salida, entonces usas un for para ir incrementando tu contador y vas sacando los elementos uno por uno.
Pues nada que no hay forma de conseguir lo que pretendo. En la imagen adjunta he colocado como podria ser el leer los 4 valores analogicos, que de momento hasta que no consigua separar los 5 bytes recibidos, me imagino que no se si estaran asi mismo bien. Pero no desespero.... :5] :5]
-
¿que opinan de este cacharrin para empezar?
-
si lo he usado, esta muy bueno, aunque algo caro. :?.
-
¿pero es mas facil o dificil el realizar los programas de control?
-
Los descargue todos y me he estoy realizando un pequeño word con todos ellos. Los estoy organizando un poquito y cuando esté acabado, con tu permiso podriamos colocarlo de alguna manera para el que pudiese servir.
ok.no hay ningun problema.todo sea por mejorar.
respecto a tus ejercicios.siento no poder ayudarte todo lo que quisiera.pero ahoramismo no tengo tiempo para nada.
no se si ya lo sabras.en todo caso queria recomendarte que cuando envies la trama de datos.pongas delante de la trama un caracter de principio de mensage.yo suelo usar la $
y tambien podrias poner un caracter de fin de mensage.yo uso #
quedaria asi: $045,245,128,999# todo depende de lo que quieras hacer con el programa.tambien podrias simplificar obteniendo el valor decimal del caracter ascii.
anque se limitarian a 256 valores.
si no pones un caracter de control al principio de trama.seria mas dificil que el receptor pudiera identificar la posicion de los datos.
-
El problema no son los caracteres de fin o pricipio de tramas, sino como se pueden leer y separar la trama para:
1º que el primer byte lo pueda descomponer en 8 bits y mandar su valor a un respectivo led.
2º separar los 4 siguientes para mandarlos a unos indicadores analogicos tipos reles.
En eso estoy y rompiendome la cabezota, que la debo de tener muy dura o estar ciego por no ver(encontrar lo que pretendo insatalar)
De todas formas gracias.
F.
-
si entiendo lo que quieres hacer Fer, nunca he hecho eso exactamente, pero te pongo algunas ideas, tal vez te sirvan.
1)utilizar un ciclo for e ir leyendo la cadena para separar los datos
2)ya que tienes tu vector de booleanos mediante un ciclo "case" ir enviendo cada componente del vector a un led
-
hola Fer_TACA.en esta imagen tengo el programa que transforma dos caracteres ascii en valores para visualizar en los gauge.
(http://img703.imageshack.us/img703/1479/gaugeslabview.jpg) (http://imageshack.us/photo/my-images/703/gaugeslabview.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
puedes prepararlo para convertir todos los que quieras.tendrias que prepararlo para la captura del caracter de control.$COMANDO.
ademas del caracter de control.tienes que poner una serie de caracteres para que el caracter de control no se confunda con un dato.
por ejemplo: $GAUGE,6sx8,bn,n8789sx,97sxns7xn.....
depende de los datos que vallas a reproducir.$GAUGE,seria la sincronizacion de la trama.despues las comas separarian la longitud del dato que te haria falta.
todo depende de como quieras hacerlo.
haber si aberiguo los de bisualizar los leds. espero que te sirva esto. ;-)
-
Fer_TACA.no se si te servira esto que he hecho.si en el string escribes los 3 caracteres primeros.estos pasaran sus valores decimales a los leds y los dos
gauges.
no olvides borrar el string antes de poner mas caracteres.se suelen quedar ocultos y te puede inducir a error.cuando el programa funciona bien.
(http://img809.imageshack.us/img809/3219/binlabview.jpg) (http://imageshack.us/photo/my-images/809/binlabview.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
-
Muchas gracias a ambos por las ayudas.
Groundman,: Exactamnete eso es lo quiero ralizar en una primera fase.
Diras que soy un cabezota u/o apestoso pero no encunetro los vi que te pongo en la figura adjunta. Quizas sea por la version que tengo pero me estoy volviendo tarumba para encontrarlos.
El de abajo a la izquierdo me imagino que deberia estar dentro del grupo de los "Array" y los leds dentro de los Numericos booleanos pero no hay forma no los eo y claro los leds que dispone esta version no permite realizar ese tipo de conexion.
A ver si a partir de mañana que empiezo a currar, despues de las vacaciones, consigo por fin conseguir una version mas actualizada.
F.
-
Bueno el bloque de abajo lo encontré. Se trata de un "index array"
He realizado las conexiones segun tu post. groundman, para probar y veo en los "gauges" que cambian los valores, de momento solo en 2. Si cambio el string cambia el valor, aunque en la imagen se ve siempre igual a fondo de escala, en los indicadores de debajo si aprecio el valor.
Ahora me supongo que despues tendré que cambiar el valor de ese string a un numero para que se adecue el valor. De momento al ser un byte numerico lo que reciba será de FF(255) para fondo escala. Siguiente paso a tyransformar.............
Una pregunta. ¿las constantes 0,1,2 que has colocado a la entrada del index arrray para que sirve? Me supongo que será para indicar que el 1º el"0" es para los indicadores leds, el 2º el "1" es para el primer gauge, el 3º el "2" es para el segundo gauge y asi sucesivamente. ¿Cierto?
Bueno voy a ver si encuentro el otro vi que me falta.
Aunque a partir de mañana, empiezo de nuevo el curro :5]:5] despues de las vacaciones :mrgreen: quizas la asiduidad de posteo descienda un poco. Pero no desespero........ ;-)
F.
-
esque el fondo de escala del gauge lo tienes de 0 a 10 o de 0 a 6. tienes que ponerlo acorde a los datos introducidos.0 a 255 en mi ejemplo.
si quieres de 0 a 10.los datos introducidos no pueden ser mayores.
lo que pasa es que como estamos introduciendo un caracter ascii para la entrada de un dato,pues el valor mas pequeño que podemos introducir es el espacio.
valor 32 en decimal.ya que el teclado no dispone de estos caracteres especiales que van desde el 0 al 31.
habia un truco tecleando ALT+NUMERO.por ejemplo ALT+165 es la letra Ñ.y muchos mas valores.no se si podras introducir caracteres ascii de los valores entre 0 y 10.
en todo caso no creo que tengas problemas si los datos probienen directamente de la usart.ya que no tenemos que introducirlos en un string control.
y si.las constantes 0,1,2 indican la posicion del caracter a tratar.de la cadena de caracteres introducidos.
tambien veo que los gauges los tienes como DBL.yo los tengo como int8.igual no tiene importancia.pero lo que vas a reproducir son valores enteros.
PD:conseguistes poner lo de los LEDs? yo lo que he hecho es modificar los index de cada led para segun que bit visualizar.luego desactivar la casilla Show index display.
en propiedades del boolean array.
-
Hola Groundman:
Mira lo de los fonde de escala ya lo se, solo quiero ver como se van recibiendo los valores de momento progando colocando un "string" En las imagenes adjuntas ya lo he tenido en cuenta. ¡¡¿No se si estaran bien!!
Mi proyecto será que al recibir el byte con un valor maximo de 255, en los gauges 2,3,4 tendrán un valor de 3bares y para el primero un valor de 10bares.
Si pongo el valor int8 cuando llega a 129 me salen valores de -1 y asi sucesivamente por ese motivo el poner DBL.
respecto a los leds, NO, consigo encontrar el "yo lo que he hecho es modificar los index de cada led para segun que bit visualizar.luego desactivar la casilla Show index display.en propiedades del boolean array".
Fermin
-
cuando pongas el VI number to boolean array.a la salida de este selecciona create indicator.luego modifica el index de los boolean array
como indico en la imagen.
una vez modificados.puedes hacer lo que te dige.hacer clic derecho en el boolean array.pero en el bloque de diagrama.y en propiedades
desactivar la casilla Show index display.
(http://img545.imageshack.us/img545/6653/indexarraybin.jpg) (http://imageshack.us/photo/my-images/545/indexarraybin.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
-
y asi quedarian los boolean array.
(http://img716.imageshack.us/img716/3135/gauge2.jpg) (http://imageshack.us/photo/my-images/716/gauge2.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
tambien he puesto los gauges tal y como comentas.no se si sera esto lo que quieres.
-
Gracias, lo miro esta tarde y te digo algo ;-)
-
Hola Groundman:
he probado lo que me has indicado y creo que lo he realizado como dices, pero me pasa una cosa curiosa, cuando cambio los valores del "numeric" los leds se me activan todos a la vez cuando el valor es impar y se desactivan cuando es par. Lo puedes ver en las imagenes.
Los string estan canalixzados, de momento, a los gauges y con las operaciones indicadas funcionan bien
Al final conectare, cuando me funcione los leds de entrada, los string recibidos por la visa a los string to byte array-> index array y de ahí a los leds y a los gauges, pero solo cuando vea funcionar los leds.
Miraré a ver en que me estoy equivocando pues en la imagen que has puesto veo que el valor de 248 se corresponde con los leds encendidos a ti te funciona y a mi no :5]
F.
-
eso es porque no has modificado los index de los boolean array tal y como te comento en la primera imagen.
lo que pasa es que por defecto los index estan a 0.por eso se encienden o apagan todos los led.es como si todos fueran el bit0 de un buffer.
cambialos te tiene que funcionar.
en la imagen estan puestos los valores del 0 al 7.
tiene que quedar asi:
(http://img40.imageshack.us/img40/9200/pantalla2hu.jpg) (http://imageshack.us/photo/my-images/40/pantalla2hu.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
luego puedes ocultar los index como ya sabes
-
Estoy de acurdo con groundman, en el indice de tu arreglo tienes que hacer que cada led este asociado a un indice diferente, si tu variable es de 8 bits serian del 0-7.
-
¡¡¡¡ uah !!!! :5] :5]
Me falto un paso :oops: :shock: :?:
Luego lo miro :) :mrgreen:
-
Por fin :-/ :-/ mira que estoy cegato. He tenido que mirar 2 veces(2000) las figuras y no caia en que consistia.
Bueno os adjunto una imagen de la prueba de encio de un numero aleatorio y su representacion en los leds en las 2 primera imagenes.
En las 2 siguientes es como queda el programa hasta ahora de manera definitiva a falta de mas prueba y mejoras. ¿Le pueden echar un vistazo e indicarme si hay algo que sea un error muy gordo?
Adicionalmente y aprovechando de su amabilidad, una nueva pregunta: Me imagino que si se coloca un control en una pantalla (VI, por ejemplo en los gauges de las figuras), al ser presionados se puede pasar a otra pantalla (VI) distinta para de ese modo al activarla podria abrir una pantalla para ver graficos.
La ultima: si el programa de control ocupa mas que la pantalla del PC, para evitar estar realizando continuos "scrolls" ¿se puede reducir elzoom de lo presentado en la pantalla?
Un saludo
Fermin
-
felicidades.al final todo se consigue.
lo del zoom no se si se puede hacer.lo de abrir otro panel desde un boton.lo puedes hacer con un subpanel.esta en la paleta de herramientas del panel frontal.
en containers->subpanel.
hay un ejemplo en:Building User Interfaces->general->subpanel Viewer.vi
-
Gracias por la ayuda
Ahora intentaré avanzar un poquitin mas, pero me parece que será un poco mas lento.
Oye, todo esto ¿lo has aprendido a base de practicar o mediante algun tipo de curso?
F.
-
todos los ejemplos que estan en el foro.han sido mis estudios.aprendiendo el funcionamiento de los VIs uno a uno.aunque hay demasiados y no he llegado a los complicados.
lo demas solo logica.ya que con las herramientas y sabiendo como funcionan solo queda unir las piezas.
-
Pues me parece que me queda mucho que pelearme. Eso si iré tomando nota de todo para ir creando un diario :D
-
muchas felicidades Fer, vas muy bien! :-/ :-/. con practica veraz que se va volviendo mas facil