Autor Tema: Ayuda con los through-hole caseros  (Leído 4165 veces)

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

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Ayuda con los through-hole caseros
« en: 04 de Marzo de 2009, 12:51:36 »
Hola amigos foreros, estoy diseñando un circuito impreso de doble capa con EAGLE

Si la vía de conexión entre las dos capas esta por fuera de los PADs de un paquete o componente no hay problema, utilizo un cablecito como (through-hole), pero en el autoruteo algunas vías se hacen por los PADs, en algunos componentes como resistencias, simplemente no sueldo la resistencia pegada a la placa de cobre, si no que la levanto un poco para pegarla por ambas capas de la baquelita y solucionado el problema.

El problema se genera cuando, hay componentes de pines pequeños que no permiten alzarlos, entonces, no puedo soldar por la capa de arriba del cobre, además por que requieren estar bien fijos al cobre por cuestiones mecánicas de fijación o soporte. Acá me vare, no puedo realizar mi impreso =(

Si realizo el ruteo manualmente yo pongo las vías de conexión, pero deseo en forma automática con el autoruteo de EAGLE

¿Cómo hago para que el autoruteo de EAGLE no genere vías sobre los PADs? Si no que los haga por fuera de los PADs
« Última modificación: 04 de Marzo de 2009, 19:39:55 por cdrpo »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4583
Re: Ayuda con los TRUE HOLE caseros
« Respuesta #1 en: 04 de Marzo de 2009, 15:48:40 »
Hola.

Debes modificar los layers correspondientes al PAD en la libreria. Si no lo haces asi, dibuja un poligono en el layer bRestrict y tRestrict que cubra el pad y listo.
El papel lo aguanta todo

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2271
Re: Ayuda con los TRUE HOLE caseros
« Respuesta #2 en: 04 de Marzo de 2009, 16:21:51 »
date un paseo por este enlace: http://www.todopic.com.ar/foros/index.php?topic=11481.msg63128#msg63128 amigo cdrpo

un saludo

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Re: Ayuda con los through-hole caseros
« Respuesta #3 en: 04 de Marzo de 2009, 19:42:58 »
Lei los trucos y realmente funcionan, pero hay unos archivos automatizados ULP (User Language Programs) en www.cadsoft.de/download.htm
Archivo#1
restrict.ulp    
   
This ULP puts RECTs on the 'tRestrict' layer around all the pads. You may want this if you want to make a double-sided board, but only want to solder on the bottom layer.
This ULP is only a slight adaptation from the obsolete '0V_restr.ulp'. It now runs in Eagle 4.01 and includes all connected pads.

Archivo#2
restrict-4.03.ulp    

A modified version of restrict.ulp. This restrict.ulp accurately restrict pads according to pad type. Purpose of this script is to restrict top component pads to be included in the double sided Autorouting.

Archivo#3
restrict-4.04.ulp
A modified version of restrict-4.03.ulp. This restrict.ulp will work under version 4.1 and accurately restrict pads according to pad type. Purpose of this script is to restrict top component pads to be included in the double sided Autorouting.


« Última modificación: 21 de Mayo de 2009, 02:24:39 por cdrpo »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5440
    • Electrónica Didacta
Re: Ayuda con los through-hole caseros
« Respuesta #4 en: 07 de Marzo de 2009, 14:57:58 »
hay unos ULP´s que funcionan y otros que no. También los hay que solo funcionan para los esquematicos o para los board, tienes que revisar.

para saber que hacen, llamalos desde el botón ulp y a ver como revuelven toda la circuiteria  :)



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Re: Ayuda con los through-hole caseros
« Respuesta #5 en: 13 de Marzo de 2009, 15:59:59 »
Nota: Estas ulp generan un archivo llamado restrict.scr para realizar el trabajo
« Última modificación: 21 de Mayo de 2009, 02:22:54 por cdrpo »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5440
    • Electrónica Didacta
Re: Ayuda con los through-hole caseros
« Respuesta #6 en: 16 de Marzo de 2009, 16:44:49 »
los scr son script de comandos, es como que lo que tu hicieras con el ratón pero automátizado. de seguro el ulp lo genera y lo guarda en algún sitio, debes buscarlo con el botón scr que está ubicado al lado del ulp.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Re: Ayuda con los through-hole caseros
« Respuesta #7 en: 22 de Mayo de 2009, 13:17:34 »
Una solucion para que EAGLE no coloque vias en los PADs que tienen conexion pero solo de los paquetes de un Board, es dibujar en la capa "tRestrict" con la herramienta poligono un cuadrado sobre cada PAD.
 
La otra solucion es automatizando el proceso, pero las ULP anteriormente mensionadas, para que trabajen en la version 5.x de EAGLE hay que modificar una porcion de su codigo

:-/ Aca les dejo el codigo funcional

Código: C++
  1. #usage "<b>Solder link outside the PADs</b><p>\n"
  2.                                                         "Puts squares on tRestict layer around all PADs for solder link outside the PADs<p>\n"
  3.                                                         "Usage: Run 'SolderLinkOutsidePADs.ulp' first, then Run 'LockPADs.scr'.<p><p>\n"
  4.                                                         "<author>UPDATED2009, Previous Code Marc Hoppenbrouwers (marckyh@dds.nl)<p>\n"
  5.                                                         "Original source: 0V_RESTR.ULP by Daemon Reinhard</author>\n"
  6.  
  7. /*  SolderLinkOutsidePADs.ulp
  8.                         This EAGLE User Language Program puts RECTs on the "tRestrict" layer around all the pads.
  9.                         You may want this if you want to make a double-sided board, but only want to
  10.                         solder link outside the pads.
  11.  
  12.                         In a board editor window you can Run only this ULP.
  13.                         Thereafter execute the script text - file "LockPads.scr".
  14.  
  15.                         This ULP is only a slight adaptation from the obsolete '0V_restr.ulp'->'restrict.ulp'->'restrict-40.3.ulp'.
  16.                         It now runs
  17.                         in Eagle 5.x and includes all connected pads. In Eagle v4.1 the User Language constants PAD_SHAPE_XLONGOCT
  18.                         and PAD_SHAPE_YLONGOCT have been replaced with PAD_SHAPE_LONG, and the new constant PAD_SHAPE_OFFSET
  19.                         has been introduced due to which slight modification was needed in the old script. No support for
  20.                         elongation factor other than 100 is available in this script.
  21. */
  22.        
  23.         if ( board )
  24.                 board( B ) {
  25.                         string s = path_scr[0] + '/' + "LockPADs";
  26.                         string fileName = dlgFileSave( "Save File", s, "*.scr" );
  27.                         if (fileName == "" ) exit(0);
  28.                                 output( fileName ) {
  29.                                         int cnt2 = 0;
  30.                                         int cnt = 0, coordx[], coordy[], ydiameter[], xdiameter[];
  31.                                         B.signals(S) {
  32.                                                 numeric string Part[], Pad[];
  33.                                                 S.contactrefs(C) {
  34.                                                         Part[cnt] = C.element.name;
  35.                                                         Pad[cnt] = C.contact.name;
  36.                                                         coordx[cnt] = C.contact.x;
  37.                                                         coordy[cnt] = C.contact.y;
  38.                                                         B.elements(E) {
  39.                                                                 if (E.name == C.element.name) {
  40.                                                                         E.package.contacts(CC) {
  41.                                                                                         if ((CC.name == Pad[cnt]))
  42.                                                                                                 if ((CC.pad) && !(CC.smd)) {
  43.                                                                                                                         if (CC.pad.shape[LAYER_TOP] == PAD_SHAPE_ROUND || CC.pad.shape[LAYER_TOP] ==  PAD_SHAPE_SQUARE
  44.                                                                                                                                         || CC.pad.shape[LAYER_TOP] == PAD_SHAPE_OCTAGON) {
  45.                                                                                                                                         ydiameter[cnt] = CC.pad.diameter[LAYER_TOP];
  46.                                                                                                                                         xdiameter[cnt] = CC.pad.diameter[LAYER_TOP];
  47.                                                                                                                                         cnt++;
  48.                                                                                                                         }
  49.                                                                                                                         if (CC.pad.shape[LAYER_TOP] == PAD_SHAPE_LONG) {
  50.                                                                                                                                 if(CC.pad.angle == 0 || CC.pad.angle == 180) {
  51.                                                                                                                                         ydiameter[cnt] = CC.pad.diameter[LAYER_TOP];
  52.                                                                                                                                         xdiameter[cnt] = CC.pad.diameter[LAYER_TOP]*2;
  53.                                                                                                                                         cnt++;
  54.                                                                                                                                 }
  55.                                                                                                                                 else {
  56.                                                                                                                                         ydiameter[cnt] = CC.pad.diameter[LAYER_TOP]*2;
  57.                                                                                                                                         xdiameter[cnt] = CC.pad.diameter[LAYER_TOP];
  58.                                                                                                                                         cnt++;
  59.                                                                                                                                 }
  60.                                                                                                                         }
  61.                                                                                                 }
  62.                                                                         }
  63.                                                                 }
  64.                                                         }
  65.                                                 }
  66.                                         }
  67.                                         int cnt1 = 0; int x1[]; int y1[];       int x2[];       int y2[];
  68.                                         for(cnt1 = 0; cnt1 < cnt; cnt1++) {
  69.                                                         x1[cnt1] = u2mil(coordx[cnt1]) - u2mil(xdiameter[cnt1])/2;
  70.                                                         y1[cnt1] = u2mil(coordy[cnt1]) - u2mil(ydiameter[cnt1])/2;
  71.                                                         x2[cnt1] = u2mil(coordx[cnt1]) + u2mil(xdiameter[cnt1])/2;
  72.                                                         y2[cnt1] = u2mil(coordy[cnt1]) + u2mil(ydiameter[cnt1])/2;
  73.                                         }
  74.                                         /*  SCRIPT - DATEI  */
  75.                                         printf("# Solder link outside the PADs\n");
  76.                                         printf("grid mil;\n");
  77.                                         printf("ch layer 41;\n");
  78.                                         for(cnt1 = 0; cnt1 < cnt; cnt1++)
  79.                                                 printf("rect (%d %d) (%d %d);\n",x1[cnt1], y1[cnt1], x2[cnt1], y2[cnt1]);
  80.                                                 printf("grid last;\n");
  81.                                                 printf("grid last;\n");
  82.                                 }
  83.                 }
  84. else {
  85.         dlgMessageBox("\n Run this ULP only in a BOARD Window  \n");
  86. }
  87.  

Como se usa?

Con un editor de texto copie el anterior codigo, peguelo y guardelo en el directorio /ULP de EAGLE con el siguiente nombre
"SolderLinkOutsidePADs.ulp", luego estando en una Board, corra esta ULP, que generara un archivo en el directorio  /SCR de EAGLE llamado LockPads.scr
Por ultimo corra este archivo de comandos (SCR) y automatizadamente dibujara un rectangulo sobre cada PAD, haciendo que en el autoruteo no coloque vias sobre los PADs

Nota: Las ULP y los archivos de comandos SCR se corren con los botones [SCR] [ULP] de la barra de acciones de EAGLE
Como instale la version gratuita por 10 meses de WINDOWS7, cuando se genera un SCR lo toma como SCReen saver y no lo deja guardar, para solucionar este inconveniente se debe
colocar las notificaciones de windows7 en cero. Panel de control/Cuentas de usuario .../Cambiar Configuracion .../No notificarme Nunca

Porfa lo prueban y me comentan.


PD: Estoy trabajando sobre la version mejorada del anterior codigo, el cual es bloquear todo el footprint (huella) del paquete para que no coloque vias sobre el, ya que soldar vias caseras sobre la huella del paquete aveces hace estorbo, pues el paquete no queda bien montado.

Si me desean ayudar a realizar esta operacion hay un tutorial de como crear archivos automatizados para EAGLE
ftp://ftp.cadsoft.de/eagle/userfiles/doc/ulp_en.pdf
« Última modificación: 24 de Agosto de 2009, 14:03:29 por cdrpo »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5440
    • Electrónica Didacta
Re: Ayuda con los through-hole caseros
« Respuesta #8 en: 23 de Mayo de 2009, 21:34:57 »
gracias cdrpo por el aporte

una pregunta: ¿se colocan los trestrict en los pads solitarios? es decir los que no van con los componentes?

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything