Show Posts
Pages: 1 2 3 [4] 5 6 ... 106
46  International / Documentación / Re: Intermitentes con relés on: February 10, 2013, 02:47:43 pm
Para dicha aplicación, existen relés intermitentes (flasher relay).... a no ser que no vayas a usar luces convencionales. Aunque hoy en día existen para todo tipo...


47  International / Español / Re: Escritura de archivo Excel en tarjeta SD (duda separación por columnas) on: January 30, 2013, 03:15:29 pm
Hola,

No le pongas extensión de excel (o pon *.csv). En excel puedes elegir tu carácter limitador (por ejemplo, una coma, un punto, tabulador, espacio, etc). Necesitas tener dicho carácter entre tus datos para que te lo reconozca y separe por columnas. Para forzar "importar", en vez de darle doble click, tiene la opción de hacelo por el menu y te permitirá elegir dicho limitador.
Aunque con el nuevo excel (2010) te deja hacer "conexiones", y puedes elegir un archivo de texto. De esta forma podrías tener algo dinámico (como si fuera una base de datos) y que se actualiza.

El estandar suele ser separación con coma (,).

Saludos,


Igor R.
48  International / Español / Re: Proyecto MOTO on: January 30, 2013, 02:55:56 pm
Preguntaba lo de la patente, porque aquí estás en un entorno "open".... que es poco ó nada compatible con el tema de patentes.
Y me imaginaba que lo tendrías ó estabas en proceso.... Me gusta tu proyecto, pero no las patentes!! Ya que no puedo mejorar y/o usar tu sistema, sin pasar previamente por caja... smiley-eek-blue

Lo único que aportaré es que para probar el concepto, no necesitas nada más que montarlo (sin electrónica)....no?? Siempre en posición "activa".
Es lo que tienen los circuitos, que siempre acaban y empiezan en el mismo punto (siempre habrá más curvas en un sentido). Lo montas sólo en el lado donde tengas más curvas rápidas (ya que estas evaluando grip aerodinámico). En las lentas no necesita tumbar o puede ir más despacio. Si tienes una recta larga antes de la curva rápida, podrás hacer pruebas consistentes.
Alquilas un sistema de adquisición de datos para motos (por ejemplo de 2D ó AIM - http://2d-datarecording.com/). Te buscas un buen piloto y un ingeniero de datos (si el piloto es suficientemente bueno, te sabrá decir sin sensor alguno).

Si funciona, ya pensarás como desarrollarlo mejor y forrarte.  smiley-twist

Ánimo y suerte!
49  International / Software / Re: Gadget para desconectar un ascensor on: January 30, 2013, 02:03:42 pm
Tiene buena pinta ese artículo, yOPERO!! smiley-wink

Lo único que yo aconsejaría ir empezando poco a poco para "entender" los problemas y saber "identificar" tus necesidades.
Necesitas pelearte con interrupciones primero, para poder entender que puedes estar en tu rutina de mostrar algo por pantalla, y que de repente entres a tu interrupción y empieces a tener problemas....
O que eliges leer tus botones por interrupción, y un día falla la conexión (eléctricamente) siendo intermitente y estás entrando todo el rato a dicha rutina, no dejando ejecutarse el código principal si no has previsto este modo de fallo en tu código.
O entender el problema de manipular variables no atómicas => http://arduino.cc/forum/index.php?topic=73838.0
etc.

Luego así aprendes a evitar usarlas o tener mucho cuidadín...je,je,je


 smiley-twist
50  International / Software / Re: Coneccion puerto serie con arduino on: January 29, 2013, 03:17:15 pm
No sé lo que quieres hacer, pero tienes una librería bastante chula que descubrí el otro día llamada cmdArduino (command Arduino).
https://github.com/fakufaku/CmdArduino  (mira los ejemplos)
Por no reinventar la rueda y tener que hacer un parser...


51  International / Software / Re: Visualizar datos con Stamplot on: January 29, 2013, 03:00:33 pm
http://www.parallax.com/tabid/441/default.aspx (Stamp Plot Lite).

Yo no he probado el nuevo soft... En http://www.selmaware.com/

También puedes usar KST.

52  International / Software / Re: Gadget para desconectar un ascensor on: January 29, 2013, 02:18:37 pm
No he trabajado con QP. Tengo un libro por aquí de su autor que explica todas las tripas (es en C++). El problema es que necesitas tiempo para estudiartelo, ya que es como si programases en otro lenguaje de programación, con sus reglas, etc. Lo mismo que si usas un RTOS... y no tengo tiempo!! smiley-wink

Ya depende de lo que quieras hacer, valorar si te merece la pena usarlo...

Existen muchos ejemplos por la red. En el link que te he puesto del foro, hice 3 ejemplos usando mi librería y hay un pdf también.
Luego también puedes encontrar uno básico, es este otro que escribí de un miniprotocolo serie  http://real2electronics.blogspot.co.uk/2009/10/linksys-arduino.html
Ten en cuenta, que hay muchas maneras de hacer tu máquina de estados. Empieza por hacerte una básica con estructuras if().
Este ejemplo no contempla que le lleguen otros caracteres entre medio, etc. Lo que hace es encender el led de la placa si le llegan el comando S1F y apagarlo si le llega S0F


Code:
//Mini protocolo serie
//Igor Real

int luz1= 13;
int el1;
int estado=0;
byte dato_recibido;

void setup() {
   pinMode(luz1, OUTPUT);
   pinMode(12, OUTPUT);
   digitalWrite(12,LOW);
   Serial.begin(9600);
}

void loop()
{
  //trama a recibir --> S1F o S0F
  //S inicio
  //1 ENCENDIDO Y 0 APAGADO
  //F fin
  while (Serial.available() > 0)
  {
    //Significa que has recibido algo y lees el primer byte
    dato_recibido=Serial.read();
    if (dato_recibido=='S' && estado==0){
      estado=1;
    }
    if (((dato_recibido=='1')||(dato_recibido=='0')) && estado==1){
      estado=2;
      if (dato_recibido=='1')  el1=1;
      if (dato_recibido=='0')  el1=0;
    }
    if (dato_recibido=='F' && estado==2){
      estado=0;
      digitalWrite(luz1,el1);
      if (el1==0)  Serial.println("APAGADO");
      if (el1==1)  Serial.println("ENCENDIDO");
    }
    
  }
}


Lo tienes que pensar así:
- Si estoy en el estado 0 y recibo una S => voy al estado 2
- Si estoy en el estado 2 y recibo un 1 u 0 => asigno el valor a mi variable y voy al estado 3
....

Luego de ahí puedes pasar a otro tipo de máquinas que están creadas con tabla de transiciones; ó hacerte que cada estado tenga condición de entrada, salida y mientras está activado; ó que se puedan realizar acciones en las transiciones, etc.... cuanto más lo compliques, te estarás creando una especie de  "lenguaje de programación" nuevo, para que se me entienda, ya que tendrás que aplicar reglas a tu código para que te funcione adecuadamente.

Pensarlo para tu display+botonera, pues lo mismo... Piensa que cada estado muestras la pantalla al usuario, entonces te vas dibujando el diagrama de flujo:
- si estoy en el menu principal, y el usuario aprieta el botón "derecho", paso al segundo menu, etc.
- si estando en el segundo menu, deja apretado por más de 3 segundos el botón de aceptar, entonces hago ....

Esto hará que si tienes algun día que meter un menú nuevo entre medio (por poner un ejemplo), no tengas que cambiar todo tu código ó te vuelvas loco. Por ejemplo, algo típico cuando empiezas, es hacerte una variable según tus pulsaciones/submenus vas haciendo +/-1, +/-10, +/-100...  según en el nivel de menu en el que te encuentras. Entonces llamás a funciones según el valor de esa variable (por ejemplo usando un select case).
Lo haces, estás todo contento, y se te ocurre que ahora entre medio de tus menús, quieres meter uno más...ohhh no!!!  entonces es cuando te das cuenta que programar así es bastante ineficiente... (en mi opinión). Por no decir leer el código cuando ha pasado mucho tiempo y no te acuerdas de lo que hiciste....

Espero que te sirva,

Saludos,


Igor R.


Nota.- Lo he puesto muchas veces por el foro, pero por una más...uno de los mejores libros de microcontroladores y gratis! No es para atmel, pero es en C, así que no hay mucho problema... http://www.tte-systems.com/books/pttes
53  International / Software / Re: Visualizar datos con Stamplot on: January 28, 2013, 04:07:17 pm
Mira el código de:
http://real2electronics.blogspot.co.uk/2011/07/maqueta-de-control-pid-con-arduino.html

Escribí por el foro antiguo (creo) otro ejemplo... hace mucho tiempo de esto...
54  International / Software / Re: Gadget para desconectar un ascensor on: January 27, 2013, 09:04:29 am
Yo he diseñado un controlador que tiene una interface de usuario con una pantalla gráfica + botonera, la cual el usuario puede configurar diferentes setpoints, test, visualizar alarma, elegir de una BBDD módelos del aparato al que se le está haciendo el test, ...mientras el usuario navega por los menus, por detrás se siguen haciendo las cosas sin parar. Por eso te digo que lo que cuentas, se puede hacer sin ningun problema. En realidad hace muchas más cosas, como puede ser control de slew rates cuando cambias el target para no hacer cambios bruscos, tonos de alarma, la salida son mensajes CAN, control del disparo de una luz estroboscópica, y un largo etc (todas las tareas se realizan sin pararse cuando el usuario está navegando por el menu).

La forma que lo hice es creando una máquina de estados sencilla basada en tabla de transiciones (me cree mi propia librería para ello) la cual compartí en https://github.com/IgorReal/SECUduino/tree/master/FSM%20Library ó http://arduino.cc/forum/index.php/topic,75826.0.html
Puedes buscar más info en google : "event driven state machine".

Pero como te digo, hay muchas formas de resolver el mismo problema. Yo te cuento mi experiencia, y las ventajas que encuentro son:
- La sencillez: no usas sistemas de otros que sean dificiles de entender y/o requieren más tiempo estudiartelos que la aplicación en sí que tienes que realizar. Por no decir la dificultad que puede tener cambiar algo.
- Depurar es muy sencillo, por ejemplo, tengo una modificación a esa librería original para que me saque por puerto serie en el estado en el que me encuentro y el evento recibido.
- Puedes guardar en la memoria no volatil el estado en el que te encuentras por si se va la corriente. Es muy fácil tener el control de tu aplicación de nuevo después de un "apagón".
- Toda la lógica es una tabla de transición guardada en memoria de programa.
- Flexibilidad: cambiar el flujo de tu programa, es simplemente cambiar dicha tabla de transiciones.
- Leer el código aunque haya pasado mucho tiempo, es sencillo, ya que se resume en leerte la tabla de transición y luego ver lo que hace la función de cada estado.
- Aunque la limitación es que hay que tener en cuenta que es similar a un sistema cooperativo, la función realizada en cada estado tiene que durar menos que el tiempo de refresco que necesite la tarea más rápida. Para que de tiempo a leer eventos externos -> actualizar estados -> realizar las funciones de dichos estados y volver a empezar. Aunque el flujo de tu programa no va controlado por tiempo, si no por eventos.


Saludos,


Igor R.
55  International / Español / Re: Proyecto MOTO on: January 27, 2013, 07:28:19 am
Hola,

Es muy interesante tu proyecto. Tengo unas preguntas:
- ¿Has simulado con CFD el sistema para comprobar que funciona (aerodinámicamente)?
- ¿Necesitas saber el ángulo de giro de la moto ó solo el sentido?
- Y otra pregunta es acerca de tu comentario : "En cuanto a la electrónica: quiero instalar un dispositivo que detecte la activación del alerón inadecuado, que como bien dice Heke, sería peligroso. La electrónica tiene que asegurar efectividad, o no permitiré que nadie use este sistema.". ¿Cómo no lo permitirás? ¿está patentado?

Saludos,


Igor R.
56  International / Software / Re: Gadget para desconectar un ascensor on: January 27, 2013, 06:50:24 am
Hola,

En mi opinión, el consejo que te han dado de leer el ejemplo de blinking without delay y tratar de entenderlo, creo que buena dirección. Es la base para poder entender todo lo demás.

Al final, el control a "tiempo real" es algo relativo, ya que depende de la dinámica (inercia) de tu sistema a controlar. Si vas a controlar la temperatura de una habitación pueden pasar minutos hasta que tu control actue y no es un problema. Pero si vas a un proceso químico, pueden ser milisegundos.

Lo que te están intentando explicar, es que si tu código es suficientemente rápido como para atender a cada una de las tareas, estarás cumpliendo tus requisitos. Ten en cuenta que una pulsación de un botón dura en orden de ms, es decir, tu micro es capaz de leer el estado de esa entrada, pero también de seguir ejecutando muchas otras cosas más. A parte que siempre puedes "alargar" dichas pulsaciones como te han explicado usando hardware adicional.
Por poner un ejemplo, si una pulsación a una tecla, son XX ms, a un micro le da tiempo a hacer muchas cosas y todavía el usuario sigue con el dedo en el pulsador.

Ahora bien, para poder hacer ésto hay diferentes formas de resolverlo. Aunque usando interrupciones puede darte muchos dolores de cabeza ya que si no tienes cuidado, puedes perder el control de tu aplicación.
Si te fijas como has descrito tu aplicación, es una secuencia. Si hay cierto evento, hago una determinada acción. Hacerte un diagrama de flujo de tu aplicación, creo que te ayudará a "visualizar" tu problema. Yo usaría una máquina de estados como método de programación. Dichos eventos que has comentado (pulsación de teclas, que sea determinada hora/fecha, etc) serán los que determinen el flujo de tu programa.

Lo que quiero decir, que si tu código hace un ciclo completo (leer entradas -> realizar código -> actualizar salidas -> volver a empezar) en menos tiempo que el tiempo necesario para atender a tu tarea más rápida, no tendrás ningún problema.
Los delay() son tus peores enemigos y ninguna función que realices tiene que tener código bloqueante. Por ejemplo, quedarse esperando con código que bloquea a que el usuario pulse un botón, o que se reciba cierto caracter por al puerto serie, o enviar por puerto serie y quedarse esperando a que se envie toda la cadena (esto lo hacían antes las funciones de Arduino, pero lo han modificado desde la versión 1.0), etc.

Saludos,


Igor R.
57  International / Software / Re: Librerias donde estan sus comandos y explicación. on: January 25, 2013, 02:33:42 pm
Hola,

Depende que librerías uses, sus autores las han podido documentar... Por ejemplo, la ethernet oficial:
Las oficiales de Arduino se encuentran en http://arduino.cc/en/Reference/Libraries. Por ejemplo, para  la de ethernet en http://arduino.cc/en/Reference/Ethernet

Saludos,


Igor
58  International / Software / Re: Arduino como celula fotovoltaica on: January 21, 2013, 04:13:30 pm
Hola,

Deberías saber cual es el alcance de tu proyecto, que puntos tienes que contemplar:
1) Modelo matemático de la célula  (tienes una/s entradas y calculas una/s salidas).
2) Con las salidas obtenidas, generación física de los parámetros. Si para ello puedes usar hardware comercial, como puede ser una fuente de laboratorio, en la cual se le pueden pasar parámetros por comunicación (o como sea), o tienes que diseñar el hw para la generación dinámica de pares V-I.
3) Test a tu modelo físico, es decir, poner una carga dinámica, para poder genera dicha curva V-I característica de la célula. Lo mismo, puedes usar uno comercial ó puedes diseñarlo.

Vaya, yo no tengo ni idea de células fotovoltaicas... Pero lo fácil/dificil depende de la profundidad de cada uno de los puntos, si tienes que hacer todo, sólo es una parte, etc.

Imagina, puede ser estudiarte el módelo que te piden, desarrollarlo en un microcontrolador, pero no tener que realizar la generación física V-I. Simplemente, mostrar las salidas obtenidas, por ejemplo, por puerto serie... Es un decir.

Seguro que el profesor que te lo ha mandado puede guiarte más, no??


Saludos,


Igor R.



Nota.- A mi me salen bastantes cosillas por google. Es más, de wikipedia, te dan un link de un proyecto creado con Arduino http://www.timnolan.com/index.php?page=arduino-ppt-solar-charger

http://en.wikipedia.org/wiki/Maximum_power_point_tracking  (ver la descripción de controlador usando la estrategia "Incremental conductance")

http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDoQFjAB&url=http%3A%2F%2Fdigitalcommons.calpoly.edu%2Fcgi%2Fviewcontent.cgi%3Farticle%3D1576%26context%3Dtheses&ei=B7f9UMTQMvCM0wX92YHQDA&usg=AFQjCNFuc5P_ZpdX75adCHnUhDdBfJ6mMA&sig2=0u8vhHjbrtXE0UWHFV8cNQ&bvm=bv.41248874,d.d2k&cad=rja

http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&cad=rja&ved=0CIABEBYwCA&url=http%3A%2F%2Fusers.utcluj.ro%2F~atn%2Fpapers%2FATN_1_2008_8.pdf&ei=JLP9UJHkNOfZ0QWf6IHgDA&usg=AFQjCNH6Z9mQoaOX4GTcqli5-_oh9pT0OA&sig2=f9nax_5LE6kSFWNAi-5nBQ&bvm=bv.41248874,d.d2k

http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CE4QFjAD&url=http%3A%2F%2Fwww.iaeng.org%2Fpublication%2FWCECS2008%2FWCECS2008_pp846-851.pdf&ei=JLP9UJHkNOfZ0QWf6IHgDA&usg=AFQjCNFwaO9WQSiwN-MB_c8owz-vkqFm3g&sig2=clJV_CuRJp0duD-1dPjc0Q&bvm=bv.41248874,d.d2k&cad=rja

http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CGMQFjAF&url=http%3A%2F%2Fwww.jatit.org%2Fvolumes%2Fresearch-papers%2FVol16No1%2F2Vol16No1.pdf&ei=JLP9UJHkNOfZ0QWf6IHgDA&usg=AFQjCNGehEo16Pey7AlqjqADY8hMFqZQvg&sig2=xSfNiGJmvs4dAcP8FjKQ4g&bvm=bv.41248874,d.d2k



59  International / Español / Re: Interrupciones con TIMER 2 problema con retardos[SOLUCIONADO] on: January 21, 2013, 03:26:19 am
Hola,

Me alegro que te funcione. Se me olvido preguntarte que probaras de monitorizar cuando termina el envio serie antes de poner el micro en sleep.
Es decir, volviendo a power-save mode, y después del Serial.print("loquesea"), pones la siguiente linea:

while (!(UCSR0A & (1 << TXC0)));

Esto se quedará esperando hasta que se haya enviando todo. Es una prueba rápida a ver si así funciona.
No estoy seguro en que versión de Arduino.... juraría que cambiaron las rutinas del puerto serie cuando pasaron a la versión 1.0, y uno de los cambios era las rutinas de envio....
Repasando las notas de arduino:
Por ejemplo en la versión 1.0.3, puede que el Serial.flush() también te sirva ( "Serial.flush() waits for last byte to transmit. (michele.mazzucchi)").
A partir de la versión 1.0:
" Serial transmission is now asynchronous - that is, calls to   Serial.print(), etc. add data to an outgoing buffer which is transmitted   in the background. Also, the Serial.flush() command has been repurposed   to wait for outgoing data to be transmitted, rather than dropping   received incoming data."

Lo de monitorear el bit funcionaba antes que la versión 1.0, ahora tendría que repasar cómo son las rutinas...ya que esto me lo estuve mirando para RS485 para saber cuando cambiar el bit de control de transmisión a recepción....
Asi que puedes probar el Serial.flush() si usas las últimas versiones a ver si te funciona (antes de dormir el micro). Vaya, lo que quiero decir, es que problablemente venga de ahí el problema. Aunque hay que mirarse un poco en profundidad cómo son las rutinas serie (hace mucho tiempo que no me las miro).

Digo de probar porque consumirá menos en power-save... y por investigar un poco más! smiley-wink


Saludos,


Igor R.
60  International / Software / Re: Arduino como celula fotovoltaica on: January 20, 2013, 02:56:14 pm
Pero... ¿cuál es tu proyecto?

Al final, tu modelo generará una curva V-I (la característica de tu panel)  ¿pero qué tienes que hacer una vez obtenidos? ¿Tienes que generar dicha curva en realidad? ¿tienes que diseñar la electrónica? ¿puedes usar una fuente de laboratorio que le mandes dichos puntos? y luego... para generar dicha curva, necesitas una carga... ¿tienes que diseñar dicha carga?

Como bien dices, seguro que hay algo parecido por internet para fijarte...  smiley-wink
Pages: 1 2 3 [4] 5 6 ... 106