Генератор сигналов на базе Arduino Uno R3

Код товара: Genie v1.0
Доступность: Нет в наличии
Артикул: 1000-1251

  • 620.00грн




 Данный комплект является простым в сборке генератором синусоидальных и прямоугольных сигналов в диапазононе частот от 0 до 40МГц. Управляется генератор очень просто -  с помощью четырех кнопок - две (вверх/вниз) для грубой настройки, и две (влево/вправо) - для точной. Шаг настройки изменяется в зависимости от текущей частоты.

 Собрав генератор можно получить полезное устройство, а также освоить программирование Arduino, в том числе работу с библиотекой LiquidCrystal и подключение нескольких кнопок на один вход платы Arduino. 

 Комплект состоит из платы Arduino Uno R3 , шилда DFRobot LCD Keypad Shield, модуля генератора сигналов AD9850 DDS и необходимых проводов.

  Программная часть генератора написана на языке Wiring, а аппаратная - из легко соединяемых отдельных модулей, благодаря чему генератор сигналов на базе Arduino сможет сделать своими руками даже человек без глубоких познаний в электронике и программировании.

Комплектация:

  • Arduino Uno R3  в антистатической упаковке
  • шилд DFRobot LCD Keypad Shield 
  • модуль генератора сигналов AD9850 DDS 
  • 8 проводников для соединения модулей
  • USB кабель

Инструкция по сборке:

1) Скачайте и установите Arduino IDE (рекомендуем версию 1.0.4). На указанном сайте также можно найти информацию по первичной настройке и работе с IDE, а также ответы на основные вопросы по работе с ней.

2)Подключите к компьтеру плату Arduino Uno и загрузите в нее следующий скетч:















#include <LiquidCrystal.h> // Подключение библиотек
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Инициализация LCD с указанием пинов
float freq      = 10000; // Оглашение переменных -- Частота
float bigStep = 1000; // Шаг изменения частоты при нажатии вверх/вниз
float littleStep = 10; // Шаг изменения частоты при нажатии вправо/влево 
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0 // Создание директив для кнопок
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
#define W_CLK 15 // Пин A1 Arduino - подключен к CLK
#define FQ_UD 16 // Пин A2 Arduino - подключен к FQ (FU)
#define DATA 17  // Пин A3 Arduino - подключен к DATA
#define RESET 18 // Пин A4 Arduino - подключен к RST
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
//------------------------------------------------------ 
int read_LCD_buttons(){ // Функция считывания нажатия кнопок
 adc_key_in = analogRead(0);     
 if (adc_key_in > 1000) return btnNONE; 
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 150)  return btnUP; 
 if (adc_key_in < 315)  return btnDOWN; 
 if (adc_key_in < 600)  return btnLEFT; 
 if (adc_key_in < 850)  return btnSELECT;  
 return btnNONE;}
//-------------------------------------------------------
void tfr_byte(byte data){ // Функция побитной отправки байта
 for (int i=0; i<8; i++, data>>=1) { // данных в модуль генератора
  digitalWrite(DATA, data & 0x01);
  pulseHigh(W_CLK);}} // Подача импульса на CLK после каждого бита
//------------------------------------------------------- 
void sendFrequency(double frequency) { // Преобразование и отправка 
  int32_t freq = frequency * 4294967295/125000000;  // значения частоты
  for (int b=0; b<4; b++, freq>>=8) {tfr_byte(freq & 0xFF);}
  tfr_byte(0x000);   // Отправка завершательного контрольного байта
  pulseHigh(FQ_UD);}  // Обновление частоты генератора
//---------------------------------------------------- 
void setup()
{
 lcd.begin(16, 2); // Старт библиотеки. Указанием количества символов и строк
 pinMode(FQ_UD, OUTPUT);
 pinMode(W_CLK, OUTPUT);
 pinMode(DATA, OUTPUT);
 pinMode(RESET, OUTPUT);
 pulseHigh(RESET); // Отправка импульсов для запуска модуля генератора
 pulseHigh(W_CLK);
 pulseHigh(FQ_UD); 
}
//----------------------------------------------------  
void loop()
{
 lcd.setCursor(0,0); // Далее вывод текущего значения частоты
 lcd.print("Freq: ");
 lcd.setCursor(6,0);
 lcd.print("           ");  
 lcd.setCursor(6,0);
 if (freq<1000){lcd.print(freq); 
 lcd.print("Hz");}
 if ((freq>=1000)&&(freq<1000000)){lcd.print(freq / 1000); 
 lcd.print("kHz");}
 if ((freq>=1000000)&&(freq<50000000)){lcd.print(freq / 1000000);
 lcd.print("MHz");}
 lcd.setCursor(0,1);
 lcd.print("   Genie v1.0");  
 if (freq<100){bigStep = 10; // Определение шага грубой и точной
 littleStep = 1;} // настройки в зависимости от частоты
 if ((freq>=100)&&(freq<1000)){bigStep = 100;
 littleStep = 1;}
 if ((freq>=1000)&&(freq<10000)){bigStep = 1000;
 littleStep = 10;}
 if ((freq>=10000)&&(freq<100000)){bigStep = 10000;
 littleStep = 100;}
 if ((freq>=100000)&&(freq<1000000)){bigStep = 100000;
 littleStep = 1000;}
 if ((freq>=1000000)&&(freq<10000000)){bigStep = 1000000;
 littleStep = 10000;}
 if ((freq>=10000000)&&(freq<40000000)){bigStep = 10000000;
 littleStep = 100000;}
 lcd_key = read_LCD_buttons();  // Считывание клавиш
 switch (lcd_key) // Далее обработка нажатий клавиш          
 {
   case btnRIGHT:
     {freq += littleStep;
     break;}
   case btnLEFT:
     {freq -= littleStep;
     break;}
   case btnUP:
     {freq += bigStep;
     break;}
   case btnDOWN:
     {if (freq == bigStep){freq -= (bigStep/10);}  
     else {freq -= bigStep;}
     break;}
   case btnSELECT:
     {break;}
   case btnNONE:
     {break;}
 }
 if (freq<1) freq=1; // Ограничение значений частоты
 if (freq>40000000) freq=40000000;
 sendFrequency(freq);  // Вызов функции отправки частоты
 delay (200); // Пауза 200 мс
}

3)  Если после загрузки скетча Вы получили сообщение "Done uploading.", значит все сделано правильно и можна приступать к следующему этапу - соединению модулей. Keypad Shield нужно просто втыкнуть поверх Arduino Uno, а модуль генератора подключить с помощью идущих в комплекте проводников по следующей схеме:

Выводы Arduino                Выводы модуля генератора
+5V VCC
GND GND
A1 W_CLK
A2 FU_UD
A3 DATA
A4 RESET

 

Выходной сигнал снимается с пинов модуля генератора QOUT1, QOUT2(прямоугольный), ZOUT1 и ZOUT2(синусоидальный) 

4) После сборки еще раз проверьте правильность подключения, если все правильно - на устройство можно подавать питание.

5) Через несколько секунд появится значение частоты по умолчанию - 10 кГц, которое можно изменить нажатиями кнопок вверх/вниз и вправо/влево. Устройство готово к работе.


 

Внимание: HTML не поддерживается! Используйте обычный текст!