Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - nickschw2/HVTestingApp: High Voltage Capacitor Testing GUI · GitHub
Skip to content

Repository files navigation

CMFX Control Software

This application is used in the CMFX experiment at the University of Maryland. A detailed description of the hardware and software components can be found in the remote_control folder. Additionally, there is a separate document for the standard operating procedure (SOP) This README serves primarily to assist the user with the most common modifications to the software.

This README will provide 1. a description of each file and 2. how to make the most common changes to the codebase.

File descriptions

  • main.py is the very short file that runs the program
  • TestingApp.py contains all of the back-end code which is not unique to CMFX (i.e. could also be used for discharging into a passive load). The file contains things like
    • All the import statements from the other modules
    • Read/write files
    • Charging/discharging
  • CMFX_App.py generates the front-end GUI through tkinter and ttkbootstrap and performs all the backend operations that are specific to CMFX (i.e. gas puffing, analysis of results, updating the system status in real time).
  • config.py contains all the configuration variables for the back-end system, including timing, which power supply to use, etc. For most simple changes to the program, they can be done within this file.
  • constants.py contains all the front-end variables to modify the GUI (things like spacing) and a list of all variables that can be saved/read.
  • ni_daq.py contains all the code to initialize and run the DAQ. This is primarily written in nidaqmx.
  • plots.py contains all the code for creating the plots and their functionality
  • analysis.py takes in a provided signal and performs analysis on it (i.e. smoothing, fitting, etc.)
  • console.py provides an interface between the command window/terminal and the console on the GUI, such that all print statements are sent to the GUI.
  • indicator.py is a wrapper around ttkbootstrap to create an LED, which is used for indicators for the power supplies.
  • messages.py is a wrapper around ttkbootstrap TopLevel to create a pop up window message with buttons.
  • scope.py is mostly deprecated now, but was used to control/read the oscilloscope.

Most common changes

Running Mode

The program is always run through main.py. There are several modes of running the program: DEBUG, ADMIN, and SHOT. These modes can be toggled on and off in the config.py file. DEBUG mode is used to run just the GUI skeleton, and it does not communicate with any instruments in the lab space. This is usually useful when making changes to the GUI. ADMIN mode is usually set to True by default, but when set to False, the user must login and select a folder to which the results will be saved before beginning operations. SHOT mode is also usually set to True, as this indicates the mode where we are operating with CMFX, as opposed to a dummy load, in which case it should be set to False1.

Switching Power Supplies

Additionally, the high voltage system can either be run with a capacitor bank or DC supply. To change between the two, complete the following steps:

  1. Rewire the HV circuit for the correct supply.
  2. There are 4 BNC cables that set/read the voltage and current on the power supply. Make sure these are correctly connected both at the power supply and at the NI DAQ. Once they are connected, confirm their DAQ channels in config.py.
  3. Change the value of POWER_SUPPLY in config.py to the correct name

Adding an analog input DAQ channel

There are a few important bits of information when assigning a new channel: Variable name: name of the variable in the program Channel: which analog input channel it's connected to, i.e. ai0 Description: Plain English description of the variable, i.e. Discharge Current Units: Units of variable, i.e. (V) or (A)

  1. Each DAQ card port has 8 AI channels; if all cards are filled, add another DAQ card.
  2. Add channel to diagnosticsN_name, where N is the card you're referencing
  3. Add channel to a specific line group, i.e. all the diamagnetic signals are grouped together
    diamagneticLines = {'DIA01': Line('DIA01', []),
    'DIA02': Line('DIA02', []),
    'DIA03': Line('DIA03', []),
    'DIA04': Line('DIA04', [])}
    
    (it's okay to have one channel in a line group).
  4. In CMFX_App.py, change the value of self.resultsPlotData to add your line group, if it is not there already.
  5. In constants.py, change the value of single_columns to include your channel in the following format: 'variable_name': {'name': 'description (units)', 'type': 'array'}

Adding a user input variable

Follow these steps to add a user input variable to the User Input tab on the program

  1. Change DEBUG mode to True so that we can quickly view any changes to the front-end GUI without worrying about how they might affect the back-end.
  2. Depending on the nature of the user input, it will belong either in the definition of standardInputs, gasBurstInputs, or in the if POWER_SUPPLY == 'EB-100': boolean, all of which are located in config.py.
  3. Add the new user input in the following format
    'variableName': {'label': 'Description',
    'default': 0,
    'max': 1000,
    'min': 0}
    
  4. Add the functionality wherever it may belong in the program by using/manipulating self.variableName. For example, the current used to charge is set by currentValue = self.chargeCurrent / maxCurrentPowerSupply[POWER_SUPPLY] * maxAnalogInput / 1000 # Charge with maximum current

Changing default values

All of the default values for timing and basic math are found in config.py. For instance, the voltage division of the Ross voltage dividers is set by voltageDivider = 10000. Please check these default values in this file to make changes to things like timing, circuit values, etc.

Footnotes

  1. Note that a FalseSHOT mode has not been tested in many years as it has not been needed, and so the functionality of the program may not work in this operating mode.

About

High Voltage Capacitor Testing GUI

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages