General > General Technical Chat

Review: Hantek DDS 3X25. Anyone own one?

<< < (42/108) > >>

marmad:

--- Quote ---1) save as png or jpg. those bmp's can easily waste half a meg on dave's server. and bandwidth of thousands others.
--- End quote ---

Sorry! I would normally... I just spaced out  :P - Just changed them to pngs  ;)


--- Quote ---3) retry at odd frequency, like 3MHz, 33MHz, 74.7MHz. 1MHz and 75MHz are known to be "Synch Out" stable
--- End quote ---

Done - see below.


--- Quote ---4) How do you manage to output single pulse? teach me the code!
--- End quote ---

Unfortunately, it doesn't seem to be able to be done reliably with just code (at least I can't get it to repeat more than a few times) - it seems to need a real hardware trigger to be consistent.   But you can do it a crude way in software; for example,  use Hantek software, select Single Wave, then click Ext Trig over and over again.  After a few clicks you will get a transition glitch which will send the wave.

But the correct, reliable way is to give it a real trigger.  So I took D011 output again (this time set to Programmable Output - not Pattern Generator) and I fed it into the Trig In (see photo).  Then every time you change the bit high (or low with falling edge) it sends the waveform. But this is only needed for consistency - software method above is fine for testing.


--- Quote ---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.
--- End quote ---

I haven't tried it yet - only theoretical -- but for example:

Put a jumper wire from D011 pin to DI0 pin on front of Hantek - then in a silly recursive loop example:

:startSweep
    Dim startFreq as Double = 1000
    Dim lastFreq as Double = 100000
    Dim stepAmount as Double = 1000
    Dim stepPeriod as Integer = 100
    DDSSetFrequency(hWnd, startFreq, g_nWavePointNum, g_nWavePeriodNum)
    DDSDownload(hWnd, arBuffer(0), g_nWavePointNum)
    Gosub newSweepFreq(startFreq + stepAmount )
end

:newSweepFreq(start)
    Dim digInput as Integer = 0
    ' Have to have some code here to wait the step period first
    If start > lastFreq Then Return
    ' Wait through approximately one high and one low of DO11 - in other words, 1/frequency
    Do Until (digInput)
      If NOT DDSGetDigitalIn(hWnd, digInput) Then Exit Sub  ' unplugging DDS3X25 would break out of permanent loop
    Loop
    Do Until (NOT digInput)
      If NOT DDSGetDigitalIn(hWnd, digInput) Then Exit Sub
    Loop
    DDSSetFrequency(hWnd, start, g_nWavePointNum, g_nWavePeriodNum)
    Gosub newSweepFreq(start + stepAmount )
    Return
End Sub

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!!


--- Quote ---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)
--- End quote ---

Almost right... D011 is the MOST significant bit of the DAC - so it will have the exact frequency (but offset 180 degrees) of any simple waveform out (sine, square, triangle, saw) as long as you have amplitude at maximum (+3.5) so that the DAC is swinging peak-to-peak.


--- Quote ---7) Dont quite understand whats the blue trace on pic #3 and #4.
--- End quote ---

Blue trace shows what (#3) the Sync Out does when you use single wave output; (#4) D011 does when you use single wave output (in Pattern Generator mode at full-scale).


--- Quote --- Was your purchase experience without a problem?
--- End quote ---

Yes, saturation - testinstru (from eBay) is a great seller - good communication - fast shipment - and well-packed.

Mechatrommer:

--- Quote from: marmad on July 21, 2011, 05:44:29 pm ---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!!

--- End quote ---
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

marmad:

--- Quote ---keep it up, and dont blow anything.
--- End quote ---

I thought I did earlier  :o  It's really possible to lock this thing up so badly that you have to unplug the power for awhile to bring it back to working order.


--- Quote --- the signal wont get changed/updated even at frequency level by calling DDSSetFrequency only. you have to call both including the DDSDownload
--- End quote ---

Did you play around with the undocumented commands: DDSGetDivNum and DDSSetDivNum?  They are clearly effecting the clock divisor somehow, but I haven't been able to figure them out.  One thing I did discover though - if you use DDSSetDivNum, you can use DDSSetFrequency immediately after to change the frequency (without using DDSDownload), but the frequency is not exactly what you expect - it's some combination of SetDivNum and SetFrequency which I can't comprehend.  I haven't been able to manage to call DDSGetDivNum correctly to retrieve data or I could probably figure out the combination. 

There are also these other undocumented commands in the DLL (most likely related to Hantek's 8060 Scope/DMM/Signal Generator):

DMMAC_10A
DMMAutoACV
DMMAutoAC_mA
DMMAutoDCV
DMMAutoDC_mA
DMMAutoOHM
DMMCap
DMMContinuity
DMMDC_10A
DMMDiode
DMMManualAC_600V
DMMManualAC_600mA
DMMManualAC_600mV
DMMManualAC_60V
DMMManualAC_60mA
DMMManualAC_60mV
DMMManualAC_6V
DMMManualAC_800V
DMMManualDC_600V
DMMManualDC_600mA
DMMManualDC_600mV
DMMManualDC_60V
DMMManualDC_60mA
DMMManualDC_60mV
DMMManualDC_6V
DMMManualDC_800V
DMMManual_600KOHM
DMMManual_600OHM
DMMManual_60KOHM
DMMManual_60MOHM
DMMManual_6KOHM
DMMManual_6MOHM
DMMReStart
DMMRead
DMMRel
DMMTest
DMMsAC_10A
DMMsAutoAC_mA
DMMsAutoDC_mA
DMMsDC_10A
DMMsManualAC_600mA
DMMsManualAC_60mA
DMMsManualDC_600mA
DMMsManualDC_60mA
DMMsRead

It seems possible that Hantek, to save design and programming time, might be using the Multiprocessor Link pinouts (3X25) on the FPGA for the ADC conversion pins (8060).  Figure out the pins and circuitry and you could add even more hardware onto our little box  ;D

Mechatrommer:
i did notice DDS*etDivNum function but dont know how to call with correct parameters. i didnt notice though the many list you provided, i dont have the tool. but since i dont have the proper parameters type and count, so i just leave them. i dont have enough time and power to reverse all of them. i hope you can come up with something.

marmad:
I sent Hantek an email saying my company needs more accuracy in the software we are writing for the device, and is it possible to know how to use the DDS*etDivNum functions.  I don't really expect a response - but who knows - stranger things have happened.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod