FETCh? performs the postprocessing function and returns the data. This allows the user to perform several different FETCh? functions on a single set of acquired data. For example, an oscilloscope can acquire measurement data that can yield many different signal characteristics such as frequency or AC and DC voltages. Thus, a transient signal may be captured once using a MEASure?, READ? or INITiate. A FETCh? may then be used to obtain each of the different signal characteristics without reacquiring a new measurement. MEASure? provides the best compatibility between instruments because no knowledge of the instrument is required to perform the operation.We added support for MEASure only that is common practice for our class of instrument. The MEASure:VOLTage? is used for acquire output voltage and MEASure:CURRent? for output current. In fact that are simpler form of the following: MEASure[:SCALar]:VOLTage[:DC]? [CH1|CH2] and MEASure[:SCALar]:CURRent[:DC]? [CH1|CH2]. Here is an example if we want to measure current on the channel 1:
| 1 | INST {CH1|CH2}; OUTP ON | Select the channel to be calibrated and enable the channel output. |
| 2 | CAL ON, “<password>” | The power supply enters calibration mode on the channel selected in step 1. Both voltage and current on the selected channel are set to the MINimum value. The VOLT? and CURR? commands can be optionally used here to test channel output values. |
| 3 | For voltage calibration, connect a digital voltmeter (DVM) across the channel's output terminals. | |
| 4 | CAL:VOLT:LEV MIN | Set the channel to the low-end (MIN) calibration point. |
| 5 | CAL:VOLT 238mv | Enter the reading you obtained from the external DVM. |
| 6 | CAL:VOLT:LEV MID | Set the channel to the middle (MID) calibration point. |
| 7 | CAL:VOLT 19.122 | Enter the reading you obtained from the DVM. |
| 8 | CAL:VOLT:LEV MAX | Set the channel to the high (MAX) calibration point. |
| 9 | CAL:VOLT 37.9 | Enter the reading you obtained from the DVM. |
| 10 | For current calibration, connect an appropriate current monitoring resistor (shunt) across the output terminals and connect the DVM across the shunt resistor. | |
| 11 | Repeat step 4 through step 9 by substituting CURR for VOLT for current calibration. For example, CAL:CURR:LEV MIN. | |
| 12 | Repeat step 1 through step 11 for the other channel calibration. | |
| 13 | CAL:REM “<string>” | Record calibration information such as next calibration due date for future reference. The calibration string may contain up to 40 characters. |
| 14 | CAL:SAVE | Save to non-volatile memory new calibration data. |
| 15 | CAL OFF, “<password>” | The channel exit calibration mode. Both voltage and current on the selected channel are again set to the MINimum value. |
I am very impressed with your work - both the PSU and now the FW/SW.
This means that - even if we do not build your PSU - we can take any PSU that is controlled by DAC's and relays (etc.), adapt your control logic from the Arduino, make some changes to the FW sketch, and control the PSU from Command Expert?
Are you considering to add Sigrok support? :DThat is effectively what he has done.
Am i missing something here , wrt. the software download ?
All i can find is this: https://github.com/mvladic/scpi-parser/tree/master/libscpi
But the doc says: "download & unzip"
Could someone point me to the right software link/repos ?
/Bingo
Are you considering to add Sigrok support? :DThat is effectively what he has done.
It's absurd to expect a hardware developer (open source or otherwise) to have specific support, including a universal front end interface for all instruments no matter what they are, to do Sigroks job for them.
I'm interested in your PSU, I prefer it than buying one of these cheap manufacturers and finally find weird bugs or issues with Linux (I "unfortunately " am too used to it and prefer "libre" stuff all the time).
I have a few questions:
- Are you going to release all parts as FOSS and OSHW? Preferably if releasing the project files in KiCad format.
- Are you going to publish it in GitHub and see the progress on it? This could make others could fork it, then later submit pull requests for modification proposals to the design or firmware. If the project gains enough traction, it could become a nice community project and the favorite DIY PSU.
- Is possible to do a comparison and test against different manufacturers of
commercial PSUs from low to high end? So less skilled people like me can see how the project is compared to proprietary designs by major manufacturers.
So are there a standardized specific SCPI subset used for DMMs? Are those used equally on all DMMs or there are difference implementations?
This seems pretty interesting, but I fail to see the broader picture. I need to understand SCPI first, I suppose.
Sent from my ZTE Blade A450 using Tapatalk
Fantastic project, thank you for sharing.
Can you tell me how big is your source code and how much flash does it occupy on the microcontroller? I'm wondering if SCPI can be implemented on smaller microcontroller.
#pragma once
// Example: redefine channels
/*
#undef CHANNELS
#define CHANNELS \
CHANNEL(1, CH_PINS_1, CH_PARAMS_50V_3A), \
CHANNEL(2, CH_PINS_2, CH_PARAMS_30V_3A)
*/ cbi(P_CS, B_CS);
touch_WriteData(0x90); // command for reading X position, but only bit 0 and bit 1 are relevant and have to be set to zero (see table 8. in datasheet)!
sbi(P_CS, B_CS);
Sorry for the late reply...
Here's a few things I think would improve the usability of the interface:
- Slider mode would be nicer if you had maybe 3 colored rectangles at the top and/or bottom so the user knows the "track" where to slide the finger up or down, if there's room for text in those rectangles it could indicate the increment sensitivity, or alternatively you could come up with some suggestive icons
- Seeing the LCD update rate is quite fast the voltage/current reading could change color depending in the mode the PSU is in, CV/CC
- A "Save Preset" button can be quite handy to save different V/I settings
- Color scheme: black/dark grey background - color coded icons, in my opinion green on blue doesn't look that good. White text seems ok.
These are my thoughts so far, if I have more ideas I'll let you know.
/// Channels configuration.
///
#define CHANNELS \
CHANNEL(1, CH_BOARD_REVISION_R4B43A_PARAMS, CH_PINS_1, CH_PARAMS_40V_5A), \
CHANNEL(2, CH_BOARD_REVISION_R4B43A_PARAMS, CH_PINS_2, CH_PARAMS_40V_5A) \#define CHANNELS \
CHANNEL(1, CH_BOARD_REVISION_R4B43A_PARAMS, CH_PINS_1, CH_PARAMS_50V_3A), \
CHANNEL(2, CH_BOARD_REVISION_R5B6B_PARAMS, CH_PINS_2, CH_PARAMS_40V_5A) \/// Selected EEZ PSU revision, possible values are:
/// EEZ_PSU_REVISION_R1B9 or EEZ_PSU_REVISION_R2B6
#define EEZ_PSU_SELECTED_REVISION EEZ_PSU_REVISION_R2B6I have some difficulty understanding 1). Could you please elaborate it a little bit more?Let me draw it: