Autor Tema: Donde están las librerías de los acelóremtros en Proteus??  (Leído 18755 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Donde están las librerías de los acelóremtros en Proteus??
« en: 26 de Noviembre de 2013, 03:18:48 »
Buenos días, estoy comenzando a mirar el tema de los acelerómetros y no encuentro la librería del MMA7260 ni ningún acelerómetro en proteus. He buscado en San Google y no hay manera. Tengo el Proteus 8, alguien sabe donde están o como los puedo conseguir???

     Muchas gracias.
Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado lozanolopez

  • PIC10
  • *
  • Mensajes: 5
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #1 en: 03 de Diciembre de 2013, 14:20:30 »
No se si habra, pero yo supongo que no es facil simular un acelerometro virtual. Un pulsador es facil de simular, pero un acelerometro... ¿como haces para moverlo? A lo mejor no tiene mucho sentido. Prueba a usar un componente que te de la misma salida que un acelerometro.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #2 en: 03 de Diciembre de 2013, 17:10:21 »
Hola, Simularlo es muy sencillo, sólo basta con poner un potenciómetro y en los extremos le colocas dos voltajes, a un lado le pones una fuente DC con 1.3V al otro lado le pones otra fuente DC con 1.9V, el cursor del potenciómetro es la salida.

Saludos.

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #3 en: 05 de Febrero de 2014, 14:57:38 »
Bueno bueno, perdón por mi ignorancia pero no me salgo, he hecho esta simulación pero me da a mi que no es lo que quiero (más bien porque no funciona)

 

Alguna pista de como hacer ese potenciómetro con los voltajes???

              Muchas gracias y muy agradecido como siempre.
Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #4 en: 05 de Febrero de 2014, 15:44:14 »
Ensaya con esto.

Saludos

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #5 en: 14 de Febrero de 2014, 07:01:29 »
   Muchas gracias por la foto y el ejemplo, pues ya lo he puesto en mi proyecto y ahora si que todo funciona. Os paso una fotito de lo que he hecho.



   Simplemente quiero manejar un servo mediante pulsos a traves de una resistencia variable. Pero siguen mis problemas, por más que miro no se que pasa pero aunque la resistencia se mueve y el lcd lee la mediciçon , el ancho del pulso del servo no cambia. Por que?? Os paso el código por si alguno le ve algo. No seais muy críticos con el código, empiezo con  C y basicamente son un par de programas que he cazado por internet y los he modificado a mis posibilidades.

   Como siempre, muyyyyyyyyyyyyyyyyyy agradecido.

Código: [Seleccionar]
#use delay(clock=4000000)
#include <LCD.C>

void main()
{
   setup_adc_ports(AN0);                                   //Canal 0 analógico
   setup_adc(ADC_CLOCK_INTERNAL);                          //Fuente de reloj RC
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_adc_ports(AN0);                                   //Canal 0 analógico
   setup_adc(ADC_CLOCK_INTERNAL);                          //Fuente de reloj RC
   output_low(PIN_C2); //CCP1
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_16, 255, 1);
   
   int16 q;
   float p;
 
   lcd_init();
   
   for (;;) {
      set_adc_channel(0);                                  //Habilitación canal0
      delay_us(20);
      q = read_adc();                                      //Lectura canal0
      p = 5.0 * q / 1024.0;                                //Conversión a tensión

      printf(lcd_putc, "\fADC = %4ld", q);
      printf(lcd_putc, "\nVoltage = %01.2fV", p);

      delay_ms(100);
      }
     
      while(1)
   {
      for(q=0; q < 255)
      {
      set_pwm1_duty(q);
         delay_ms(5);
      }
      }     
   }
 

Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #6 en: 14 de Febrero de 2014, 17:56:27 »
lo primero que veo es que en tu ciclo for te falta incrementar q

for(q=0; q < 255; q++)
"Nada es imposible, no si puedes imaginarlo"

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #7 en: 17 de Febrero de 2014, 02:53:28 »
Buenos días, gracias Rivale por el dato, estoy todavía muy pez en esto del C++ y es cierto, a la secuencia for le faltaba algo. Lo que pasa es que al ponerlo no me hacía el efecto que quería. Ahora, lo que he hecho es simplificar más el código y el esquema para no complicarme la vida y la cosa empieza a ir mejor. Actualmente el motor ya se mueve por pulsos y dependiendo de la resistencia se mueve más o menos.  :( :( pero mis problemas siguen, ahora me falta optimizar los tiempos del timer para que el motor vaya de parado al 100% de su velocidad y no me salgo.

   Os cuelgo mi código y una foto del esquema al que he añadido un puente h para el movimiento del motor.
   Creo que ya me falta poco para conseguirlo.

              Como siempre, muy agradecido por las respuestas.

Código: [Seleccionar]
#include "F:\Monobike\Programa\Monobike 281213.h"
#use delay(clock=4000000)

void main()
{
   setup_adc_ports(AN0);                                   //Canal 0 analógico
   setup_adc(ADC_CLOCK_INTERNAL);                          //Fuente de reloj RC
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_adc_ports(AN0);                                   //Canal 0 analógico
   setup_adc(ADC_CLOCK_INTERNAL);                          //Fuente de reloj RC
   output_low(PIN_C2); //CCP1
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_16, 255,1);
   
  int P;
 
 set_adc_channel(0); // elegimos el canal que vamos a leer.
 output_low(PIN_C2);
 
 while(1)
 {
 P=read_adc(); // leemos la tension en el canal que elegimos.
 set_pwm1_duty(P);
 }
      }
 

Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #8 en: 17 de Febrero de 2014, 11:32:01 »
Cual es el error que tienes, como se comporta?, no alcanzo a ver bien tu diagrama, lo podrías poner mas grande. aunque te recomiendo que uses alguno de los integrados de puente H, como el L293 o el L298

lo que veo en tu código es que tienes algunas intrucciones repetidas, pero eso no debería afectar, otra cosa que veo es que lees el puerto ADC constantemente dentro de tu while, te recomiendo ponerle un retardo entre cada actualización.

Saludos
"Nada es imposible, no si puedes imaginarlo"

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #9 en: 18 de Febrero de 2014, 17:19:14 »
   Muchas gracias rivale por tus consejos. Efectivamente habían cosas duplicadas y las he eliminado (creo que también puedo eliminar algo más, pero no me preocupa y no quiero tocar lo que no debo) Además, he puesto un delay para que no esté constantemente leyendo y la verdad es que el programa va cogiendo forma. Perdón por la foto, pero intentaré buscar otro sitio a ver si la hago más grande, aunque te adelantaré que si he usado un puente H (aunque en la foto apensa se aprecia) y la verdad es que el programa ha mejorado bastante.
   Ahora solo me falta mejorar los tiempos para que el motor vaya de parado al máximo, actualmente va de muy lento a rápido, pero no se como mejorarlo. Como siempre os paso el código y una foto del esquema.

Código: [Seleccionar]
#include "F:\Monobike\Programa\Monobike 281213.h"
#use delay(clock=4000000)

void main()
{
   setup_adc_ports(AN0);                                   //Canal 0 analógico
   setup_adc(ADC_CLOCK_INTERNAL);                          //Fuente de reloj RC
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   output_low(PIN_C2); //CCP1
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_16, 255,1);
   
  int P;
 
 set_adc_channel(0); // elegimos el canal que vamos a leer.
 output_low(PIN_C2);
 
 while(1)
 {
 P=read_adc(); // leemos la tension en el canal que elegimos.
 delay_ms(5);
 set_pwm1_duty(P);
 }
      }
 




Ahora si se ve bien, quizás un poco grande, la próxima la mejoro  :) :) :)
Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #10 en: 18 de Febrero de 2014, 17:27:10 »
no entiendo bien a que te refieres con mejorar los tiempos para que vaya de parado al máximo. la velocidad se la asignas desde lo que lees del ADC, el cual viene de un potenciómetro, entonces el tiempo para que pase del mínimo al máximo depende de que tan rápido gires el potenciómetro.


"Nada es imposible, no si puedes imaginarlo"

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #11 en: 01 de Marzo de 2014, 12:25:00 »
A ver si se explicarme mejor. Mi intencion es que a un lado del potenciómetro el motor este parado y conforme voy moviendo el potenciómetro hacia el otro, el motor se va revolucionando hasta llegar a su máximo. Mi idea es hacer un robot equilibrista con el acelerómetro MMA7260, pero antes de liarme en serio deberia poder controlar un motor con pwm correctamente.
Rivale, he visto que has hecho uno a lo grande, algún consejo para alguien que empieza? Muy chulo tu trasto, poco a poco me leere tu mensaje que tiene un buen rato de lectura.

Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #12 en: 01 de Marzo de 2014, 15:00:06 »
ha, ya entendí hacia donde vas.

puede que tengas algo de ruido en tu señal y por eso varia tu velocidad del motor, podrías hacer que se actualice cada segundo

tambien podrias enviar tu lectura del ADC a una lcd o hacía una hiperterminal.

esto te serviria como prueba, porque para hacer el robot equilibrista tienes que filtrar la señal del acelerómetro y combinarla con la de un giroscopio para evitar el ruido.

Espero nos cuentes como te va con tu proyecto y aca ando por si tienes dudas

Saludos

"Nada es imposible, no si puedes imaginarlo"

Desconectado Fulguitron

  • PIC16
  • ***
  • Mensajes: 122
    • Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #13 en: 02 de Marzo de 2014, 18:00:27 »
como? ruidos? giroscopios? jjajajaja ya veo que tengo faena por delante.de momento montare otra simulacion con una lcd y a ver que pasa. ya os irecontando.quizas hasta abra otro hilo con mis progresos.

un saludo a todos y especialmente a rivale.
Disfruta de mi blog, hobbies y gadgets diferentes y poco comunes.

http://hobbiesygadgets.blogspot.com.es/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Donde están las librerías de los acelóremtros en Proteus??
« Respuesta #14 en: 03 de Marzo de 2014, 11:35:55 »
el acelerómetro te mide la aceleración en todos sus ejes, por lo que es muy sensible a las vibraciones.

como adelanto te podría decir que solo con el acelerómetro no puedes medir la inclinación de un robot si este esta sujeto a aceleraciones diferentes a la de la gravedad, por eso se hace uso de un giroscopio que mide la velocidad angular.

Pero creo que podemos ver eso mas a detalle cuando termines tus pruebas con el acelerómetro

Saludos
"Nada es imposible, no si puedes imaginarlo"


 

anything