I researched this just a few weeks ago, and found someone in an online forum looking for the Windows 7 (64?) drivers which were not yet available. I can't seem to get onto the company site/forum the way I was able to before. Anyway, it does look like it could be a good buy if you want to run it on an XP machine, knowing there is a high risk of no software support.
EricF
and then finally its ergonomics.I assume you mean software (it's just a box with BNC connectors). Can't you try the software without buying the hardware? Most manufacturers make the software available for anyone to download and implement a demonstration mode if no device is detected. Reading the manual may also give you some idea of the UI. I'm not very hopeful, most software from Chinese manufacturers, even more reputable ones like Rigol is a piece of crap in my opinion.
Based on the manual, its -40dB at only 40kHz ! I'm not hopeful, it must make a lot of harmonics by not having a really selective output filter, however I can make those as needed to get cleaner output.Auch! You might have a hard time determining the fundamental near its max frequency ;). I wonder if it's the DAC or the output stage. The filter should just filter out the DDS frequency (assuming it uses DDS, which seems likely), which is constant, so it doesn't have to be very selective. For arbitrary waves, you can combine high and low frequency components, so I'm not sure how you're going to filter that (beyond filtering the DDS frequency), you may want some edges to be very fast. A bad output stage can distort anything, not much a filter can do about that.
Just noticed this tonight (no affiliation) on clearance for $99USD:
http://www.saelig.com/CL/CL001.htm (http://www.saelig.com/CL/CL001.htm)
Not sure if this means they are discontinuing them...
and then finally its ergonomics.I assume you mean software(it's just a box with BNC connectors). Can't you try the software without buying the hardware? Most manufacturers make the software available for anyone to download and implement a demonstration mode if no device is detected. Reading the manual may also give you some idea of the UI. I'm not very hopeful, most software from Chinese manufacturers, even more reputable ones like Rigol is a piece of crap in my opinion.Based on the manual, its -40dB at only 40kHz ! I'm not hopeful, it must make a lot of harmonics by not having a really selective output filter, however I can make those as needed to get cleaner output.Auch! You might have a hard time determining the fundamental near its max frequency ;). I wonder if it's the DAC or the output stage. The filter should just filter out the DDS frequency (assuming it uses DDS, which seems likely), which is constant, so it doesn't have to be very selective. For arbitrary waves, you can combine high and low frequency components, so I'm not sure how you're going to filter that (beyond filtering the DDS frequency), you may want some edges to be very fast. A bad output stage can distort anything, not much a filter can do about that.
I wouldn't be surprised if it has ceased production and is discontinued; its been on the market since 12/2008. But that's not necessarily a bad thing,dont worry, the last batch usually is the most stable and cheapest.Ouch! I wish I had waited for your link, a lowest final price with S&H going via UPS is $111, $30 less than what I just paid just a few days ago.dont worry, you can think later on how to gain that $30 back by using the device. possibly more.
As I understand DDS, the final output stage is a reconstruction low filter. How its made determines what harmonics and distortion will squeeze through. As for arbitrary waves with different frequency characteristics, I'll have to play each as it occurs, doing what I draw and what I see comparisons ???.That low-pass filter is for the harmonics from the DAC, which is usually a fixed frequency.
Kids, mhz means nothing. mHz would be millihertz (10-3 Hz). But if you mean megahertz, then write MHz (106 Hz, or 1000000000 times larger than mHz). If that is to inconvenient for you, what about another hobby or profession?
Kids, mhz means nothing. mHz would be millihertz (10-3 Hz). But if you mean megahertz, then write MHz (106 Hz, or 1000000000 times larger than mHz). If that is to inconvenient for you, what about another hobby or profession?
As I understand DDS, the final output stage is a reconstruction low filter. How its made determines what harmonics and distortion will squeeze through. As for arbitrary waves with different frequency characteristics, I'll have to play each as it occurs, doing what I draw and what I see comparisons ???.That low-pass filter is for the harmonics from the DAC, which is usually a fixed frequency.
I believe the difference between DDS and 'true' arbitrary waveform generator (as defined by the manufacturers of those) is that a true AWG runs the DAC at a sample rate equal to number of samples * repetition rate. DDS runs the DAC at a fixed frequency, and adjusts the samples to match. It has to interpolate or round the samples if the sample rate doesn't happen to be a multiple of number of samples * repetition rate. The advantage of DDS is that it can easily vary the frequency, for example for sweeping. This makes it also easy to implement a function generator. I'm by no means an expert on DDS or AWG, most of my knowledge comes from reading appnotes and datasheets/manuals. Some links: Tegam AN-401: True Arbitary Waveform Generators Offer More Than Function Generators with Arbitary Capability (http://www.tegam.com/HTML/Application_Notes/?AN401.html), Tektronix XYZs of Signal Generators (http://www2.tek.com/cmswpt/tidetails.lotr?ct=TI&cs=pri&ci=12608&lc=EN).
Most cheap arbitrary waveform generators seem to use DDS, even though true AWG seems simpler to me. Maybe implementing true AWG is harder than it looks, or it's because they want to bundle a function generator. My guess is that the Hantek unit also uses DDS.
I added two attachments about filters for DDS. The first is from an ELV design for a 30MHz DDS function generator (no arbitrary waveform capability, but DDS is DDS). The DAC is in IC5 (AD9834), the signal is outputted on IOUT (Sig Bit Out is used for high frequency square waves, just ignore that part). ADG736 is just an analog switch. Depending on the type of signal, the Chebyshev filter (knee frequency = 34MHz) is used for sines (up to 30MHz), but bypassed for square waves (rise time is <5nS IIRC). The sample rate is 67.109MHz, well above 34MHz. The filter doesn't change with frequency.
The second is part of the HP 33120A service manual, a function generator/arbitrary waveform generator (DDS, 15MHz, 40MS/s). Depeding on the type of signal, it either uses a very sharp filter (ideal would be a brick wall response slightly above 15MHz) for sines, or a shallow filter for all other types of signals. Both filters have a fixed frequency response.
I confirm dajones posts, there is a persistent jitter of 5-8nS most obvious in the square wave output. I haven't tried mitigating it, or trying a whole suit of tests, and will post a more detailed review later as I find time.
Prelim testing was done with an unmodified Rigol 50 MHz 1052E and its FFT.i'm no expert, but i have a feeling doubt to rigol's fft.sometime me too lazy press the shift/caps button, i just rely on my extra terestial intelligent to read people's post, but a good reminder... with the butt kicking word "kids".Kids, mhz means nothing. mHz would be millihertz (10-3 Hz). But if you mean megahertz, then write MHz (106 Hz, or 1000000000 times larger than mHz). If that is to inconvenient for you, what about another hobby or profession?Even if I have no interest in a thread topic and I see BoredAtWork has posted something on it I open it up anyways. Just so I can enjoy golden comments like this one.
QuoteI confirm dajones posts, there is a persistent jitter of 5-8ns most obvious in the square wave output. I haven't tried mitigating it, or trying a whole suit of tests, and will post a more detailed review later as I find time.
: /
I was HOPING that it was just 'my unit' that was having this problem.
You might want to take a look at the "Sync-Out" problem.
If I set my unit to 2.5MHz, and display the output signal on one trace, and the Sync-Out on another trace ( on the scope ), I see that
they are in step and not much jitter on the sync line. If I bump this up or down in frequency by a small factor ( 2.51MHz or 2.5000000.001 or 2.4999 )
the Sync-Out signal gets so jittery there doesn't seem to be any timing relationship between the two signals at all.
Its a big problem with the Rigol's inherent noise and the potential for artifacts caused by the FFT itself, as we've discussed on eevblog in the past. Its a reason I'll post scope images more than discuss it [ its also easy to do with the 1052E], you can see the signal vs harmonics+ noise for yourselves. I also analyzed the maximum amplitude on FFT to see whatever harmonics are there and sometimes, not always, pick up a few distinct frequencies spiking over noise. So far the noise floor and/or specific frequencies are <= 1-5 mVrms for a fundamental at 1.4Vrms. That's ~ <= 0.36%.That would be around -50dB, much better than the specs, but nothing extraordinary for DDS. 0.36% is at the very limit of the 8-bit dynamic range of the Rigol, so I would be suspicious. Setting the vertical scale to dB (assuming the Rigol supports that) would make it easier to see, although it doesn't change the dynamic range obviously. I would also set the sweep speed to a higher setting to get more horizontal resolution on the FFT for looking at the first few harmonics. For more accurate measurements, something like a notch filter might help.
That would be around -50dB, much better than the specs, but nothing extraordinary for DDS. 0.36% is at the very limit of the 8-bit dynamic range of the Rigol, so I would be suspicious. Setting the vertical scale to dB (assuming the Rigol supports that) would make it easier to see, although it doesn't change the dynamic range obviously. I would also set the sweep speed to a higher setting to get more horizontal resolution on the FFT for looking at the first few harmonics. For more accurate measurements, something like a notch filter might help.
Glad that it appears to perform better than expected, except for the jitter issue. I wonder what kind of change takes place above 2.5MHz, different DAC frequency? 200MS/s and 4kS waveform memory means that the full memory depth can only be used up to 50kHz, so they have to be down sampled above that. Maybe there's some rounding/dithering error there? At 2.5MHz, there will only be 80 points per period, so even minor changes will be significant, especially for something like 2.6MHz, which is not a divisor of 200MHz. Any idea if there's some periodicity to the jitter? If they run the DAC at 200MHz, and alternate periods of 38 and 39, that would generate some jitter.
The manual is useless, as expected (good thing you don't need one), so it provides no clue how it changes the output frequency and what it does with the extra points.
After looking through the manual, I wonder if the arbitrary waveform capability is as bad as it looks? From what I see in the manual, you're forced to edit each individual point individually (if it has more features, it's not mentioned in the manual). I thought the Rigol software was bad, but this seems completely useless. Like Rigol, the compensate for this by leaching on the software that their competitors make available for free. Guess you can't expect them to write their own software for this kind of money.
good work!
The Hantek DDS 3x25 is a solid function generator with arbitrary waveform capability, far better in performance than most analog function generators, in its price range or with similar specifications. It one of the lowest cost 25 MHz capable DDS function generator on the market, and likely the only one with AWG capability.
QuoteThe Hantek DDS 3x25 is a solid function generator with arbitrary waveform capability, far better in performance than most analog function generators, in its price range or with similar specifications. It one of the lowest cost 25 MHz capable DDS function generator on the market, and likely the only one with AWG capability.
Man, I don't understand how you can say that!
The thing glitches like crazy for square waves above 2.5mhz ( except a few stable spots like 10mhz ).
The sync out line has no timing relationship to the output signal except at those rare "stable" spots.
The sync out line glitches every 20us ( 50khz ) and will glitch any output waveform other than sine waves.
I could NEVER recommend this to anyone, except maybe as a source of sine waves, and as long as you
didn't need to use the sync out line at all.
If you did your stability test at one of the "stable" spots ( like 10mhz ) you might want to try it again at 10.1mhz.
Just noticed this tonight (no affiliation) on clearance for $99USD:its discontinued, not sold anymore. maybe i was thinking too long, gotta find another source :( or any info on the newer product?
http://www.saelig.com/CL/CL001.htm (http://www.saelig.com/CL/CL001.htm)
Not sure if this means they are discontinuing them...
Just noticed this tonight (no affiliation) on clearance for $99USD:its discontinued, not sold anymore. maybe i was thinking too long, gotta find another source :( or any info on the newer product?
http://www.saelig.com/CL/CL001.htm (http://www.saelig.com/CL/CL001.htm)
Not sure if this means they are discontinuing them...
this thread is perused:
1) sine wave: 1.5Vrms?@3MHz, 0.2Vrms?@75MHz? is it enough/good as an external clock for an mcu? or for mcu work?
2) arbitrary good to 100kHz only? or can be more? like 1-3MHz is possible?
3) what is "sync output" for?
my fingers are tinggling, should i hit the $150 3x25 (http://cgi.ebay.com.my/USB-Pc-Function-Arbitr-ary-Waveform-Generator-DDS-3X25-/290493493907?pt=BI_Oscilloscopes&hash=item43a2c2f293)?
yes its still available in ebay. and the bugs, dajones tried to highlight that clearly. but as you said, and i think, a 75MHz sine is a hard thing to find at the price, the DDS-3005 (http://cgi.ebay.com.my/DDS-3005-USB-PC-Function-Arbitrary-Waveform-Generator-/320401540954?pt=BI_Signal_Sources&hash=item4a996b875a) cost more than twice and no indication it can do 75MHz sine. as for other signal than sine (square, arb), i will treat them as extra features of the generator, so slower frequency should be acceptable for me, in fact imo 3MHz is pretty good already. but the 3x25's -12db concerns me, as your pictures indicate, its around 384mVpp @ 75MHz sine. so i'm rounding it to roughly 0.2Vrms, i was quoting Vdc (Vac/2 to my understanding, sorry if i'm wrong), but whatever! your pictures worth 1K words.
my only concern if its possible feeding the signal into the mcu clock and get the mcu MIPS'ping, you know what i mean? running. as jitter is concerned, perharps that related to how accurate the timing is? so far i dont think i will need a very accurate timing/clocking project, if i do maybe i should get more stable oscillator for the project. i just want to know what happen if the mcu is running at its highest speed (say if a PIC can run at max 40MHz, then i can tune the hantek to 40MHz sine and feed it to the PIC), thats all that i can imagine so far. or is it do i need an extra amplifying circuitry before fedding to mcu? i dont know, maybe i'm too newbie on this and have to make some study. you mentioned about "voltage offset" which is not very clear to me, but dont bother, i'll go figure that out. so the answer to my concern should be just as simple as "yes" and "no".
other than that, i would like to experiment with LCR meter as you've suggested in another thread, and other possibility within the reach of the generator. pretty much thats all. i'm not that complicated beast ;) . OR just maybe this whole thing is just a delusion to me?
ps:
comparison between 3005 and 3x25 (html) (http://www.usb-instruments.cn/Generator-Specification.htm#compa)
3005 manual (pdf) (http://www.hantek.com.cn/Product/DDS-3005/User%20Manual.pdf)
3x25 manual (pdf) (http://www.usb-instruments.cn/download/manual/3x25manual.pdf)
The manual states the output port is capable of ~ 50mA, at 3.5v. That suggests it was designed for an impedance of ~ 70 ohms.My guess is that it's 50 ohm, like 95% of the generators. Should be easy to find out by measuring open circuit voltage and short-circuit current.
Thus, all you need do is terminate the sync output at 50 ohms, and you have a usable sync signal good to 25 MHz. I've confirmed this.Good find. Most generators are happier with a 50ohm load, unless otherwise specified. I expect the distortion and flatness spec were also specified for a terminated load. If you're unable to do this, back termination (termination at the generator's end) is usually preferable to none at all.
The manual states the output port is capable of ~ 50mA, at 3.5v. That suggests it was designed for an impedance of ~ 70 ohms.My guess is that it's 50 ohm, like 95% of the generators. Should be easy to find out by measuring open circuit voltage and short-circuit current.Thus, all you need do is terminate the sync output at 50 ohms, and you have a usable sync signal good to 25 MHz. I've confirmed this.Good find. Most generators are happier with a 50ohm load, unless otherwise specified. I expect the distortion and flatness spec were also specified for a terminated load. If you're unable to do this, back termination (termination at the generator's end) is usually preferable to none at all.
damned! i just hit it, buy it now from ebay chinese seller. wish me luck.
Please add your review when you get it!i dont think i can do any better than yours. and i'm not in rush, just want to make early preparation before i can start any project. maybe i will just have a rough look when the thing arrives. and to see if there is any prospect from pc programmability point of view. i hope i'll come out with something ;)
I took delivery of a DDS-3x25 a week ago. After 1 hours of fiddling:
- Same ±5.5nS jitter on square waves as others have noted above.
- Sine wave generation seems OK. Above 30 or 40Mhz it starts to become visibly distorted, but not horribly so.
- I haven't messed with sync out
- Software is not very good (me=Win7-32pro)
- virtual frequency adjust knob (on the screen), when turned by the mouse, changes freq in ONE Hz increments - Useless above 100Hz.
- many options grayed-out in the software, reason unknown. Can't sweep.
I also bought a Hantek DSO5202B 200MHz scope, which is not bad at all for the price. Although this is off-topic, I had a wild dream about using the generator and scope together as a Network analyzer (would give me a nice graph of amplitude and phase response as a function of freq for my device-under-test) - anyone have any ideas how to do this? I also have this scope-and-generator-in-one:
http://syscompdesign.com/CGR101.html (http://syscompdesign.com/CGR101.html)
which produces beautiful bode plots - but only up to 2MHz - I need something up to 10MHz. Any ideas?
One advantage of USB scopes is that the raw data can be imported into software for presentation in any format, such as Bode plots.Just to be clear: this is true for any DSO with any kind of PC connectivity, which includes all of the popular Rigol/Instek/Hantek/Tekway scopes. Even RS-232 or GPIB would work. When I think of USB scopes, I think of a small box with BNC connectors and a USB port (like the Hantek AFG), without any display or knobs. You definitely don't need one of those, you can do the same with a standard DSO with USB port and decent software, and they're usually inferior to stand-alone units unless you pay big bucks to someone like NI or Agilent.
One advantage of USB scopes is that the raw data can be imported into software for presentation in any format, such as Bode plots.Just to be clear: this is true for any DSO with any kind of PC connectivity, which includes all of the popular Rigol/Instek/Hantek/Tekway scopes. Even RS-232 or GPIB would work. When I think of USB scopes, I think of a small box with BNC connectors and a USB port (like the Hantek AFG), without any display or knobs. You definitely don't need one of those, you can do the same with a standard DSO with USB port and decent software, and they're usually inferior to stand-alone units unless you pay big bucks to someone like NI or Agilent.
You can actually do the same with a non-storage scope, but you need to manually measure the amplitude at all frequencies, so it's a lot of work. With a computer controlled signal source and oscilloscope, you can automate it.
LARGE Hi res PCB photos are here, I did not take them, just found it by accident:nice simplistic porn photos. i'm looking forward to take apart my unit. i just wonder why there is so much pcb area (bottom part) compared to components population (about a quarter only), why dont/cant they make the unit/pcb smaller? ???
http://biot.com/p/ (http://biot.com/p/)
I also bought a Hantek DSO5202B 200MHz scope, which is not bad at all for the price. Although this is off-topic, I had a wild dream about using the generator and scope together as a Network analyzer (would give me a nice graph of amplitude and phase response as a function of freq for my device-under-test) - anyone have any ideas how to do this? I also have this scope-and-generator-in-one:
http://syscompdesign.com/CGR101.html (http://syscompdesign.com/CGR101.html)
which produces beautiful bode plots - but only up to 2MHz - I need something up to 10MHz. Any ideas?
Good you brought these up:frogblender's point interests me about the network analyzer, and the possiblity to bode/lissajou plot etc in pc software. but i'm concern about the delay that will be introduced by pc->generator->output and input->oscilloscope->pc with the DUT in between. will it not give some effect to the graph plot or analysis? i need to study more on this.
You can use a signal source and a scope in the X-Y mode of the scope, and evaluate Lissajou patterns. It will provide phase, amplitude and frequency relationship between 2 channels.
One advantage of USB scopes is that the raw data can be imported into software for presentation in any format, such as Bode plots. But if you were trying to test your hardware for its frequency and phase response for practical reasons, you now have basic tools to make that assessment. For example, the syscomp image would appear as a very squashed line at 12kHz in phase, then a turn to equal proportions at X=Y amplitude, and begin to move from a circle to an ellipse as the phase shifted.
http://en.wikipedia.org/wiki/Lissajou#Practical_application (http://en.wikipedia.org/wiki/Lissajou#Practical_application)
i just wonder why there is so much pcb area (bottom part) compared to components population (about a quarter only), why dont/cant they make the unit/pcb smaller? ???
...or they just want to impress.you confirmed what i had in mind ;D
nice simplistic porn photos. i'm looking forward to take apart my unit. i just wonder why there is so much pcb area (bottom part)
but i'm concern about the delay that will be introduced by pc->generator->output and input->oscilloscope->pc with the DUT in between. will it not give some effect to the graph plot or analysis? i need to study more on this.
Hantek's web site has been down for a while, but its up and all its operational software are online to be downloaded for trial as you please.
http://www.hantek.com.cn/english/produce.asp?classid=30 (http://www.hantek.com.cn/english/produce.asp?classid=30)
However, there is something wrong with the 3x25 rar file, its 22MB long but when unrared only drivers are viewable.
Function myCreateBuf()
Dim i As Integer
Dim tmp As Double
Dim arBuffer(4095) As Integer 'waveform buffer
For i = 0 To g_nWavePointNum
'sample value
tmp = g_offset / MAX_VOLT + g_amplitude / MAX_VOLT * Sin((i / g_nWavePointNum) * 2 * PI * g_nWavePeriodNum)
tmp = 2048 - 2047 * tmp
If tmp > 4095 Then
tmp = 4095
ElseIf tmp < 0 Then
tmp = 0
End If
arBuffer(i) = tmp
Next
result = DDSDownload(g_iDevice, arBuffer(0), g_nWavePointNum)
End Function
tmp = g_offset / MAX_VOLT + g_amplitude / MAX_VOLT * Tan((i / g_nWavePointNum) * 2 * PI * g_nWavePeriodNum) 'SOA MODIFIED
Hi,
I have been using DDS-3X25 and DSO-2250 USB for about two years. I must say that they are very cost effective but you have to be careful. Signal generator broken once and oscilloscope broke twice. I do not know the actual reason (no high voltage input/short circuit at probes), believe me I was very careful. Anyway just a reminder do not leave them powered up (connected to pc) while not using.
* Op-amp at the exit stage of DDS broke had to replace it (bought online directly from manufacturer as sample).
* Same op-amp that is used in the input stage of oscilloscope broke (thank gos i bought one as replacement :) ).
* A diode in the input stage of oscilloscope broke (salvaged a replacement smd diode from an old lcd projector).
Besides all these I am happy with them. Now to the main topic.
I am using these to as VNA. I am not EE, so I may be wrong on selecting words. Let me explain my situation. I generate sine wave from DDS. Connect it to my network and OSC1. Connect the output of the network to OSC2. Then get the magnitudes of input (not necessary in fact) and output. Then I find phase difference between OSC1 and OSC2 and draw bode plots.
Another method i tried to superimpose sine waves that are multiple in prime numbers (i.e. if my base freq is 1hz then I impose 2,3,5,7,11,13... hz frequency sine waves (total of 18 freqs)). Run it through the network then run fft on it. To have better accuracy, I curve fit to the signal in time domain with the magnitude and phase information from fft used as initial guess value.
First one seems to work better than second one when i look at the response graphs of RC networks. In fft there is a slight difference that I don't know why it happens. I can give some example graphs if someone interested in help.
Anyway, I did all this stuff in MatLAB 32-bit (I had(!) access in our campus), I believe it can be also done in octave as long as it can call dlls. The problem rised when our university switched to 64-bit MatLAB. My m-files and functions no longer work giving dll load error. The bad part is i didn't keep the original dlls and header files that I've used in 32-bit. So, I am asking help from someone have experience with 64bit matlab dll calls. At the end I can share my functions for signal generation and oscilloscope in a toolkit or as a sample gui. Besides that if you want any graph or data to see the performance of osc or dds just let me know. But please remember I am ME so briefly explain how should i do it.
Regards,
Bekir
Ps. I am working on Win7 x64
i noticed some last minute hand soldering on the pcb. my pcb ver is 1.4, so go figure. cosmetic-wise, its not so impressive, but from rough functional test, i think its good for money and can do me some usefull work. the usb chip, main mcu and another chip after it have been erased.
the usb chip, main mcu and another chip after it have been erased.
Thanks bekir, when you replaced the signal generator that broke, did you repair it yourself, or bought a new 3x25?
I see from mechatrommer's photos the op amp is a LMH6702 and the comparator is TI TL3016; that's a pretty good op amp by the way.
To prevent further damage in high output tests you can put another op amp infront of this op amp and isolate it, just configure it as a voltage follower.
From your tests, did you check the quality of the sine wave output on any higher end equipment you have in your lab? Particularly, what is the harmonic output of the sine waves; I'm just curious. I only have a Rigol 1052e but I get nothing at its noise floor which is about -50 dBc. A more sensitive instrument might show that the sine wave output is hifi audio quality, i.e., -90dBc or more.
Yep, we discussed using the Hantek as a source for making VNA calculations, I use Lissajou figures to make qualitative measurements for phase delay, we just discussed this, find our threads on measuring phase shifts and the Hantek.
Your prime number test is interesting, to superimpose them, do you have multiple sine wave sources and measure simultaneously or did you send each prime individually then merge the waveform data?
freqs=primes(64); % get prime numbers up to 64, 18 in total
for j=1:length(freqs);
yy=yy+sin(freqs(j)*2*pi*i+freqs(j)); % add unit amplitude sine wave at each prime freq multiple
end
yy=yy./max(yy); % normalize to avoid saturation on output
EDIT: well, i just quickly realized it. its not a bug, just my stupidity at using the dso. its called aliasing http://en.wikipedia.org/wiki/Aliasing (http://en.wikipedia.org/wiki/Aliasing) so case closed.
Dave was able to cause aliasing on the Rigol in his review of the new Agilent scope.the better workaround for rigol is to use peakdetect or long memory resolution.
EDIT: well, i just quickly realized it. its not a bug, just my stupidity at using the dso. its called aliasing http://en.wikipedia.org/wiki/Aliasing (http://en.wikipedia.org/wiki/Aliasing) so case closed.
Dave was able to cause aliasing on the Rigol in his review of the new Agilent scope.
I've replaced it (LMH6702) myself,
To get the response accurately, I was sampling at least 2 or 3 periods then using linefitting methods on matlab.That also decrease error induced by noise. But as I mentioned ? am not experienced in this stuff so I am open to any suggestion. As for the tests, I may ask for the technicians in EE labs for better equipment is you wish.Yep, we discussed using the Hantek as a source for making VNA calculations, I use Lissajou figures to make qualitative measurements for phase delay, we just discussed this, find our threads on measuring phase shifts and the Hantek.
Your prime number test is interesting, to superimpose them, do you have multiple sine wave sources and measure simultaneously or did you send each prime individually then merge the waveform data?
I will check the thread right away. I have measured simultaneously. I have calculated voltage vs time in matlab then transfer it to DDS buffer. Maybe I can better explain by including part of the code:Code: [Select]freqs=primes(64); % get prime numbers up to 64, 18 in total
for j=1:length(freqs);
yy=yy+sin(freqs(j)*2*pi*i+freqs(j)); % add unit amplitude sine wave at each prime freq multiple
end
yy=yy./max(yy); % normalize to avoid saturation on output
I have added constant phase shifts between signals, this way fft works better. (I fft'ed yy for both 0 phase and this case, amplitude values closer to each other in this case).
What are you trying to measure, the systems impedance, phase relationship and amplitude for a linear network? Its been a while since I did anything with gross calculations with FFT, IIRC primes just allows mathcad to use DFT and make processing easier.
http://iopscience.iop.org/0957-0233/19/10/105102;jsessionid=A1AB9DB658381B0A964FEB3B70D6B429.c3 (http://iopscience.iop.org/0957-0233/19/10/105102;jsessionid=A1AB9DB658381B0A964FEB3B70D6B429.c3)
err, no :( only the synch out got terminated. whats the effect? i only can think of somesort of loading stuff ???
well ok, i tried my best to make similar setting as yours. made a quick fix 50ohm for the second terminator (i cannot sacrifice another bnc connector, i only have 3 left, 2 died during soldering, gotta use the dc-bnc type) still i got ringing in synch out, maybe the 75ohm impedance connector is the culprit. and i dont understand why you say you have a clean FFT for your square signal, as i understand square consists of alot of harmonics.
redo the test with both (crude) terminated, my previous conclusion still hold, still the same graphs except the output amplitude now is halved due to termination. and i swap yellow=signal, blue=synch to comply with saturation's setting. i provided only one snapshot (lazy to repost the whole series again). c_t_12mhz.jpg = trapezia (terminated) at "not multiple" 12mhz.
mind to show your cable? :P ;D
ps: the time now is 9AM, and i think i'm retiring for today, will continue at 3-4PM... today. hava nice day ;)
well, whats the purpose of the last one?
50 ohm resistor of unknown composition, I hope its not carbon composite or wire wound, its not the ideal terminator.What's wrong with carbon composition for this purpose? Before alternatives like thin film came around, this was actually the resistor of choice for high-frequency work. Wire wound can be OK if it's wound with an Aryton-Perry winding (cancels most of the inductance), otherwise it's obviously horrible. Even the extra ~10nH of a carbon/metal film resistor shouldn't be an issue, and I wouldn't expect major issues with 50/75 ohm mismatch either. I agree with your other points, though, and in my opinion this setup looks more suitable for connecting a light bulb than a high(ish) frequency signal. This is not DC or audio (which is basically the same), you can't just splice two wires together and expect good signal integrity.
50 ohm resistor of unknown composition, I hope its not carbon composite or wire wound, its not the ideal terminator.What's wrong with carbon composition for this purpose? Before alternatives like thin film came around, this was actually the resistor of choice for high-frequency work. Wire wound can be OK if it's wound with an Aryton-Perry winding (cancels most of the inductance), otherwise it's obviously horrible. Even the extra ~10nH of a carbon/metal film resistor shouldn't be an issue, and I wouldn't expect major issues with 50/75 ohm mismatch either. I agree with your other points, though, and in my opinion this setup looks more suitable for connecting a light bulb than a high(ish) frequency signal. This is not DC or audio (which is basically the same), you can't just splice two wires together and expect good signal integrity.
QuoteThe Hantek DDS 3x25 is a solid function generator with arbitrary waveform capability, far better in performance than most analog function generators, in its price range or with similar specifications. It one of the lowest cost 25 MHz capable DDS function generator on the market, and likely the only one with AWG capability.Man, I don't understand how you can say that!
The thing glitches like crazy for square waves above 2.5mhz ( except a few stable spots like 10mhz ).
The sync out line has no timing relationship to the output signal except at those rare "stable" spots.
The sync out line glitches every 20us ( 50khz ) and will glitch any output waveform other than sine waves.
I could NEVER recommend this to anyone, except maybe as a source of sine waves, and as long as you
didn't need to use the sync out line at all.
If you did your stability test at one of the "stable" spots ( like 10mhz ) you might want to try it again at 10.1mhz.
When composite was popular, I'd suspect 'high frequency ' was at a lower range compared to today.Yep, it was probably only up to 500MHz or so those days, although I don't see any inherent reason why they wouldn't work above that (until lead inductance becomes an issue). I wasn't suggesting using them in new designs (they're pretty much obsolete), but they're definitely better for high frequencies than most other common through-hole types (does anyone even make SMD carbon composition resistors?), like metal film and carbon film.
http://books.google.com/books?id=zpTnMsiUkmwC&pg=PA2&lpg=PA2&dq=carbon+composition+resistor+frequencies&source=bl&ots=B4EZgRvC7Y&sig=qJiDRN3VxUrlkxH2Rb2aQ5kBtLU&hl=en&ei=PASATfuTEsSM0QGujIX7Dw&sa=X&oi=book_result&ct=result&resnum=10&ved=0CFgQ6AEwCQ#v=onepage&q=carbon%20composition%20resistor%20frequencies&f=false (http://books.google.com/books?id=zpTnMsiUkmwC&pg=PA2&lpg=PA2&dq=carbon+composition+resistor+frequencies&source=bl&ots=B4EZgRvC7Y&sig=qJiDRN3VxUrlkxH2Rb2aQ5kBtLU&hl=en&ei=PASATfuTEsSM0QGujIX7Dw&sa=X&oi=book_result&ct=result&resnum=10&ved=0CFgQ6AEwCQ#v=onepage&q=carbon%20composition%20resistor%20frequencies&f=false)You can't view this page, viewing limit has been reached. What did it say?
When composite was popular, I'd suspect 'high frequency ' was at a lower range compared to today.Yep, it was probably only up to 500MHz or so those days, although I don't see any inherent reason why they wouldn't work above that (until lead inductance becomes an issue). I wasn't suggesting using them in new designs (they're pretty much obsolete), but they're definitely better for high frequencies than most other common through-hole types (does anyone even make SMD carbon composition resistors?), like metal film and carbon film.http://books.google.com/books?id=zpTnMsiUkmwC&pg=PA2&lpg=PA2&dq=carbon+composition+resistor+frequencies&source=bl&ots=B4EZgRvC7Y&sig=qJiDRN3VxUrlkxH2Rb2aQ5kBtLU&hl=en&ei=PASATfuTEsSM0QGujIX7Dw&sa=X&oi=book_result&ct=result&resnum=10&ved=0CFgQ6AEwCQ#v=onepage&q=carbon%20composition%20resistor%20frequencies&f=false (http://books.google.com/books?id=zpTnMsiUkmwC&pg=PA2&lpg=PA2&dq=carbon+composition+resistor+frequencies&source=bl&ots=B4EZgRvC7Y&sig=qJiDRN3VxUrlkxH2Rb2aQ5kBtLU&hl=en&ei=PASATfuTEsSM0QGujIX7Dw&sa=X&oi=book_result&ct=result&resnum=10&ved=0CFgQ6AEwCQ#v=onepage&q=carbon%20composition%20resistor%20frequencies&f=false)You can't view this page, viewing limit has been reached. What did it say?
How about these MELF resistors? Vishay claims they're good to 10 GHz+
http://www.vishay.com/docs/28718/melfhf.pdf (http://www.vishay.com/docs/28718/melfhf.pdf)
They say low inductance, but no mention of capacitance.
Most striking is a negative glitch is half the magnitude.its there, i just amplified it using improper connection (ringing?) ;)
Thanks for the info, I wasn't aware of the parasitic capacitance. Most sources I've seen (eg. this (http://www.microsemi.com/datasheets/SG1626.PDF) and this (http://140.120.11.1/prophys/ael/File/Datasheet/MAX4112-3.pdf), just random datasheets) seem to consider them superior to metal film for high frequency (thin film is obviously superior). The first datasheet recommends carbon composition for a part that has transition times of 20-30ns, not exactly GHz speed, but no 10MHz either.
I find it suspicious that the graph has only one curve for carbon composition, I can't imagine parasitic capacitance having the same influence at say 1ohm and 1Mohm. I also doubt that all carbon composition resistors are useless beyond 10MHz, lots of equipment from the seventies and earlier was full of carbon composition (wirewound was inductive, and metal film expensive), many of it can go beyond 10MHz. I'd have to check if for example the Tek TM500 series (which uses lots of carbon composition and multiple plugins go up to 250MHz) use metal film in all places that need to pass high frequency. I believe carbon comp was frequently used as termination resistor, but if they'd only work up to <10MHz, they'd be almost useless, since you need fairly long cables to even notice the transmission line effect at that frequency.
I just checked, the Tek PG-502 (250MHz pulse generator with a rise time of <1ns) uses two ~50ohm carbon composition resistors (as indicated in the electrical parts list) as switchable rear termination, with no reactive components nearby to compensate for parasitics. It would need about 350MHz bandwidth to reproduce the 1ns edge, can't imagine that the termination has a zero impedance (extrapolating from the graph you posted) at those frequencies. These were just the first resistors I checked, there are many more carbon composition resistors in there (and in similar equipment of that vintage). There are some 1% metal film resistors, but they're there because of accuracy/stability. This doesn't mean that carbon comp is superior to metal film for HF, but it does suggest that carbon comp works well beyond 10MHz.
Maybe there are different ways of producing a carbon composition resistor? That would explain the conflicting data, although I've never seen something like a 'low-capacitance carbon comp resistor'.
Please, reduce image. Thank you.
The other part of resistor articles from those references say that the frequency response deteriorates at increasingly higher resistance ratings but moreso for carbon composition resistors, CCR [excluding standard wire wound for obvious reasons.]That sounds more believable.
Probably the best thing we can do is get a spec sheet from a CCR manufacturer, I'm sure they won't deceive us!Thanks for the real data, most manufacturers don't give any data beyond DC.
http://www.koaspeer.com/pdfs/RC_SS-263_R4.pdf (http://www.koaspeer.com/pdfs/RC_SS-263_R4.pdf)
See the frequency spec with its X axis being MHz*MOhm.That would explain the conflicting information. The 50 ohm resistors I quoted would be good up to 10GHz or so. Unlikely, since lead inductance will be an issue, but never mind that, 350MHz should be fine. A 1Mohm resistor would only be good to 0.5MHz or so.
I think that if a device worked with variable frequencies, one could compensate for the changes in impedance by choosing resistors of lowest values, whenever possible. This causes higher power consumption but more consistent response.You usually want lower impedance circuits at higher frequencies anyway, because otherwise parasitic capacitance (eg. between traces) will swap your resistors, even with ideal resistors. Plus 1Mohm transmission lines are kinda impractical ;).
Likewise, if the device worked at a narrower range of frequencies and required high value carbon composition resistors, then even if actual resistances are reduced, a designer could work with that predictable characteristic and simply choose a higher ohm resistor to compensate for the reduction.I'm not sure how stable the parasitic capacitance is, both over time and between samples. The figures give just typical data. But there's really no reason not to use something superior like thin film these days, you don't want those inductive leads at high frequencies anyway.
Here's a US Navy document regarding application of CCR in USN electronics:They suggest up to 1MHz, which agrees with Koa's data with resistances up to 1Mohm or so.
http://www.google.com/url?sa=t&source=web&cd=17&ved=0CDsQFjAGOAo&url=http%3A%2F%2Fwww.everyspec.com%2FUSN%2FNAVSEA%2Fdownload.php%3Fspec%3DTE000-AB-GTP-010_R1-CHG-A.030031.pdf&rct=j&q=variations%20of%20carbon%20composition%20resistor%20high%20frequency%20use&ei=lnuCTZXOA474gAeBy7jbCA&usg=AFQjCNGTf2y90OvaLGY6o3qA0mLGOYEyPg&cad=rja (http://www.google.com/url?sa=t&source=web&cd=17&ved=0CDsQFjAGOAo&url=http%3A%2F%2Fwww.everyspec.com%2FUSN%2FNAVSEA%2Fdownload.php%3Fspec%3DTE000-AB-GTP-010_R1-CHG-A.030031.pdf&rct=j&q=variations%20of%20carbon%20composition%20resistor%20high%20frequency%20use&ei=lnuCTZXOA474gAeBy7jbCA&usg=AFQjCNGTf2y90OvaLGY6o3qA0mLGOYEyPg&cad=rja)
In this rather large image, a curious enthusiast note that the only way to confirm a CCR is really to break in open, stating that some CCR sold since the 1970s actually contained film technology:So that's who the Chinese distributors selling carbon film as metal film learned from ;).
1) 0Hz is impossible in hardware. a pc software dirty trick (processing power) is needed for this.
2) what do you mean "client software"?
3) modulation: there is limit to carrier frequency depending on signal frequency. will study more on this.
4) will keep the suggestion for the next upgrade ;)
0 Hz ???! Of course, what I meant was support as low as supported by the device.sorry i mean 0 < Hz < 0.5, 0Hz is actually super easy.1) 0Hz is impossible in hardware. a pc software dirty trick (processing power) is needed for this.
thanx guys. the bad thing is, i come late in this party, they have discontinued this product, otherwise they have to do something on the software side. i dont understand how they didnt manage to harness the hardware to its full potential (0.5Hz-100MHz, fast high freq sweep etc). on the hardware side, imo is done excellently, its just the most important part of interfacing with it on the software side is done the other way around (not very excellent). maybe their software guy is too busy. but there is a plus to this con, ie they cannot boost the product price due to their crappy software. all its needed is several night of "thoughtfull pressure'less seclusion" and many glasses of nescafe and cigarettes.
ps: there is one kind of signal i want to put in the little tool, but i still cannot figure out how. a single pulse, if anyone can give advice on how to do single pulse, i will appreciate it.
there is DDSSetSingleWave Lib "DDS3X25Dll.dll" in the library, but dont know what it does, it will not generate any wave if i activate it.
I guess one real problem is they didn't have you on their design team!i can work part time online, but i will not go to china to work with them ;D. well its not needed, all they need is to listen and make effort if they want to make a good business. if not then i will still be happy to buy their cheap product with the crappy software. if somehow they come accross this thread, then listen this... sell your very good hardware and very good software separately at cheap price each. if you have both very good hardware and very good software combined and sell at expensive price, then i will think twice to buy them, but if both sold at cheap price, then you are the winner. ;)
...Will you be changing your software to accomodate other 3X25 functions?such as?... give me good reason, then i will ;) welcome to the club.
...Will you be changing your software to accomodate other 3X25 functions?such as?... give me good reason, then i will ;) welcome to the club.
ps: i got suggestions earlier, but i will find a time for it.
ask for it, i'll release it, including all the classes and the modules necessary. i can see vb6 is not everybody's interest nowadays, and here is aint a code monkey party. and many people lose track already, all they need is just the API functions in the dll (programmers guide in the installation cd). i can release full bloated version of it with all the features, if i really want to gloat, but i'm just a normal person, i need to find time for it. my primary intention is to demonstrate what bundled software cannot provide, just the basic stuff. but if i'm asked to do something bundled software already can do, or has workaround to do, then there's not much point imho. and i do things mainly influenced/based on interest, if you can persuade me to do something interesting, then i can put any busy'ness aside and jump in into the crazyness. if all you need is the source code, then ask again... explicitly, its no secret, if it is, you wont see a single thing from me, and i dont want to gloat and show on how good i code things. ;)You could release the source code if you don't want to work on it. Or you could sit on it and continue gloating how great you are....Will you be changing your software to accomodate other 3X25 functions?such as?... give me good reason, then i will ;) welcome to the club.
ps: i got suggestions earlier, but i will find a time for it.
I am curious however, if you have given any thought to the digital input/output part of the generator ?i'd loved to, but i think:
Declare Function DDSSearch Lib "DDS3X25Dll.dll" () As Integer
Declare Function DDSCheck Lib "DDS3X25Dll.dll" (ByVal index As Integer) As Integer
Declare Function DDSSetFrequency Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal freqHantek As Double, wavePointNum As Long, wavePeriodNum As Long) As Boolean
Declare Function DDSDownload Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByRef buf As Integer, ByVal number As Integer) As Boolean
Declare Function DDSResetCounter Lib "DDS3X25Dll.dll" (ByVal index As Integer) As Boolean
Declare Function DDSGetMeasure Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal bFreq As Integer, ByRef Value As Double) As Boolean
Declare Function DDSSetTrigger Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal bInter As Boolean, ByVal bEdge As Boolean) As Boolean
Declare Function DDSGetDigitalIn Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByRef Value As Integer) As Boolean
Declare Function DDSSetDigitalOut Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal Value As Integer) As Boolean
Declare Function DDSSetDIOMode Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal mode As Boolean) As Boolean
Declare Function DDSSetPowerOnOutput Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal bOpen As Boolean) As Boolean
Declare Function DDSSetSingleWave Lib "DDS3X25Dll.dll" (ByVal index As Integer, ByVal bSingle As Boolean) As Boolean
12 API calls only. i wish i have more.Mechatrommer:exactly what we need. great job! i've changed the doc a bit, made a help button in the little software to automatically open it. i think i got last minute change during the prior version (calibration process only doing sine iirc), so i fixed and checked before attaching it (latest version) here. you may want to overwrite your existing *.exe (and add the readme.docx made by Doug) in the zip file. i also included the source that i've change. Cheers ;)
Is atattched more or less what you mean ... :-\
Doug ...
Hi, has anyone looked to see if the amplitude adjustment on the 3x25 is done via an analog gain stage, or if it's done via limiting steps in the output DAC?i think someone who are familiar will be able to tell from my teardown pictures earlier (relinked below). from my limited knowledge, i think its not by analog gain stage, its all comes from the 12bit pins of DAC. and as no info on the DAC model, last time i search to no success. hint... 200MHz clock 12 bit DAC, the closest i can find is ISL5861 210MSPS DAC Chip (http://www.alldatasheet.com/datasheet-pdf/pdf/67608/INTERSIL/ISL5861.html) but looking at the pictures, i dont think it is.
Has anyone seen some USB flakiness? It can be fixed by unplugging and replugging. Just wondering if it's my machine or others have seen this.yes its with my machine too. it hanged from reporting any value to pc software. un/re-plugging solve the issue. but its with my homemade software (api calls) i dont know if its happened with the bundled software, never experience that. so it could be the machine, or it could be the software.
it hanged from reporting any value to pc software. un/re-plugging solve the issue. but its with my homemade software (api calls) i dont know if its happened with the bundled software, never experience that. so it could be the machine, or it could be the software.
thanx for reviewing and joining in seattle. i believe you have more capable machine of testing the noise floor than me. the spectrum on SA 3.4vpp.JPG looks sexy, do u mind to tell what machine it is?
it seems somebody got mixed up between RIGOL DG2041A and HANTEK DDS 3x25...
One question, what's the maximum frequency of all waveforms with the latest modifications you have posted?if you are talking about all waveforms, the device's DAC sampling rate/clock need to be observed closely = 200MSa/s. lets take the worst case waveform ie square (max rise time), 2 adjacent samples from lo to hi will need 5ns to rise (ideally), so about how long it has to stay at that hi level (pulse width) will depend on your definition of what good a square signal is, i'm not sure the real figure/standard, but for me, maybe like... 1 portion rise, 8 portion hi, 1 portion fall and another 10 portion (fall,lo,rise). so altogether 20 points needed to generate 1 cycle of acceptable square (my standard). so calculate it 200MSAPS / 20SA = 10MHz. if you need higher quality square, you need to lower that figure. higher and higher frequency signal, they will all converge to resemble sine signal, ie poor square, poor triangle, poor arbitrary etc. But as for sine, it is usable up to 100MHz (2 points per cycle), but no accurate noise level has been figured at that highest frequency. the most accurate so far i think, is presented by seattle above, with his 10bits scope.
oh. If the problem is during transition only I can't see it affecting me that much at this point. At least I hope not :)
One question, what's the maximum frequency of all waveforms with the latest modifications you have posted?
OK, pictures. Channel one is OUTPUT, Channel 2 is SYNC OUT.
(http://picturehosting.verhey.org/DDS3x25/5mhz_square.bmp)
5MHz
(http://picturehosting.verhey.org/DDS3x25/10mhz_square.bmp)
10MHz
(http://picturehosting.verhey.org/DDS3x25/25mhz_square.bmp)
25MHz
and pls dont blame anybody (incl me) if you found out this unit is not for you.
BTW: I should mention that the sinusoidal waveform is very clean all the way up to 100mhz, and at that speed, the SYNC OUT is also sinusoidal.its not the 100MHz SYNCH OUT is sinosuidal, it is still squared. its just the oscilloscope BW/sample rate limitation showing it as sinosuidal.
From what I've been reading on DDSs, this piece of hardware seems to be the best bang for the buck AWG. The Instek SFG1003 provides signals up to 3MHz while this one has more features and has a higher frequency range for the same price. Please correct if I'm wrong as I'm a beginner when it comes to this stuff and wouldn't wanna be disappointed if i purchase this :)The amplitude range is much more limited compared to most stand-alone function generators like the SFG-1003. Depending on how and why you work, the lack of front panel may also be an annoyance. I find that I like computer control for complicated stuff like arbitrary functions (which I use fairly rarely), but prefer real knobs and displays for simple stuff like generating a sine and adjusting frequency until I get the result I'm looking for.
its not the 100MHz SYNCH OUT is sinosuidal, it is still squared. its just the oscilloscope BW/sample rate limitation showing it as sinosuidal.Is it just BW limitations in the scope, or also the generator? What's the rise time spec for the SYNC out?
Is it just BW limitations in the scope, or also the generator? What's the rise time spec for the SYNC out?err, i was just assuming. since the synch out comes directly from spartan pin, so probably its digital instead of sine. gotta look the very detail of spartan datasheet for this.
just to confirm that I'm not misinterpreting the spec sheet of this device... is the maximum amplitude really +-3.5V?
is the maximum amplitude really +-3.5V?not anymore, if you want to put some effort on it... preliminary: https://www.eevblog.com/forum/index.php?topic=3182.msg47122#msg47122 (https://www.eevblog.com/forum/index.php?topic=3182.msg47122#msg47122)
is the maximum amplitude really +-3.5V?not anymore, if you want to put some effort on it... preliminary: https://www.eevblog.com/forum/index.php?topic=3182.msg47122#msg47122 (https://www.eevblog.com/forum/index.php?topic=3182.msg47122#msg47122)
If you're looking to do a VAC vs Hz graph is better to do it terminated with 50 ohms. What you are looking for is a transfer of power to the load, and even if the amplitude is reduced, the power is constant. So the roll off will begin much later; from your graph is looks like if you halve the amplitude, the roll off will begin at 40 MHz.a quick report on terminated reading... i told you so, you dont believe me! just halve the volt will ya? ;) and how do we measure power anyway? i dont have gossen metrawatt?! ??? as i said, its not so good, not really accurate, just a rough estimate. cheers!
and even if the amplitude is reduced, the power is constantsorry i'm not following this... how come the power is constant if the voltage is reduced?
Some small measurement. DDS3x25 is original, not modified. (some day I will modify for cleaning signal...I have adjust so that 500kHz (3x25 is nearly flat from zero to 3MHz) is exactly 0dBm on the spectrum display...very thank you rf-loop! i'm not good at power db, but comparing to my result, i think its closer. yours -3db@23MHz, -6db@36MHz. mine 20log(2.46/3.36)=-2.7db@23MHz, 20log(1.84/3.36)=-5.2db@36MHz. both plot showing flatness to 3MHz. your measurement should be more accurate since you use proper tool.
there is lot of noise, harmonics and also 200MHz harmonics... But software is really poor... peole who write this soft have never use in real world any signal generator for any work...Also they may littlebit think signal cleaning...lot of noise as DDS change frequencyit pretty much covered in earlier posts, except the noise thing, since now we have more advance measurement tool. thanks to you!
frequency jitter is very strange...Well... frequency jitter is very strange... in some special cases....i think you are refering to "dajones glitch" and "leap year effect". page 2 (https://www.eevblog.com/forum/index.php?topic=2170.msg29824#msg29824) and page 5 (https://www.eevblog.com/forum/index.php?topic=2170.msg37762#msg37762)
No, I really do not need myself this kind of toys but...now thats an insult!
still these may be very useful for some peoples. This is not bad if compare price and some special things.now its more relieving. its usefull to me no matter how noisy you say it is. i'm working on something right now :P yes the output has not been modified/filtered whatsoever. what you get is a raw output from an amplifier which get the signal from dac which get the signal from fpga, the simplest fpga based dds signal generator you can build i think.
later if I have time I may add some test pics about signal quality. (harmonics level)i'll be looking toward this with interest.
if you have the data in text form (csv,xls,txt) i hope you can attach here rf-loop, or bigger picture of the frequency plot.
if you have the data in text form (csv,xls,txt) i hope you can attach here rf-loop, or bigger picture of the frequency plot.
Sorry I have not data string about measurement. I have take this picture with this resolution and I do not want do this work all agen, it is not as fifteen minute work. This picture have done with J.Miles HP7470A (HP-GL/2) plotter emulator (http://www.thegleam.com/ (http://www.thegleam.com/)) and nice Prologix USB-GPIB (HP-IB) adapter..
I have not programming manual for this Rohde&Schwarz spectrum analyzer so I can not send command what return trace data string via GP-IB.
I have only experience with a Hantek 8060 five in one, Rigol function generator, Rigol 1052SE digital oscilloscope (similar the one you have pictured), and a single channel analog oscilloscope.i've been following rcgroup's thread on hantek 8060. the generators output spec is identical to this dds3x25 but i'm not sure if they use same circuit. but i already have dso,dmm,fg so i dont need 8060 anymore, but i believe its good for money. just if i dont have the rigol+uni-t+hantek 3x25, i would get this 8060. i'll get extra... an isolated (battery powered and handheld) dso/fg.
Lawsen
I guess I'm asking any owners of the DDS-3X25 in general what their current feelings are about the Hantek - and Mechatrommer in particular about the pains of programming it - e.g. it doesn't appear to even have functions for turning the DDS generator on and off - or for elegantly handling sweeps.the pain? the pain is in learning programming language and how much complexity of your software, nothing to do with the device. i programmed in VB for this particular application. turning the DDS generator on and off? with little hack in function calls and parameters, you can set DDS to off (no signal), its in my so called "Open Source" link earlier (Halt Button). elegantly handling sweeps? this is yet to be studied. my current method is not elegant due to no available device api function that do this specifically/directly. or maybe thats the limitation in software, hardware, fpga or the dds awg design that we cannot do much about it.
the pain is in learning programming language and how much complexity of your software, nothing to do with the device.
my current method is not elegant due to no available device api function that do this specifically/directly. or maybe thats the limitation in software, hardware, fpga or the dds awg design that we cannot do much about it.
I've been reading with interest this thread because I've been thinking about buying either the Hantek DDS-3X25 or the Velleman PCGU 1000 - they are currently the best bang-for-the-buck AWGs available - and they cost close to the same amount from my location (~€102 vs ~€126).
The Velleman seems more stable, has less distortion, better resolution, galvanic isolation of the USB, and a bigger waveform sample depth than the Hantek (8KSa vs 4KSa) - but it's lacking the external trigger in, frequency counter, or ARB Express file compatibility - and it's waveform editing software is primitive. The Hantek has a much higher frequency range, the aforementioned I/O and file compatibility, and it can work independently of the PC (which might be useful) - but it appears more buggy, and it seems to have a rather crappy set of programming functions and procedures. It's important to me that I'll be able to write functional software for which ever I buy - I need to create Bode Plotter software with it and the DS1052E.
I guess I'm asking any owners of the DDS-3X25 in general what their current feelings are about the Hantek - and Mechatrommer in particular about the pains of programming it - e.g. it doesn't appear to even have functions for turning the DDS generator on and off - or for elegantly handling sweeps.
BTW, if any current owners of the Hantek have not downloaded Tektronix's free waveform editing software (http://www.tek.com/products/signal-generator/arbexpress.html (http://www.tek.com/products/signal-generator/arbexpress.html)) - you should get it immediately. It's MUCH better than what Hantek provides you - and because Hantek uses Tektronix's ARB format - you can easily create waveforms in it (keeping the sample depth below 4096 - and the Vpp below 3.5) and read them directly into Hantek's software (and AWG). It also comes with a great library of predefined waveforms as well.
Edit: The link to the actual download page of Tektronix's software: http://www2.tek.com/cmswpt/swdetails.lotr?ct=SW&cs=sap&ci=17700&lc=EN (http://www2.tek.com/cmswpt/swdetails.lotr?ct=SW&cs=sap&ci=17700&lc=EN)
but certain devices can be a headache when trying to get them to perform certain functions. I program a lot of devices - many of them of my own design - and even some of them can be a pain in the ass. ;Dfrom my experience working with 3x25, its painless. every functions do what they suppose to do. its just tinkering on how to make the dds "OFF" in software, you need to find out the indirect way (several api calls), because there is no direct way. and there's no SetSweep function like you said, it will be alot more painless if it is.
The Hantek is disappearing, so get it while you can. Last I checked gone are vendors from EU, America, and what was 2-3 pages of product listing is down to just 3 sellers, all now in China.
Last I checked, ArbExpress 2.5 doesn't work; the reason is for a time Tek changed the arb file format many times but they didn't change the file extension. So what format it really is remains unknown, and whether it will work on 2.6 ArbExpress is unknown too. Its easier to use the CSV format.
For practical electronic use, the Hantek is far more capable, but it has its blemishes, fixing it is what hacking is all about
DDSSetSingleWave is the most painfull function to call, i dont know what it does, its just stop the device from outputting data (which i was expecting it to output a "one time/once" data from the name.
repeatedly calling DDSSetFrequency and DDSDownload,
completed or not, is not accesible from your software, thats the mercy of the driver and hardware/firmware implementation.
i also cannot download ArbExpress,
i'm looking forward to listen to your idea/comment when you get your 3x25.
The Velleman is 2 MHz, the Hantek is at 20 MHz. See rf-loop post on the 'flatness' of the spectrum, suggests there are minimal sine harmonics to 3 MHz to be on par with the Velleman for say, audio work, to compare with Velleman, were a tests has it it clean to ~ -90dB.
QuoteThe Velleman is 2 MHz, the Hantek is at 20 MHz. See rf-loop post on the 'flatness' of the spectrum, suggests there are minimal sine harmonics to 3 MHz to be on par with the Velleman for say, audio work, to compare with Velleman, were a tests has it it clean to ~ -90dB.
@saturation
Just a note: even though I'm tipping towards buying the Hantek (for the raw speed and wealth of other hardware that they jammed into their device), the comparison above is not quite fair. From what I've read, Velleman is being conservative with their specs, applying them equally to all waveform outputs, including arbitrary - while it appears Hantek is being slightly optimistic in theirs. The Velleman does clean simple waves (like the sine) to 5MHz and can do perfect sine sweeps up to 25MHz (half the 50MHz clock speed) from their delivered software. So from what I gather, the Hantek has perhaps a 4-fold advantage in real speed comparisons with clean sine waves (5MHz to 20MHz), but less with complex waveforms since it has half the sample size (4KSa vs 8KSa in the Velleman). The Velleman also has a switchable low-pass filter on the output which the Hantek is lacking - but I'm hoping to rectify that.
BTW, not trying to dis the DDS-3X25 - I'm on the path to buying it myself - but I just thought the Velleman deserved a more accurate comparison :)
...but less with complex waveforms since it has half the sample size (4KSa vs 8KSa in the Velleman)...i still dont have a need for complex arbitrary wave, sine is still the mostly i used. and i still dont have a clear clue on what application of deep memory for complex arbitrary is really essential, except maybe in a very specific (but seldom) app like medical device that read heartbeat or simulating sensor output etc. but i guess that will be seldom for me. anyway, the IO output (12bit) the 3x25 provided, i'm thinking a way if we can output digital data like out of it. my current imagination is an arbitrary (analog) wave editor and at the same time we can see the equivalent digital data, or vice versa, we specify the digital data (serial or parallel) and we can see the equivalent analog wave. well, thats something for me to play later.
the IO output (12bit) the 3x25 provided, i'm thinking a way if we can output digital data like out of it.
What's the point of buying an arbitrary waveform generator for just the sines? A dedicated function generator or even frequency generator will have a cleaner output, better amplitude control and proper controls.i bought a sine generator up to 100MHz for $100++, and am not an audio people, and am not a true professional engineer. + other bonuses mentioned. - standalone"liness", lcd screen and low noise.
What's the point of buying an arbitrary waveform generator for just the sines? A dedicated function generator or even frequency generator will have a cleaner output, better amplitude control and proper controls.
Just bought the DDS-3X25... now I just have to wait on the long trek of China Post :)
Great! Welcome to the club. Please give us feedback also on the buying process and what the package was like when you finally received it. Enjoy.
Thanks! I bought it on eBay last night from testinstru - notified today that it had been shipped already.
I would LOVE mine to come with an external ROM for the Spartan3AN so that I could pull the firmware out and play with it - but I'm not too optimistic ;) But I'll certainly get the logic analyzer connected to the pins of it and the DAC to see exactly what the timing is like between the various pins - and how they are used - for example, the 18 pins used for the multiprocessor link - when each call is made to the DLL.
1) save as png or jpg. those bmp's can easily waste half a meg on dave's server. and bandwidth of thousands others.
3) retry at odd frequency, like 3MHz, 33MHz, 74.7MHz. 1MHz and 75MHz are known to be "Synch Out" stable
4) How do you manage to output single pulse? teach me the code!
5) How do you manage to sweep at zero crossing by shorting D11 to input? pls explain in detail start from PC App down to signal generation.
6) By right D11 is just least significant digital value of what we see analogically in "Output", so by right it should follow (in synch) with "Output" at any freq, as said, retry (3)
7) Dont quite understand whats the blue trace on pic #3 and #4.
Was your purchase experience without a problem?
I will try it with your source code base sometime in the next day or two - but if you manage to do it first, let me know!!sorry i'm not in the "state" or mood. i'll be looking forward for your result. but iirc, the signal wont get changed/updated even at frequency level by calling DDSSetFrequency only. you have to call both including the DDSDownload, ie change both frequency and data to get the signal or sweep working/updated. and i suspect there will be usb latency/delay issue that make zero crossing sweeping unreliable. but i hope u'll get different result. i can see hack possibility by feeding the digital output to trigger in your last picture. keep it up, and dont blow anything. :P
keep it up, and dont blow anything.
the signal wont get changed/updated even at frequency level by calling DDSSetFrequency only. you have to call both including the DDSDownload
do you have link to a proper DDS architecture?
oo ok. quite a rant
btw, what do you expect the black box (below) will be, ie the phase accumulator, look up table and frequency selector (in another link)? a bunch of discrete components? or another specialized chip?
and the DDSSetFrequency returns strange number of points value to be used, it doesnt use full potential 4K points, mostly only half of it.
on hardware side i'm not sure about their idiocy, but i believe its the simplest design we can have, hence probably the cheaper price albeit high frequency capability,
btw off topic, while looking for logic analyzer, hantek also got LA5034, 34 channel at whooping 500MSa/s
If this can be done cheaply by a hodge podge approach yet still provides the primary functionality, then its really a good thing. I think we've seen its strengths and weaknesses as we continue to dissect it.
But if you need it to study true DDS technology I think you've shown its not.i think it is, from all my (limited) reading and latest links above. DDS only convert digital data into analog data (wave) what else does it do? the only thing lacking imho in 3x25 are:
QuoteIf this can be done cheaply by a hodge podge approach yet still provides the primary functionality, then its really a good thing. I think we've seen its strengths and weaknesses as we continue to dissect it.
True. If I can just get it to output a stable sweep sequence, I will be fine with everything else. And it may end up working - I'm trying a few tricks today.
But it is important to point out that Hantek is saying they use DDS technology in the device - and they're not really doing so.
True. If I can just get it to output a stable sweep sequence, I will be fine with everything else. And it may end up working - I'm trying a few tricks today.as long as sweeping function is concerned, its workable, unless during the transition, you just have to wait a little bit before analyzing your circuit behaviour. you get what you pay, you've been warned by me (previous post) about the sweep function long before you buy this stuff. are you sure the velleman is truly stable on sweep? you may end up having unperfect sweep with slower frequency signal :P who knows. to get a perfect sweep i think you need to pay multiples of 3x25 price. maybe our next mission (hack) is to rewrite the fpga! and usb communication :P
DDS only convert digital data into analog data (wave) what else does it do?
you've been warned by me (previous post) about the sweep function long before you buy this stuff.
you sure the velleman is truly stable on sweep?
Ha - one always likes to believe one can find solutions where others have not ;)i know how that feels like ;) i hope you will
strange i havent seen the glitch on 1.75V offset there, does it tally with digital data?
you are tapping the dac pin? what is it clock? have you figure out what dac it is?
some mistake in your calculation
You could test the sweep and log sweep for me - i don't have a scope at the moment to see the output.for your sake. there one peculiar though about your sweep. there's a "pause" in your sweep, i dont know if its intentional. its like you leave the remaining points with zero volt. and i dont like when i unplug the hantek, your software keep saying "comm failure" without giving me chance to abort. i dont think its a good way, i have to use "end process" button in task manager now. :P
there one peculiar though about your sweep. there's a "pause" in your sweep, i dont know if its intentional.
anyway does your software looks like in the 2nd picture?
the "pause" is waaaay too long - it should only be the time it takes to DDSSetFrequency and DDSDownload, which can't possible be 250ms - so it must be a bug.now better no more pause but, transition glitch is inevitable (first picture) :P . while playing around with Tektronix ArbExpress, i see one way to implement smooth sweep is by calculating the whole sweep frequencies in one whole data points, i mean in 2nd picture, send that data once and let the "DDS" AWG do the dancing.
Posted bug fix above.
funny thing is i think you are right. the fact is i've been developing that "goltek" controller interface (previous post) and everything (buttons, knob, UI) are now working, button blinks when clicked, knob rotating etc. but try to develop the real functionality of the controller drove me crazy. i had to think the real device operation and how the OS work. i have to think in "state machine" mode try to mimick it as close as possible and its just nuts. i think i'll revert to simpler interface and concentrate more on practical functionality. forget the funboys geek that will whine when they see ugly UI (grey rectangle buttons), they are aesthethical evangelist that i should ignore :PQuoteanyway does your software looks like in the 2nd picture?but I'm against the trend of making software programs "look" like actual objects.. I'm also totally against using software "knobs" to set values (like in the Hantek software) - it's ridiculous.
now better no more pause but, transition glitch is inevitable (first picture)
while playing around with Tektronix ArbExpress, i see one way to implement smooth sweep is by calculating the whole sweep frequencies in one whole data points, i mean in 2nd picture, send that data once and let the "DDS" AWG do the dancing.
and publish the software side of this hantek device, since i'm expecting there will be more
That is even 10 times slower than the rated low-bandwidth speed of USB 1.1 (why can't these companies implement USB 2.0???). That points out the big problem with not having a lookup table built-in to the device.
maybe it is time to write new firmware for the STM32.
did someone tried this software with 8060 too already?
4.1). If one can accept <20% frenquency step as good enough, one can use F_clock (<)2k to 20MHz for sweeping with the same waveform. This means a sweeping range of 4 decades.No, this is incorrect.
a) whether my clock test software correctly calculates the frequencies and periods on their 3X25. I believe it does, but I've gotten no confirmation or contradiction here - which is frustrating.in order to confirm this, i need to do thousands of test, and automated. with only few clicks of testing frequencies, the confirmation will not be strong. clicking thousands time from your software will be frustrating and without able to contribute/implement to improve your formulation. please post/PM your algorithm/formula if you will, i will embed it in my test software and confirm your method "standard deviation"
b) whether my sweep test software correctly performs a glitch-free sweep.as i PMed you, your sweep software cannot run, there's ActiveX object you didnt provide, i suggest you make complete installation files including all necesssary supporting ActiveX. i also looking forward for glitch free sweep, even though implemented at lower range of frequency, but as you said, very well enough/applicable in audio region.
n = INT( 100MHz / ( F_user*4096) );golden! with little tweak i managed to get a satisfactory working function to get both hantek clock and frequency. so feel free to use or test it for bug. its 100% accurate for clock <= 100MS/s from my non-extensive testing (onlooker's method). for higher freq (clock = 200MS/s), there some discrepancy compared to values returned by DDSSetFrequency, but satisfactory enough for me for wave generation.
in order to confirm this, i need to do thousands of test, and automated.
as i PMed you, your sweep software cannot run, there's ActiveX object you didnt provide. i also looking forward for glitch free sweep, even though implemented at lower range of frequency, but as you said, very well enough/applicable in audio region.
i understand your frustration of cold reply. with many hours of sitting infront your pc coding and then people would not appreciate what you are doing is like you are doing it for a waste, but its not. other people are just busy or not in the mood to look at this subject.
if you need to take a break this is the time, withdraw your method here
I do appreciate your work. But, Your Sweep_test crashs (snapshot attached).
The point is, you should never do such hacking to impress others or to compete with others. As you have just learned, it only ends up in frustration.
By the way, I am surprised that no one until now seems to have used a USB protocol sniffer to figure out what these magic DLL functions really send to the generator. For example to figure out if they do some own special math or if the generator gets the values more or less as provided to the functions.
Please don't be discouraged. I was one of the ones who downloaded it. Just trying to get some time to try it out for you -- I was away from home yesterday and I am babysitting the grandkids right now. But I am eager to beta test as soon as I can.
4). Implications to frenquency sweeping:
4.1). If one can accept <20% frenquency step as good enough, one can use F_clock (<)2k to 20MHz for sweeping with the same waveform. This means a sweeping range of 4 decades.
4.2). A single waveform can have 1 to (>)1000 periods. That is for a single waveform one can either sweep from 1Hz to 10kHz, or from 1kHz to 10MHz or any 4 decades range in between. For example, to sweep (1k to 10MHz).
Just a headsup, you guys are doing a great job. Consider where this device was when we started. Will feedback later.
for few frequencies it work! but i still dont fully understand how your program works.Quotein order to confirm this, i need to do thousands of test, and automated.someone to test a few frequencies to see if it worked,
so he confirmed it was the correct clock formula and reverse logic for 3X25.
it means share your code pls. as i'm also working on this right now.Quoteif you need to take a break this is the time, withdraw your method hereI'm not sure what this means.
for few frequencies it work!
you havent share it yet. thats only between you two.
pls check whether this is your app mistake generating square wave or artifact from the hardware
i've made testing to both "modified" onlooker and marmad report in attached zip file, 2 csv 1 code.txt file.
i saw this picture. it happened for square wave while sweeping at 10-50 Hz.I just realised it was answered already, but still it rised interesting quastions about the hardware limitations. Anyone know what is happening on the device side when a freq resetting request is received? Will the device pause? For how long? Will it interupt the data point set stepping (say, start over again from point 0) or will it wait until a full set of data points are through?
If you really want to do the proving, you need to test the (psuedo) program below in real life
Anyone know what is happening on the device side when a freq resetting request is received?
you have extended the possibility of stable sweep at lower frequency, great work!
i can see different usage of data type in your code, i suspect rounding off error
I would be happy if you can prove me wrong in general
we cannot be sure since we (or me only?) used cheapo dso to measure, there's blind time during trigger. but looking at your owon picture, the sweep is pretty promising. about the square, i believe its marmad's implementation of square wave, since i havent seen like that in my square wave. even at highest frequency of his sweep, zooming in reveals slight rise time abberation.QuoteAnyone know what is happening on the device side when a freq resetting request is received?Again, you can see clearly in my sweep software and .png that there is no pausing or glitch when changing just the frequency.
Along a similar line, what one can also try or maybe you have already tried is to use short data length when calling DDSDownload() assuming, for example, 1000 periods placed in 4000 data points is indeed equivalent to 1 period placed in 4 data points. In this setting, one can do one DDSSetFreq() call, then do multiple DDSDownload() calls. With properly selected freqencies, all the data sets can be short (say < 50 pts), and one may be able to do a proper sweeping with a range of one decade.this is the essence of my "stable synch" concept, and hence faster and more efficient sweep (and signal generation as a whole) at high frequency. let say DDSSetFrequency returns 4011 data point, 100 period. i will just round off to integer to get the "stable synch length"... myLength = Int(4011 / 100) = 40 data point, and period become 1. if we try to fit 100 period of a wave, say sine in 4011 data points and send to hantek, what we get is nonsynchronized signal.
we cannot be sure since we (or me only?) used cheapo dso to measure, there's blind time during trigger.
about the square, i believe its marmad's implementation of square wave, since i havent seen like that in my square wave. even at highest frequency of his sweep, zooming in reveals slight rise time abberation.
edit: i just noticed, DDSClockv2.exe can accurately estimate point length (esp at 990100Hz), but in DDSClockSource.zip is not. so they are not the same code/compilation.
Ok, I the little guys were still asleep so I downloaded the DDS3X25Ctl_0_9_1 version from page 16, hooked the output to the count in and to my Rigol and started to play. Unfortunately, they didn't stay asleep long, so I had limited time to play, but this is what I noted:
The count often differs from the generated frequency slightly. EG: 1.00000kHz produced 1.00016khz with the occasional flicker to 1.00017kHz. The Rigol displays 1.000kHz, but flickers betweeen .992 to 1.004. 3MHz produces 3.03030MHz. (Rigol displays 3.030MHz) But 4MHz produces 4.00000MHz and the Rigol agrees.
I am not here to fight for credits, instead, if I can, I would just like to promote more openness.
A related quastion is: did you or can you publish your SweepTest code?
You said you can sweep 1-40kHz glichless and using 2500 pts. May I ask how many periods (of a given "frequcecy") have you placed in this 2500 pts waveform? One?
2). In my last post, one can as well do DDSDownload(waveform,4) with just 0,v,0-v in the data. On this point, I feel we are still not understanding each other.
Did you try placing 2 or more periods (upto >1000) from the same "frequency" and waveform into your 2500 pts data set. If you put 2 periods there, the sweeping range will be 2-80kHz. Right? Then, you see glitchs?
It won't accept 1,000,000 but rounds up to 100.000MHz if you enter 999,999.
The really cool thing is that it actually displays a fairly decent sine wave at that frequency -- something that didn't happen with the Mechatrommer software!
The counter shows "0.00000 Hz" at that frequency, but the Rigol measures it to be 100.0MHz with the odd flicker to 99.9MHz.
The other thing is : instead of, using square waves to show sweeping to check for glichs, using sine waves could also be useful to see if the waves are really transitioning at zero voltage and zero phase crossings. For square wave, small changes in modulation factor are hard to see graphically.
Very good and promising. Hopefully this will be held true to the highest frequency setting. I guess now I can sit back and wait for your software release with all other tweakes and hacks.
Hmm... I'm pretty sure Mecha's software did the exact same sine at that frequency.
But if I start from 99,999,999MHz and go to 99,999,999MHz, it doesn't happen. Then I get a stable output with no modulation:if you input 71.0134e6, ie 71.0134MHz in hantektest.exe and press start, you'll see data points length and periods as follow:
What you were saying was that N_use must be an integer multiple of Pr to avoid any problem. Interesting. From a harware point of view, do you have an explaination as to why placing 100 periods in 4011 points should cause problems.yes N_use must be integer multiple of Pr to get in synched. from hardware point of view i'm not sure but i suspect the implementation of FPGA, maybe it cannot divide fractional and just round off to output "synch signal", but how exactly the hardware generate "synch" is still a mystery. things like "dajones" glitch and "leap year" effect mentioned long time ago still unexplained. if you try frequency of 0.5 > f > 1 in hantektest.exe, let say f = 0.86Hz, and show both "output" and "synch" signal on your scope, you'll see funny "synch signal".
but PLEASE stop publishing these comparison charts - it feels like some contest - and a bit strange.i'm not competing, i'm only looking for a better formula and hope someone can help, if not then i will just shut up. you think i am? ???
i'm not competing, i'm only looking for a better formula and hope someone can help, if not then i will just shut up. you think i am?
only its miss at 550KHz (4000 vs 3999 points). errr, just skip that
YOUR FORMULA IS PERFECT! no doubt about it!
in fact, your 550kHz example shows that it can be refined - at least in Visual Basic 6 ;)not your and my fault. its bill gates fault. and i dont die if i miss one point at that particular freq. thanx to your code its already included in my goltek controller for "offline simulation". dont worry i'll put you in the credit (and other contributors that i think appropriate)
The count often differs from the generated frequency slightly. EG: 1.00000kHz produced 1.00016khz with the occasional flicker to 1.00017kHz. The Rigol displays 1.000kHz, but flickers betweeen .992 to 1.004. 3MHz produces 3.03030MHz. (Rigol displays 3.030MHz) But 4MHz produces 4.00000MHz and the Rigol agrees.
The Rigol does not agree with the voltage setting. EG: 3.5v p-p is measured as 3.6v p-p.
There is an error in setting the RMS amplitude function: Parameter input of 1.72 produced a "Human Error" message informing me that "RMS amplitude must be between 0.035355V and 3.5355V"
I think a digit gets lost when setting the sweep step. Set to 100.0Hz, it seems to climb by 1000.0Hz instead, according to the Sweep Data log.
"Reset All" cause an error message then program crash. Couldn't catch the error message -- something not found, I think.
I tried entering "48828.125" for frequency 1, but it displayed 97.6562 kHz and output 48.8400kHz.
@torch (bug fix):
As mentioned previously, the Hantek can't hit every frequency precisely, because of the way the hardware works. The DAC clock is adjustable from 200MHz to 2kHz, but it does some binary-division tricks to get below this frequency. For example, what's the closest number to 1000 (Hz) you can get by trying to divide 200000000 with a multiple of a number between 2000 - 4096? 1000.160026 - which is 200MHz / (2083 * 96).
I think this is either your Rigol's measurement - or the output of your Hantek is greater than normal. My scope measures 3.44Vp-p for 3.5Vp-p output. But there is an adjustment built into the software for this. Double-click 'Current Settings'label, and set the Fine Tuning (multiplier): Amplitude to 0.972 (3.5 / 3.6 - or whatever the precise voltage measured is). This will correct the offset between my software and measured values elsewhere.
I couldn't replicate this bug. For example, if I set freq1 = 1kHz, freq2 = 10Khz, step = 100Hz, it sweeps with 100Hz steps correctly. Do you know what your freq1, freq2 settings were? BTW, if you have log sweep set to ON, it sweeps at 10 ^ x multiples of any given frequency.
Hmm... I couldn't replicate this either. If I try to "Reset All" without a config file (the software looks for a folder in it's folder called "cfg" [where you can save different setting configuration files; e.g. "logsweep_10Hz_40kHz.cfg"] for a file called "default.cfg"). If it doesn't find that file, I get the message "Configuration file not found", but no crash. But I've now changed the code to use the default start-up settings as an alternative - so maybe that will prevent your crash. Please give it another try when you can.
Thanks again for your debugging efforts, torch! I will post a newer version with all the latest developments in glitch-free sweeping, as well as other stuff, later this week.
Desired Frequency ------ | DDSSetFrequency ------ | Output Frequency ------ |
100 | 1 | 102.40032Hz |
200 | 1.953125 | 200.00020Hz |
300 | 2.92971679716797 | 300.01245Hz |
400 | 3.90625 | 400.00080Hz |
500 | 4.8828125 | 500.00125Hz |
600 | 5.85960938437537 | 600.02580Hz |
700 | 6.8362793139657 | 700.08646Hz |
800 | 7.8125 | 800.00320Hz |
900 | 8.78915039150391 | 900.09406Hz |
1000 | 9.765625 | 1.00001kHz |
2000 | 19.53125 | 2.00002kHz |
3000 | 29.299804980498 | 3.00125kHz |
4000 | 39.0625 | 4.00008kHz |
5000 | 48.828125 | 5.00013kHz |
6000 | 58.6171968787515 | 6.00980kHz |
7000 | 68.3867296918768 | 7.00305kHz |
8000 | 78.125 | 8.00032kHz |
9000 | 87.8994149414941 | 9.00941kHz |
10000 | 97.65625 | 10.00050kHz |
20000 | 195.3125 | 20.00200kHz |
30000 | 293.262012012012 | 30.12502kHz |
40000 | 390.625 | 40.00800kHz |
50000 | 488.28125 | 50.51781kHz |
60000 | 588.290662650602 | 60.24200kHz |
70000 | 687.720070422535 | 70.42400kHz |
80000 | 781.25 | 80.64400kHz |
90000 | 879.786036036036 | 90.90800kHz |
100000 | 976.5625 | 102.04200kHz |
200000 | 1953.125 | 208.33400kHz |
300000 | 2959.2803030303 | 312.50000kHz |
400000 | 3906.25 | 416.66600kHz |
500000 | 4882.8125 | 555.55400kHz |
600000 | 6103.515625 | 625.00000kHz |
700000 | 6975.44642857143 | 714.28600kHz |
800000 | 8138.02083333333 | 833.33200kHz |
900000 | 8877.84090909091 | 1.00000MHz |
1000000 | 9765.625 | 1.25000MHz |
2000000 | 19531.25 | 2.50000MHz |
3000000 | 32552.0833333333 | 5.00000MHz |
6000000 | 97656.25 | 10.00000MHz |
will i get sued by you if i do this method in my software?
But in the math, Visual Basic 'fixes' it to 3999. You can get around this by...i just stumbled with another bug, Int(Log(1000)/Log(10)) = 2! f*ck! 15 years i programmed in VB, i never saw this annoyance until now. coding a simple log sweep is a hell of job! i'm thinking maybe i should make external dll using VC++ to do arithmetic but not sure if its worth it, any suggestion?. may as well just live with this vb bug and keep finding the workaround.
I noticed that your Hantek software did not report the actual correct output frequency...i posted the test tool long time ago and NO ONE bothered to report this, so... i dont care, and yes its a bug i just found out, it was before the formulation is decoded by you. and i never try hard to crack that. and other wont ask, and i'm just lazy, so what should i expect? nothing.
neither. its just hantek output is "unprofiled" and "not flat" (not to mention unsynched, glitching you name it). try to input 3.5Vpp @ 100MHz and look at your scope whats the Vpp, you (my dear Mr Torch) should use that as argument ;) i've done some "sloppy effort" using "poor man" method in attempt to profile the hantek in https://www.eevblog.com/forum/index.php?topic=2170.msg48982#msg48982 (https://www.eevblog.com/forum/index.php?topic=2170.msg48982#msg48982) and another related thread at https://www.eevblog.com/forum/index.php?topic=3678 (https://www.eevblog.com/forum/index.php?topic=3678) and https://www.eevblog.com/forum/index.php?topic=3577 (https://www.eevblog.com/forum/index.php?topic=3577) compensator and flat respond solution i'm still working on. the only question is when will i publish for alpha test... if anyone care :PQuoteEither is entirely possible. When I have time I'll check the actual voltage output with a meter to verify. Nice to know there is a means to compensate.QuoteThe Rigol does not agree with the voltage setting. EG: 3.5v p-p is measured as 3.6v p-p.I think this is either your Rigol's measurement - or the output of your Hantek is greater than normal.
BIG :P :P :P come get me you have to dig through the earth core to get straight to me! if you want to find the most unethical criminal that me! :P nyanyanyanyanyaaa!Quotewill i get sued by you if i do this method in my software?Yes! That's why I stuck my formula there.... to tempt you into using the code so I could get you later! ;)
i posted the test tool long time ago and NO ONE bothered to report this
your DDS3X25Ctl_0_9_2.zip still the same crash ActiveX not found error
i'll find time to do your trigin single shot wave method, and lo frew stable sweep technique.
you have to dig through the earth core to get straight to me! if you want to find the most unethical criminal that me!
I've been trying to crack Divnum for awhile now, but I don't expect anyone will care if I do or not - except maybe you ;)yes i do, feel glad to post here or just PM if you dont want the risk to be told as off topic. :P
I need to rewrite the whole sweep section - with options for selecting glitch-free or normal - where, if you select glitch-free it first reports what the output freqs will be, then gives you the option of fine-tuning reference frequency/points/periods and seeing how that would effect the sweep -- or maybe you want to write something like that for us? :D Please!great! looking forward to see the glitch free effect. me write software? maybe yes after you publish your code. you are the expert on this.
How can you even copyright a formula?copyright is a real thing, for big players. with good money you can copyright air (so someone said). however, thats politic i prefer to skip that. interesting story to hear though.
BTW, here is the exact same sweep (DO11.png) using DO11, instead of Sync Out or MPL5 - and it's a perfect Sync signal.i cannot read time div in you last picture so i cannot read its frequency?
i cannot read time div in you last picture so i cannot read its frequency?
hope to hear some suggestions
GolTek Controller
Time div is 2.0ms - the frequency when the 'image' is snapped ist 900Hz - early in the sweep, which, as mentioned, was done using 4000points, 10 periods.well, for unsynchronized signal, try freq greater than 1MHz, all freq below that are in-synch (or almost) whether you use or not the "stable synch code"
Just used full installer... no exe fileyes the installation setup is only to copy and register the "supporting files into your system" thing like "ActiveX not found error" that i try to avoid. in my case CommDlg.ocx. after its done, you need to download the executable file, extract and run from anywhere in yor harddisk.
can you PM or link somewhere to me? the display should looks like in help file. top sim yellow trace of signal, middle is blue trace of synch signal, bottom, IO info green text, all fo them black background. try restarting program is it fixed? maybe vb6 getting too old right now in new OS, last time i had problem with screen api when first installing XP. if i got time i'll go steal someone PC with vista or 7 in it for testing.QuoteGolTek ControllerOne obvious display glitch (or not?) - bottom of controller (drawing) has large border (~100 pixels) of white hanging off it.
well, for unsynchronized signal, try freq greater than 1MHz, all freq below that are in-synch (or almost) whether you use or not the "stable synch code"
can you PM or link somewhere to me? the display should looks like in help file.
I posted .pngs awhile ago of DO11 being stable at 3.3MHz (i.e. other frequencies that have an unstable Sync Out);how could i forget that! your message is not suitable for people with lack of sleep like me. urghh!
Sorry, maybe my description was not good. See attached .png of the GolTek running on my desktop.shoot! i forgot to include some files (region files *.rgn) here attached is quick fix for you. just extract into the goltek app folder and restart and tell me how it goes. that white border should dissapear and when you move the window it should leave some gap at the bottom of your screen. which on my screen just nicely sit on my taskbar. but i can see your dont have. i've updated the file in my site. thanx for pointing my careless mistake.
how could i forget that! your message is not suitable for people with lack of sleep like me. urghh!
just extract into the goltek app folder and restart and tell me how it goes.
Unfortunately, the skin is rather garbled on my display (1920 x 1200, 32 bit) and I seem to get some rather random results clicking on controls!thats very bad! have you tried changing screen resolution? try removing *.rgn files and see what happened? using keyboard key instead of mouse click etc. but still thats very bad. give me time to figure out, i never see such a thing my entire life. until further investigation, sorry it happened to you.
I'll try to play with it a bit more when I get home.
try removing *.rgn files and see what happened?
sorry it happened to you.
@torch (bug fix):QuoteHmm... I couldn't replicate this either. If I try to "Reset All" without a config file (the software looks for a folder in it's folder called "cfg" [where you can save different setting configuration files; e.g. "logsweep_10Hz_40kHz.cfg"] for a file called "default.cfg"). If it doesn't find that file, I get the message "Configuration file not found", but no crash. But I've now changed the code to use the default start-up settings as an alternative - so maybe that will prevent your crash. Please give it another try when you can.
Ok, "Reset All" now produces the error message:
"Run-time error '-2147024770 (8007007e)':
Automation error
The specified module could not be found."
Click "Ok" and the program closes.QuoteWow! Nicely spotted bug! I've now changed the formula to my latest - to correctly display the actual output frequency for all entered frequencies.
Yup, that's fixed.
It is still producing that AM pattern in a high-frequency sweep (similar to Mecha's "Radio" pattern). It's particularly noticeable if sweeping above about 75MHz up. EG: there is a 3.4kHz modulation overlaid on the 100MHz base frequency when as it sweeps from 75MHz to 100MHz. However, the pattern is considerably different if one sweeps from 100MHz to 100MHz. The modulation drops to 1.7 kHz and is sinusoidal. Weird. I wonder if it's a result of the frequency transitions -- I notice they are much longer in this version than in the previous version at lower frequencies and there is a noticeable spike at each transition.
Ok, "Reset All" now produces the error message:
"Run-time error '-2147024770 (8007007e)':
Automation error
The specified module could not be found."
Click "Ok" and the program closes.
Torch's crash routine crashes for me as well ;) Also, why, after I've set the frequency of, for example, sine wave output, does it not carry over to other simple waveforms? For example, I set sine wave to 100kHz - get good output - change to triangle wave - frequency jumps to 48.828kHz.torch crash was fixed. it was log(0) error. i'll publish when i fix the other things, he asked for "set wave as default device output during startup" sensible to me, so i'm adding some menu. frequency not carry over across wave buttons is intentional, each wave shape got their own frequency setting. so i can work with different frequency for different wave quickly. maybe i'll figure out how to make it "carry over". for now the workaround is to set every wave to same frequency, or save it in memory button. thanx.
Also, why, after I've set the frequency of, for example, sine wave output, does it not carry over to other simple waveforms? For example, I set sine wave to 100kHz - get good output - change to triangle wave - frequency jumps to 48.828kHz.
Your Rigol is probably spec'ed for a 50 ohm output. If so, an open circuit output will be double in voltage to the amplitude settings on the Rigol. That is normal for a 50 ohm output from a generator.
The waveform is OK to. You probably have the scope set to AC coupling, and that would be the correct waveform for AC coupling at 1 Hz squarewave.
"Error while reading data 1. Type mismatch. Aborting and save read data. File=C:\xx\xx\xx\goltek101\sine.csv"
(attachment 1)[i]Type mismatch. Resetting phase profile. Please restart application.[/i]
[i]Type mismatch. Resetting signal profile. Please restart application.[/i]
1) I create 4000 points with 2 cycles, I open Goltek, and set the frequency to 25kHz or 50kHz (both 4000 point settings for Hantek). I read my 4000 point CSV into Goltek and it resets the frequency to 62.5kHz?1) during each csv read. the program will calculate the data "natural frequency" i may call it, and put it in the freq parameter. ie freq = clock / number of points. so from your info, the clock in your csv file is 250MS/s. duh, should i disable that? and leave your input freq as is during each csv read? vote anyone? i like it that way ??? workaround (step) is load any files that you like, set your desired freq (after program reset it to natural freq), and save it in memory button if later you want to load another file. loading from memory button wont reset to natural freq, but to the last set/saved frequency (popped up in tooltiptext, refer to (2) below). i designed this app with capability to replay/replicate exact arbitrary waveform that we've captured/created somewhere, not just as "classic" signal generator that we used to have for centuries. since tektronix csv format provided clock info, so i think i want to use it in the app... what do you think?
2) Also, the name of the CSV file you've loaded should be displayed somewhere; i.e. good file handling practice, etc.
should i disable that? and leave your input freq as is during each csv read? vote anyone? i like it that way ??? workaround (step) is load any files that you like, set your desired freq (after program reset it to natural freq), and save it in memory button if later you want to load another file. loading from memory button wont reset to natural freq, but to the last set/saved frequency (popped up in tooltiptext, refer to (2) below). i designed this app with capability to replay/replicate exact arbitrary waveform that we've captured/created somewhere, not just as "classic" signal generator that we used to have for centuries. since tektronix csv format provided clock info, so i think i want to use it in the app... what do you think?
2) refer to pic below. in the app, below the simulation windows, there's io info (2 lines green text) top showing output frequency and #points that sent to/produced by hantek (estimation using your algorithm), below that, is the input file name (#points read from file), since its very little space, long filename will be cropped out of view, solution is hovering your mouse on the info text, the full text will pop up (tooltiptext)
for now i think i'm tired coding/typing, need some rest :P want to sneak a peek on my halted project before and using goltek for it, who knows i may find more bugs while in "real application". will keep fixing and using and fixing, as always...
Nice! Isn't writing documentation fun? ;)yeah 2 nights fun! :D i hate it but i dont know why its fun :D
Hola Manuel:
Please, share the code. I'm interested in it.
Un saludo.
Gracias too Manuel. And all those contributing to help hack the software better. Its great when we can squeeze so much out of it, and realize its potential.
Sorry for a "thank you" only post.apologize accepted :D
3x25 arrived today.
The GolTek Controller makes it infinitely more useable.
No more stability problems.
Thanks for all your efforts.
i've made some simple note while i'm at it. FWIW. DDS3X25 as Digital Generator (http://www.soasystem.com/eng/goltek/digital.htm)
I do have a few questions for you guys in regards to the signal output I see on my scope. The first Picture is of a 5MHz square wave. Output impedance from the GolTek Controller is set to 50ohm. The oscilloscope is an 400MHz analog Tektronix 2465B calibrated about 3 years ago.Rise time of about 5ns, seems reasonable (not sure what the rise time spec is). Is the scope set to 1 Mohm or 50 ohm? A 50 ohm input impedance should give the best performance. The impedance setting in the generator will probably only change the amplitude calibration. Eg. if the output impedance is 50 ohm, you expect half the amplitude with 50 ohm load, and the full amplitude with 1 Mohm load.
This second picture is of the same square 5MHz wave. This time I'm using a P6139A probe connected to a Pomona BNC to minigrabber test clip, which is plugged in directly to the 3x25. Impedance is still set to 50ohm.I wouldn't expect a great signal when using some flying leads, I would only use coaxial connections. If you don't have a probe tip to BNC adapter, try putting the probe tip directly in the BNC socket and make a short ground connection (not the alligator clip) between the probe sleeve (unscrew the plastic part) and BNC shell. Twisting a cut off resistor lead around the ground sleeve might work. The less inductance, the better.
And now the same signal using the probe but reducing impedance to 1ohm.Reducing impedance to 1 ohm? You mean putting a 1 ohm resistor in parallel with the probe? Or some setting in the software?
With the BNC cable, the scope is set to 50ohm. With the probe the scope is at 1Mohm. I reduced it to 1ohm via software.
as of your picture. the 1st picture is scope impedance set to 50ohm (software at full magnitude), the 3rd picture the scope is set to 1MOhm impedance (and again software at full magnitude), and the 2nd picture is some reflection from the pomona lose wires probe or else the goltek already change amplitude setting to lower value due to you are playing around with "software impedance". am i right? i suggest you redo test in 2nd picture, but make sure magnitude setting in goltek is set at maximum, if the pomona+scope impedance = 1MOhm, you should see 6Vpp (similar to 3rd picture, or 3Vpp like in 1st picture if your probe+scope "real" impedance is 50ohm) but noisy wave (noise due to improper probe setup, ie lose wires), hint: to get max magnitude in goltek, just type crazy large value such as 1000V and hit enter, goltek will automatically set to max magnitude sensible by the API (hence DDS hardware). and make sure Flat Ctrl is turned OFF if you want max 6Vpp out of 3x25 (Hi-Z output)
I'd like to suggest the addition of a PWM waveform option on your Goltek program.very good idea! i'll see what can i do and how to fit it in the program.
but I understand that with the GolTek software, the jitter and sync issues are resolved, right?synch issue solved, with limitation (freq res/step). jitter? no, its inherent in fpga dds hardware.
Has anyone designed an amplifier so that we can use the DDS 3X25 over an wider amplitude and offset range?if you have a taste for it, you may ask me for schematics... http://soasystem.com/eng/goltek/amplifier.htm (http://soasystem.com/eng/goltek/amplifier.htm) its just normal 3-5X gain opamp using ths3095
Maybe we can design an amplifier that can be connected to the pattern generator port and be controlled by the Goltek software.already has, in the dds3x25 hardware. whats the point building what you already have? the only sensible to me is for digital generator (bus, spi or such). but i have a hardtime finding time for sw dev for it sorry :P
Anyways, within the last couple of weeks I have purchased all of my equipment and everything seems to work fine except the DDS 3x25.. I have realized that we cannot regulate the impedance. The equipment at school lets us put a HIGH Z function on route for the impedance control. And it is too late for me to return my function generator.Did that actually change the output impedance, or did it just scale the displayed voltages to be correct for an unloaded output, like most of the function generators? I find it hard to understand how this can be a critical feature, didn't they teach Ohm's law in school?
Typically a Hi-Z switch on a FG, effectively replaces the 50 ohms in series with 1 megaohm resistance. To emulate the same simply put a 1 megaohm resistor in series with the Hantek 3x25 output. The only reason to have this is so the function generator output voltage matches the output scale of the FG, otherwise, it typically 2x larger than the FG scale. It uses 1 megaohm to match what its commonly used for; to see on a scope.Do you have an example of a function generator that actually does this, preferably with schematic? This sounds like a dumb thing to do. Where do I buy the 1 Mohm coax cable that matches the impedance of this supposed 1 Mohm output impedance? Assume I use a 1 meter RG-58C cable to connect the function gen to the scope, and the function generator is set to its max (3.5V) amplitude. This unterminated piece of coax will have a capacitance of about 100 pF, so the impedance at 75 MHz will be about 20 ohms. This will load the function gen and will reduce the amplitude at the output of the function generator from 3.5 Vp-p to about 70 uVp-p.
Typically a Hi-Z switch on a FG, effectively replaces the 50 ohms in series with 1 megaohm resistance. To emulate the same simply put a 1 megaohm resistor in series with the Hantek 3x25 output. The only reason to have this is so the function generator output voltage matches the output scale of the FG, otherwise, it typically 2x larger than the FG scale. It uses 1 megaohm to match what its commonly used for; to see on a scope.Do you have an example of a function generator that actually does this, preferably with schematic? This sounds like a dumb thing to do. Where do I buy the 1 Mohm coax cable that matches the impedance of this supposed 1 Mohm output impedance? Assume I use a 1 meter RG-58C cable to connect the function gen to the scope, and the function generator is set to its max (3.5V) amplitude. This unterminated piece of coax will have a capacitance of about 100 pF, so the impedance at 75 MHz will be about 20 ohms. This will load the function gen and will reduce the amplitude at the output of the function generator from 3.5 Vp-p to about 70 uVp-p.
Plenty of function gens have the ability to switch between 50 ohm and 'hi-Z' load, the only thing it usually does is multiply the displayed voltage by two, since it was calibrated for a 50 ohm load. The output impedance is usually a constant 50 ohms. Some may be able to switch to 600 ohms for audio applications, but not 1 Mohm.
Hi-Z as an abbreviation for "high impedance" is an ambiguous term ; tristate on one hand, non-50 ohm devices on another, anything over 10kohms for microphones; there could be more.No worse than high frequency or high voltage. High frequency may be anything over 20 kHz to an audio guy, anything >> 60 Hz for a power supply designer, ~30 MHz for a ham or 100 GHz for someone working in the microwave spectrum. High voltage may mean anything > SELV for many low power electronics people, but may be > 1 kV for an electrician or > 35 kV for a lineman.
I've heared the term 'hi-z' used in conjunction with scope probes meaning specifically 1 megaohm probes.With scope probes they basically mean >> 50 ohm, although the essential difference between hi-Z and lo-Z is that lo-Z are resistive transmission lines, while hi-Z are essentially capacitive dividers at higher frequencies. A Hi-Z probe may have an input impedance of 10 Mohm // 10 pF (10x probe), or 20 kohm // < 1 pF (active probe connected to a 50 ohm scope input). A lo-Z probe may be 5 kohm (100x probe).
There was once a signal generator with adjustable output impedance, as in mecha napkin'd schematic:A fair number of them have a switch between 50 and 600 ohm. Some HP generator were available in both 50 ohm and 75 ohm versions, although changing this requires you to replace some components.
http://www.emchire.co.uk/products/product-code/506 (http://www.emchire.co.uk/products/product-code/506)
Finally hi-z switch on many function generators just means the electronics adjusts the output so the dial scale is what is actually outputted if the DUT is not 50 ohms, it does not really adjust the output impedance of the function generator to 'high impedance'. It can just blatantly halve it, or better, may have a voltmeter at the output that will sense, feedback and adjust the output regardless of what the DUT impedance is.The majority of them will just double the voltage, external leveling is usually reserved for specialized applications that require it, like the Tek SG504.
edit: forgot to tell, i disabled the "set wave on device startup". enabling it making thing worst, ie the unit will hang even if we disconnect and reconnect it to usb, even several time.
BTW, when using "set wave on startup device", are you following the manual's instructions for disabling it when you don't want to use it anymore (quoted below)?not sure. i enable/disable it by software/api discussed last time. i did use 0ohm terminator at the back all the time, and wave is saved in HW memory all the time, ie if i pull the terminator away, the wave will start on startup. i have no issue whatsoever with goltek software "wave on startup" before, until last night.
good to hear from you Mark. i thought you'ar dead
the fpga name has been scratched out, so we dont know what fpga it is, damned Hantek!
update:
1) my 3x25 went wacky this night. it happened when i screwed (burnt) some opamp circuit, probably some kickback making the fpga (i believe) intermittently hanging more than before. opened up, resolder everything, now better, but still happening sometime. morale, fondle your 3x25. any idea how to protect the opamp/fpga output from things like esd and spikes? any idea on how to download, save or upload and refresh the fpga FW?
2) latest SW version 3.2.1.9 available http://www.hantek.com/Product/DDS-3x25/DDS3X25USB(3.2.1.9).rar, (http://www.hantek.com/Product/DDS-3x25/DDS3X25USB(3.2.1.9).rar,) for who want to try, i wont bother to download (i owned ver 3.2.1.7) but would love to hear if any major changes.
edit: forgot to tell, i disabled the "set wave on device startup". enabling it making thing worst, ie the unit will hang even if we disconnect and reconnect it to usb, even several time.
When I work with my equipment doing designs I isolate the outputs of my signal sources with op amps configured as voltage followers; so if anything snafus they'll be the first to take the error and easily replaced, particularly if the operating voltage of your DUT is greater than that provided by the signal source. For prototyping, I still use the 741 and work at low frequencies and a 741 is durable, it takes quite a bit of beating to kill it. Once the basic idea is sound and you are ready to test at higher frequencies, change the voltage follower to one with the needed bandwidth.You would wonder , because i did kill a 741 before . Or did i ?
You requested too much power ?No, connected the output to the screen grid of a tube instead of the control grid.
I guess it's time for you to ... couple a high power opamp as a amplification device .
Have you considered using an attenuator to isolate the the output?I'll try, assuming with the new opamp the 3x25 will actually give 3V when I specify 3V (has some intermittent problem where it would have reduced output at frequencies >4MHz).
what if I put a couple of 4V zener diodes from the output to ground and then a resistor in series with the output?for the diode, watch out output attenuation at higher frequency, your output flatness curve could be changed, but i'm not sure, never done that.
for the diode, watch out output attenuation at higher frequency, your output flatness curve could be changed, but i'm not sure, never done that.Not really a big problem - if I want a continuous wave, I can just use my oscilloscope to measure the voltage and set the software so the output is what I need. If I want a swept frequency wave, I can measure the drop and a dd the correction to my program.
for the series resistor, you WILL alter the output impedance to greater than 50ohm, not really matter if you always work with high input impedance device/dutYes, the devices that I used this generator so far all had high impedance (at least a few kiloohms).
I have been looking around on the net but with not too much luck ... Does anyone know if it works under Linux?
I mean if there is a USB driver available.
Even if there is no software I am fine as long as there is a way to speak with this thing over USB
Sincerely I am really thinking to buy one of these, it really looks like the best bang for the buck to me.
If it works in a VM... heck, i-ll buy one and get to work >:(
Sure, there is a way. Apparently the Windows software/driver is able to talk to it over USB. Therefore any other system knowing the USB protocol should be capable to do so. Only that no one knows the protocol, and the Hantek people, providing the typical Chinese kind of service, don't answer any questions.
I'm one of the people behind the sigrok projectthanks gosh you are here. i went sigrok looking for HANTEK LA5034 logic analyzer driver but sadly none. and your site is "sure" some confusing site for me. do you plan to RE the LA5034? just the windows driver and API?
i went sigrok looking for HANTEK LA5034 logic analyzer driver but sadly none. and your site is "sure" some confusing site for me. do you plan to RE the LA5034? just the windows driver and API?
You are saying you got the protocol "decoded" or am I reading wrong ?
You can help to make it a reality -- start by creating a device page on the wiki, with good detailed pictures and description of the device. Writing a driver is really not that hard, lots of example code.send me link on how to write a driver, sniffing the protocol etc, what tool/equipment needed etc. if its within my budget, maybe i can get the LA5034. fyi: that device already has an API and driver, but not documented, if there is method/tool to RE the exportable functions in there (how to call functions and its arguments/parameters) i think that is much quicker than rebuilding API+driver from scratch. thanks.
This will get you started for sure: http://wiki.wireshark.org/CaptureSetup/USB (http://wiki.wireshark.org/CaptureSetup/USB)looks like only for linux guy. i'm out of luck :(
There are few tools for Windows, look here http://wiki.wireshark.org/Tools#USB_capture (http://wiki.wireshark.org/Tools#USB_capture) . I think it is called usbsnoopy .no luck there as well. DBGVIEW.EXE report couldnt access device driver. nevermind. also tried rawcap, perharps only for network type usb device (not working with my dds3x25)
how long the drivers will remain compatible with future Windows is anyone's guess. However, at least we have mecha here to potentially find a fix if that happens. I've run in on Win7 32 bit, XP, & Vista 32 without issues.
how long the drivers will remain compatible with future Windows is anyone's guess. However, at least we have mecha here to potentially find a fix if that happens. I've run in on Win7 32 bit, XP, & Vista 32 without issues.
Due to a hard-drive crash, I'm now running it on 64-bit Win 7. The drivers are available on the Hantek website. I installed Goltek, plugged in the 3x25, and installed the drivers via Device Manager. No problems found to date.
Don't put that one on the website!!!i dont know but its working here. must be your system specific issue.
It won't start. Running the program produces the error message "Goltek Controller has encountered a problem and needs to close
I still can't get Goltek to save the startup waveform.please PM me the specific symptom. is it when you clicked the "save wave at startup" any previous wave (at startup) got deleted and the device is not producing anything at startup? in anyway, sorry it wil be hard to tell since its working for my device. or if you really need the startup feature, you may just use Hantek software and dont use from goltek menu. since this is one time setup, it will seldom for you to switch between them for that feature, at least for me.
By the way, I noticed three extra files (tmarker.rgn rmarker.rgn lmarker.rgn) plus capture.exe in the folder. I assume they are part of the capture program?i didnt provide them in recent zip file, you must have downloaded it from my site, its capture program (+ its mask skins) for rigol ds1052e, another tool, but wont make any harm if in the same folder as goltek controller, but i suggest you put it in different folder to avoid mix up.
but I still cannot save the startup waveform using Goltek.here's another delay combo for goltek. fyi introducing delay to each 3x25 command call will affect sweep mode speed. i dont keep version control, this unrelease ver only specifically try to quick fix your problem (i suspect your unit need delayed command to make it stable). so you have to track which file is which latest or older etc. cheers.
goltek will not be able to create white noise for you, its only to send arb signal to dds3x25, try using tektroniks ArbExpress to create white noise. if you really serious about white noise, the 3x25 memory might not be enough for you. do you mean your white noise requirement really maxed to 20MHz?
How did you mod yours for +/- 10v ?put gain amplifier at the output, i hacked the trace and put it in between, that will invalidate the warranty ;). gain opamp info is everywhere you may find so i will not elaborate and claim to be an expert... here may help... http://www.soasystem.com/eng/goltek/amplifier.htm (http://www.soasystem.com/eng/goltek/amplifier.htm) except i embedded it into the 3x25 already so its now permanent.
Finally wrapped my head around using the hantek DLL from a python script. I need to generate a sweep with a step of about 25 kHz from 1 to 30 MHz. The exact phase and frequency of each step is not important but I need the amplitude to stay as constant as possible through the entire range (into a 50ohm load). Can somebody please point to a post that I need to pay attention to implement this sweep?
i also have not been able to solve the zero crossing freq change (or at least changing freq without changing signal phase or voltage level, i need to study back on this when i have time. i'm counting on marmad and other brilliant members on this.
as for dave's video for bode plot, 1st it cant show phase shift 2nd is not a log scale vertically and horizontally. and 3rd it needs super flat FG. as someone posted in the thread, its a poor man "pocket" method after buying an DSO and FG at premium price.
Of course, it's good as a 150$ AWG ;) No 150$ gen can come even close. in fact there isn't a 150$ AWG apart from hantek but hey.
Crap but it works for 150$ fantastic as a "First AWG" :P If one is quite broke ATM
ds3x25 is not flat at >5MHz. i cant find the post or file in my HDD showing the flatness respond for my ds3x25. my Goltek provides option for flatness control, by carefully tuning and profiling your ds3x25 output curve.
Is it possible control the goltek via an API?no, goltek is a simple app its not designed to provide pipeline for other app. you can code your own by calling ds3x25 api. make your own profile, do some back arithmetic for flat output and call the ds3x25 api. but i believe you wont get nice transition between frequencies, if you can then let us know ;) i did a "quick slap" write up on how to get the flat output... http://www.soasystem.com/eng/goltek/flat.htm (http://www.soasystem.com/eng/goltek/flat.htm) i'm not sure though if you can understand the broken english. and there's the my ds3x25 output profile in bitmapped format. fwiw.
Is it possible control the goltek via an API?no, goltek is a simple app its not designed to provide pipeline for other app. you can code your own by calling ds3x25 api. make your own profile, do some back arithmetic for flat output and call the ds3x25 api. but i believe you wont get nice transition between frequencies, if you can then let us know ;) i did a "quick slap" write up on how to get the flat output... http://www.soasystem.com/eng/goltek/flat.htm (http://www.soasystem.com/eng/goltek/flat.htm) i'm not sure though if you can understand the broken english. and there's the my ds3x25 output profile in bitmapped format. fwiw.
Of course, it's good as a 150$ AWG ;) No 150$ gen can come even close. in fact there isn't a 150$ AWG apart from hantek but hey.
Crap but it works for 150$ fantastic as a "First AWG" :P If one is quite broke ATM
Absolutely! No disagreement at all. It's just that I (and Mecha and others here, of course) have devoted dozens of hours of time trying to 'iron out' the annoying kinks - and add missing functionality - which keep it from being great. Speaking only for myself, I need to consider investing my time elsewhere and upgrade my AWG ;) But it certainly got me through some work I had to do with an AWG in the meanwhile.
I can't understand why Hantek seems to have orphaned the DDS 3X25.Well, as mentioned in the other thread (https://www.eevblog.com/forum/reviews/hantek-1025g-new-usb-generator-or-the-dds-3x25-in-new-clothes/msg160050/#msg160050) I recently started, they are producing more of them - just putting them in a slicker-looking container - and asking a lot more money for them ($231 at AliExpress). So they are trying to cash in on the success of the DDS-3X25 - but without any real extra effort on their part.
I can't understand why Hantek seems to have orphaned the DDS 3X25.Well, as mentioned in the other thread (https://www.eevblog.com/forum/reviews/hantek-1025g-new-usb-generator-or-the-dds-3x25-in-new-clothes/msg160050/#msg160050) I recently started, they are producing more of them - just putting them in a slicker-looking container - and asking a lot more money for them ($231 at AliExpress). So they are trying to cash in on the success of the DDS-3X25 - but without any real extra effort on their part.
...freq change at zero crossing is one thing, signal sweep "flatness" is another, that can be a challenge since ds3x25 is not flat at >5MHz...
What would be a good cutoff frequency do you think I should use?100 or 200MHz?
Maybe I'll whip up a schematic to share in case someone wants to try my idea.yes please do. i will be interested. ;)
maybe the g in the name 1025G is for Goltek
its even match my 10x25 amplifier name... http://www.soasystem.com/eng/goltek/amplifier.htm (http://www.soasystem.com/eng/goltek/amplifier.htm) i should file a "trademark name infringement" 8) but their 1025 still use ±3V, bugger! so i vote "G" is for buGger. i dont believe its for Goltek since Rigol name is embedded in it and i dont believe they are both friend.maybe the g in the name 1025G is for GoltekIt should be for Goltek. However, I think it stands for "Gone" -- as in: "Were did the other 3 BNC jacks go? They're Gone."
edit: added DDSDownload times: I almost fell asleep scanning a 30 MHz range with a 50khZ step. that DDSDownload call takes forever :=\ :=\ Anybody figured out how to make a faster frequency change?Look at this old post of mine. (https://www.eevblog.com/forum/chat/review-hantek-dds-3x25-anyone-own-one/msg57858/#msg57858) I think it explains what you're looking for - and can point you in the right direction. Let me know if you need more.
Look at this old post of mine. (https://www.eevblog.com/forum/chat/review-hantek-dds-3x25-anyone-own-one/msg57858/#msg57858) I think it explains what you're looking for - and can point you in the right direction. Let me know if you need more.
Edit: This post (https://www.eevblog.com/forum/chat/review-hantek-dds-3x25-anyone-own-one/msg58580/#msg58580) might help you as well.
Thanks, I think I understand the formulas and arithmetic behind them. But I don't see how I can avoid downloading a new waveform every time I need to change the frequency. Even if I'm just changing the number of points with the same wave buffer don't I still need to call DDSDownload? It seems transfering of the buffer takes up most time. May be I will try with the minimum number of points and periods that will give the desired frequency and save on the transfer time a bit.
Using Goltek, I set the start at 1Mhz, the end for 30Mhz, step at 50Khz, interval at 1ms and single-cycle. I hit "run" and the stopwatch at the same time. 15 seconds to complete one cycle -- on the laptop with USB2.
Using Goltek, I set the start at 1Mhz, the end for 30Mhz, step at 50Khz, interval at 1ms and single-cycle. I hit "run" and the stopwatch at the same time. 15 seconds to complete one cycle -- on the laptop with USB2. On the older slower laptop with USB1.1, the identical setup took 1 minute, 55 seconds.
The image shows the frequency change point from 200Hz to 300Hz - but because the frequency doesn't change at the zero-crossing of the waveform, you get a spurious frequency injected - in this case, it happens to be ~287Hz - as shown in the cursor measurement window.
Edit: BTW, I was incorrect in what I posted in a previous message. I did some more testing and it turns out that the Hantek software isn't capable of doing smooth sweeps either. Honestly, with the various problems inherent in the device (no zero-crossing of frequency change, no sync signal for sweep, etc, etc) I really don't think it's a good thing to use for sweeping - especially above 5MHz - but perfectly fine for basic signals and simple arbitrary patterns.
isn't this a transition problem? like a DDS settle time which equals some N number of samples. I've seen this in a digital mixer in another device. every time you retune the mixer there was all kinds of garbage injected to the signal,but it lastsed only a few clock cycles. It may even be specified in the datasheet.. In some cases you may be able to account for that transition in whatever is on the "receiving" end of the sweep.. At least that is what I'm hoping to do in my project...
- but the firmware just appears to change the clock frequency as soon as it receives the command (instead of waiting for the zero-crossing / beginning of sample memory) because the frequency 'shift' does not appear to be regular. If you look carefully at sweeps, you see the 'shift' happen at different points on the waveform. I don't have another sweep generator to test against (yet) but I think a properly designed and programmed one would be able to make frequency changes that would be smooth (or at least with the exact same shift at every changeover).
What would be a good cutoff frequency do you think I should use?100 or 200MHz?Maybe I'll whip up a schematic to share in case someone wants to try my idea.yes please do. i will be interested. ;)
What would be a good cutoff frequency do you think I should use?100 or 200MHz?Maybe I'll whip up a schematic to share in case someone wants to try my idea.yes please do. i will be interested. ;)
It is going to require a Bessel filter and will need to be more than 5 poles to get good results. I will need to run a simulation to verify some things and may need to probe around with my scope too.
Not sure I will have this done before New Year because of the holidays but I am working on it.
I'd vote for 100 MHz or even 30 MHz cutoff frequency. The "sine" wave spectrum does not look very clean to me at HF (over 5-10 mhz). May be a good low pass filter will help with this.
Some AWGs use a different filter for sine output than for other signals.
Why not just get a coaxial attenuator, fixed ones should not be too expensive? You can also cascade them to get desired attenuation if one is not enough.
Regards,
Janne
Is there something in the internal design of a coaxial attenuator other than the shielding effect of the outer shell being grounded that makes it better than an equivalent non inductive resistive divider with proper shielding?i believe you missed the attenuator construction i teared down recently and some usefull link(s). this is china cheapo one. if you can lay better and uniform carbon layer and then verify its profile then thats a good engineering ;) here the teardown https://www.eevblog.com/forum/beginners/replace-carbon-layer-with-passive-resistors-components-in-attenuator (https://www.eevblog.com/forum/beginners/replace-carbon-layer-with-passive-resistors-components-in-attenuator) with 1 concise and reasonable answer why not to use normal resistors.
I didn't realize there was a 2048 point limit.marmad has made extensive study on this. the max points 3x25 can accept is 4096, but its by luck at certain freq and/or KSps config to get that, mostly 3x25 will use 2048 points. me myself have not figure out the combination. i'll need to dig this up if i need to, its somewhere here or in my HDD. please check your PM will ya? ;)
using hint1, i tried to produce 2048 data based on torch's formula in excel (attached modulation2048.xls zipped) but guess what? this intermodulation is also there! so whether goltek interpolation or using theoritical formula, its still the same, pay attention to the data shown in gui.png (Ksps and number of points) and make your own calculation and senses, beyond that i cant help much, we are live in discrete sampling world now.
just make sure it doesnt catch fire :P.
Yes, the link is buried in here somewhere. Probably more than once.I think I better re-learn to read ::)
(I keep hoping Mecha will suddenly find himself with nothing to do and pick up on some of the other projects he was working on. ;D )my projects flow depends on my need :P for example Goltek Digital, i still has no usefullness for it. so another guy has developed it, its somewhere here (or in my email) i asked him to post but i'm not sure what he has up to now. also i remember one request here to put on PWM capability and another request to make my library is DS2000 compatible. but since those required siginificant coding (and testing problem), i have to put it on hold. for easy fix, i almost certainly capable of jumping out of my current project to do that immediately, but for harder fix, yeah i'm also hoping that i will ever have a free very free time. i have a board that i wrote project lists, the scratched marking are still there from yesteryears. :P
The sad thing is that this hobbiest, with no prior knowledge of the internals and capabilities, has produced software which is vastly superior to the software provided by the manufacturer, and that the manufacturer has made no effort to support their product by offering updates that address the shortcomings.I'm saddly not surprised !
@Mechatrommer : Any chance to have any suitable gui for the hantek dso-5200A like you made for the 3X25 ?opps its an usb-scope not a FG. thats not possible 1) i dont have that unit, 2) i need to do it from scratch. entirely different functionality.
just a little thing, I cain't put the controller on my second screen. is it possible to unlock this?thats reasonable. now i've disabled the check (while moving the app) but during loading its still on 1st monitor (to protect 1 monitor user from vanishing out of screen window) you need to drag manually after each reload. hope that helps... refer to attached file. backup your original version before overwriting, just in case.
The sad thing is that this hobbiest, with no prior knowledge of the internals and capabilities, has produced software which is vastly superior to the software provided by the manufacturer, and that the manufacturer has made no effort to support their product by offering updates that address the shortcomings.
With this setup, I found the break within 15 minutes and localized it to within 3' of the actual location.
Not what the thing was designed for, but what the hey, it worked... 8)
And now for something completely different...
Not what the thing was designed for, but what the hey, it worked... 8)
By the way, I am surprised that no one until now seems to have used a USB protocol sniffer to figure out what these magic DLL functions really send to the generator. For example to figure out if they do some own special math or if the generator gets the values more or less as provided to the functions.
I can't believe they got rid of the 5v supply. :o Not to mention the missing BNC connectors. But then, nothing they have done with this product has made much sense to me.
It is a great pity that the software lets Hantek products down. The hardware looks to have been well thought through, and produced to a good standard. They need to find a new software engineer.
What is so strange is that they failed to write PC software which correctly implements some of the features of the original DDS-3X25 firmware; for example, 'burst' mode for doing single-cycle waveforms and short bursts. This is something I use all the time (via my own software) - but what did they do? Instead of re-writing the software to implement these things correctly, they just eliminate or bury features. [...]
but I wonder if implementation e.g. SPI or I2C on digital I/O is possible that way. Is it fast enough to control the pins and transfer data both ways? It would be nice to control output LPF, attenuator etc. from one piece of software and using only USB as interface.i believe from looking the software and hardware design, whats come out of 12bits digital IO is the same as what is feed to the DAC inside. so calling the API and sending data points will do both feeding the analog signal and digital output at the same time. but i'm not 100% since i havent tested it. i believe designing a software to feed the device with SPI or I2C should be possible. on the surface, the gui will handle and translate the bits stream and protocol, but under it, the API procedure calls should be the same as documented. bear in mind the limit is 4K memory only.
i believe from looking the software and hardware design, whats come out of 12bits digital IO is the same as what is feed to the DAC inside. so calling the API and sending data points will do both feeding the analog signal and digital output at the same time. but i'm not 100% since i havent tested it. i believe designing a software to feed the device with SPI or I2C should be possible. on the surface, the gui will handle and translate the bits stream and protocol, but under it, the API procedure calls should be the same as documented. bear in mind the limit is 4K memory only.
From above statements (if true) is clear that one can control single bits of digital i/o without affecting output waveform (data being sent to DAC in the meantime). I doubt that size of internal memory has anything to do with it. Rather it's just simply reading and writing some FPGA registers (of course using Hantek's API). So my question is: are there any functions available in API (or DLL exported symbols) that can be used to such tasks? And how fast they are?
Enough to implement one of popular serial protocols?
marmad,
thank you for sharing the knowledge. I'm glad that my suspicions weren't distant from truth. :)
Is there a function to read digital pins too?
My biggest concern is now speed of USB communication through Hantek's dll: implementation of any serial protocol that way means sending and receiving single bits using Hantek's provided commands. I've got an idea how communication works from asbokid's post earlier in this thread - but know nothing about achievable update frequency.
Have you done any "responsivity" tests?
I just remember it was painfully slow (in computer terms), making it very difficult to do things 'quickly'.Rather discouraging. :(
This option in Hantek's supplied software is rather limited. The dialog box itself looks like that i've attached. Only basic settings and you can use only sine waveform (sweep option is grayed out with all other waveforms).Thanks for that screen shot. Scanning over this long thread, it looks as if the 1025G is inferior to their older 3x25 in many ways, including older, less capable Windows software, loss of some I/O capability, and the need to draw all power from USB which may be problematic on some laptops. Would I be better off just buying a new in box 3x25?
When I download the requested sinewave to 3X25 the initial phase is every time different.i hope this is it ... http://www.soasystem.com/eng/goltek/synch.htm (http://www.soasystem.com/eng/goltek/synch.htm) short answer yes, long answer, its more complicated esp if you need higher in-synch accuracy, nothing beats hardware solution if you can.
Is this somehow solved in Mecha's program?
Mecha: Could you please help also the poor labview guys by making a labview API?you need to teach me LabView from scratch first ;)
Mecha: Could you please help also the poor labview guys by making a labview API?you need to teach me LabView from scratch first ;)
I guess if Labview can communicate with the crappy DLL provided by Hantek there should be a way to communicate with your program as wellconceptually from what i learnt at least, the dll is the highest level we (goltek, pc softwares, labview) can access into, the rest of lower level (usb protocol) is encapsulated, closed source not documented by the manufacturer. and goltek is the "top tier" software for the end user, i didnt provide anything to connect to something on top. in other word, "principaly" your labview cannot connect to the goltek. i'm sure there is documentation in labview on how to call Windows DLL. try to concentrate on that search in help file. because you wil be bulding something at the same hyrarchy pyramid level and procedures as the goltek did, there is no way you can be on top of the goltek (legitimately).
goltek is the "top tier" software for the end user, i didnt provide anything to connect to something on top. in other word, "principaly" your labview cannot connect to the goltek.
...
, there is no way you can be on top of the goltek (legitimately).
command line flags, scripting, DDE, telnet, etc.and it will make my life miserable due to the complexity, and for what? what i dont really get is why the hell people want to control the device from far away using telnet ethernet etc? this is a T&M device not a household remote control toy or security device, it is meant to be right next to the designer while R&D. the only way to program goltek is by using Tektronix ArbExpress or Excel CSV, you design the signal in there and feed it to the program and device, thats it. actually the 2nd thing is, my imagination limits my achievement, this device is only to produce a signal, i cant imagine how to make it programmable, even if it is, i dont think its worth it due to (1) you still can make it manually on the bench or the above mentioned CSV file (2) the 3x25 and its (documented) SDK is so inefficient at this. thats just my humble opinion.
controlling from far away is not an issue. The problem is that integration with other pieces of software and automation of tasks is not possible. For example I might want to send ten different test signals at a 2.5 second interval. Can't do this with Gui.
but I see very very few people actually putting work into and posting software.and very few are willing to learn how to make Windows DLL call from anywhere like VBExpress VCExpress or something. which is pretty much basically what i did to goltek (apart from aligning all the skins in the GUI). some of the concepts and ideas developed in-house (or with your help) are already documented with my sweat in my site (thanks to GoDaddy for providing free space with domain subscription) such as unsynch issue here ... http://www.soasystem.com/eng/goltek/synch.htm (http://www.soasystem.com/eng/goltek/synch.htm) and some other links about flatness, phase profiling etc here (see below) http://www.soasystem.com/eng/goltek/index.htm (http://www.soasystem.com/eng/goltek/index.htm) bad english but i'll be happy to guide if anyone interested in PM. asking one to extend or make a program to enable scripting, will require him to make a help file (or possibly a customer help forum) to teach people ;)
controlling from far away is not an issue. The problem is that integration with other pieces of software and automation of tasks is not possible. For example I might want to send ten different test signals at a 2.5 second interval. Can't do this with Gui.
But Mecha wrote the software for his own purposes - and gave it away for free. Why should he put extra unpaid time of his own into something he doesn't need? I see a lot of people on this forum asking for stuff they want - but I see very very few people actually putting work into and posting software.
For example I might want to send ten different test signals at a 2.5 second interval. Can't do this with Gui.if you cant develop yourself, goltek can save 12 different waves in memory keys (shortcut e+number) and then recall or send signal later (shortcut c+number). you can make a simple timer that beeps every 2.5secs and then you press "c+number" when you hear it. yes its manual and clumsy but thats the best goltek can do ;) and if you know goltek (or the hardware?) is not very good at transitting from one signal to another signal (glitches) which can corrupt your measurement (or maybe not, depending on what you want to do). short help manual here http://www.soasystem.com/eng/goltek/control.htm (http://www.soasystem.com/eng/goltek/control.htm) hope it helps.
but I wonder if implementation e.g. SPI or I2C on digital I/O is possible that way......whats come out of 12bits digital IO is the same as what is feed to the DAC inside. so calling the API and sending data points will do both feeding the analog signal and digital output at the same time.but i'm not 100% since i havent tested it
Mechatrommer,
I hope you're wrong ;) ...
This is wrong - at least for the DDS-3X25. You can use the Hantek software (or download my software from somewhere in this thread) and control all the digital IO pins independently of the DAC (or output the generator values - it's switchable)... (next post)
There is one DLL command for switching between programmable or generator output:
DDSSetDIOMode / Description: Switch the mode of DDS / 1: Programmable output 0: Generator output
#!/usr/bin/env python
import usb.core
import usb.util
import struct
Falling = 0
Rising = 1
class Config(object):
ResetExtTrigger = False
ExtTrigger = False
ExtTriggerEdge = Falling
ContinuousOutput = False
ResetCounter = False
CounterMode = False
ProgrammableOutput = False
DigitalPins = 0x0000
ClockDivider = 1
class DDS(object):
def __init__(self, idVendor=0x0483, idProduct=0x5721):
# find our device
dev = usb.core.find(idVendor=idVendor, idProduct=idProduct)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
interface_number = cfg[(0,0)].bInterfaceNumber
alternate_setting = usb.control.get_interface(dev, interface_number)
intf = usb.util.find_descriptor( \
cfg, bInterfaceNumber = interface_number, \
bAlternateSetting = alternate_setting \
)
self.out_ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT
)
assert self.out_ep is not None
self.in_ep = usb.util.find_descriptor(
intf,
# match the first IN endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_IN
)
assert self.in_ep is not None
def configure(self, config):
b0 = 0x00
b1 = 0x00
b2 = config.DigitalPins & 0xff
b3 = (config.DigitalPins >> 8) & 0x0f
b4 = config.ClockDivider
b5 = 0
if config.ResetExtTrigger:
b0 |= 0x20
if config.ExtTrigger:
b0 |= 0x10
if config.ExtTriggerEdge:
b0 |= 0x08
if config.ContinuousOutput:
b0 |= 0x04
if config.ResetCounter:
b0 |= 0x02
if config.CounterMode:
b0 |= 0x01
if config.ProgrammableOutput:
b1 = 0x01
cval = struct.pack('>BBBBBBB', 0xa0, b0, b1, b2, b3, b4, b5)
self.out_ep.write(cval)
100kHz: Sync Phase: -1 degrees / -20ns
1MHz: Sync phase: -9 degrees, -25ns, sync jitter: +/- 5ns or 3 degrees
10MHz: Sync phase: -70 degrees, -20ns, sync jitter: +/- 4ns or 10 degrees, (sine at this point)
20MHz: Sync phase: -160 degrees, -25ns, sync jitter: +/- 1 ns or 5 degrees
20MHz+: (Mostly noise at this point.)