Flowcode 4

Hola, buena noche,
Me agrada ver que hay abierto un hilo de FC, aprovechando, aqui les dejo un ejemplo de comunicación por RS232 para adquisición de datos utilizando un LM35 para tomar la temperatura ambiente.

Tal como lo han comentado, con FC es muy sencillo implementar algoritmos desde sencillos hasta complejos.

Les dejo el archivo en FC y el archivo simulado en Proteus 7.6; se utilizan en el ejemplo un ADC (LM35), un 16F873A y un LCD 16x2.

Saludos!

Hola no puedo abrir el archivo .rar del lm32_rs232.... alguien me puede ayudar, me sale que el archivo es inesperado o algo asi, el de proteus si se abrio pero el de flowcode no! agradeceria que alguien me ayudara S:
 
Hola no puedo abrir el archivo .rar del lm32_rs232.... alguien me puede ayudar, me sale que el archivo es inesperado o algo asi, el de proteus si se abrio pero el de flowcode no! agradeceria que alguien me ayudara S:
hola
lo acabo de descargar y si abrió perfecto
debe revisar con que versión lo esta abriendo
 
Hola edgard22, nuevamente te pido ayuda con un nuevo programa en el que intento realizar un temporizador ciclico.
Este temporizador lo divido en porcentajes, osea, si selecciono el 20% el temporizador enciende un led durante 1 minuto y parara 4 minutos entrando en un ciclo hasta una nueva selección, si selecciono 40% el led funcionara 2 minutos y parara 3 minutos entrando en un nuevo ciclo hasta una nueva selección, pudiendo crear de esta manera algunos ciclos mas con distintos porcentajes de tiempo. El problema que tengo es que mientras el temporizador se encuentra en uno de los ajustes seleccionados puedo actuar sobre el potenciomentro pero no sé como hacer para que el display muestre la nueva lectura que se ha elegido, para ver la lectura del nuevo ajuste hay que esperar a que termine el ciclo elegido.

Pongo un ejemplo a ver si me puedes orientar de como hacerlo.

Un saludo.

Hola, el problema es que una vez iniciada la demora, el programa no avanza hasta que esta finalice, para evitar esto, yo uso pausas pequeñas, por ejemplo, para demorar 10 segundos genero una demora de un valor digamos 10ms y la inserto en un lugar condicionado por el análisis del valor deseado. para lograr los diez segundos se debe pasar por el mismo sitio 1000 veces. Este proceso genera la demora deseada sin trancar el programa.
El inconveniente es que todas las demás líneas que estén en el recorrido también generan demoras que se suman a la principal, por lo que requiere ajustes para obtener cierta precisión. (Se varía el número de ciclos de ejecución en la demora de 10mS).

La otra es usar demoras basadas en interrupciones con el TMR0, pero eso ya es otro tema.
Te recomiendo leer los ejemplos de flowcode en el apartado 'Interrupts' para eso.

Acá va algo sin interrupts, este muy rudimentario ejemplo muestra una cuenta regresiva que comienza en un valor porcentual del ADC y finaliza en cero. El valor se actualiza al mover el pot.
La variable 'ciclos' determina el número de veces que se ejecutará la demora de 10mS
(La simulación no refleja el tiempo real).

Creo que el método no es tan malo, es cuestión de optimizarlo.
Saludos a todos los 'Flowcoderos' :D
 

Adjuntos

  • Delay.rar
    1.9 KB · Visitas: 163
Aporte: Indicador de carga para Batería (48V)
No sé si es correcto poner esto aquí, lo dejo a consideración de los moderadores.

Diseñado en torno a un PIC12F675, muestra mediante 4 leds el estado de carga de bateria de, por ejemplo, un elevador o montacarga que funcione con 48V, aunque puede ser usado usado a voltajes menores modificando el divisor situado en el pin 3 (GPIO4) formado por las R de 10k y 1K.
Se puede seleccionar el modo de indicación entre barra o punto móvil mediante el pin 4 (GPIO3) usando los pads en el lado cobreado.
El modo de visualizar se ha hecho en referencia a otros que he visto con indicación de 8 niveles.
Algunos componentes se montan del lado cobreado como el transistor, con un pequeño disipador y los condensadores SMD. Tener en cuenta que la conexión del TIP41 tal como aparece en las capturas es por el lado de componentes, para ponerlo del lado cobreado se debe invertir su posición, o sea, la lámina de cobre hacia afuera.
No pongo fotos reales porque no lo tengo aquí.
Quizá a alguien le sea útil.

Saludos a todos.
 

Adjuntos

  • Esquema.JPG
    Esquema.JPG
    30.7 KB · Visitas: 77
  • Componentes.JPG
    Componentes.JPG
    76.2 KB · Visitas: 54
  • Componentes_2.JPG
    Componentes_2.JPG
    42.8 KB · Visitas: 52
  • Cobre.JPG
    Cobre.JPG
    56 KB · Visitas: 45
  • Bateria_Dot.rar
    13 KB · Visitas: 103
Última edición:
Hola edgard22, imaginaba que no se podría realizar, de todas formas lo que pretendo es realizar una especie de selector pero utilizando un potenciometro, ademas el bucle no debe parar, osea, si seleccionamos el 20% el ciclo de por ejemplo 5 minutos funcionando y 10 minutos de paro, lo debe de realizar infinitamente hasta que movamos nuevamente el potenciometro y elijamos un nuevo porcentaje que a su vez tendrá unos tiempos distintos. Lo que se me hace mas difícil de entender es que este tipo de temporizador existe en el mercado y que he visto funcionando, de ahí el intentar hacerlo igual.

Muchas gracias por tus aportes.
Saludos.
 
Última edición:
Hola de nuevo edgard22, estoy haciendo algunas pruebas para ver si puedo conseguir el temporizador con las caracteristicas que te comenté, pero me haría falta que me pudieras explicar si hay alguna manera de conseguir que en una decisión se pueda programar un valor en concreto, por ejemplo; en la decisión pongo que solo cuando el valor del adc este entre el 20 y el 30 me haga encender el led.
Solo se hacerlo si es igual, menor o mayor, pero no dentro de una medidas en concreto.

Gracias.
 

Adjuntos

  • temporizador_1.rar
    2.3 KB · Visitas: 134
Hola de nuevo edgard22, estoy haciendo algunas pruebas para ver si puedo conseguir el temporizador con las caracteristicas que te comenté, pero me haría falta que me pudieras explicar si hay alguna manera de conseguir que en una decisión se pueda programar un valor en concreto, por ejemplo; en la decisión pongo que solo cuando el valor del adc este entre el 20 y el 30 me haga encender el led.
Solo se hacerlo si es igual, menor o mayor, pero no dentro de una medidas en concreto.

Gracias.

Para lograr lo que me comentas, se puede usar el comando AND dentro de la decisión, AND requiere que se cumplan las dos expresiones para ir a 'SI' de lo contrario va a 'NO'
Ejemplo: para mantenerlo encendido dentro de 20 y 30 deberías poner dentro de la decisión IF ADC>=20 AND ADC <=30
Esto es: si ADC (variable) es mayor o igual a 20 y si ADC es menor o igual a 30.
La primera parte fija el límite inferior (20), la segunda el superior (30).
El ejemplo que adjunto habla por sí solo.

Saludos.
 

Adjuntos

  • AND.rar
    1.9 KB · Visitas: 108
Antes de nada agradecer a edgard22 y RUIZ13 por la respuesta sobre si sabían de algún curso de Flowcode, y ahora consultarles de como poder hacer el siguiente temporizador:
hacer que 2 leds se enciendan simultaneamente y que los tiempos de encendido y apagado sean de una hora, ademas quisiera saber como hacer para que el programa mantenga memoria. Yo he utilizado demoras pero no creo que sea lo mas correcto, ya que hablamos de intervalos de una hora.

Dejo un pequeño ejemplo sin terminar para entender mejor.

Saludos.
 

Adjuntos

  • tempo_HORA.rar
    1.5 KB · Visitas: 85
Hola edgard22, creo que he conseguido la solución para el tema del temporizador del que te hablé, la idea puede ser poco ingeniosa pero pienso que dará resultado, se trata de utilizar 2 Pic´s, en uno he creado el programa con los tiempos, y en el otro el programa con el Lcd, de esta manera cuando haga el circuito en físico lo que tendré que hacer es unir en paralelo la entrada ADC de ambos Pic´s y utilizar un solo potenciometro.
Lo que si me haría falta es poder hacer que al mover el potenciometro creara un pequeño pulso con el que atacaría a el reset del Pic donde he programado los tiempos, de esta manera al elegir un nuevo porcentaje de tiempo, iniciaría en este y no habría que esperar a agotar el tiempo anteriormente elegido.

¿Sabrías como realizar este unico pulso moviendo en cualquier dirección el potenciomentro?

Saludos
 
Hola amigos, aca nuevamente con dudas, esperando su favorable respuesta.

Estoy controlando 3 motores pap (em-464 y em289)
En flowcode lo hice con los motores que sale en el software, asi como con sentencias paso a paso, funciona todo en simulacion pero en el fisico los motores o no funcionan o avansan y retroceden.

Le conecto a 5v y 12 v ( a los motorers) pero nada el micro se bloquea

Adjunto archivos a ver si me pueden ayudar, dos cabezas piensan mas que una
He intentado lo que he encontrado en la web pero nada, a lo mejor es algo pequeño

Javier
 

Adjuntos

  • javier.rar
    67.7 KB · Visitas: 62
Hola edgard22, creo que he conseguido la solución para el tema del temporizador del que te hablé, la idea puede ser poco ingeniosa pero pienso que dará resultado, se trata de utilizar 2 Pic´s, en uno he creado el programa con los tiempos, y en el otro el programa con el Lcd, de esta manera cuando haga el circuito en físico lo que tendré que hacer es unir en paralelo la entrada ADC de ambos Pic´s y utilizar un solo potenciometro.
Lo que si me haría falta es poder hacer que al mover el potenciometro creara un pequeño pulso con el que atacaría a el reset del Pic donde he programado los tiempos, de esta manera al elegir un nuevo porcentaje de tiempo, iniciaría en este y no habría que esperar a agotar el tiempo anteriormente elegido.

¿Sabrías como realizar este unico pulso moviendo en cualquier dirección el potenciomentro?

Saludos

No entiendo porqué dos pic, lo ideal sería usar el mismo, el lcd es fácil de usar, ya que sólo se refresca cuando se necesita actualizar valores en pantalla (a diferencia de displays de 7 segmentos, que se deben refrescar constantemente para que no se apaguen). Deberías intentar mezclar los dos programas en uno solo. Con respecto a generar un pulso al variar el pot, se me ocurre que veas el ejemplo 'DELAY' que puse al final en el cual uso lo que mencionas, verificar si se ha variado el pot, las variables en cuestión son ADC y TEMP, si son iguales, (SI) nada ha cambiado, si difieren, (NO) se ha movido el pot, ahí deberías agregar la generación del pulso activando brevemente una salida del pic.



Antes de nada agradecer a edgard22 y RUIZ13 por la respuesta sobre si sabían de algún curso de Flowcode, y ahora consultarles de como poder hacer el siguiente temporizador:
hacer que 2 leds se enciendan simultaneamente y que los tiempos de encendido y apagado sean de una hora, ademas quisiera saber como hacer para que el programa mantenga memoria. Yo he utilizado demoras pero no creo que sea lo mas correcto, ya que hablamos de intervalos de una hora.

Dejo un pequeño ejemplo sin terminar para entender mejor.

Saludos.

Mantenga memoria? por si se corta la alimentación? Vas guardando los valores en la eeprom del pic, y lees esos valores al iniciar el programa para dejarlo en el punto que estaba antes del corte. Con respecto a lo de usar demoras, quizá lo ideal sería usar las interrupciones para lograr precisión, yo he logrado temporizar varias horas sin usarlas, con error de algunos segundos, pero cuesta un poco calibrarlo. Depende de la precisión que necesites. Lo malo de este sistema es que los errores son acumulativos, a lo largo del día se van sumando y a la larga es un desfase bastante grande.
 

Adjuntos

  • Delay (PULSO).rar
    2.3 KB · Visitas: 86
Última edición:
Hola amigos, aca nuevamente con dudas, esperando su favorable respuesta.

Estoy controlando 3 motores pap (em-464 y em289)
En flowcode lo hice con los motores que sale en el software, asi como con sentencias paso a paso, funciona todo en simulacion pero en el fisico los motores o no funcionan o avansan y retroceden.

Le conecto a 5v y 12 v ( a los motorers) pero nada el micro se bloquea

Adjunto archivos a ver si me pueden ayudar, dos cabezas piensan mas que una
He intentado lo que he encontrado en la web pero nada, a lo mejor es algo pequeño

Javier

Que estas usando como driver de potencia para los motores? Los conectaste correctamente? Probá usando leds en lugar del motor para ver si la secuencia es correcta. De serlo, estás conectando mal los motores.
 

Adjuntos

  • Stepper.rar
    2.2 KB · Visitas: 94
Última edición:
Hola edgard22, muy agradecido como siempre, tienes mucha razón lo de usar 2 pic´s es muy engorroso y difícil, he visto un nuevo temporizador en un equipo de riego y funciona de una forma muy parecida a la que necesito, te explico el funcionamiento a ver si me puedes ayudar a crear uno. El temporizador tiene 2 pulsadores uno sube y otro baja, tiene un display lcd y un rele de salida y funciona así:

con los pulsadores elegimos 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% o 100%, al elgir un porcentaje entramos en un temporizador cíclico, osea que mientras lo tengamos en ese porcentaje siempre va a realizar la misma temporización, por ejemplo 1 hora funcionado y 30 minutos en reposo, 1 hora funcionado 30 minutos en reposo, entra en un bucle donde no dejará de realizar los tiempos marcados hasta no elegir un nuevo pocentaje. Es muy importante que mantenga memoria, para en caso de falta de alimentación se mantenga en el porcentaje que teniamos elegido.
Aquí lo que veo mas complicado es que en cualquier momento que pulsemos para subir o bajar que el display muestre el porcentaje elegido y no haya que esperar a que termine un tiempo seleccionado anteriormente.


Muchas gracias, te agradezco tu ayuda.
 
Edgard22, he modificado el voltimetro con pulsadores para poder poner un ejemplo de lo que te comentaba anteriormente, aquí se ve bien el problema del que te hablaba que una vez que el progrma entra en uno de los bucles se bloquea y no sé como hacer para que no ocurra esto, como veras los tiempos que he colocado son muy cortos, pero se tendran que utilizar incluso de una o dos horas de trabajo, la exactitud del tiempo no es problema, ya que solo se va a utilizar para regar plantas.

Saludos.
 

Adjuntos

  • temporizador_ejemplo.rar
    3 KB · Visitas: 83
Buenos días edgard22, el temporizador de una hora con memoria no tiene porque ser exacto, es para encender la luz de un garaje, lo que si es importante que mantenga memoria, pero solo se hacerlo con demoras y no he utilizado aún el apartado eeprom.
Gracias.
 
Hola, acá con otra inquietud, me propuse hacer un termómetro, busque en la web y acá en el foro, utlice algunos ejemplos que encontré, luego vi uno del elprofetellez, lo lleve a flowcode, proteus y todo impeque, pero al llevarlo al físico la lectura es de 360 (varia un poco), la duda por que marca este valor si en proteus indica otro

y como puedo hacer que aparezca en lcd el valor correcto o el de la temperatura


Agradecido de sus comentarios

Javier
 

Adjuntos

  • temperaatura.rar
    163 KB · Visitas: 104
Hola, de nuevo quiero pedir ayuda sobre como hacer un temporizador con flowcode, como ya comenté hace unos días necesito que sea de una hora, es para mantener encendida la luz de un garaje, he probado con demoras pero no funciona bien, el tiempo programado no coincide con la realidad, ademas nunca temporiza el mismo tiempo.

Muchas gracias a todos.
 
hola invesel que versión de flow utilizas para ver que ejemplo le envio y con cual pic estas trabajando

la manera mas versatil es utilizando el TMR0 hacer la configuración con el oscilador interno podrias hacerlo con el piC 16f628a
 
Última edición:
Atrás
Arriba