There is a simple signal generator kit in our store, it selling well ,but it’s source is not released so we can’t modify it for more DIY.
The principle of this signal generator is like a 8bit DAC, so just need some resistor we can build it on Arduino . We make a prototype on the Arduino prototype shield :
The schematic is very sample .Note that one thing, the higher precision resistors you used , the better effect.
How to write the code ? On the contrary of using a ADC , the same 8bit for a voltage express, 0xFF means 5V(Depend on your I/0 voltage level) and 0×00 means 0V, VCC divided into 256 , each represents a voltage value.
For the sine wave , we could build a voltage table for the waveform , divided a cycle into 256 :
unsigned char sin_tab [256] = {
127,130,133,136,139,142,145,148,151,154,157,160,164,166,169,172,175,178,181,184,187,189,192,195,
197,200,202,205,207,210,212,214,217,219,221,223,225,227,229,231,232,234,236,237,239,240,242,243,
244,245,246,247,248,249, 250,251,251,252,252,253,253,253,253,253,254,253,253,253,253,252,252,251,
251,250,249,249,248,247,246,245,243,242,241,239,238,236,235,233,231,230, 228,226,224,222,220,218,
215,213,211,209,206,204,201,199,196,193,191,188,185,182,180,177,174,171,168,165,162,159,156,153,
150,147,144,141,137,134,131,128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76,
73,71,68,65,62,60,57,54,52,49,47,44,42,40,38,35,33,31,29,27,25,23,22,20,18,17,15,14,
12,11,10,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,1,1,2,2,3,4,5,6,7,8,9,10,11,13,14,16,17,19,21,22,24,
26,28,30,32,34,36,39,41,43,46,48,51,53,56,58,61,64,66,69,72,75,78,81,84,87,89,93,96,
99,102,105,108,111,114,117,120,123,127};
Of cause , it can be divided it into 512,1024, the more subdivision the better effect.
Try just put the value of this table into the I/O register, you can see a nice sine waveform in your DSO:
It’s easier to generate a triangle wave than sine wave. Just make the I/O output since the increase in proportion, you can see the waveform like below:
It’s the easiest way to generate the square wave ; ) Just pull all pins high and low alternating.
We can generate many special waveform if we want:
It just a simple signal generator , so you do not expect the waveform of good quality. It’s also hard to make the wave in fixed frequency, but it don’t means you can’t . In this shield we add a button for changing the different waveform , and maybe you can add one more for frequency modulation – just modify the interval of extend the output , you can change the frequency.
Get more latest information about this KIT and the code , you can login our iforum.
You may also be interested in these posts:
Responses to “Arduino Signal Generator Build On Protoshield”
Leave a Reply