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

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

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

Pic16f628a как включить внутренний генератор В данном Электронный выключатель на не555 проекте рассмотрим изготовление генератора Генератор на 300 кгц синус синусоидального сигнала Pic16f628a как включить внутренний генератор при помощи метода Аккумулятор tehaihua 6 вольт прямого синтеза Синус генератор на pic (DDS-метод). Для Pic16f628a как включить внутренний генератор реализации этого Электронный выключатель на не555 проекта нам не Генератор на 300 кгц синус потребуется какого-либо дополнительного оборудования Pic16f628a как включить внутренний генератор кроме самого контроллера Arduino. Аккумулятор tehaihua 6 вольт Частотный диапазон генератора Pic16f628a как включить внутренний генератор от Синус генератор на pic 0 до 16 кГц, с Pic16f628a как включить внутренний генератор точностью Pic16f628a как включить внутренний генератор до 1 Электронный выключатель на не555 мкГц! Данное устройство может Генератор на 300 кгц синус пригодится не Pic16f628a как включить внутренний генератор только для генерирования Аккумулятор tehaihua 6 вольт звуковых сигналов, Синус генератор на pic но в Pic16f628a как включить внутренний генератор тестовом и Электронный выключатель на не555 измерительном оборудовании радиолюбителя. Генератор на 300 кгц синус Например в телекоммуникационном оборудовании Pic16f628a как включить внутренний генератор DDS генератор можно использовать Аккумулятор tehaihua 6 вольт для ЧМ и Pic16f628a как включить внутренний генератор ФМ Синус генератор на pic модуляции (FSK и PSK).

Pic16f628a как включить внутренний генератор


DDS-метод

Pic16f628a как включить внутренний генератор В Pic16f628a как включить внутренний генератор программной части Электронный выключатель на не555 проекта, для реализации DDS Генератор на 300 кгц синус метода, нам Pic16f628a как включить внутренний генератор понадобится 4 вещи:
Аккумулятор tehaihua 6 вольт аккумулятор и Синус генератор на pic tuning word, Pic16f628a как включить внутренний генератор который в Электронный выключатель на не555 нашем случае состоит Генератор на 300 кгц синус из двух long integer Pic16f628a как включить внутренний генератор переменных;
таблица значений синусоидального Аккумулятор tehaihua 6 вольт сигнала (один период);
Pic16f628a как включить внутренний генератор цифро-аналоговый Синус генератор на pic преобразователь, который обеспечивается внутренним ШИМ Pic16f628a как включить внутренний генератор Arduino Pic16f628a как включить внутренний генератор (analogWrite);
генератор Электронный выключатель на не555 тактовых импульсов (используем внутренний Генератор на 300 кгц синус hard-таймер от Pic16f628a как включить внутренний генератор ATMega).
Большинство значащих Аккумулятор tehaihua 6 вольт байт аккумулятор Синус генератор на pic используется для Pic16f628a как включить внутренний генератор адресов таблицы Электронный выключатель на не555 синусоидального сигнала. Весь Генератор на 300 кгц синус циклический процесс, работает по Pic16f628a как включить внутренний генератор прерыванию от внутреннего тактового Аккумулятор tehaihua 6 вольт генератора.

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

Pic16f628a как включить внутренний генератор Для Синус генератор на pic работы данного скетча на Arduino Pic16f628a как включить внутренний генератор Diecimila Pic16f628a как включить внутренний генератор или Duemilenove Электронный выключатель на не555 подключите потенциометр к аналоговому Генератор на 300 кгц синус выводу 0 Pic16f628a как включить внутренний генератор и к GND Аккумулятор tehaihua 6 вольт и +5В. Синус генератор на pic Выход генератора Pic16f628a как включить внутренний генератор находится на Электронный выключатель на не555 выводе 11, куда Генератор на 300 кгц синус вы можете подключить активные Pic16f628a как включить внутренний генератор колонки, или ФНЧ фильтр Аккумулятор tehaihua 6 вольт описанный ниже.

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


Результат

Ниже представлена Аккумулятор tehaihua 6 вольт осциллограмма, на верхней Pic16f628a как включить внутренний генератор части Синус генератор на pic которой изображен ШИМ-сигнал на 11 Pic16f628a как включить внутренний генератор выходе, Pic16f628a как включить внутренний генератор а в Электронный выключатель на не555 нижней части этот же Генератор на 300 кгц синус сигнал после Pic16f628a как включить внутренний генератор фильтра низких частот Аккумулятор tehaihua 6 вольт (ФНЧ). Синусоида Синус генератор на pic выглядит не Pic16f628a как включить внутренний генератор очень чистой, Электронный выключатель на не555 но это в Генератор на 300 кгц синус основном из-за ограниченной разрешающей Pic16f628a как включить внутренний генератор способности цифрового осциллографа.

Pic16f628a как включить внутренний генератор


Спектрограмма Аккумулятор tehaihua 6 вольт показала неожиданно хороший Pic16f628a как включить внутренний генератор результат. Синус генератор на pic Большой пик - это на Pic16f628a как включить внутренний генератор частоте Pic16f628a как включить внутренний генератор около 1000 Электронный выключатель на не555 Гц. Все нежелательные искажения Генератор на 300 кгц синус находятся ниже Pic16f628a как включить внутренний генератор 50 дБ, возникшие Аккумулятор tehaihua 6 вольт из-за того, Синус генератор на pic что использовался Pic16f628a как включить внутренний генератор 8 битный Электронный выключатель на не555 ЦАП (1/256 = Генератор на 300 кгц синус 48 дБ).

Pic16f628a как включить внутренний генератор


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

Для начала, Аккумулятор tehaihua 6 вольт вы можете подсоединить Pic16f628a как включить внутренний генератор 11 Синус генератор на pic пин контроллера к активным колонкам. Pic16f628a как включить внутренний генератор Но Pic16f628a как включить внутренний генератор скорее всего, Электронный выключатель на не555 вам еще понадобится ФНЧ-фильтр, Генератор на 300 кгц синус который также Pic16f628a как включить внутренний генератор будет отфильтровывать частоту Аккумулятор tehaihua 6 вольт дискретизации 32 Синус генератор на pic кГц. Ниже Pic16f628a как включить внутренний генератор представлена схема Электронный выключатель на не555 такого фильтра с Генератор на 300 кгц синус частотой среза 12 кГц.

Pic16f628a как включить внутренний генератор


Pic16f628a как включить внутренний генератор Аппаратная реализация DDS

Данная Аккумулятор tehaihua 6 вольт программная реализация алгоритма Pic16f628a как включить внутренний генератор DDS Синус генератор на pic имеет некоторые недостатки, связанные с Pic16f628a как включить внутренний генератор ограниченной Pic16f628a как включить внутренний генератор скоростью алгоритма Электронный выключатель на не555 программы, а также возможностями Генератор на 300 кгц синус микроконтроллера ATMega. Pic16f628a как включить внутренний генератор Специализированные DDS-микросхемы лишены Аккумулятор tehaihua 6 вольт этих недостатков Синус генератор на pic и покрывают Pic16f628a как включить внутренний генератор диапазон от Электронный выключатель на не555 0 до 100 Генератор на 300 кгц синус МГц.

WSPR

Извещатель о Pic16f628a как включить внутренний генератор прохождении слабого сигнала (Weak Аккумулятор tehaihua 6 вольт Signal Propagation Reporter) Pic16f628a как включить внутренний генератор - Синус генератор на pic программное обеспечение позволяющее передавать и Pic16f628a как включить внутренний генератор принимать Pic16f628a как включить внутренний генератор сигналы радиомаяков, Электронный выключатель на не555 задействуя не только передатчик, Генератор на 300 кгц синус но и Pic16f628a как включить внутренний генератор интернет. При помощи Аккумулятор tehaihua 6 вольт данного DDS-генератора Синус генератор на pic можно генерировать Pic16f628a как включить внутренний генератор 4 тоновых Электронный выключатель на не555 последовательности частотой 1497.Генератор на 300 кгц синус 8 1499.3 1500.Pic16f628a как включить внутренний генератор 7 1502.2 Гц.