user1146: i would like to generate Chirp Signal (Frequency Sweep) using Arduino. i have searched a lot in internet but didn't find anything.
Basically, any parameters is also ok. But the concept is what i am searching for.
The signal will be sent to the DAC of the Arduino board.
Edit
I would like to generate sine wave signal from 3kHz up to 100kHz sweep frequency with amplitude peak to peak 1.5 volt.
thanks for your support.

user7120: Recommend to use a VCO PLL as external hardware device to get the wanted variable-frequency signal. The DAC output from Arduino can control the voltage to external VCO PLL module. Here is the link for an app note for VCO PLL from Vectron.
http://www.vectron.com/products/vcxo/vcxo.pdf
Hope it helps.

user7282: If you're ok with starting with square wave signals, this can be done on an Arduino. 
You need to do the following:

Configure a 16-bit Timer to CTC mode
Select the right prescaling
Add a RC low pass filter to the output and voltage divider

Configure a 16-bit Timer to CTC mode
Assuming I'm using Timer 1 and OCR1A:
TCCR1A |= (1<<COM1A0); // Toggle OC1A on match
TCCR1B |= (1<<WGM12); // Clear to Compare mode
TCCR1B |= (1<<CS10); // No prescale

Select the right prescaling
In case you're wondering, prescales are used when the MCU clock is much faster than the output you desire. 
Without prescaling, the highest frequency is 16MHz/2 = 8MHz, and the lowest frequency would be 8MHz / 2^16 = 122Hz . Which covers the range of frequencies that we want.
Setting OCR1A value to 80 gives you a frequency of 100kHz
Setting OCR1A value to 2667 gives you a frequency of 2.9996kHz
You can then control the chirp like so:
// Linear rise in wave period
int x = 10;
for (int x=80; x < 2668; ++x){
  OCR1A = x; 
  delay(10); // 10ms delay
}

Add a RC low pass filter to the output and voltage divider
Making the perfect sine waves may be too troublesome, so we'll resort to the poor man's sine wave. 
Here's the poor man's implementation by TI (still require quite a few parts.)
Personally, I'm cheap so I'd go for the RLC approach. ;-)

1146: <p>i would like to generate Chirp Signal (Frequency Sweep) using Arduino. i have searched a lot in internet but didn't find anything.</p>

<p>Basically, any parameters is also ok. But the concept is what i am searching for.
The signal will be sent to the DAC of the Arduino board.</p>

<p>Edit
I would like to generate sine wave signal from 3kHz up to 100kHz sweep frequency with amplitude peak to peak 1.5 volt.</p>

<p>thanks for your support.</p>
 7120: <p>Recommend to use a VCO PLL as external hardware device to get the wanted variable-frequency signal. The DAC output from Arduino can control the voltage to external VCO PLL module. Here is the link for an app note for VCO PLL from Vectron.</p>

<p><a href="http://www.vectron.com/products/vcxo/vcxo.pdf" rel="nofollow">http://www.vectron.com/products/vcxo/vcxo.pdf</a></p>

<p>Hope it helps.</p>
 7282: <p>If you're ok with starting with square wave signals, this can be done on an Arduino. 
You need to do the following:</p>

<ol>
<li>Configure a 16-bit Timer to <strong>CTC</strong> mode</li>
<li>Select the right prescaling</li>
<li>Add a RC low pass filter to the output and voltage divider</li>
</ol>

<h2>Configure a 16-bit Timer to <strong>CTC</strong> mode</h2>

<p>Assuming I'm using <strong>Timer 1</strong> and <strong>OCR1A</strong>:</p>

<pre><code>TCCR1A |= (1&lt;&lt;COM1A0); // Toggle OC1A on match
TCCR1B |= (1&lt;&lt;WGM12); // Clear to Compare mode
TCCR1B |= (1&lt;&lt;CS10); // No prescale
</code></pre>

<h2>Select the right prescaling</h2>

<p>In case you're wondering, prescales are used when the MCU clock is much faster than the output you desire. 
Without prescaling, the highest frequency is 16MHz/2 = 8MHz, and the lowest frequency would be 8MHz / 2^16 = 122Hz . Which covers the range of frequencies that we want.</p>

<p>Setting OCR1A value to 80 gives you a frequency of 100kHz
Setting OCR1A value to 2667 gives you a frequency of 2.9996kHz</p>

<p>You can then control the chirp like so:</p>

<pre><code>// Linear rise in wave period
int x = 10;
for (int x=80; x &lt; 2668; ++x){
  OCR1A = x; 
  delay(10); // 10ms delay
}
</code></pre>

<h2>Add a RC low pass filter to the output and voltage divider</h2>

<p>Making the perfect sine waves may be too troublesome, so we'll resort to the poor man's sine wave. </p>

<p>Here's the <a href="http://www.ti.com/lit/an/sbfa003/sbfa003.pdf" rel="nofollow">poor man's implementation</a> by TI (still require quite a few parts.)</p>

<p>Personally, I'm cheap so I'd go for the <a href="http://www.wenzel.com/documents/waveform.html" rel="nofollow">RLC approach</a>. ;-)</p>
