Autor Tema: Puente H con Mosfet y Relé - Silla de ruedas eléctrica  (Leído 55331 veces)

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

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #105 en: 30 de Noviembre de 2014, 07:13:12 »
Citar
El año que viene quizá retome con el grupo que venga y tratemos de terminarla... aunque viendo los nuevos grupos de chicos que van pasando año a año la verdad es que no sé hasta cuando se podrán plantear proyectos.... es terrible como ha caido el nivel educativo!

Buenas Elgarbe, yo para futuros proyectos te aconsejaria pasarte a los motores trifasicos o BLDC (tambien trifasicos), te dara un poco mas de trabajo la electronica de control, pero a cambio tendras mas potencia con el mismo consumo, tendras PAR y potencia independientes hasta cierto punto, un giro mas "redondo", mas silenciosos, etc. Todas las marcas de coches electricos comerciales usan este tipo de motores, asi como en aeromodelismo, las lavadoras de nueva generacion, y en general en todas las aplicacines donde se requiere potencia y poder variar velocidad.

Mientras en un motor DC, supongamos de 24V/480W la potencia es:

W=V*I, I=480/24=20A

En un trifasico seria:

W=raiz de 3*V*I*cos de fi, I=W/1.73*24*0.9=480/37.36=12.84A

Fijate consigues la misma potencia con 12.84A que con 20A, le he puesto un cos de fi de 0.9 los hay incluso mejores. Ademas el torque depende de la V y por tanto de la W que le suministres, mientras que la velocidad dependera de la frecuencia de la onda senoidal (puede valer trapezoidal o incluso cuadrada en pequeñas potencias) que le suministres, aunque aqui V y f deben guardar tambien una proporcion.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #106 en: 30 de Noviembre de 2014, 11:36:52 »
Hola tapi8....

Buenas Elgarbe, yo para futuros proyectos te aconsejaria pasarte a los motores trifasicos o BLDC (tambien trifasicos), te dara un poco mas de trabajo la electronica de control, pero a cambio tendras mas potencia con el mismo consumo, tendras PAR y potencia independientes hasta cierto punto, un giro mas "redondo", mas silenciosos, etc. Todas las marcas de coches electricos comerciales usan este tipo de motores, asi como en aeromodelismo, las lavadoras de nueva generacion, y en general en todas las aplicacines donde se requiere potencia y poder variar velocidad.

Si bien estos motores tienen sus ventajas, pues la electrónica de control le dará mucho más trabajo y sobre todo mucho más costo que la de un motor normal. Acuerdate que acá se está usando en una sillas de rueda
La potencia extra que ganan estos motores no es tanto más que los de los DC comúnes como para justificar su gran costo extra en la parte controladora.
Nunca tendrás par y potencia independientes ya que la potencia es una relación directa del PAR y las RPM. Es como querer decir que tendrás tensión e intensidad independientes en la ley de ohms..
No se lo que quieres indicar con un giro más redondo. Pero lo de más silencioso eso depende, si lo que usas es un BLDC de rotor interno pues deberás tener una parte de control muy sofisticada, que realmente entregue al motor una onda senoidal y no una cuasi-senoidal, pues de lo contrario será bastante más ruidoso que un motor DC standard (a menos que trabajes en alta frecuencia encareciendo costos y aumentando las perdidas). Y como sabrás y salvo en aeromodelismo, los BLDC de rotor externo son bastantes difíciles de usar.
Este tipo de motores se usa en automóviles por el bajo mantenimiento (por no decir nulo) y un pequeño rendimiento extra que tiene de ventaja con los DC comunes... Lavarropas solo lo usa una marca LG, el resto de las marcas sigue con lo tradicional. Y en aeromodelismo es usado por la capacidad que poseen para poder sobre-alimentarlos en comparación a su peso (a cambio de un gran sobre calentamiento y una perdida importante de rendimiento) pero como los vuelos son cortos en duración esto no tiene gran importancia.

Mientras en un motor DC, supongamos de 24V/480W la potencia es:

W=V*I, I=480/24=20A

En un trifasico seria:

W=raiz de 3*V*I*cos de fi, I=W/1.73*24*0.9=480/37.36=12.84A

Pero acuérdate que que en un DC común solo tienes una fase y en un trifásico tienes tres, por lo tanto en un DC común tienes 1x20A y en el BLDC tienes 3x12.84A. Que en definitiva y siguiendo tú lógica tienes mayores perdidas en el trifásico por culpa del coseno fi

Fijate consigues la misma potencia con 12.84A que con 20A, le he puesto un cos de fi de 0.9 los hay incluso mejores. Ademas el torque depende de la V y por tanto de la W que le suministres, mientras que la velocidad dependera de la frecuencia de la onda senoidal (puede valer trapezoidal o incluso cuadrada en pequeñas potencias) que le suministres, aunque aqui V y f deben guardar tambien una proporcion.

Hilando fino tienes ventajas entre un BLDC y un DC común, pero para un aficionado en realidad son más desventajas que beneficios, la complejidad y costo muy superior en la parte controladora hacen desechar el uso de este tipo de motores, ya que las únicas ventajas que poseen en relación a un DC común es un mejor control de las RPM y un leve incremento en la potencia obtenida.

Un saludo.

Atte. CARLOS.

« Última modificación: 30 de Noviembre de 2014, 11:45:14 por Chaly29 »
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #107 en: 30 de Noviembre de 2014, 18:07:05 »
Aparte de las mencionadas, no me inclinaría por un BLDC ya que en argentina no conozco y dudo que exista importador de esos motores. Mucho menos fabricante, con lo que directamente no los podría utilizar para un proyecto "serio".
En esta silla que es demostrativa y para que los pibes aprendan algo, "le cabe" cualquier cosa, lo que consiga y pueda hacer andar es útil, ya sea motor de AC, DC, BLDC o lo que sea. En este proyecto no hay análisis de viabilidad técnica ni económica... Por ejemplo, el año pasado, con el grupo anterior de pibes intentamos haerla andar con motores de limpia-parabrizas usados y de no ser porque el grupo no tenía buenas habilididades con la mecánica y no pudimos hacer un buen acople mecánico, huviese funcionado...

Me quedó dando vueltas en la cabeza la sugerencia de Carlos de pensar en un proyecto real, de construccion de sillas, pero en la escuela... Tengo como par un profesor que tiene muchísimos conocimientos de mecánica y se podría encargar de los fierros, pero el problema que veo es que los chicos vienen, año a año, con menos ganas, entusiasmo, conocimientos, etc. la educacion secundaria esta tan en decadencia que no sé si podríamos juntar 4 o 5 entusiastas para trabajar en un proyecto de este tipo....

En fin, por este año me quedo con haber podido montar los motores y construido una muy buena transmision (piñon, corona, adena) y un primer avance en la electrónica... El año que viene, en funcion del grupo que me toque veremos como seguimos... yo por lo pronto voy a ver si hago algunos avances con la realimentacion de velocidad, pero con una prioridad muy baja, ya que tengo cientos de proyectos personales para desarrollar en estas vacaciones!!!!

Por ahora gracias a todos los que participaron y me ayudaron en esta primer aproximacion! en especial a Carlos y Piccuino!

Saludos!
-
Leonardo Garberoglio

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #108 en: 01 de Diciembre de 2014, 07:04:43 »
Citar
Si bien estos motores tienen sus ventajas, pues la electrónica de control le dará mucho más trabajo y sobre todo mucho más costo que la de un motor normal. Acuerdate que acá se está usando en una sillas de rueda
La potencia extra que ganan estos motores no es tanto más que los de los DC comúnes como para justificar su gran costo extra en la parte controladora.

Es cierto que la electronica es mas compleja, pero no mucho mas cara, ya que en la parte del hardware son dos mosfet mas, en vez de un puente H con 4 mosfet se necesita un puente trifasico con 6, y un driver IR2110 mas, al precio actual de los mosfet 2$ mas (1$ cada mosfet para potencias pequeñas) y 2 o 3$ del IR2110. De hecho se usan cada vez mas porque la electronica es cada vez mas barata y los motores trifasicos en igualdad de potencia son mas baratos que el resto, tienen menos mantenimiento (no llevan escobillas), son mas silenciosos, y consumen menos por lo que aumentan la autonomia. Otra cosa es el software que si es mas complejo, bastante mas.

Citar
Lavarropas solo lo usa una marca LG, el resto de las marcas sigue con lo tradicional.

Hasta ahora si lo usaba solo LG, pero tanto Bosch como Siemens ya estan anunciando sus nuevas lavadoras supersilenciosas, que ahorran energia y con 10 años de garantia, te dejo un fragmento de Siemens donde lo explica:

Citar
Nunca ha existido una lavadora como la nueva lavadora iQdrive™ de Siemens


Siemens presenta las nuevas lavadoras iQdrive™ que proporcionan las máximas prestaciones con la mejor eficiencia energética.

Eficiente como nunca.
Nunca antes los ciclos de lavado y los movimientos del tambor han sido controlados de una forma tan precisa, para conseguir la limpieza más efectiva y el cuidado más delicado de la colada. El sistema iQdrive™ consigue que el consumo de energía sea aún menor que el de las lavadoras actuales, tan solo 0,13 kWh/kg. De esta forma, las nuevas lavadoras de 8 kg son un 30% más eficientes que las de clasificación energética A (0,19 kWh/kg).

Duradera como nunca.
El nuevo motor iQdrive™ con tecnología Brushless, sin escobillas, no tiene ningún tipo de rozamiento, por lo que es más robusto y evita pérdidas de calor. De esta forma, la vida útil de las nuevas lavadoras iQdrive™ de 8 kg se alarga, ofreciendo total fiabilidad sea cual sea la frecuencia de uso.

Silenciosa como nunca.
Incluso con las máximas revoluciones de centrifugado, las lavadoras iQdrive™ de Siemens permanecen en un agradable silencio. Gracias a la combinación de la alta precisión de los sensores de estabilización - un sistema automático que equilibra la máquina - del nuevo diseño antiVibration de los paneles laterales y, por encima de todo, del motor iQdrive,™ las nuevas lavadoras son aún más silenciosas.

Completa como nunca.
Una perfecta combinación de múltiples innovaciones, como un sofisticado sistema de sensores, una electrónica de control de alta precisión, un diseño exclusivo del tambor varioSoft™ y el revolucionario motor iQdrive,™ hacen de estas lavadoras las más completas del mundo. Además, en cada ciclo de lavado, los movimientos del tambor y las temperaturas son controladas de forma óptima para conseguir el mejor cuidado de la colada.

Flexible como nunca.
Las nuevas lavadoras de 8 kg se adaptan totalmente a cualquier necesidad. Al incorporar la tecnología varioPerfect facilitan la elección entre un ahorro de tiempo o de energía y agua. Además, gracias al sistema antimanchas automático, el ciclo de lavado se ajusta a cada tipo de prenda, cuidándola al máximo. De esta forma, se consigue una colada perfectamente limpia en cada lavado.

Para más información: Teléfono de Atención al Usuario: 902 11 88 21 o visitando la página web: www.siemens-ed.com

Citar
Aparte de las mencionadas, no me inclinaría por un BLDC ya que en argentina no conozco y dudo que exista importador de esos motores. Mucho menos fabricante, con lo que directamente no los podría utilizar para un proyecto "serio".

Un trifasico asincrono normal te vale de sobra, en automoviles se usan los BLDC porque pesan algo menos y en potencias grandes se nota, pero en potencias pequeñas el ahorro de peso no es tan importante.

Citar
Me quedó dando vueltas en la cabeza la sugerencia de Carlos de pensar en un proyecto real, de construccion de sillas, pero en la escuela... Tengo como par un profesor que tiene muchísimos conocimientos de mecánica y se podría encargar de los fierros, pero el problema que veo es que los chicos vienen, año a año, con menos ganas, entusiasmo, conocimientos, etc. la educacion secundaria esta tan en decadencia que no sé si podríamos juntar 4 o 5 entusiastas para trabajar en un proyecto de este tipo....

Yo hace un par de años tambien iba a hacer una moto electrica aqui en España con un profesor de FP (formacion profesional) y algunos alumnos, pero los alumnos no quisieron meterse a hacerla, eran de rama mecanica y les parecio muy complicado esto de la electronica  :5] :lol: :lol: :lol:


Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #109 en: 14 de Diciembre de 2014, 13:18:07 »
Citar
El año que viene quizá retome con el grupo que venga y tratemos de terminarla... aunque viendo los nuevos grupos de chicos que van pasando año a año la verdad es que no sé hasta cuando se podrán plantear proyectos.... es terrible como ha caido el nivel educativo!

Buenas Elgarbe, yo para futuros proyectos te aconsejaria pasarte a los motores trifasicos o BLDC (tambien trifasicos), te dara un poco mas de trabajo la electronica de control, pero a cambio tendras mas potencia con el mismo consumo, tendras PAR y potencia independientes hasta cierto punto, un giro mas "redondo", mas silenciosos, etc. Todas las marcas de coches electricos comerciales usan este tipo de motores, asi como en aeromodelismo, las lavadoras de nueva generacion, y en general en todas las aplicacines donde se requiere potencia y poder variar velocidad.

Mientras en un motor DC, supongamos de 24V/480W la potencia es:

W=V*I, I=480/24=20A

En un trifasico seria:

W=raiz de 3*V*I*cos de fi, I=W/1.73*24*0.9=480/37.36=12.84A

Fijate consigues la misma potencia con 12.84A que con 20A, le he puesto un cos de fi de 0.9 los hay incluso mejores. Ademas el torque depende de la V y por tanto de la W que le suministres, mientras que la velocidad dependera de la frecuencia de la onda senoidal (puede valer trapezoidal o incluso cuadrada en pequeñas potencias) que le suministres, aunque aqui V y f deben guardar tambien una proporcion.

Hola tapi8, interesante tus cálculos  incluso sería posible utilizar gate drivers mas eficientes y en encapsulados mas pequeños, pero donde se consiguen éstos motores en Argentina (en China si pero acá, donde?).

Saludos y gracias ((:-)).

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #110 en: 14 de Diciembre de 2014, 13:47:32 »
Aparte de las mencionadas, no me inclinaría por un BLDC ya que en argentina no conozco y dudo que exista importador de esos motores. Mucho menos fabricante, con lo que directamente no los podría utilizar para un proyecto "serio".
En esta silla que es demostrativa y para que los pibes aprendan algo, "le cabe" cualquier cosa, lo que consiga y pueda hacer andar es útil, ya sea motor de AC, DC, BLDC o lo que sea. En este proyecto no hay análisis de viabilidad técnica ni económica... Por ejemplo, el año pasado, con el grupo anterior de pibes intentamos haerla andar con motores de limpia-parabrizas usados y de no ser porque el grupo no tenía buenas habilididades con la mecánica y no pudimos hacer un buen acople mecánico, huviese funcionado...

Me quedó dando vueltas en la cabeza la sugerencia de Carlos de pensar en un proyecto real, de construccion de sillas, pero en la escuela... Tengo como par un profesor que tiene muchísimos conocimientos de mecánica y se podría encargar de los fierros, pero el problema que veo es que los chicos vienen, año a año, con menos ganas, entusiasmo, conocimientos, etc. la educacion secundaria esta tan en decadencia que no sé si podríamos juntar 4 o 5 entusiastas para trabajar en un proyecto de este tipo....

En fin, por este año me quedo con haber podido montar los motores y construido una muy buena transmision (piñon, corona, adena) y un primer avance en la electrónica... El año que viene, en funcion del grupo que me toque veremos como seguimos... yo por lo pronto voy a ver si hago algunos avances con la realimentacion de velocidad, pero con una prioridad muy baja, ya que tengo cientos de proyectos personales para desarrollar en estas vacaciones!!!!

Por ahora gracias a todos los que participaron y me ayudaron en esta primer aproximacion! en especial a Carlos y Piccuino!

Saludos!

Hola elgarbe como andas, no sabia que colaborabas con los chicos de escuelas técnicas, bien ahí!, saliendo un un poquitin del tema y arrimandomé a tus comentarios sobre el poco entuciasmo de los chicos y chicas y el nivel de educación, bueno creo que la motivación la debe transmitir el educador (realmente no hay algo tan lindo de ver para un educador que el grupo se enganche en las propuestas, el educador debe buscar las mil y una formas de enganchar a los chicos ) es una edad complicada y mas con todo lo que ellos tienen a nivel tecnológico a la alcance, no sabes si los favorece o no. Donde yo trabajo mi empleador colabora con diseño industrial de la UBA (con fines de lucro) si vieras los planos te caes muerto, mal acotados o sobre acotados y muchas veces tienen tantas cotas que no sirven para nada (ojo, los proyectos son fabulosos, ablando de cuarto año para arriba) pero al no pensar como se podría hacer la pieza no acotan las referencias correctas, y muchas veces mi jefe no solo tiene que redibujar todo para que pasen las piezas a producción si no que debe acesorarlos. Saludos amigo , por cierto nunca respondistes por la insoladora a led ( igual me quede con tantas dudas que quedó a un lado ), saludos y que andes bien  ;-) 

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #111 en: 17 de Diciembre de 2014, 06:48:38 »
Citar
Hola tapi8, interesante tus cálculos  incluso sería posible utilizar gate drivers mas eficientes y en encapsulados mas pequeños, pero donde se consiguen éstos motores en Argentina (en China si pero acá, donde?).

Pues en Argentina no lo se, yo soy de España, supongo que te refieres a los BLDC, pero estan muy extendidos, de todas maneras como le dije a Elgarbe en potencias pequeñas los trifasicos convencionales van casi igual de bien, lo unico que dicen que en potencias grandes los BLDC pesan algo menos y claro los coches electricos llevan motores grandes: Nissan Leaf 80KW, Tesla Model-S 310KW, en estas potencias si se notara la diferencia de peso. Los motores trifasicos llevan bobinados en el rotor y los BLDC llevan imanes, los BLDC son mas caros porque esos imanes estan hechos de "tierras raras" que son escasas y caras.

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #112 en: 27 de Diciembre de 2014, 19:56:10 »
Citar
Hola tapi8, interesante tus cálculos  incluso sería posible utilizar gate drivers mas eficientes y en encapsulados mas pequeños, pero donde se consiguen éstos motores en Argentina (en China si pero acá, donde?).

Pues en Argentina no lo se, yo soy de España, supongo que te refieres a los BLDC, pero estan muy extendidos, de todas maneras como le dije a Elgarbe en potencias pequeñas los trifasicos convencionales van casi igual de bien, lo unico que dicen que en potencias grandes los BLDC pesan algo menos y claro los coches electricos llevan motores grandes: Nissan Leaf 80KW, Tesla Model-S 310KW, en estas potencias si se notara la diferencia de peso. Los motores trifasicos llevan bobinados en el rotor y los BLDC llevan imanes, los BLDC son mas caros porque esos imanes estan hechos de "tierras raras" que son escasas y caras.

Tapi8 antes que nada Fliz Navidad prospero año nuevo :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-).

Ahora al tema ,si por acá no se fabrican se importan de China, y por ahora vehículos pequeños bicicletas, motos pequeñas.

Saludos. ;-) 


Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #113 en: 08 de Enero de 2015, 01:24:29 »
Yo hice un control de un motor de dirección de 48V dc de 180W para un montacargas, cuando giras el timón sin el motor es muy duro, con el motor activado con su controlador el timón es suave según la velocidad que giras el timón su fuerza varia y jira ambos lados por eso usa puente H. Primero di señal PWM a 2 mosfet tanto el mosfet parte positivo y de tierra el torque era débil a bajas velocidades después di PWM al mosfet que esta al positivo y que está conectado a tierra una señal de control de 10V constante y como resultado me dio un torque mayor.
El único problema que tuve es él cuando el montacargas frena, porque al frenar la rueda de tracción donde está el timón se gira solo con fuerza trata de ponerse derecho y pierde su posición  así que lo endurecí la dirección con el mismo circuito puente H debido que el motor es de imán permanente y este funciona como un dinamo y que a corto circuitarlo se pone duro al girarlo y esto adsorbía el golpe del frenado. Pero la corriente es muy alta  en el frenado y los mosfet a la semana se quemaron, puse un control de corriente y ya no se queman los mosfet, pero la adsorción del golpe de frenado en la dirección era un poco menor pero su funcionamiento quedo bien.


Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #114 en: 22 de Marzo de 2015, 19:42:23 »
Bueno, un nuevo año lectivo comenzó y aquí estamos otra vez, retomando este proyecto con otro grupo.
El año pasado llegamos a hacer toda la mecánica y unas pocas pruebas de la electrónica. Ya este año vamos a comprar las baterías y terminar la parte electrónica.
Como micro estamos usando un 4550, que posee 2 salidas PWM y la tecnica sugerida por Carlos para la inversion de marcha.

La primer consulta que tengo es si saben donde puedo conseguir un joystick para comandar la silla. Si es con 4 pulsadores sirve, lo ideal sería analógico, aunque no estoy seguro que es lo que se suele utilizar en sillas reales.

El segundo consejo que busco es como pensar en la logica de programacion en el micro. Yo por ahora tengo estas rutinas:

Código: [Seleccionar]
/* Configuracion de Rampa de aceleracion para arranar los motores
 * PASOS_ARRANQUE: CUANTOS incrementos hay del DC entre 0 y DC_FINAL_ARRANQUE
 * TIEMPO_ARRANQUE: milisegundos que tarda el DC en ir de 0 a DC_FINAL_ARRANQUE
 * DC_FINAL_ARRANQUE: Es el DC con el cual se alanza la velocidad final de arranque
 * DC_INCREMENTO_PASOS: En cuánto se incrementa el DC en cada paso. Usado para los for(;;)
 * RETARDO_PASOS_ARRANQUE: Tiempo muerto entre cada inremento de DC */
#define PASOS_ARRANQUE      20
#define TIEMPO_ARRANQUE     4000
#define DC_FINAL_ARRANQUE   900
#define DC_INCREMENTO_PASOS DC_FINAL_ARRANQUE/PASOS_ARRANQUE
#define RETARDO_PASOS_ARRANQUE  TIEMPO_ARRANQUE/PASOS_ARRANQUE

void adelante(void){
    uint16_t i;
    //Pongo en 0 el DC de los dos motores
    set_dc_pwm1(0);
    set_dc_pwm2(0);
    K12D = 1;           // Motor Derecha en CW
    K12I = 1;           // Motor Izquierda en CW
    MyMsDelay(150);     // Retardo para asegurar la conmutaion de los Reles
    //Incremento el DC de acuerdo a la rampa de aceleracion
    for(i=0;i < DC_FINAL_ARRANQUE; i+=DC_INCREMENTO_PASOS){
        set_dc_pwm1(i);
        set_dc_pwm2(i);
        MyMsDelay(RETARDO_PASOS_ARRANQUE);
    }
    //Al salir de la rutina el motor esta funcionando a la velocidad DC_FINAL_ARRANQUE
}

void atras(void){
    uint16_t i;
    //Pongo en 0 el DC de los dos motores
    set_dc_pwm1(0);
    set_dc_pwm2(0);
    K12D = 0;           // Motor Derecha en CCW
    K12I = 0;           // Motor Izquierda en CCW
    MyMsDelay(150);     // Retardo para asegurar la conmutaion de los Reles
    //Incremento el DC de acuerdo a la rampa de aceleracion
    for(i=0;i < DC_FINAL_ARRANQUE; i+=DC_INCREMENTO_PASOS){
        set_dc_pwm1(i);
        set_dc_pwm2(i);
        MyMsDelay(RETARDO_PASOS_ARRANQUE);
    }
    //Al salir de la rutina el motor esta funcionando a la velocidad DC_FINAL_ARRANQUE
}

void parar(void){
    //Pongo en 0 el DC de los dos motores
    set_dc_pwm1(0);
    set_dc_pwm2(0);
}

El problema que le veo a esto es que la rámpa de aceleracion hace que la silla no responda hasta que termine la rutina y al finalizar ésta la silla queda en marcha. No alcanzo a ver como hacer para que la rampa se ejecute mientras que se mantenga pulsado ADELANTE. No creo que sea tan complicado, pero me sería util alguna sugerencia de como hacerlo bien...

Por ahora con eso me sirve para avanzar.

Saludos!
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #115 en: 22 de Marzo de 2015, 20:06:21 »
Podrias poner un break; ante una condicion..

Dentro del for() , le pones un if (xxx = 1) velocidad=0; break;

asi sale antes del for, y para mi deberias de controlar cada motor por separado. y no una fucnion de "adelante", ademas deberias tener en cuenta el estado de los PWM antes de entrar de nuevo a la funcion..

Ejemplo la silla va a 5Km/h y suelta la palanca y la presiona de nuevo. de golpe pones los PWM a 0 ...  o una velocidad super baja. Creo que se notaria un empujoncito.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #116 en: 22 de Marzo de 2015, 20:16:51 »
Podrias poner un break; ante una condicion..

Dentro del for() , le pones un if (xxx = 1) velocidad=0; break;

asi sale antes del for, y para mi deberias de controlar cada motor por separado. y no una fucnion de "adelante", ademas deberias tener en cuenta el estado de los PWM antes de entrar de nuevo a la funcion..

Ejemplo la silla va a 5Km/h y suelta la palanca y la presiona de nuevo. de golpe pones los PWM a 0 ...  o una velocidad super baja. Creo que se notaria un empujoncito.

Claro, esas cuestiones son las que me gustaría ayuden a pensar. No me habia dado cuenta de eso...
Por que no te gusta la funcion adelante? como haría para ir hacia adelante controlando los motores por separado?

sds!
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #117 en: 22 de Marzo de 2015, 20:37:52 »
quizás algo así?

Código: [Seleccionar]
void main(void){
    uint16_t i=0;
    uint8_t movimiento_actual=0;    //0:Detenido, 1:Adelante, 2:Atras
    uint8_t paso_rampa_acel=0;      //Indica en que paso de la rampa estamos

    conf_puertos();
    conf_pwm();
    K12D = 0;
    K12I = 0;
    while(1){
        while(P_ADE){       // Mientras pulsemos el pulsador ADELANTE
            LED_ADE=1;
            if(movimiento_actual <> 1){
                // Pongo en 0 el DC de los dos motores. Debería configurar de alguna forma
                // una Rampa de Desaceleracion.
                set_dc_pwm1(0);
                set_dc_pwm2(0);
                K12D = 1;           // Motor Derecha en CW
                K12I = 1;           // Motor Izquierda en CW
                MyMsDelay(150);     // Retardo para asegurar la conmutaion de los Reles 
                paso_rampa_acel=1;  // Comienzo de la rampa de aceleracion
            }
            movimiento_actual=1;    // Estamos yendo hacia adelante
            //Incremento el DC de acuerdo a la rampa de aceleracion
            if(paso_rampa_acel<(DC_FINAL_ARRANQUE/DC_INCREMENTO_PASOS)){
                set_dc_pwm1(paso_rampa_acel*DC_INCREMENTO_PASOS);
                set_dc_pwm2(paso_rampa_acel*DC_INCREMENTO_PASOS);
                MyMsDelay(RETARDO_PASOS_ARRANQUE);
                paso_rampa_acel++;
            }
        }
    }
}

y agregaría distintos while para cada pulsador... como lo ven? o tendré que pensarlo con interrupciones?

sds.
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #118 en: 23 de Marzo de 2015, 01:23:18 »
Citar
Por que no te gusta la funcion adelante? como haría para ir hacia adelante controlando los motores por separado?

Es que pense lo siguiente... movimientos basicos:

izquierda , derecha, adelante , atras

mezcla de estos

adelante y luego a la izquierda , adelante y luego a la derecha etc.

Si controlas los 2 motores, adelante serian los 2 a la misma velocidad.
e izquierda seria frenar un poco el de la izquierda ( cuando esta en movimiento ) , si esta quieto ( deberia ser ir hacia atras el de la izquierda y adelante el de la derecha )
No veo como podes obtener una salida asi con esa funcion.

Si mantenes un registro global de ambos PWM y haces un switch case de todos los casos

Código: C
  1. switch (joystick)
  2.         case adelante:
  3.                 if (!moviendose_adelante) frenar();
  4.                 acelerar();
  5.                 break;
  6.         case atras:
  7.                 if (!moviendose_atras) frenar();
  8.                 acelerar_atras();
  9.                 break;
  10.         case izquierda:
  11.                 if (moviendose_adelante || moviendose_atras)
  12.                 {
  13.                         frenar()
  14.                         if (moviendose_adelante)
  15.                         {
  16.                                 disminuyo_PWM_der();
  17.                                 disminuyo_PWM_izq_dif(20); //Hasta cierto punto , siempre PWM der > PWM izq ( pero no lo freno )
  18.                         }
  19.                         else
  20.                         {
  21.                                 disminuyo_PWM_izq()
  22.                                 disminuyo_PWM_der_dif(20);
  23.                         }
  24.                 }
  25.                 else
  26.                 {
  27.                         acelerar_izq_atras();
  28.                         acelerar_der_adelante();
  29.                 }
  30.                 break;
  31.         case derecha
  32.                 if (moviendose_adelante || moviendose_atras)
  33.                 {
  34.                         frenar()
  35.                         if (moviendose_adelante)
  36.                         {
  37.                                 disminuyo_PWM_der(); //Hasta cierto punto
  38.                         }
  39.                         else
  40.                         {
  41.                                 disminuyo_PWM_izq();
  42.                         }
  43.                 }
  44.                 else
  45.                 {
  46.                         acelerar_der_atras();
  47.                         acelerar_izq_adelante();
  48.                 }
  49.         default:
  50.                 frenar();


me faltan los de adelante-derecha y demas

Pero las funciones
Simplemente producen el incremento de 1 solo escalon:

acelerar();

supoente que estas con PWM en 0 de ambos, lo sube a 5 la primera ves que entra, a 10 luego y asi consecutivamente.

freno();

Hace lo inverso a acelerar.

disminuyo_PWM_izq()
disminuyo_PWM_der_dif(20);

Esto que hice ahi fue querer hacer: disminuye en X cantidad el PWM de la izquierda y el de la derecha tambien pero con una diferencia de 20 en sus PWM.
Si no se presiona nada pasa al default que va frenando todo.

Es lo que se me ocurrio para hacerlo :)

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Puente H con Mosfet y Relé - Silla de ruedas eléctrica
« Respuesta #119 en: 23 de Marzo de 2015, 11:52:50 »
Entiendo la idea.

Tengo funcionando la parte de ir hacia adelante, frenar e ir hacia atras casi perfecto con este código:

Código: [Seleccionar]
    while(1){
        while(P_ADE){       // Mientras pulsemos el pulsador ADELANTE
            LED_ADE=1;
            if(movimiento_actual != 1){
                // Pongo en 0 el DC de los dos motores. Debería configurar de alguna forma
                // una Rampa de Desaceleracion.
                set_dc_pwm1(0);
                set_dc_pwm2(0);
                K12D = 1;           // Motor Derecha en CW
                K12I = 1;           // Motor Izquierda en CW
                MyMsDelay(150);     // Retardo para asegurar la conmutaion de los Reles 
                paso_rampa_acel=1;  // Comienzo de la rampa de aceleracion
            }
            movimiento_actual=1;    // Estamos yendo hacia adelante
            //Incremento el DC de acuerdo a la rampa de aceleracion
            if(paso_rampa_acel < PASOS_ARRANQUE){
                set_dc_pwm1(paso_rampa_acel*DC_INCREMENTO_PASOS);
                set_dc_pwm2(paso_rampa_acel*DC_INCREMENTO_PASOS);
                MyMsDelay(RETARDO_PASOS_ARRANQUE);
                paso_rampa_acel++;
            }
        }
        while(P_ATR){       // Mientras pulsemos el pulsador ATRAS
            LED_ATR=1;
            if(movimiento_actual != 2){
                // Pongo en 0 el DC de los dos motores. Debería configurar de alguna forma
                // una Rampa de Desaceleracion.
                set_dc_pwm1(0);
                set_dc_pwm2(0);
                K12D = 0;           // Motor Derecha en CW
                K12I = 0;           // Motor Izquierda en CW
                MyMsDelay(150);     // Retardo para asegurar la conmutaion de los Reles
                paso_rampa_acel=1;  // Comienzo de la rampa de aceleracion
            }
            movimiento_actual=2;    // Estamos yendo hacia adelante
            //Incremento el DC de acuerdo a la rampa de aceleracion
            if(paso_rampa_acel < PASOS_ARRANQUE){
                set_dc_pwm1(paso_rampa_acel*DC_INCREMENTO_PASOS);
                set_dc_pwm2(paso_rampa_acel*DC_INCREMENTO_PASOS);
                MyMsDelay(RETARDO_PASOS_ARRANQUE);
                paso_rampa_acel++;
            }
        }
        while(!P_ATR && !P_ADE){        // Mientras no pulsemos ningun pulsador
            LED_ATR=0;
            LED_ADE=0;
            movimiento_actual=0;        // Estamos deteniendo la marcha
            //Incremento el DC de acuerdo a la rampa de aceleracion
            if(paso_rampa_acel != 0){
                paso_rampa_acel--;
                set_dc_pwm1(paso_rampa_acel*DC_INCREMENTO_PASOS);
                set_dc_pwm2(paso_rampa_acel*DC_INCREMENTO_PASOS);
                MyMsDelay(RETARDO_PASOS_ARRANQUE);
            }
        }
    }

Mientras se pulse adelante se queda en un lazo acelerando hasta el Duty Cycle maximo configurado (vel maxima). Al principio del lazo verifico si estabamos moviendo hacia adelante. Si estamos en otra direccion debemos poner el DC a 0 para poder acomodar los Relés. y luego acelerar.
Cuando no se pulsa ninguno empieza a desacelerar.
Voy a hacer alguna enumeraciones y acomodar el codigo para hacerlo mas legible y programar los giros... creo que va tomando forma!

Saludos!
-
Leonardo Garberoglio