Autor Tema: driver 5A bipolar  (Leído 98634 veces)

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

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: driver 5A bipolar
« Respuesta #15 en: 02 de Agosto de 2009, 21:44:26 »
 :-/ bueno, finalmente mi primer proyecto terminado  :-/
les comento que luego de algunos tropiezos (vean este post, para ver los problemas y soluciones que se me plantearon con el driver) http://www.todopic.com.ar/foros/index.php?topic=26801.0
terminie el el driver, lo probe con el mach3 (en vacio por ahora, todavia falta la mecanica) y funciona de maravillas.

primero algunas fotos (el driver, la fuente y la interface (es la de esteca55))



el driver ademas de la pareja L297 L6203 que permite controlar motores bipolares de hasta 5A 36V tiene un pic 16f84A con la finalidad de evitar recalentamientos en los motores cuando estos estan "parados" manteniendo el torque, esto se logra poniendo Vref al 50% de su valor, de esta manera la corriente que circula por las bobinas de los motores cuando estos estan "detenidos" es la mitad de su maximo. Para eso es muy importante ajustar el valor del preset (R9) al que corresponda para los parametros de Vref que se esten usando.


les dejo el esquematico y las placas (top y bottom, presten atencion al pasarlas que las ponen correctamente y que les coincidan los pads). Los diodos de proteccion, estan puestos para el caso en que sea necesario por altas inductancias protejer los l6203, el diseño esta hecho para soldar en la cara inferior de la placa.



ademas los archivos en eagle y el codigo para el pic.

Código: C
  1. /////////////////////////interrupcion puerto B pic16F84////////////////////
  2. // se detecta por interrupcion en RB0 un pulso por flanco ascendente de  //
  3. // la señal de clock (señal de pasos)                                                                  //
  4. // una vez detectado se le toma el tiempo, si el mismo exede 1segundo    //
  5. // RA0 se pone en 1, caso contrario RA0 se pone a 0                                              //
  6. // (en el circuito, RA0 se conecta a la base de un transistor,               //
  7. // cuando RA0 exita la base del transistor este pone en paralelo a la    //
  8. // pata Vref del L297 una resistencia que reduce al %50 la tencion de    //
  9. // referencia                                                                                                                    //
  10. ///////////////////////////////////////////////////////////////////////////
  11.  
  12. ///////////////////////////////////////////////////////////////////////////
  13. // metodo usado para setear el timer0 y lograr medir 1 segundo           //
  14. // el maximo valor que puedo medir con el timer0 a 4MHz seria:                   //
  15. // (4/FOSC) * 256 (valor maximo del contador) * 256(prescaler rate)              //
  16. // (el prescaler es un divisor de frecuencia, si por ejemplo aumento     //
  17. // su valor en 2, la frecuencia que se usara para medir el tiempo será  //
  18. // 2*4/FOSC, siendo el maximo permitido 256*4/FOSC)                                              //
  19. // 4/4000000 * 256 * 256 = 0,065536 seg = 65,536ms                                               //
  20. // con el prescaler a 1 el maximo valor a medir seria:                                   //
  21. // 4/4000000 * 256 * 1 = 0,000256 seg = 256µs                                                   //
  22. // yo quiero contar 100µseg entonces:                                                                   //
  23. // 4/4000000Hz * (256 - x) = 100µs                                                                              //
  24. // 256 - x = 100µs / 1µs = 100                                                                                         //
  25. // x = 256 - 100 = 156                                                                                                   //
  26. // de ahi el set_timer0(156)                                                                                     //
  27. // 1 segundo son 10000µs con ajustar una variable que cuente 10000              //
  28. // desbordes de timer0 logro medir 1 segundo                                                     //
  29. ///////////////////////////////////////////////////////////////////////////
  30.  
  31. #include <16F84.h>                              //pic a utilizar
  32. #fuses XT,NOWDT,NOPROTECT               //fusibles (cristal, sin watch dog, sin proteccion)
  33. #use delay(clock=4000000)               //velocidad del cristal
  34. #use fast_io(A)                                 //el compilador no se asegura que los puertos esten asignados
  35.                                                                 //correctamente como entradas o salidas segun corresponda, esto evita
  36.                                                                 //codigo extra, pero se tiene que configurar correctamente los registros
  37.                                                                 //tris segun el uso que se le de a los puertos.
  38. #use fast_io(B)
  39.  
  40.  
  41. /////////////////////////////variables/////////////////////////////////////
  42.  
  43. int1 flanco=0;                                  //flanco es una variable de un bit
  44. int16 ticks=0;                                  //ticks es una variable de 16 bits      
  45.  
  46. ///////////////////////////////////////////////////////////////////////////
  47.  
  48. #INT_EXT                                                                //interrupcion externa en RB0
  49. void interrupcionRB0() {
  50.         ticks=0;                                                        //variable que va a contar un segundo la
  51.                                                                                 // pongo a cero
  52.         set_timer0(156);                                        //inicializo el timer0 en 156
  53.         output_a(0b00000);                                      //pongo a cero el puerto A
  54.         }
  55.  
  56. #INT_TIMER0                                                             //interrupcion por desborde de timer0
  57. void int_timer() {                                              //desborda cada 0.1mS
  58.       set_timer0(156);                                  //despues del desvorde le vuelvo a signar el vlaor 156 (de esta manera
  59.                                                                                 //siempre cuento 100 microsegundos, por cada desborde de timer0)
  60.       ticks++;                                                  //ticks se incrementa en 1 cada 0.1mS (100 microsegundos)
  61. }
  62.  
  63. void main () {
  64.  
  65.         delay_ms(333);                                  //pausa mientras se estabiliza el pic
  66.         disable_interrupts(global);             //desabilito todas las instrucciones que voy a usar
  67.         disable_interrupts(int_ext);
  68.         disable_interrupts(INT_TIMER0);
  69.         delay_ms(333);                                  //estabilizo y pongo a "cero" el pic
  70.  
  71. ///////////////inicializo las partes a usar del pic///////////////////////
  72.  
  73.         set_tris_a(0b00000);                                            //todo el puero a como salidas
  74.         output_a(0b00000);                                                      //pongo a cero todo el puerto A
  75.         set_tris_b(0b00000001);                                         //selecciono RB0 como entrada
  76.        
  77.         ext_int_edge(0,L_TO_H);                                         //configuro para que detecte flancos ascendentes
  78.        
  79.         setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);        //habilito timer0 como contador interno,
  80.                                                                                                 //cada cuatro ciclos de reloj se incrementa en 1
  81.  
  82.         set_timer0(156);                                                        //pongo el valor 156 en el timer, le quedan por contar
  83.                                                                                                 //100 microsegundos
  84.         enable_interrupts(INT_TIMER0);                          //habilito la interrupcion por desborde del timer0
  85.  
  86.         enable_interrupts(int_ext);                                     //habilito la interrupcion externa
  87.         enable_interrupts(global);                                      //habilito el uso de interrupciones
  88.        
  89.  
  90.         do {
  91.        
  92.                
  93.                 if (ticks==10000) {                             //si ticks = 10000 paso un segundo (0,1mseg * 10000)
  94.                         output_a(0b00001);                      //pongo a 1 RA0
  95.                 }
  96.                        
  97.  
  98.         } while (TRUE);                                         //bucle infinito
  99.         }

saludos.
« Última modificación: 23 de Agosto de 2009, 23:56:23 por lagruya »

Desconectado maliga00

  • PIC10
  • *
  • Mensajes: 33
Re: driver 5A bipolar
« Respuesta #16 en: 23 de Agosto de 2009, 23:27:49 »
Esta muy bueno, felicitaciones. Podrias subir el archivo Hex. Muchas gracias
saludos
El optimista siempre tiene un proyecto. El pesimista siempre tiene una excusa.

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: driver 5A bipolar
« Respuesta #17 en: 23 de Agosto de 2009, 23:53:44 »
gracias, adjunto el hex.

Desconectado maliga00

  • PIC10
  • *
  • Mensajes: 33
Re: driver 5A bipolar
« Respuesta #18 en: 24 de Agosto de 2009, 10:21:54 »
Muchas Gracias a vos por el laburo, ya lo vamos a probar.
Saludos :wink:
El optimista siempre tiene un proyecto. El pesimista siempre tiene una excusa.

Desconectado dejuninmza

  • PIC10
  • *
  • Mensajes: 11
Re: driver 5A bipolar
« Respuesta #19 en: 08 de Octubre de 2009, 12:49:18 »
hola muchachos..les cuento que ya construi una maquinita fresadora CNC..esta andando joya..con la ayuda de la web de esteca y este foro pude construirla....
Ahora quiero hacer una maquina de mayores dimensiones, por eso estoy haciendo unas placas controladoras de motores pap de 5A utilizando los L6203..dicha maquina sería al igual que la otra de 3 ejes
Mi problema es que necesito realizar una fuente acorde al consumo de dichas controladoras y el de los cooler( 5A *3 +1A= 16A)
Alguien sabe como hacer dicha fuente??no tengo mucha experiencia en el diseño de fuentes de alimentación..espero que me puedan ayudar..Muchas gracias

Desconectado Felixls

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 300
Re: driver 5A bipolar
« Respuesta #20 en: 08 de Octubre de 2009, 14:41:20 »
dejuninmza, ya te respondí en el otro post, a propósito, creo que deberías leer las reglas del foro respecto a la duplicación de mensajes, te van a tirar de las orejas...

Desconectado dejuninmza

  • PIC10
  • *
  • Mensajes: 11
Re: driver 5A bipolar
« Respuesta #21 en: 08 de Octubre de 2009, 22:30:01 »
Perdon Felixls..tenes mucha razon..no fue con mala intención..desconocia la regla..la tendre en cuenta para otra inquietud..por cierto..muchas gracias por tu respuesta

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: driver 5A bipolar
« Respuesta #22 en: 09 de Octubre de 2009, 02:25:25 »
hola muchachos..les cuento que ya construi una maquinita fresadora CNC..esta andando joya..con la ayuda de la web de esteca y este foro pude construirla....
Ahora quiero hacer una maquina de mayores dimensiones, por eso estoy haciendo unas placas controladoras de motores pap de 5A utilizando los L6203..dicha maquina sería al igual que la otra de 3 ejes
Mi problema es que necesito realizar una fuente acorde al consumo de dichas controladoras y el de los cooler( 5A *3 +1A= 16A)
Alguien sabe como hacer dicha fuente??no tengo mucha experiencia en el diseño de fuentes de alimentación..espero que me puedan ayudar..Muchas gracias


http://www.todopic.com.ar/foros/index.php?topic=23761.0
acá tenes una explicacion que da esteca55 sobre las particularidades de las fuentes para drivers con control de corriente, sobretodo en relacion al amperaje, teniendo en cuenta que la corriente es pulsada y que el factor a tener en cuenta es la potencia.

http://www.todopic.com.ar/foros/index.php?topic=26801.msg224391#msg224391
acá tenes la fuente que me arme yo.

saludos.

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: driver 5A bipolar
« Respuesta #23 en: 25 de Octubre de 2009, 00:03:23 »
hola a todos, iagruya excelente!! y gracias por compartir, yo recién empiezo en este mundo del cnc y hacia rato no tocaba la electrónica, pero el cnc me encanta y decidí hacer uno para mi, y metí manos a la obra he armado ya los driver de tano posteados aquí en todo pic, y han andado muy bien pero tu aporte de disminución de consumo al 50% con el motor energizado y sin girar ,es la solución que estaba buscando. soy completamente inexperto con los pic pero me he conseguido un programador muy simple y el icprog, he intentado grabar tu .hex pero me aparece "verificación fallo en código 0000h." perdón por mi absoluta ignorancia en el tema pero me podrías explicar porque.gracias.; :lol: :lol:
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: driver 5A bipolar
« Respuesta #24 en: 26 de Octubre de 2009, 03:09:15 »
soy completamente inexperto con los pic pero me he conseguido un programador muy simple y el icprog, he intentado grabar tu .hex pero me aparece "verificación fallo en código 0000h." perdón por mi absoluta ignorancia en el tema pero me podrías explicar porque.gracias.; :lol: :lol:

si no me equivoco ese error significa que no se grabo nada en el pic.
puede tener dos origenes, hardware o software

hardware: el pic esta dañado, el pic esta mal insertado en el socalo, el programador esta dañado, la coneccion a la pc esta fallando.

software: esta mal configurado el icprog.
primero que nada antes de cargar el .hex con F3 vas a configuracion
1)tenes que especificar el tipo de programador, me imagino que el tuyo es JDM (averigua que el tuyo lo sea, de no ser así no estoy seguro que el resto de la configuracion sea correcta)
2)elegir el puerto al que este conectado
3)interface: en caso de windows 95,98,ME: DIRECT I/O. En caso de windows NT, 2000, XP: Windows API
4) El retardo de I/O fijarlo en 10
5) ESTE PUNTO PUEDE VARIAR SEGUN EL PROGRAMADOR: Se debe indicar como no invertidas las líneas de  Data Out, Data IN,  Clock, MCLR y Vcc
6) OK.
7) antes de cargar el .hex selecciona el modelo de pic a utilizar (en este caso 16f84)

aclaro que no soy experto en pics, pero esta es la configuracion que yo le di y me anda perfecto.

saludos.

Desconectado ceneca

  • PIC16
  • ***
  • Mensajes: 105
Re: driver 5A bipolar
« Respuesta #25 en: 03 de Noviembre de 2009, 22:00:25 »
hola, a todos.... bueno iagruya te quise contestar antes pero no se pudo por el cambio del servidor, tu respuesta fue correcta, pero te cuento que la solución fue la instalación de win pic 800 (ultima version) , resulto que la versión de icprog y la de win pic instaladas no me funcionaban en windows xp, que es mi sist. operativo, pero al instalar una de las ultimas versiones lo configure y funciono perfectamente. (al menos eso me ocurrió a mi,pido disculpas si mi explicación no es correcta ya que no tengo experiencia alguna con los pic).

como te comente he armado los driver posteados por tano, así que he armado una placa con los pic y a través de un conector de cuatro vías y un cable mallado los he conectado a los drivers y con buen resultado. :D , las pruebas fueron satisfactorias y se redujo considerablemente la temperatura de los motores y drivers..... muy buen aporte!!!!!!, ahora tengo que terminar la parte mecánica, de la cual tengo armado los ejes z e y, me falta el eje x, al ir terminando  subiré algunas fotos.

de nuevo gracias y si en algo puedo colaborar, sera un gusto!!!. saludos
El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice. ARISTOTELES

Desconectado Negcea

  • PIC16
  • ***
  • Mensajes: 217
Re: driver 5A bipolar
« Respuesta #26 en: 11 de Noviembre de 2009, 20:17:13 »
Hola soy nuevo en el foro pero hace algun tiempo vengo dando vueltas y haciendo unas pruebas con controladoras y me estoy armando un pequeño cnc, pregunto alguno armo algo en bipolar controlado por L 297 y usando IRLZ44 y IRF9Z24.. :shock:javascript:void(0);

Desconectado nutriax

  • PIC10
  • *
  • Mensajes: 42
Re: driver 5A bipolar
« Respuesta #27 en: 16 de Noviembre de 2009, 02:33:12 »
una pregunta!, en unos de los primeros post que pusieron, postearon el circuito de los driver, el cual contiene un pic 16f84, este supongo que es para el control del chopeo, pero no es mucho un pic por driver?
la controladora de esteca no hace ya el control del chopeo???
desde ya muchas gracias.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: driver 5A bipolar
« Respuesta #28 en: 16 de Noviembre de 2009, 09:20:27 »
hola nutriax!, y yo creo que para un argentino,... es mucho un pic por driver jejejeje  :D  :D
saludos
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado nutriax

  • PIC10
  • *
  • Mensajes: 42
Re: driver 5A bipolar
« Respuesta #29 en: 16 de Noviembre de 2009, 16:45:36 »
jajaja sisi por eso me asuste!
pero el control de corriente no lo hace la controladora de esteca?
hay algo que me estoy perdiendo, porque creo haber visto por el foro el driver de 5A pero de una sola cara y no tiene pic (eso es al menos lo que recuerdo)!.
que alguien me diga si es asi! please porque ya me lie!


 

anything