But can u tell little bit more about FPGA.
How to use it or can i program this according to my need.?...
There is some good information at this site that has an FPGA/Arduino board for hobbyists. Check out the beginner's guide and tutorials. I'm not recommending the product for purchase, but the information can be helpful and give some ideas.
I began learning software programming with LabVIEW and Xilinx FPGAs ... just recently exploring C++/Arduino.
This device measures the amplitude of your 1Mhz (say - actually it works fine up to 1000Mhz) signal
from the piezo sensor, takes it's logarithm, and outputs a dc voltage . To reject all the unwanted frequencies
I would need a tuned amplifier in front of it - both to select the wanted 1MHz signal ( and reject all the rest - noise, interference etc) and to get the level of your few mV signal into the optimum range of this device.
But if you need high time resolution you have to sample it's output much faster than any arduino will work. So you also need a fast a/d convertor which will convert these values into digital data which can be stored in memory, which is then then read out more slowly to drive a display.
The only bit the arduino can reasonably do is to drive that display. The rest is external hardware.
you don't need FPGA's for this - wonderful gadgets ( I've used them) but not necessary here.
may be this RF log detector will help me somewhere in my project.
but actually my problem is not to reject noise and interference with signal. i need something which will convert the analog data to digital and take samples at 1 MHz frequency and store this data into memory.
are you able to design and build a PCB? (that's not trivial - it's much more complicated than just connecting point A to point B ) . This stuff can't be done without one.
If the answer to both the above is no, I should forget it.
It's not a simple job. Believe me - I'm retired now after spending 40+ years designing electronics.
initially i have specified that i know very less about electronics. i can do little things such as writting small programs in arduino such as controlling servos, ESCs LCDs, sensors,.....etc . actually learn this from arduino community. and i can design very simple circuits not complex ones. like which involves some resistors, transistors...etc and small simple things not complex ones.
for your info i will tell u that i have designed a simple Hovercraft control system using arduino uno which involve ESCs, Servos, Relay board to control motors, certain control buttons on it and used RF remote control.
i am not expert and that is the reason i come here to take help from others who are experts in this field.
allanhurst:
But if you need high time resolution you have to sample it's output much faster than any arduino will work. So you also need a fast a/d convertor which will convert these values into digital data which can be stored in memory, which is then then read out more slowly to drive a display.
This is actually my problem what hardware should i used to take samples at this much 1MHz frequency.
1 MHz frequency is the rate of sampling. if considered 10 samples per cycle so that i can get fairly good shape of 100 KHz waveforms.
same goes on excitation side if i used 1 MHz frequency to excite waves and used resolution of 10 points per cycle then i will get 100 KHz waveform.
But considering arduino uno i tested that to process one digitalWrite() cammand it requires around 4 microseconds. so 410=40 microsec for one cycle. means 1/(40 10^-6)=25000 Hz. and this is way too much low for my application.
also to read analog voltage analogRead() command requires around 112 micro seconds so 11210=1120 microsec. for one waveform which means 1/(112010^-6)=892.857Hz which is very low.
OK. look up specs on 8-12 bit a/d convertors at 1MHz+ . Lots of people make them. typically 0..5v input range, so you'd need a fast amplifier from your piezo detector to get to this level - and you need a detector, or you're just looking at a variable amplitude 1MHz signal. The arduino won't get anywhere near this. And what's the speed of sound in your sample material? And what resolution in distance do you want to detect? this will tell you the sampling frequency you need.
Now look for memory - 1MHz isn't quick . How many samples do you need to store? do you want to keep records of lots of results or just display them momentarily? SD memory is quick enough and you can get vast ones cheaply.Else static RAM is fast, and you wouldn't need that much - 0.5 seconds is less than 512k which would cover all reflections..
1 MHz frequency is the rate of sampling. if considered 10 samples per cycle so that i can get fairly good shape of 100 KHz waveforms.
Only 10 samples is not sufficient to get a good measure of the peak of a waveform.
I did ask if you needed to digitised the whole waveform and not just the peak. You did not say you just needed the peak, so my FPGA advice was based on a 100MHz sample rate. If you only need the peak then you need a peak detector like I origional said.
If you want to sample at 10MHz, you'll need a damn fast (>100MHz) connection to an external ADC. That's why DSP chips include A/D (and D/A) converters, for fast signal processing. They also should have built-in RAM, or a parallel connection to external RAM, sufficient to store at least one sample. General purpose controllers and boards may be fast in number crunching, but are slow in connecting to external devices.
That's why I think that you have to bite the bullet, and use some dedicated signal processor, be FPGA or some other DSP, or a ready made digital scope, that can at least record one sample. Then you can spend time to read the sampled data at any (low) data rate afterwards, and process the samples on any suitable board (RasPi...) or PC.
That board is a joke. When it comes to input / output is is way slower than a Uno by at least a factor of 10.
The problem with a Pi is that it runs Linux so it is not real time enough to record at a sample rate of 10KHz let alone in the MHz region.
I would agree with the above. Get yourself a Rigola scope and control the measurements and get the readings from your PC. Because this scope along with some others is programmable.
If I were doing the job, I'd use an FPGA to run the tranmsit pulse. 10uS? long ...
then implement an N bit counter running at 1MHz, triggering the a/d reading a log detector. and
writing a/d values on each clock to successive memory locations .. The number of bits and the size of memory depends on how long you want to store the data for . 1/10 second? (17 bits?) This clock starts when the transmit pulse does. You may want to disable the receiver during the pulse to prevent saturation.
Now you've got the datastream in memory.
Now for readout - averaged ? peak ? threshold ? lots of possibilities.,
eg you could have a seperate adder adding say M successive samples in a ring buffer , then dividing by M - this gives an running averaged sample at 1/M the sampling rate.
I'd then use this to run a display.
you could do it all in good 'ole TTL, but FPGA's are lot easier.
Write it in Verilog or VHDL - I'm used to VHDL myself.
I'd certainly second the 'scope approach, at least until you've proved your concept.
I've worked on computed tomography machines, where the early dev work was done with an off-the-shelf LeCroy 'scope capturing to floppy disk, before the custom data acquisition equipment was available.
It also gives you an opportunity to fully spec your eventual hardware, before committing.