Author Topic: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator  (Read 110161 times)

0 Members and 3 Guests are viewing this topic.

Offline Adam Baum

  • Newbie
  • Posts: 7
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #175 on: March 15, 2021, 08:54:49 pm »
PS  "E" suffix  was the first series and its does mean English . :)

Thanks. Then what are the UTG9X2 units without the "E"?  A later unit that I can't find on the UNI-T web page? And what sense does it make to add an "E" to designate something that can be set in the menu?

Quote
My one also came in Chinese

And yours is an "E" unit?  Here's the info from a menu-accessed data screen of a YouTube UTG962E reviewer:

Software Version is 1.08
Hardware Version 1.01
FPGA version 1.07
Model shows as UTG900E


Are yours the same, earlier or later?

His hardware versions (just FYI, I'm not asking for yours):

UTG900 MainBoard
Edition V1.02: 20190426

UTG900 KeyBDisplay
Edition: V1.03 20190428


Thanks.
 

Offline Labrat101

  • Regular
  • **
  • Posts: 688
  • Country: 00
  • Renovating Old Test Equipment & Calibration ..
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #176 on: March 16, 2021, 08:17:19 am »
PS  "E" suffix  was the first series and its does mean English . :)

Thanks. Then what are the UTG9X2 units without the "E"?  A later unit that I can't find on the UNI-T web page? And what sense does it make to add an "E" to designate something that can be set in the menu?

Quote
My one also came in Chinese

And yours is an "E" unit?  Here's the info from a menu-accessed data screen of a YouTube UTG962E reviewer:

Software Version is 1.08     ((Same))
Hardware Version 1.01          ((Same))
FPGA version 1.07                ((Same))
Model shows as UTG900E


Are yours the same, earlier or later?

His hardware versions (just FYI, I'm not asking for yours):

UTG900 MainBoard           !!   ??
Edition V1.02: 20190426

UTG900 KeyBDisplay
Edition: V1.03 20190428
       !! ??

Thanks.

First I bought my UTG 962  direct from UNI-T . 

Yes My numbers are the same . And there is No "E"
Were did you get this number from??  Edition V1.02: 20190426
I did not open as it has a seal and calibration warrantee on it .
Date code is Sep 2020 .
Date code can be seen though the vent holes on the back.

I also saw that E version on YouTube . But  UNT-T  its not shown on their Site .
That's why I bought Direct . I think its added to an agent supplier or 3rd Hand supplier .
  Leave the E version alone AS its not registered on UNI-T so if it looks fishy and Smells Fishy .
  It's A Bang U Good Job.
  Don't quote me on that . as I am not 100%  sure . And I am sure someone will Rant & Rave .
  I Know my one is original . FedEX' ed  from UNI-T


Edit correction I just checked their site it is now showing the "E''  So it looks like the E is Kosha
 :popcorn:
« Last Edit: March 16, 2021, 12:42:15 pm by Labrat101 »
"   All Started With A BIG Bang!! .  .   & Magic Smoke  ".
 

Offline JamesLynton

  • Contributor
  • Posts: 35
  • Country: gb
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #177 on: March 16, 2021, 02:13:37 pm »
If I recall, didn't the E stand for European/English market edition ? ..pre-configured / accessoried up for this region or some such thing ?
 

Offline Labrat101

  • Regular
  • **
  • Posts: 688
  • Country: 00
  • Renovating Old Test Equipment & Calibration ..
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #178 on: March 16, 2021, 03:57:31 pm »
My one was without the E and it came
With a very nice power supply 240vac
With a 2 pin euro plug. .
I looked on the site and there seems to be no difference in the technical  data .
 Maybe a sales gimmick.  Or a typo when they made the labels.  . If your buying get  directly from
UNI -T . and request voltage etc.
"   All Started With A BIG Bang!! .  .   & Magic Smoke  ".
 

Offline Adam Baum

  • Newbie
  • Posts: 7
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #179 on: March 16, 2021, 05:18:25 pm »
My one was without the E and it came
With a very nice power supply 240vac
With a 2 pin euro plug. .
I looked on the site and there seems to be no difference in the technical  data .
 Maybe a sales gimmick.  Or a typo when they made the labels.  . If your buying get  directly from
UNI -T . and request voltage etc.

The "E" model is the only thing I find listed at the UNI-T site and I downloaded the manual which shows an "E" model in the cover photo.  The power brick is listed in it as a universal 100-240Vrms 50/60Hz 0.4A unit, so marking the unit with an "E" because it's a European/English market edition doesn't make sense for multiple reasons - the language can be chosen in the menu anyway, the power brick is universal, and even with an "E" marking that still doesn't distinguish between the various plugs needed on the power brick for various countries.

Firmware versions match between "E" and non-"E" units, but who knows about hardware changes.  It can't be that they upgraded the crappy BNC jacks detailed here because that person shows an "E" model in his photos.

As I've said previously, letter suffixes on UNI-T multimeters have significant meanings and an "E" suffix doesn't indicate a European/English market edition.  Too bad straight answers from China-based manufacturers are unobtainium.
 

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #180 on: March 27, 2021, 03:12:17 pm »
Any news on UTG962 API?

I have tried to implement a pyvisa python  class for managing UTG962 signal generator.
Current status:
  • plus/minus key conversion missing
  • syncrhonize UTG962 device  with UTG962 python class missing

For the synchronization,  query command, which would return device state, is needed. An other possibility would be a  reset command, which resets display to a know state. (writing "*RST" to the device stop signal generation and set parameter to their default values, but does not reset display state - as far as I can tell).

Here is the code (very much under construction)

 
Code: [Select]

  import numpy as np
  import pyvisa
  import re
  from time import sleep
  import matplotlib.pyplot as plt


  class UTG962:
         """
         Unit-T signal generator
         """

         ADDR = "USB0::0x6656::0x0834::1485061822::INSTR"

         # Construct && close
         def __init__( self, addr=ADDR,  debug = False ):
            self.rm = pyvisa.ResourceManager()
            self.sgen = self.rm.open_resource(addr)
            self.debug = debug
            try:
                self.idn = self.sgen.query('*IDN?')
                print("Successfully connected  '{}' with '{}'".format(addr, self.idn))
            except:
                pass

         def close(self ):
             try:
                 self.rm.close()
             except:
                 pass

             try:
                 self.sgen.close()
             except:
                 pass

         # Low level commuincation
         def write(self, cmd ):
              self.sgen.write(cmd)

         def query(self, cmd, strip=False ):
              ret = self.sgen.query(cmd)
              if strip: ret = ret.rstrip()
              return( ret )

         # LL (low level language =keypress)
         def llReset(self):
           self.write( "*RST" )
         def llLock(self):
           self.write( "System:LOCK on")
         def llOpen(self):
           self.write( "System:LOCK off")
         def llCh(self, ch):
           self.write( "KEY:CH{}".format(ch))
         def llChQ(self, ch):
           return self.query( "STATUS:CH{}".format(ch))
         def llWave(self):
           self.write( "KEY:Wave")
         def llUtility(self):
           self.write( "KEY:Utility")
         def llKey(self, keyStr):
           self.write( "KEY:{}".format(keyStr))
         def llMode(self):
           self.write( "KEY:Mode")
         def llF(self, digit ):
           self.write( "KEY:F{}".format(digit))
         def llF1(self):
           self.llF(1)
         def llF2(self):
           self.llF(2)
         def llF2(self):
           self.llF(2)
         def llF3(self):
           self.llF(3)
         def llF4(self):
           self.llF(4)
         def llF5(self):
           self.llF(5)
         def llF6(self):
           self.llF(6)
         def llNum(self, numStr):
           def ch2cmd( ch ):
               chMap = {
                   "0": "NUM0",
                   "1": "NUM1",
                   "2": "NUM2",
                   "3": "NUM3",
                   "4": "NUM4",
                   "5": "NUM5",
                   "6": "NUM6",
                   "7": "NUM7",
                   "8": "NUM8",
                   "9": "NUM9",
                   ".": "DOT",
                   ",": "DOT",
               }
               try:
                  keyName = chMap[ch]
                  return  keyName
               except KeyError:
                      raise ValueError( "Could not extract keyName for ch {} numStr {}".format( ch, numStr ))
           for ch in str(numStr):
              self.write( "KEY:{}".format(ch2cmd(ch)))
         def llFKey( self, val, keyMap):
             try:
                self.llF(keyMap[val])
             except KeyError as err:
                print( "Invalid key {}, valid keys {}\nError '{}'".format( val, keyMap.keys(), str(err)))

         # IL intermediate (=action in a given mode)
         def ilFreq( self, freq, unit ):
             self.llNum( str(freq))
             self.ilFreqUnit( unit )
         def ilAmp( self, freq, unit ):
             self.llNum( str(freq))
             self.ilAmpUnit( unit )
         def ilOffset( self, freq, unit ):
             self.llNum( str(freq))
             self.ilOffsetUnit( unit )
         def ilPhase( self, freq, unit ):
             self.llNum( str(freq))
             self.ilPhaseUnit( unit )

         def ilConf( self, wave ):
             waveMap  = {
                "Freq":   "1",
                "Amp":    "2",
                "Offset": "3",
                "Phase":  "4",
             }
             self.llFKey( val=wave, keyMap = waveMap )

         def ilWave1( self, wave ):
             """Selec wave type"""
             waveMap  = {
                "sine": "1",
                "square": "2",
                "pulse":  "3",
                "ramp": "4",
                "arb": "5",
                "MHz": "6",
             }
             self.llFKey( val=wave, keyMap = waveMap )

         def ilWave1Props( self, wave ):
             """Wave properttes sine/square"""
             waveMap  = {
                "Freq": "1",
                "Amp": "2",
                "Offset":  "3",
                "Phase": "4",
                "Duty": "5",
                "Page Down": "6",
             }
             self.llFKey( val=wave, keyMap = waveMap )

         # Units
         def ilFreqUnit( self, unit ):
             freqUnit  = {
                "uHz": "1",
                "mHz": "2",
                "Hz":  "3",
                "kHz": "4",
                "MHz": "5",
             }
             self.llFKey( val=unit, keyMap = freqUnit )
         def ilAmpUnit( self, unit ):
             ampUnit  = {
                "mVpp": "1",
                "Vpp": "2",
                "mVrms":  "3",
                "Vrms": "4",
                "Cancel": "6",
             }
             self.llFKey( val=unit, keyMap = ampUnit )
         def ilOffsetUnit( self, unit ):
             offsetUnit  = {
                "mV": "1",
                "V": "2",
             }
             self.llFKey( val=unit, keyMap = offsetUnit )
         def ilPhaseUnit( self, unit ):
             phaseUnit  = {
                "deg": "1",
             }
             self.llFKey( val=unit, keyMap = phaseUnit )

          # Utils
         def valUnit( self, valUnitsStr ):
                match = re.search( r"(?P<value>[0-9\.]+)(?P<unit>[a-zA-Z]+)", valUnitsStr )
                if match is None:
                        raise ValueError( "Could not extract unit value from {}".format( valueUnitsStr ))
                return ( match.group('value'), match.group('unit') )

         # Commands
         def reset(self):
              self.llReset()
              self.llOpen()

         def generate( self, ch=1, wave="sine", freq="100Hz", amp="0.1Vpp", offset="0V", phase="0deg" ):
             self.reset()
             # sleep(0.54)
             if ch == 2: self.llCh(ch)
             self.ilWave1( "sine" )
             self.ilWave1( "square" )
             self.ilWave1( wave )
             # In frequencey
             self.ilFreq( *self.valUnit( freq ) )
             self.ilWave1Props( "Amp")
             self.ilAmp( *self.valUnit( amp ) )
             sleep(0.2)
             self.ilWave1Props( "Offset")
             self.ilOffset( *self.valUnit( offset ))
             self.ilWave1Props( "Phase")
             self.ilPhase( *self.valUnit( phase ))
             self.llCh(ch)
             # if ch == 2:   self.llCh(1)
             self.llOpen()
         def getName(self):
            return( self.query( "*IDN?"))



 

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #181 on: March 28, 2021, 03:02:31 am »
Does anyone know if there's any documentation for the .bsv file format that the UTG uses for arb waveforms? I opened a simple sine wave with a hex editor and didn't see anything immediately obvious in the data.

I have a grand ambition to generate APRS AFSK packets via the UTG into the modulation input of my service monitor, for testing APRS performance on a modem I'm developing. I'd love to be able to convert the PCM samples of my APRS test packets into an ARB file for the UTG. 4kSmps memory should be more than enough for a single packet at 4800khz sample rate.

EDIT

I see the waveform editor supports CSV files as well. That should make things much easier.

EDIT 2

Anyone have any tips for getting the UTG to work in Windows 10? I installed the NI 5.4 Runtime and the Device Manager, and I see the UTG showing up properly in the Windows Dev Manager as a "USB Test and Measurement Device (IVI)" but the UTG Device Manager isn't finding it. I installed everything via the latest driver download from Uni-T, and it's plugged into a hardware USB2.0 port on my motherboard.



I tried running the example PyVisa script from post #142 but it fails with an exception:

Code: [Select]
Traceback (most recent call last):
  File ".\pyvisa_test.py", line 8, in <module>
    main()
  File ".\pyvisa_test.py", line 5, in main
    utg = _rm.open_resource("USB0::0x6656::0x0834::895783604::INSTR")
  File "C:\ProgramData\Miniconda3\lib\site-packages\pyvisa\highlevel.py", line 3304, in open_resource
    res.open(access_mode, open_timeout)
  File "C:\ProgramData\Miniconda3\lib\site-packages\pyvisa\resources\resource.py", line 298, in open
    self._resource_name, access_mode, open_timeout
  File "C:\ProgramData\Miniconda3\lib\site-packages\pyvisa\highlevel.py", line 3232, in open_bare_resource
    return self.visalib.open(self.session, resource_name, access_mode, open_timeout)
  File "C:\ProgramData\Miniconda3\lib\site-packages\pyvisa\ctwrapper\functions.py", line 1852, in open
    session, resource_name, access_mode, open_timeout, byref(out_session)
  File "C:\ProgramData\Miniconda3\lib\site-packages\pyvisa\ctwrapper\highlevel.py", line 222, in _return_handler
    return self.handle_return_value(session, ret_value)  # type: ignore
  File "C:\ProgramData\Miniconda3\lib\site-packages\pyvisa\highlevel.py", line 251, in handle_return_value
    raise errors.VisaIOError(rv)
pyvisa.errors.VisaIOError: VI_ERROR_RSRC_NFOUND (-1073807343): Insufficient location information or the requested device or resource is not present in the system.

Any ideas?
« Last Edit: March 28, 2021, 04:16:18 am by axel »
 

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #182 on: March 28, 2021, 07:41:47 am »
I am using Ubuntu and I had to create  udev rule

Code: [Select]
SUBSYSTEM=="usb", ATTR{idVendor}=="6656", ATTR{idProduct}=="0834", MODE="0666"   
into a file /etc/udev/rules.d/50-unit.rules before pyvisa was able to connect  to the device. (I am not using windows, and do not know if permissions could be the problem in your case, tough).

I have been able to take screen shots from my UTH962 using following tool chain:

Python:

Code: [Select]
import pyvisa
ADDR = "USB0::0x6656::0x0834::1485061822::INSTR"
rm = pyvisa.ResourceManager()
pyvisa.log_to_screen()
sgen = rm.open_resource(ADDR)
sgen.write( "Display:Data?")
disp = sgen.read_raw()[15:]
with open( "tmp/sshot1.bmp", "wb") as f:
   f.write( disp )


The result is flopped (~mirrored)  DIB file (~ BMP without some header data)


Code: [Select]
identify tmp/sshot1.bmp

: tmp/sshot1.bmp DIB 480x272 480x272+0+0 8-bit sRGB 392KB 0.000u 0:00.000


Conversion to png with the following command

Code: [Select]
convert tmp/sshot1.bmp -flop tmp/sshot1.png


 
The following users thanked this post: valcher

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #183 on: March 28, 2021, 03:20:43 pm »
I really need to get it working in Windows so I can upload waveforms. I'll spin up a Debian VM real quick just to see if I can even talk to the thing via linux.

I spent most of the morning trying various combinations of installs and drivers with no success. The Device Manager just refuses to find the UTG.
 

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #184 on: March 28, 2021, 04:15:21 pm »
So Ubuntu in a VM is somewhat working. Apparently PyVisa converts the hex PID & VID to decimal, so the existing scripts had to be modified to account for that.

For reference, here's my lsusb info:
Code: [Select]
Bus 003 Device 006: ID 6656:0834 uni-trend UTG900
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x6656
  idProduct          0x0834
  bcdDevice            1.00
  iManufacturer           1 uni-trend
  iProduct                2 UTG900
  iSerial                 3 4234156241
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 UTG900
    bmAttributes         0xc0
      Self Powered
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      3 Test and Measurement
      bInterfaceProtocol      1 TMC
      iInterface              5 UTG900
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0002
  (Bus Powered)
  Remote Wakeup Enabled

Listing the available devices via PyVisa:
Code: [Select]
$ sudo python3 list.py
('USB0::26198::2100::4234156241::0::INSTR',)

26198 = 0x6656 and 2100 = 0x0834

And the print script posted above works with the change in device address (had to tweak it a bit as the red and green channels were getting swapped for some reason):



So at least it's working on Linux. I'd really like to get it up and running on my main Win10 PC so I can play with the custom waveforms. At this point I'm almost wondering if creating a Windows 7 VM would be easier...

EDIT

I'm able to communicate with it via PyVisa on my Win10 host machine!

Code: [Select]
python .\pyvisa-test.py
('USB0::0x6656::0x0834::4234156241::INSTR', 'ASRL1::INSTR', 'ASRL2::INSTR', 'ASRL3::INSTR', 'ASRL4::INSTR', 'ASRL7::INSTR', 'ASRL8::INSTR', 'ASRL9::INSTR', 'ASRL11::INSTR')
UNI-T Technologies,UTG900,4234156241,1.08

 However, still no luck on the "official" Device Manager program. It refuses to see the UTG no matter what I do  |O
« Last Edit: March 28, 2021, 04:25:50 pm by axel »
 

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #185 on: March 28, 2021, 08:47:55 pm »
I have packaged command line operations on UTG962 in Python command line wrapper on top pyvisa-py -package.

The code in my repository:

https://github.com/jarjuk/UTG900

Supported actions:
  • screenshot
  • reset
  • on and off
  • sine
  • square
  • pulse

Tested on Ubuntu 18.04 using python 3.9 running pyvisa and absl.py package. Screenshot requires imagemagick.

PS.

In my previous post, I pointed out the need to be able to reset UTG900 display to a known state. I found a way do this using command sequence 'Utility' and F1 (for choosing CH1) and F2 (for ch2). CH1/CH2 command buttons toggle the state and code may lose track of display state.

PPS.
Python savvy may import UT900 module and use UTH962 -class directly, as a part of a tool chain integrating UTG900 -signal generator with other instruments reachable using  pyvisa.

« Last Edit: March 28, 2021, 08:58:23 pm by Jukka »
 
The following users thanked this post: Mechatrommer

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #186 on: March 29, 2021, 03:31:51 am »
So I've successfully managed to get a Windows 7 VM to recognize the UTG. Progress!



However for whatever reason the ARB waveform editor doesn't seem to want to find it:



Has anyone actually managed to copy waveforms over to the sig gen? I'm starting to believe it's not possible.
 

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #187 on: March 29, 2021, 07:36:17 am »
Some trials to upload waveform to UTG900  in  https://github.com/jarjuk/UTG900 version  Release:0.0.5-SNAPSHOT.

Do not know data format UTG900 is expecting, nor the protocol for uploading waveform over USB   :-\
This does not work (for sure :phew:

Code: [Select]
         def ilWriteFile( self, filePath):
             """Expect to be in Arb/WaveFile waitin for file loaction &&
             updaload"""
             self.ilFileLocation( "External")
             with open( filePath) as fh:
                 lines = fh.readlines()
                 for line in lines:
                     self.write( line )









 

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #188 on: March 29, 2021, 10:12:52 am »
Found a video https://www.youtube.com/watch?v=ORkJGdViAhg, which starting  @32:00 explains, how to tranfer
arb-waveforms to the device.
 
The following users thanked this post: Mechatrommer, mnementh, W3AXL, Markus2801A

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #189 on: March 29, 2021, 05:18:54 pm »
That's definitely not obvious, but it works! Thanks for posting the video, I probably never would've figured it out otherwise.
 

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #190 on: March 30, 2021, 05:56:44 am »
Axel:  :-+

As I have told
I am triyng to add arb wave form upload to my 'Tool to control UNIT-T UTG900 Waveform generator'
.

For this purpose, is possible for you to create a simple arb wave form into a file together with a screen shot of the wave form,  and send those to me (I have allowed email from forum members, an other possility is github pull request on my github repo https://github.com/jarjuk/UTG900)?

Having valid data is haft of the story. The other half of story is still open  :( I have not been able to find UTG962/UTG932 API documentation. I found RS documentation  https://cdn.rohde-schwarz.com/pws/dl_downloads/dl_application/application_notes/1gp79/1GP79_1E_SCPI_Programming_Guide_SigGens.pdf discussing signal generator usage over SCPI, tough

 

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #191 on: March 31, 2021, 02:31:35 am »
I submitted a PR for a simple test waveform to your repo. Let me know if you want a simpler waveform, but I figured this would be a good starting point:

 

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #192 on: March 31, 2021, 02:48:34 am »
Also Amazon had a 10Ah USB battery pack on sale, so I decided to have a go at making my UTG portable.





Works great - I'll have to do some noise measurements to see if the cheap regulator inside the battery pack is making any noise.
 
The following users thanked this post: JamesLynton, Markus2801A

Offline Jukka

  • Newbie
  • Posts: 8
  • Country: fi
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #193 on: March 31, 2021, 05:14:47 am »
Axel: thank you for the PR!  :)  Merged! Waveform is good for my purposes - the real pain is  in  figuring  out the  API to upload  files to the device.

I am planning to integrate my Rigol MSO1104Z :-BROKE scope to the UTG900 -tool ( -> in that case, need to rename the tool with a more generic name) to create a tool chain with uses cases:

- use interactive mode to setup signal generator/scope
- save interactive mode -session to CLI -script, which can be replayed on the devices
- Convert CLI -script to  python API calls, which can be replayed on the devices

and to apply these use cases for scripting amplifier performance measurements  :bullshit: : setup signal source, screenshot signal source, setup scope, take scope measurements, screenshot scope.

 

Offline zachik

  • Contributor
  • Posts: 18
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #194 on: March 31, 2021, 07:37:30 pm »
Also Amazon had a 10Ah USB battery pack on sale, so I decided to have a go at making my UTG portable.





Works great - I'll have to do some noise measurements to see if the cheap regulator inside the battery pack is making any noise.
Can you provide a link for that battery pack? Looks really cool solution!
Also, where did you get the USB to barrel cable from?
 

Offline W3AXL

  • Regular Contributor
  • *
  • Posts: 90
  • Country: us
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #195 on: March 31, 2021, 08:33:29 pm »
Battery pack: https://www.amazon.com/gp/product/B07QXV6N1B/

Right-angle cable: https://www.amazon.com/gp/product/B075112RM6/

Anker typically makes good stuff so I'm fairly confident it's a quality pack. The cable I just found by searching "right angle usb to 5.5 2.1"
 
The following users thanked this post: zachik

Offline JamesLynton

  • Contributor
  • Posts: 35
  • Country: gb
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #196 on: April 02, 2021, 11:37:23 am »
Nice find, that power bank is a good fit, another solid reason for using a battery powered signal gen (and other tools for that matter), is you wont have to worry at all about signal ground loops mucking things up, stray voltages, or connecting to circuitry that might be 'floating' at some considerable voltages (especially given the all plastic construction). this puts compact generators like this at a significant advantage in certain use cases :)

I have also mused fitting an internal powerbank/battery within the shell (if theres space for at least a modest cell phone battery or a 18650 Cell) when mine is out of warranty (for what good that is), should be able to in-line it between the usb port and power in socket for an 'invisible' implementation.
« Last Edit: April 02, 2021, 11:43:06 am by JamesLynton »
 

Offline Labrat101

  • Regular
  • **
  • Posts: 688
  • Country: 00
  • Renovating Old Test Equipment & Calibration ..
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #197 on: April 04, 2021, 09:07:16 pm »
I think if you put an internal battery . It will effect the air flow and these units run quite warm
after a few hours . On my UTG 962 the voltage drifts as it warms up . stabilizes after about 20mins.
Ok its only a few mv . Fitting an internal lithium battery I think it will cause you problems . But that also depends on what you are doing . If you can live with Frequency & voltage drifts as the battery also heats up.
I like my one stable to 10-6 after Half an hour .
And using the power supply it came with is 4.999v and a ground jumper to the BNC works fine.
A Battery stuck to the back is far better .  :-+



"   All Started With A BIG Bang!! .  .   & Magic Smoke  ".
 
The following users thanked this post: JamesLynton

Offline OnAironaut

  • Newbie
  • Posts: 3
  • Country: lv
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #198 on: April 19, 2021, 10:12:48 am »
My one was without the E and it came
With a very nice power supply 240vac
With a 2 pin euro plug. .
I looked on the site and there seems to be no difference in the technical  data .
 Maybe a sales gimmick.  Or a typo when they made the labels.  . If your buying get  directly from
UNI -T . and request voltage etc.

The "E" model is the only thing I find listed at the UNI-T site and I downloaded the manual which shows an "E" model in the cover photo.  The power brick is listed in it as a universal 100-240Vrms 50/60Hz 0.4A unit, so marking the unit with an "E" because it's a European/English market edition doesn't make sense for multiple reasons - the language can be chosen in the menu anyway, the power brick is universal, and even with an "E" marking that still doesn't distinguish between the various plugs needed on the power brick for various countries.

Firmware versions match between "E" and non-"E" units, but who knows about hardware changes.  It can't be that they upgraded the crappy BNC jacks detailed here because that person shows an "E" model in his photos.

As I've said previously, letter suffixes on UNI-T multimeters have significant meanings and an "E" suffix doesn't indicate a European/English market edition.  Too bad straight answers from China-based manufacturers are unobtainium.

I contacted UNI-T via e-mail address displayed on their website, and asked about the difference between UTG962 and UTG962E.

The answer was that "UTG962E is the international version, UTG962 is the Chinese domestic version."

I think I'm going to order the "E" version. I doubt there is any difference between the two, except for the letter "E" on the front panel.
« Last Edit: April 19, 2021, 10:22:41 am by OnAironaut »
 

Offline Labrat101

  • Regular
  • **
  • Posts: 688
  • Country: 00
  • Renovating Old Test Equipment & Calibration ..
Re: UNI-T UTG932/UTG962 200MSa/s Function Arbitrary Waveform Generator
« Reply #199 on: April 19, 2021, 11:49:12 am »
My one was without the E and it came
With a very nice power supply 240vac
With a 2 pin euro plug. .
I looked on the site and there seems to be no difference in the technical  data .
 Maybe a sales gimmick.  Or a typo when they made the labels.  . If your buying get  directly from
UNI -T . and request voltage etc.

The "E" model is the only thing I find listed at the UNI-T site and I downloaded the manual which shows an "E" model in the cover photo.  The power brick is listed in it as a universal 100-240Vrms 50/60Hz 0.4A unit, so marking the unit with an "E" because it's a European/English market edition doesn't make sense for multiple reasons - the language can be chosen in the menu anyway, the power brick is universal, and even with an "E" marking that still doesn't distinguish between the various plugs needed on the power brick for various countries.

Firmware versions match between "E" and non-"E" units, but who knows about hardware changes.  It can't be that they upgraded the crappy BNC jacks detailed here because that person shows an "E" model in his photos.

As I've said previously, letter suffixes on UNI-T multimeters have significant meanings and an "E" suffix doesn't indicate a European/English market edition.  Too bad straight answers from China-based manufacturers are unobtainium.

I contacted UNI-T via e-mail address displayed on their website, and asked about the difference between UTG962 and UTG962E.

The answer was that "UTG962E is the international version, UTG962 is the Chinese domestic version."

I think I'm going to order the "E" version. I doubt there is any difference between the two, except for the letter "E" on the front panel.
My UTG962  (without the E) came as default Chinese . Just used the Google translator on my phone to change to English  :-+
 The Calibration is OK . Not to NASA standard but well within Spec sheet  +_    :popcorn:
 Checked with a 6.5 digit HP Meter . Good value for the price .
"   All Started With A BIG Bang!! .  .   & Magic Smoke  ".
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf