Mensajes recientes

Páginas: [1] 2 3 4 5 6 7 8 9 10
1
Arduino / Interpretación de señal de sensor infrarrojo del tipo VS1838
« Último mensaje por Osterix en Hoy a las 15:45:53 »
Saludos.
He estado intentando crear una barrera infrarroja del tipo Emisor-Receptor usando 4 sensores infrarrojos 1838 y Arduino. Estos trabajan con una señal modulada a 38 Khz. En un principio intente mandar la señal a 38 kHz constantes, pero a veces el arduino no detectaba la interrupción del haz luminoso. Hay alguna manera de que el Arduino lea señales moduladas?
De antemano, gracias.
2
- Niple - / Re:ayuda caracteres especiales lcd en niple
« Último mensaje por ledfacil en Hoy a las 14:11:23 »
[de nada por nada si al final no existieron aportes!!!

Hombre. No deberías ser tan extremo. Piensa que todos tenemos vida propia aparte de este foro y quizás no podamos estar conectados permanentemente para contestar a todos lo mensajes.

Como habrás podido comprobar, con un poco de paciencia, siempre hay alguien que responde.

F.
Estimado, no te calentés, podés notar que es una respuesta irónica al comentario irónico del autor original que dice "gracias por la ayuda" cuando nadie (incluyéndome) aportó nada? tranqui, saludo!
3
- Niple - / Re:ayuda caracteres especiales lcd en niple
« Último mensaje por Fer_TACA en Hoy a las 13:57:42 »
[de nada por nada si al final no existieron aportes!!!

Hombre. No deberías ser tan extremo. Piensa que todos tenemos vida propia aparte de este foro y quizás no podamos estar conectados permanentemente para contestar a todos lo mensajes.

Como habrás podido comprobar, con un poco de paciencia, siempre hay alguien que responde.

F.
4
Electrónica de potencia / Re:Alimentación de motores de dron
« Último mensaje por remi04 en Hoy a las 11:22:33 »
Hola. Varias cosas.

 - ¿Siempre es el mismo motor el que se para o es aleatorio?.
 - ¿ Se para en cualquier velocidad, o solo a partir de determinado consumo?.
- ¿Los dos ESC´s están configurados iguales en cuanto a voltajes de corte?.

  Yo empezaría (Si no tienes osciloscopio) por poner un polímetro en dc voltios a cada ESC (dos polímetros necesitas).

   Observa la lectura de los voltajes que les llega a ambos ESC´s durante el funcionamiento.

   Si los voltajes eran correctos en el momento de pararse el motor, toca mirar el pwm. Para eso como un osciloscopio no hay nada.

   Una cosa a mirar es por ejemplo, desconectar los dos cables del pwm que van a cada ESC. Sepáralos y mide entre negativo y el cable de señal pwm que va a cada ESC.  ¿Da 5V?. Puede que sean entradas pull up. 

    Podrías probar con dos pequeños mosfet. Ambos drain´s los pones a 5V mediante resistencia pullup.  Ambos Source a GND, ambos gate´s a la señal pwm del smt.  Así independizas la entrada de cada ESC por si estuviese ahí el problema.

   Por curiosidad, si usas el mismo PWM para ambos motores, ¿Cómo vas a balancearlos?, salvo que sean para otro menester, lo suyo es gobernar cada motor con un pwm distinto.

   Saludos.

Hola buenas. Lo primero muchas gracias por responder.
-Siempre es el mismo motor el que se para.
-Le metemos la velocidad de golpe. Hacemos una transisición de 600Hz a 310Hz (para hacer pruebas lo hacemos así pero soy cociente de que debo programarlo para que sea algo progresivo para evitar picos de corriente demasiado altos y en consecuencia caídas de tensión. No se si eso puede ser un motivo de fallo la verdad, aunque me extrañaría)
-Los dos motores están configurados igual.

La señal PWM la saco del micro directamente a 3,3V y llegará a unos 2,5V (uso una pull down de 10K a la salida de uC para cada señal). Había descartado que pudiese ser eso ya que los dos motores por separado funcionan.

He probado separar las señales, pero nada cambia. Lo que esta ocurriendo es que los dos motores empiezan a una potencia coherente (16A/17A) pero durante los primeros 8 segundos ambos empiezan a descender su amperaje. Uno de ellos desciende de 16A a practicamente 0A y el otro de 17A a 13A. He acortado los cables y he puesto un mejor contacto en la batería pero sigue ocurriendo lo mismo. He comprobado el voltaje a la salida de la batería y justo a la entrada de los ESC. A la salida de la batería tiene 13,34V, a la entrada de un ESC tiene 13,03 y a la entrada del otro ESC tiene 12,98. Esto me hace pensar que no es un problema de perdidas en el cable ya que si fuese eso la caída de tensión debería ser más significativa (¿no?).



Un saludo y muchas gracias

  A ver, ahora toca saber la configuración de la batería. Entiendo que será lipo y tendrá al menos 4 elementos en serie.  Confírmame este dato, cuántos elementos en serie y cuántos grupos paralelos son en total.

  Si son 4 series:
 - la tensión nominal es 3,7 * 4 = 14,8V.
 - la tensión a plena carga sería 4,20 * 4 = 16,8V.
 - la tensión a mínima carga sería de 3,3 * 4 = 13,2.

   Si la batería fuese de 3 elementos no salen las cuentas de ninguna manera.

   Fíjate que tú voltaje te está dando eso : 13,3 . Es decir, eso me dice que la batería está a cero relativo al rango útil. Es decir, está descargada.   Es normal que los ESC  corten por que ellos nunca van a permitir que la batería baje del mínimo.

  Los ESC tienes que configurarlos también para decirles cuantas series tienes en la batería. A no ser que sean fijos y requieran una configuración concreta de la batería.

   Revisa eso. Pero parece que la batería está KO.   O los ESC no están emparejados con la batería correctamente o la batería no es apta para esos ESC.

  Un saludo.

 
5
Si queres el test de un bit en CCS, usas:

bit_test(variable,bit);

La solucion que planteaste requiere definir todos los bits lo cual es feo, tedioso, y sin sentido jejej.

Respecto a las soluciones.
La solucion de Picuino es "mas elegante" hasta cierto punto, a veces entre compilador y compilador no hay nada que defina un comportamiento o el orden de los bits en un bitfield.
Ademas para este caso donde tenes que "barrer" el numero, no tiene mucho sentido, doy el ejemplo al final. Pero si solo quiere acceder a 1 solo bit, no tiene tampoco sentido hacer todo una estructura para eso. Tal ves para otros casos si.

Otra solucion pero enviandolo desde el bit 0 seria (es destructivo para la variable codigo):

Código: C
  1. for ( x=0; x<32 ; x++, codigo >>= 1){
  2.   if(codigo%2) {
  3.     enviar_cero();
  4.   }else{
  5.     enviar_uno();
  6.   }
  7. }

Por supuesto el for tambien lo podria usar para el otro caso que dio Nocturno (esta vez "codigo" no se modifica, y podes hacerlo en ambas direcciones)

Código: C
  1. for ( x=0; x<32 ; x++){
  2.   if((1<<x) & codigo) {
  3.     enviar_uno();
  4.   }else{
  5.     enviar_cero();
  6.   }
  7. }


En cambio enviarlo con struct seria algo así (se resume ya que serian 32 lineas):

Código: C
  1. enviar(a.b0);
  2. enviar(a.b1);
  3. enviar(a.b2);
  4. ....
  5. enviar(a.b31);

Bastante mas y menos elegante ahora. Pero lo que contas es como lo hiciste antes... Ya que podrias haber hecho lo mismo en CSS


Código: C
  1. for ( x=0; x<32 ; x++){
  2.   if(bit_test(codigo,x)) {
  3.     enviar_uno();
  4.   }else{
  5.     enviar_cero();
  6.   }
  7. }
6
Electrónica de potencia / Re:Alimentación de motores de dron
« Último mensaje por carlosg56 en Hoy a las 06:58:16 »
Lo que él está utilizando, es una señal PWM común para cada ESC (al menos eso entendí yo)

Exacto. Estaba usando eso, pero ya las he separado. No ha cambiado nada.
7
Electrónica de potencia / Re:Alimentación de motores de dron
« Último mensaje por carlosg56 en Hoy a las 06:57:09 »
Hola. Varias cosas.

 - ¿Siempre es el mismo motor el que se para o es aleatorio?.
 - ¿ Se para en cualquier velocidad, o solo a partir de determinado consumo?.
- ¿Los dos ESC´s están configurados iguales en cuanto a voltajes de corte?.

  Yo empezaría (Si no tienes osciloscopio) por poner un polímetro en dc voltios a cada ESC (dos polímetros necesitas).

   Observa la lectura de los voltajes que les llega a ambos ESC´s durante el funcionamiento.

   Si los voltajes eran correctos en el momento de pararse el motor, toca mirar el pwm. Para eso como un osciloscopio no hay nada.

   Una cosa a mirar es por ejemplo, desconectar los dos cables del pwm que van a cada ESC. Sepáralos y mide entre negativo y el cable de señal pwm que va a cada ESC.  ¿Da 5V?. Puede que sean entradas pull up. 

    Podrías probar con dos pequeños mosfet. Ambos drain´s los pones a 5V mediante resistencia pullup.  Ambos Source a GND, ambos gate´s a la señal pwm del smt.  Así independizas la entrada de cada ESC por si estuviese ahí el problema.

   Por curiosidad, si usas el mismo PWM para ambos motores, ¿Cómo vas a balancearlos?, salvo que sean para otro menester, lo suyo es gobernar cada motor con un pwm distinto.

   Saludos.

Hola buenas. Lo primero muchas gracias por responder.
-Siempre es el mismo motor el que se para.
-Le metemos la velocidad de golpe. Hacemos una transisición de 600Hz a 310Hz (para hacer pruebas lo hacemos así pero soy cociente de que debo programarlo para que sea algo progresivo para evitar picos de corriente demasiado altos y en consecuencia caídas de tensión. No se si eso puede ser un motivo de fallo la verdad, aunque me extrañaría)
-Los dos motores están configurados igual.

La señal PWM la saco del micro directamente a 3,3V y llegará a unos 2,5V (uso una pull down de 10K a la salida de uC para cada señal). Había descartado que pudiese ser eso ya que los dos motores por separado funcionan.

He probado separar las señales, pero nada cambia. Lo que esta ocurriendo es que los dos motores empiezan a una potencia coherente (16A/17A) pero durante los primeros 8 segundos ambos empiezan a descender su amperaje. Uno de ellos desciende de 16A a practicamente 0A y el otro de 17A a 13A. He acortado los cables y he puesto un mejor contacto en la batería pero sigue ocurriendo lo mismo. He comprobado el voltaje a la salida de la batería y justo a la entrada de los ESC. A la salida de la batería tiene 13,34V, a la entrada de un ESC tiene 13,03 y a la entrada del otro ESC tiene 12,98. Esto me hace pensar que no es un problema de perdidas en el cable ya que si fuese eso la caída de tensión debería ser más significativa (¿no?).



Un saludo y muchas gracias
8
Mucho más elegante, sin duda
9
No estoy seguro de cómo funciona CCS, pero en otros compiladores se puede hacer algo así:
Código: C
  1. typedef union {
  2.    unsigned char byte;
  3.    struct {
  4.        unsigned b0:1;
  5.        unsigned b1:1;
  6.        unsigned b2:1;
  7.        unsigned b3:1;
  8.        unsigned b4:1;
  9.        unsigned b5:1;
  10.        unsigned b6:1;
  11.        unsigned b7:1;
  12.    };
  13. } BYTE;
  14.  
  15. BYTE a;
  16.  
  17. main() {
  18.    a.byte = 128;
  19.    a.b3 = 1;
  20. }
  21.  

Se puede ampliar sin problema para utilizar unsigned long para campos de 32 bits.
10
Eagle / Re:Mas problemillas con Eagle, tontos, pero "porculeros". DRC
« Último mensaje por remi04 en Hoy a las 04:39:00 »
Gracias. Pues va a ser eso por que el grid lo cambio mucho. Ya me había enterado que hacer eso daba problemas.

 
Páginas: [1] 2 3 4 5 6 7 8 9 10
anything