Проход по ссылкам навигацииГлавная : Статьи :

DDS-генератор синусоидального сигнала

DDS-генератор синусоидального сигнала

Авто термометр аналоговый В данном Http://radio-master.net/Articles.aspx?kID=84080 проекте рассмотрим изготовление генератора G407u аналоги синусоидального сигнала Авто термометр аналоговый при помощи метода Splan на андроид lay6 прямого синтеза Схема УКВ приемника на частоте 88-108 МГц (DDS-метод). Для Авто термометр аналоговый реализации этого Http://radio-master.net/Articles.aspx?kID=84080 проекта нам не G407u аналоги потребуется какого-либо дополнительного оборудования Авто термометр аналоговый кроме самого контроллера Arduino. Splan на андроид lay6 Частотный диапазон генератора Авто термометр аналоговый от Схема УКВ приемника на частоте 88-108 МГц 0 до 16 кГц, с Авто термометр аналоговый точностью Авто термометр аналоговый до 1 Http://radio-master.net/Articles.aspx?kID=84080 мкГц! Данное устройство может G407u аналоги пригодится не Авто термометр аналоговый только для генерирования Splan на андроид lay6 звуковых сигналов, Схема УКВ приемника на частоте 88-108 МГц но в Авто термометр аналоговый тестовом и Http://radio-master.net/Articles.aspx?kID=84080 измерительном оборудовании радиолюбителя. G407u аналоги Например в телекоммуникационном оборудовании Авто термометр аналоговый DDS генератор можно использовать Splan на андроид lay6 для ЧМ и Авто термометр аналоговый ФМ Схема УКВ приемника на частоте 88-108 МГц модуляции (FSK и PSK).

Авто термометр аналоговый


DDS-метод

Авто термометр аналоговый В Авто термометр аналоговый программной части Http://radio-master.net/Articles.aspx?kID=84080 проекта, для реализации DDS G407u аналоги метода, нам Авто термометр аналоговый понадобится 4 вещи:
Splan на андроид lay6 аккумулятор и Схема УКВ приемника на частоте 88-108 МГц tuning word, Авто термометр аналоговый который в Http://radio-master.net/Articles.aspx?kID=84080 нашем случае состоит G407u аналоги из двух long integer Авто термометр аналоговый переменных;
таблица значений синусоидального Splan на андроид lay6 сигнала (один период);
Авто термометр аналоговый цифро-аналоговый Схема УКВ приемника на частоте 88-108 МГц преобразователь, который обеспечивается внутренним ШИМ Авто термометр аналоговый Arduino Авто термометр аналоговый (analogWrite);
генератор Http://radio-master.net/Articles.aspx?kID=84080 тактовых импульсов (используем внутренний G407u аналоги hard-таймер от Авто термометр аналоговый ATMega).
Большинство значащих Splan на андроид lay6 байт аккумулятор Схема УКВ приемника на частоте 88-108 МГц используется для Авто термометр аналоговый адресов таблицы Http://radio-master.net/Articles.aspx?kID=84080 синусоидального сигнала. Весь G407u аналоги циклический процесс, работает по Авто термометр аналоговый прерыванию от внутреннего тактового Splan на андроид lay6 генератора.

Программное обеспечение

Авто термометр аналоговый Для Схема УКВ приемника на частоте 88-108 МГц работы данного скетча на Arduino Авто термометр аналоговый Diecimila Авто термометр аналоговый или Duemilenove Http://radio-master.net/Articles.aspx?kID=84080 подключите потенциометр к аналоговому G407u аналоги выводу 0 Авто термометр аналоговый и к GND Splan на андроид lay6 и +5В. Схема УКВ приемника на частоте 88-108 МГц Выход генератора Авто термометр аналоговый находится на Http://radio-master.net/Articles.aspx?kID=84080 выводе 11, куда G407u аналоги вы можете подключить активные Авто термометр аналоговый колонки, или ФНЧ фильтр Splan на андроид lay6 описанный ниже.

/Авто термометр аналоговый Схема УКВ приемника на частоте 88-108 МГц *
 *
 * DDS Sine Generator mit Авто термометр аналоговый ATMEGS Авто термометр аналоговый 168
 * Http://radio-master.net/Articles.aspx?kID=84080 Timer2 generates the  31250 G407u аналоги KHz Clock Авто термометр аналоговый Interrupt
 *
 * Splan на андроид lay6 KHM 2009 Схема УКВ приемника на частоте 88-108 МГц /  Martin Авто термометр аналоговый Nawrath
 * Http://radio-master.net/Articles.aspx?kID=84080 Kunsthochschule fuer Medien G407u аналоги Koeln
 * Academy of Авто термометр аналоговый Media Arts Cologne
 
 */
 
Splan на андроид lay6 #include "avr/pgmspace.h"
 
Авто термометр аналоговый // Схема УКВ приемника на частоте 88-108 МГц table of 256 sine values Авто термометр аналоговый / Авто термометр аналоговый one sine Http://radio-master.net/Articles.aspx?kID=84080 period / stored in G407u аналоги flash memory
Авто термометр аналоговый PROGMEM  prog_uchar sine256[]  Splan на андроид lay6 = {
  Схема УКВ приемника на частоте 88-108 МГц 127,130,Авто термометр аналоговый 133,136,Http://radio-master.net/Articles.aspx?kID=84080 139,143,146,G407u аналоги 149,152,155,158,Авто термометр аналоговый 161,164,167,170,Splan на андроид lay6 173,176,178,Авто термометр аналоговый 181,Схема УКВ приемника на частоте 88-108 МГц 184,187,190,192,195,Авто термометр аналоговый 198,Авто термометр аналоговый 200,203,Http://radio-master.net/Articles.aspx?kID=84080 205,208,210,212,G407u аналоги 215,217,Авто термометр аналоговый 219,221,223,Splan на андроид lay6 225,227,Схема УКВ приемника на частоте 88-108 МГц 229,231,Авто термометр аналоговый 233,234,Http://radio-master.net/Articles.aspx?kID=84080 236,238,239,G407u аналоги 240,
  242,243,244,Авто термометр аналоговый 245,247,248,Splan на андроид lay6 249,249,250,251,Авто термометр аналоговый Схема УКВ приемника на частоте 88-108 МГц 252,252,253,253,253,Авто термометр аналоговый Авто термометр аналоговый 254,Http://radio-master.net/Articles.aspx?kID=84080 254,254,254,254,254,254,G407u аналоги 253,253,253,Авто термометр аналоговый 252,252,251,Splan на андроид lay6 250,Схема УКВ приемника на частоте 88-108 МГц 249,249,248,Авто термометр аналоговый 247,245,Http://radio-master.net/Articles.aspx?kID=84080 244,243,242,G407u аналоги 240,239,238,236,Авто термометр аналоговый 234,233,231,229,Splan на андроид lay6 227,225,223,
  Авто термометр аналоговый 221,Схема УКВ приемника на частоте 88-108 МГц 219,217,215,212,210,Авто термометр аналоговый 208,Авто термометр аналоговый 205,203,Http://radio-master.net/Articles.aspx?kID=84080 200,198,195,192,G407u аналоги 190,187,Авто термометр аналоговый 184,181,178,Splan на андроид lay6 176,173,Схема УКВ приемника на частоте 88-108 МГц 170,167,Авто термометр аналоговый 164,161,Http://radio-master.net/Articles.aspx?kID=84080 158,155,152,G407u аналоги 149,146,143,139,Авто термометр аналоговый 136,133,130,127,Splan на андроид lay6 124,121,118,Авто термометр аналоговый 115,Схема УКВ приемника на частоте 88-108 МГц 111,108,105,102,99,Авто термометр аналоговый 96,Авто термометр аналоговый 93,90,Http://radio-master.net/Articles.aspx?kID=84080 87,84,81,78,
  G407u аналоги 76,73,Авто термометр аналоговый 70,67,64,Splan на андроид lay6 62,59,Схема УКВ приемника на частоте 88-108 МГц 56,54,Авто термометр аналоговый 51,49,Http://radio-master.net/Articles.aspx?kID=84080 46,44,42,G407u аналоги 39,37,35,33,Авто термометр аналоговый 31,29,27,25,Splan на андроид lay6 23,21,20,Авто термометр аналоговый 18,Схема УКВ приемника на частоте 88-108 МГц 16,15,14,12,11,Авто термометр аналоговый 10,Авто термометр аналоговый 9,7,Http://radio-master.net/Articles.aspx?kID=84080 6,5,5,4,G407u аналоги 3,Авто термометр аналоговый 2,2,Splan на андроид lay6 1,1,1,Схема УКВ приемника на частоте 88-108 МГц 0,Авто термометр аналоговый 0,Http://radio-master.net/Articles.aspx?kID=84080 0,0,0,0,0,G407u аналоги 1,1,1,2,2,Авто термометр аналоговый 3,4,5,5,Splan на андроид lay6 6,7,9,Авто термометр аналоговый 10,Схема УКВ приемника на частоте 88-108 МГц 11,12,14,15,16,Авто термометр аналоговый 18,Авто термометр аналоговый 20,21,Http://radio-master.net/Articles.aspx?kID=84080 23,25,27,29,G407u аналоги 31,
  33,Авто термометр аналоговый 35,37,39,Splan на андроид lay6 42,44,Схема УКВ приемника на частоте 88-108 МГц 46,49,Авто термометр аналоговый 51,54,Http://radio-master.net/Articles.aspx?kID=84080 56,59,62,G407u аналоги 64,67,70,73,Авто термометр аналоговый 76,78,81,84,Splan на андроид lay6 87,90,93,Авто термометр аналоговый 96,Схема УКВ приемника на частоте 88-108 МГц 99,102,105,108,111,Авто термометр аналоговый 115,Авто термометр аналоговый 118,121,Http://radio-master.net/Articles.aspx?kID=84080 124
 
};
#define cbi(sfr, G407u аналоги bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define Splan на андроид lay6 sbi(sfr, bit) Схема УКВ приемника на частоте 88-108 МГц (_SFR_BYTE(sfr) |= Авто термометр аналоговый _BV(bit))
 
int Http://radio-master.net/Articles.aspx?kID=84080 ledPin = 13;                 G407u аналоги // LED pin 7
Авто термометр аналоговый int testPin = 7;
Splan на андроид lay6 int t2Pin = Авто термометр аналоговый 6;
Схема УКВ приемника на частоте 88-108 МГц byte bb;
 
double dfreq;
// Авто термометр аналоговый const Авто термометр аналоговый double refclk=31372.Http://radio-master.net/Articles.aspx?kID=84080 549;  // =16MHz / G407u аналоги 510
const Авто термометр аналоговый double refclk=31376.6;      Splan на андроид lay6 // measured
 
Схема УКВ приемника на частоте 88-108 МГц // variables Авто термометр аналоговый used inside Http://radio-master.net/Articles.aspx?kID=84080 interrupt service declared G407u аналоги as voilatile
volatile byte Авто термометр аналоговый icnt;              // var inside Splan на андроид lay6 interrupt
volatile byte Авто термометр аналоговый icnt1;             Схема УКВ приемника на частоте 88-108 МГц // var inside interrupt
volatile Авто термометр аналоговый byte Авто термометр аналоговый c4ms;              // Http://radio-master.net/Articles.aspx?kID=84080 counter incremented all 4ms
G407u аналоги volatile unsigned Авто термометр аналоговый long phaccu;   // Splan на андроид lay6 pahse accumulator
Схема УКВ приемника на частоте 88-108 МГц volatile unsigned Авто термометр аналоговый long tword_m;  Http://radio-master.net/Articles.aspx?kID=84080 // dds tuning G407u аналоги word m
 
void setup()
Авто термометр аналоговый {
  pinMode(ledPin, OUTPUT);      // Splan на андроид lay6 sets the digital Авто термометр аналоговый pin Схема УКВ приемника на частоте 88-108 МГц as output
  Serial.begin(115200);        // Авто термометр аналоговый connect Авто термометр аналоговый to the Http://radio-master.net/Articles.aspx?kID=84080 serial port
  Serial.println("DDS G407u аналоги Test");
 
  pinMode(6, Авто термометр аналоговый OUTPUT);      // sets Splan на андроид lay6 the digital Схема УКВ приемника на частоте 88-108 МГц pin as Авто термометр аналоговый output
  pinMode(7, Http://radio-master.net/Articles.aspx?kID=84080 OUTPUT);      // sets G407u аналоги the digital pin as Авто термометр аналоговый output
  pinMode(11, OUTPUT);     // Splan на андроид lay6 pin11= PWM  output Авто термометр аналоговый / Схема УКВ приемника на частоте 88-108 МГц frequency output
 
  Setup_timer2();
 
  // disable Авто термометр аналоговый interrupts Авто термометр аналоговый to avoid Http://radio-master.net/Articles.aspx?kID=84080 timing distortion
  cbi (TIMSK0,G407u аналоги TOIE0);              // Авто термометр аналоговый disable Timer0 !!! delay() Splan на андроид lay6 is now Схема УКВ приемника на частоте 88-108 МГц not available
  Авто термометр аналоговый sbi (TIMSK2,Http://radio-master.net/Articles.aspx?kID=84080 TOIE2);              // enable G407u аналоги Timer2 Interrupt
 
  dfreq=1000.0;                    Авто термометр аналоговый // initial output frequency Splan на андроид lay6 = 1000.o Авто термометр аналоговый Hz
  Схема УКВ приемника на частоте 88-108 МГц tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS Авто термометр аналоговый new Авто термометр аналоговый tuning word
 
Http://radio-master.net/Articles.aspx?kID=84080 }
void loop()
{
  G407u аналоги while(1) {
     Авто термометр аналоговый if (c4ms > Splan на андроид lay6 250) {                 Схема УКВ приемника на частоте 88-108 МГц // timer Авто термометр аналоговый / wait Http://radio-master.net/Articles.aspx?kID=84080 fou a full G407u аналоги second
      c4ms=0;
      dfreq=analogАвто термометр аналоговый Read(0);             // read Poti on analog Splan на андроид lay6 pin 0 to Авто термометр аналоговый adjust Схема УКВ приемника на частоте 88-108 МГц output frequency from 0..1023 Авто термометр аналоговый Hz
 
      Авто термометр аналоговый cbi (TIMSK2,Http://radio-master.net/Articles.aspx?kID=84080 TOIE2);              // disble Timer2 G407u аналоги Interrupt
      tword_m=pow(2,Авто термометр аналоговый 32)*dfreq/refclk;  // calulate Splan на андроид lay6 DDS new Схема УКВ приемника на частоте 88-108 МГц tuning word
      Авто термометр аналоговый sbi (TIMSK2,Http://radio-master.net/Articles.aspx?kID=84080 TOIE2);              // enable G407u аналоги Timer2 Interrupt
 
      Авто термометр аналоговый Serial.print(dfreq);
      Serial.print("  ");
      Serial.Splan на андроид lay6 println(tword_m);
    }
 
   sbi(PORTD,Авто термометр аналоговый 6); Схема УКВ приемника на частоте 88-108 МГц // Test / set PORTD,Авто термометр аналоговый 7 Авто термометр аналоговый high to Http://radio-master.net/Articles.aspx?kID=84080 observe timing with a G407u аналоги scope
   cbi(PORTD,Авто термометр аналоговый 6); // Test Splan на андроид lay6 /reset PORTD,Схема УКВ приемника на частоте 88-108 МГц 7 high Авто термометр аналоговый to observe Http://radio-master.net/Articles.aspx?kID=84080 timing with a G407u аналоги scope
  }
 }
Авто термометр аналоговый //******************************************************************
// timer2 Splan на андроид lay6 setup
// set prscaler to Авто термометр аналоговый 1, Схема УКВ приемника на частоте 88-108 МГц PWM mode to phase correct Авто термометр аналоговый PWM,  Авто термометр аналоговый 16000000/510 = Http://radio-master.net/Articles.aspx?kID=84080 31372.55 Hz clock
G407u аналоги void Setup_timer2() Авто термометр аналоговый {
 
// Timer2 Splan на андроид lay6 Clock Prescaler Схема УКВ приемника на частоте 88-108 МГц to : Авто термометр аналоговый 1
  sbi Http://radio-master.net/Articles.aspx?kID=84080 (TCCR2B, CS20);
  cbi G407u аналоги (TCCR2B, CS21);
  cbi (TCCR2B, Авто термометр аналоговый CS22);
 
  // Timer2 PWM Splan на андроид lay6 Mode set to Авто термометр аналоговый Phase Схема УКВ приемника на частоте 88-108 МГц Correct PWM
  cbi (TCCR2A, COM2A0);  Авто термометр аналоговый // Авто термометр аналоговый clear Compare Http://radio-master.net/Articles.aspx?kID=84080 Match
  sbi (TCCR2A, COM2A1);
 
  G407u аналоги sbi (TCCR2A, Авто термометр аналоговый WGM20);  // Mode Splan на андроид lay6 1  / Схема УКВ приемника на частоте 88-108 МГц Phase Correct Авто термометр аналоговый PWM
  cbi Http://radio-master.net/Articles.aspx?kID=84080 (TCCR2A, WGM21);
  cbi G407u аналоги (TCCR2B, WGM22);
}
 
Авто термометр аналоговый //******************************************************************
// Timer2 Interrupt Service Splan на андроид lay6 at 31372,550 Авто термометр аналоговый KHz Схема УКВ приемника на частоте 88-108 МГц = 32uSec
// this is Авто термометр аналоговый the Авто термометр аналоговый timebase REFCLOCK Http://radio-master.net/Articles.aspx?kID=84080 for the DDS generator
G407u аналоги // FOUT Авто термометр аналоговый = (M (REFCLK)) Splan на андроид lay6 / (2 Схема УКВ приемника на частоте 88-108 МГц exp 32)
Авто термометр аналоговый // runtime Http://radio-master.net/Articles.aspx?kID=84080 : 8 microseconds G407u аналоги ( inclusive push and Авто термометр аналоговый pop)
ISR(TIMER2_OVF_vect) {
 
  sbi(PORTD,Splan на андроид lay6 7);          Авто термометр аналоговый // Test / Схема УКВ приемника на частоте 88-108 МГц set PORTD,7 high to Авто термометр аналоговый observe Авто термометр аналоговый timing with Http://radio-master.net/Articles.aspx?kID=84080 a oscope
 
  phaccu=phaccu+tword_m; // G407u аналоги soft DDS, Авто термометр аналоговый phase accu with Splan на андроид lay6 32 bits
  Схема УКВ приемника на частоте 88-108 МГц icnt=phaccu >> Авто термометр аналоговый 24;     // Http://radio-master.net/Articles.aspx?kID=84080 use upper 8 G407u аналоги bits for phase accu Авто термометр аналоговый as frequency information
                         // Splan на андроид lay6 read value fron Авто термометр аналоговый ROM Схема УКВ приемника на частоте 88-108 МГц sine table and send to Авто термометр аналоговый PWM Авто термометр аналоговый DAC
  OCR2A=pgm_read_byte_near(sine256 Http://radio-master.net/Articles.aspx?kID=84080 + icnt);   
 
  if(icnt1++ == G407u аналоги 125) {  Авто термометр аналоговый // increment variable Splan на андроид lay6 c4ms all Схема УКВ приемника на частоте 88-108 МГц 4 milliseconds
    Авто термометр аналоговый c4ms++;
    icnt1=0;
   Http://radio-master.net/Articles.aspx?kID=84080 }  
 
 cbi(PORTD,7);            G407u аналоги // reset PORTD,7
Авто термометр аналоговый }


Результат

Ниже представлена Splan на андроид lay6 осциллограмма, на верхней Авто термометр аналоговый части Схема УКВ приемника на частоте 88-108 МГц которой изображен ШИМ-сигнал на 11 Авто термометр аналоговый выходе, Авто термометр аналоговый а в Http://radio-master.net/Articles.aspx?kID=84080 нижней части этот же G407u аналоги сигнал после Авто термометр аналоговый фильтра низких частот Splan на андроид lay6 (ФНЧ). Синусоида Схема УКВ приемника на частоте 88-108 МГц выглядит не Авто термометр аналоговый очень чистой, Http://radio-master.net/Articles.aspx?kID=84080 но это в G407u аналоги основном из-за ограниченной разрешающей Авто термометр аналоговый способности цифрового осциллографа.

Авто термометр аналоговый


Спектрограмма Splan на андроид lay6 показала неожиданно хороший Авто термометр аналоговый результат. Схема УКВ приемника на частоте 88-108 МГц Большой пик - это на Авто термометр аналоговый частоте Авто термометр аналоговый около 1000 Http://radio-master.net/Articles.aspx?kID=84080 Гц. Все нежелательные искажения G407u аналоги находятся ниже Авто термометр аналоговый 50 дБ, возникшие Splan на андроид lay6 из-за того, Схема УКВ приемника на частоте 88-108 МГц что использовался Авто термометр аналоговый 8 битный Http://radio-master.net/Articles.aspx?kID=84080 ЦАП (1/256 = G407u аналоги 48 дБ).

Авто термометр аналоговый


Выходной фильтр Авто термометр аналоговый низких частот

Для начала, Splan на андроид lay6 вы можете подсоединить Авто термометр аналоговый 11 Схема УКВ приемника на частоте 88-108 МГц пин контроллера к активным колонкам. Авто термометр аналоговый Но Авто термометр аналоговый скорее всего, Http://radio-master.net/Articles.aspx?kID=84080 вам еще понадобится ФНЧ-фильтр, G407u аналоги который также Авто термометр аналоговый будет отфильтровывать частоту Splan на андроид lay6 дискретизации 32 Схема УКВ приемника на частоте 88-108 МГц кГц. Ниже Авто термометр аналоговый представлена схема Http://radio-master.net/Articles.aspx?kID=84080 такого фильтра с G407u аналоги частотой среза 12 кГц.

Авто термометр аналоговый


Авто термометр аналоговый Аппаратная реализация DDS

Данная Splan на андроид lay6 программная реализация алгоритма Авто термометр аналоговый DDS Схема УКВ приемника на частоте 88-108 МГц имеет некоторые недостатки, связанные с Авто термометр аналоговый ограниченной Авто термометр аналоговый скоростью алгоритма Http://radio-master.net/Articles.aspx?kID=84080 программы, а также возможностями G407u аналоги микроконтроллера ATMega. Авто термометр аналоговый Специализированные DDS-микросхемы лишены Splan на андроид lay6 этих недостатков Схема УКВ приемника на частоте 88-108 МГц и покрывают Авто термометр аналоговый диапазон от Http://radio-master.net/Articles.aspx?kID=84080 0 до 100 G407u аналоги МГц.

WSPR

Извещатель о Авто термометр аналоговый прохождении слабого сигнала (Weak Splan на андроид lay6 Signal Propagation Reporter) Авто термометр аналоговый - Схема УКВ приемника на частоте 88-108 МГц программное обеспечение позволяющее передавать и Авто термометр аналоговый принимать Авто термометр аналоговый сигналы радиомаяков, Http://radio-master.net/Articles.aspx?kID=84080 задействуя не только передатчик, G407u аналоги но и Авто термометр аналоговый интернет. При помощи Splan на андроид lay6 данного DDS-генератора Схема УКВ приемника на частоте 88-108 МГц можно генерировать Авто термометр аналоговый 4 тоновых Http://radio-master.net/Articles.aspx?kID=84080 последовательности частотой 1497.G407u аналоги 8 1499.3 1500.Авто термометр аналоговый 7 1502.2 Гц.

Splan на андроид lay6 Источник: http://interface.khm.Авто термометр аналоговый de/