| Ваш IP: 54.158.248.112 | Online(20) - гости: 11, боты: 9 | Загрузка сервера: 3.37 ::::::::::::

Генератор прямоугольных импульсов на Arduino

Генератор прямоугольных импульсов в своей основе использует библиотеку TimerOne, возможности библиотеки позволяют генерировать сигнал ШИМ на выводе 9 в диапазоне от 1 мкс до 8,3 сек, в частности в генераторе диапазон ограничен до 200 мс (5 Гц), при желании диапазон можно увеличить до 8,3 сек. Так можно регулировать скважность от 0 до 1023 единиц (10-бит), что соответствует 0 и 100%.

В генераторе импульсов имеется возможность регулировки периода следования импульсов при помощи кнопок подключенных к цифровым входам 6 и 7 Arduino. 13 вход позволяет регулировать скважность (коэффициент заполнения). Возможно кнопочное управление не самое разумное решение, но на данный момент реализована только такая функция.

Для удобства показания длительности и скважности выведены на первый ряд индикатора LCD 16×2, во втором ряду выведены показания частоты. Важно помнить что минимальный шаг регулировки периода следования импульсов 1 мкс, поэтому частота будет меняться дискретно, например 1 мкс это 1 МГц, 2 мкс — 500 кГц, 3 мкс это 333,333 Гц и так далее, по мере уменьшения частоты увеличивается плавность ее регулировки.

//  rcl-radio.ru
//  Генератор прямоугольных имульсов, период следования импульсов от 1 мкс до 200 мс (1 МГц...5 Гц)
#include <TimerOne.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// RS,E,D4,D5,D6,D7
unsigned long t=1000,f,k=512;// по умолчанию 1000 мкс (1000 Гц), меандр, длительность имульса равна скважности k=512 (50%)
byte k1,kn,kn1,kn2;
int drive,drive0;

void setup()
{ 
  lcd.begin(16, 2);// LCD 16X2
  pinMode(10, OUTPUT);
  pinMode(6,INPUT);// кнопка на входе 6
  pinMode(7,INPUT);// кнопка на входе 7
  pinMode(13,INPUT);// кнопка на входе 13
}
void loop()
{
  Timer1.initialize(t); // период    
  Timer1.pwm(9, k); // k - коэффициент заполнения 0-1023. Сигнал снимаем с выхода 9
  kn=digitalRead(6); // кнопка вход 6 (- период импульса)
  kn1=digitalRead(7);// кнопка вход 7 (+ период импульса)
  kn2=digitalRead(13);// кнопка вход 13 (+ по кругу коэффициент заполнения)

  if(kn==HIGH){ // убавление периода
    drive++;
    if(drive<30){ 
      t=t-1;  
    }
    // если долго держат кнопку происходит ускорение коррекции периода импульса х10 х100 х1000
    else if(drive>30 && drive<60 ){ 
      t=t-10; 
    }
    else if(drive>=60 && drive<100){
      t=t-100;
    }
    else if(drive>=100){
      t=t-1000;
    }
  }
  else{
    drive=0;
  }

  if(kn1==HIGH){// добавление периода
    drive0++;
    if(drive0<30){
      t=t+1; 
      // если долго держат кнопку происходит ускорение коррекции периода х10 х100 х1000
    }
    else if(drive0>30 && drive0<60 ){ 
      t=t+10; 
    }
    else if(drive0>=60 && drive0<100){
      t=t+100;
    }
    else if(drive0>=100){
      t=t+1000;
    }
  } 
  else{
    drive0=0;
  }
  if(t==0 || t>300000){ // ограничение длительности импульса по минимому, если 0 мкс или больше 300 мс (3,33 Гц), то период равен 1 мкс
    t=1;
  }
  if(t>200000 && t<300000){ // ограничение длительности импульса по максимому, если больше 200 мс, но меньше 300 мс (3,33 Гц), то период равен 200 мс (5 Гц)
    t=200000;
  } 
  f=1000000/t; // расчет частоты
  k1=k*100/1024; // расчет % коэффициента заполнения

  if(kn2==HIGH){// кнопка регулировки коэффициента заполнения (по кругу от 50 до 100%, далее от 0 до 100%)
    k=k+16;// шаг 16 из 1024 (можно сделать 8 для более плавной регулировки)
  }
  if(k==1024){
    k=0;
  }
// вывод информации на индикатор
  lcd.setCursor(0,0); 
  lcd.print("T=");
  lcd.print(t);
  lcd.print(" us");
  lcd.setCursor(12,0);
  lcd.print(k1);
  lcd.print(" %");
  lcd.setCursor(0,1); 
  lcd.print("F=");
  lcd.print(f);
  lcd.print(" Hz");
  delay(300);
  lcd.setCursor(0,0); 
  lcd.print("                ");
  lcd.setCursor(0,1); 
  lcd.print("                ");
}

Генератор нуждается в доработке, поэтому со временем поменяются органы регулировки, добавятся новые функции.

 

Добавить комментарий

Случайные статьи

  • Сторожевое устройство

    Для защиты дачного участка от непрошенных гостей, для ограждения опасных объектов можно использовать сторожевое устройство. Схема такого устройства (первый вариант) показана на рис. Объект, нуждающийся в охране, окружают по периметру медным обмоточным проводом диаметром 0,1… 0,3 мм. Этот охранный шлейф может быть прикреплен к забору или к вбитым в землю …Подробнее...
  • Регулируемый источник питания с защитой по току

    На рис.1 изображена схема стабилизатора, от которой можно питать не только автомобильный магнитофон, но и любую радиолюбительскую конструкцию с напряжением от 1 до 35 В и которой не страшны большие токи нагрузки, поскольку введена токовая защита. Регулятор напряжения собран на микросхеме DA1, которая дополнена мощным транзистором, который может отдать в …Подробнее...
  • Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A

    Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A

    Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A — специально разработанные микросхемы для DC-DC преобразователей с минимальным количеством внешних элементов. Технические параметры Диапазон входных напряжений 3…40 В Диапазон выходных напряжений 1.25…40 В Максимальный выходной ток 1.5 А Рабочая частота 33 кГц На рисунках показаны типовые схемы подключения регуляторов напряжения, повышающий, понижающий и инверсный. Основные элементы …Подробнее...
  • Переключатель гирлянд с плавным изменением яркости

    Предложенный переключатель гирлянд собран на 2-х микросхемах. На DD1 выполнен симметричный мультивибратор, частоту которого можно регулировать в пределах от 195 до 205 Гц переменным резистором R2. Через инверторы DD1.3 DD1.4 прямоугольные импульсы мультивибратора поступают на триггеры DD2.1-DD2.2 которые выполняют роль делителей частоты. Выходные сигналы триггеров поступают на усилители тока VT1-VT4 …Подробнее...
  • Импульсный стабилизатор напряжения 5 В с высоким КПД

    В этом стабилизаторе используется специализированная ИМС LM2575-5,0. Его выходное напряжение составляет 5 В и задано типом примененной ИМС. Входное напряжение стабилизатора может составлять от 7 до 40 В. Выходной сигнал ИМС на выв. 2 представляет собой серию широтно-модулированных импульсов. После фильтрации цепью L1С2 это напряжение поступает на нагрузку и на …Подробнее...