Fiber Optic Power Budget Estimation

Research Links

Fiber Type Wavelength Fiber Attenuation /km (1) Fiber Attenuation per km (2) Connector Loss Splice Loss
Multimode 50/125um 850nm 3.5 dB 2.5 dB 0.75 dB 0.1 dB
1300nm 1.5 dB 0.8 dB 0.75 dB 0.1 dB
Multimode 62.5/125um 850nm 3.5 dB 3.0 dB 0.75 dB 0.1 dB
1300nm 1.5 dB 0.7 dB 0.75 dB 0.1 dB
Single Mode 9um 1310nm 0.4 dB 0.35 dB 0.75 dB 0.1 dB
Single Mode 9m 1550nm 0.3 dB 0.22 dB 0.75 dB 0.1 dB

 

 

 

 

 

 

 

 

Note: (Fiber Attenuation /km in above table)
1. These values are per TIA/EIA and other industry specifications
2. These values are one example of the performance that can be obtained with a new fiber installation

BTU 3615 Temperature Controller used on Belt Furnaces

I had a talk with Bob Loeb of RGL Enterprises on the phone today.  He works with ebay:BTU 3615 temperature controllers.  Appears that the only software that works with them is DOS based and fairly antiquated.  Loeb mentioned that the BTU 3615.   

Research Links

Microchip Fluid Level Sensing using TDR

Included are a presentation, Design, and BOM files in a ZIP file. The schematic capture and board layout are in DIPTRACE.   The simulation files are done using LTspice from Linear Technology. This is a free program from LT. You will need to replace the.bjt file from LT with the file I included as I added a model for the BFG591 transistor used.

Research Links

Eagle PCB ULP Tutorial: User Language Program that lists the library .lbr files in project directory

I want to be able to write a script to mass change all the libraries that a project depends on in order to make better B.O.M.  Bill Of Materials.  The following script lists the libraries in the project directory.  It writes the names of the libraries with full path to a text file named: ListOfLibraries.txt


//—— Get the Project Path ——//

string Project_Path;
string get_project_path() {
      if (board)     board(B)     return(filedir(B.name));
      if (schematic) schematic(S) return(filedir(S.name));
      if (library)   library(L)   return(filedir(L.name));
}

Project_Path = get_project_path();
dlgMessageBox(Project_Path, "+Yes", "No","Maybe");

string F[];
int i;
int n = fileglob(F, Project_Path + "*.lbr");                                                     //– Get file names with .lbr extension in project directory 
output(Project_Path + "
ListOfLibraries.txt", "wt"){ for(i=0;i<n;i++){ printf(F[i] + "\n");}  }   //– Write all the .lbr file names to text file


string ResultOfLibCount;
sprintf(ResultOfLibCount, "The number of libraries is %d", n);
dlgMessageBox(ResultOfLibCount, "+Yes", "No","Maybe"); 


fileglob stuffs an array with the files that satisfy the condition specified by the string supplied.  

Eagle PCB ULP Tutorial: User Language Program that lists the directory path of the Project File

When you need to know the path of the project you are running the ULP within the following code snippet is useful.


string get_project_path() {
  if (board)     board(B)     return(filedir(B.name));
  if (schematic) schematic(B) return(filedir(S.name));
  if (library)   library(B)   return(filedir(L.name));
}


string Directory;
Directory = get_project_path();
dlgMessageBox(Directory, "+Yes", "No","Maybe");   


Tutorial: Eagle PCB ULP to write Script that Changes all the Devices in a library to have Value = ON

You select a device in an opened library for edit by using this syntax:  edit deviceset

Value is set to an active editable value with the syntax:  value on

Thus on a meta level this script is going to do the following things for each part in the library:

  • write the open device command to script file using syntax:  edit deviceset
  • write the turn the device value to script file using syntax: value on
  • repeat until all the parts in the library have been cycled through

This script will build upon the script that lists the devicesets in a library.


//—— Get the ULP Path ——//

string ULP_Path;
char bkslash = '/';
int pos = strrchr(argv[0], bkslash);

  if (pos >= 0) 
    { 
      ULP_Path = strsub(argv[0], 0, pos + 1);
    }

output(ULP_Path + "TurnValueOnAllParts.scr", "wt"){library(L) { L.devicesets(D) { printf("edit " +  D.name + ".dev" + "\n"); 
                                                                                  printf("value on \n");
                               
                               }}}


Note that the script cycles through devicesets and not devices.