Высокочастотный сигнал

ggellorr
Offline
Зарегистрирован: 26.06.2022

Добрый день. Возникла потребность в высокочастотном сигнале. Имеется arduino nano на atmega 328, на которой нужно сгенерировать сигнал 0.7 МГц и больше. Имеется ли вообще такая возможность? Или какой потолок сигнала на ардуино?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ggellorr пишет:

Добрый день. Возникла потребность в высокочастотном сигнале. Имеется arduino nano на atmega 328, на которой нужно сгенерировать сигнал 0.7 МГц и больше. Имеется ли вообще такая возможность? Или какой потолок сигнала на ардуино?

дело не в потолке а в точности генерации сигнала

ggellorr
Offline
Зарегистрирован: 26.06.2022

Не знаю сильно ли мне нужна предельная точность. Так как можно добиться этой частоты? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ggellorr пишет:

Не знаю сильно ли мне нужна предельная точность. Так как можно добиться этой частоты? 

для вашего случая используя калькулятор Евгения Петровича имеем:

Results for frequency: 700000.00Hz
(0,1,2,3) Prescaler: 1; MaxValue: 10; Frequency: 727272.75Hz; Diff: 27272.75Hz

Почитать как это сделать можно много где здесь на сайте, к примеру тут:

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Возможно так:

Ардуино нано + Si5351 / AD9833 / AD9834 / AD9850 / AD9851 / AD9854 / AD9910 / AD9951 / AD9954 (выбрать подходящую по параметрам) + ФНЧ (не обязательно).

Подходит?

b707
Offline
Зарегистрирован: 26.05.2017

700 МГц это не такой уж "высокочастотный"

Ардуино без проблем может такое генерить

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

700 МГц это не такой уж "высокочастотный"

Ардуино без проблем может такое генерить

пойди проспись ;-)))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Выражение ТС «и больше» не смутило? У меня вот сразу вопрос возник - до скольки? До 1МГц? До 10МГц? Или может до 100МГц? А хрен его знает.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ua6em пишет:

b707 пишет:

700 МГц это не такой уж "высокочастотный"

Ардуино без проблем может такое генерить

пойди проспись ;-)))

Очепятался он, про 700кГц писал. Понятно же...

ggellorr
Offline
Зарегистрирован: 26.06.2022

BOOM пишет:

Возможно так:

Ардуино нано + Si5351 / AD9833 / AD9834 / AD9850 / AD9851 / AD9854 / AD9910 / AD9951 / AD9954 (выбрать подходящую по параметрам) + ФНЧ (не обязательно).

Подходит?

Хотелось бы найти вариант без использования дополнительных модулей, имея только ардуино

ggellorr
Offline
Зарегистрирован: 26.06.2022

b707 пишет:

700 КГц это не такой уж "высокочастотный"

Ардуино без проблем может такое генерить

Можно подробно про генерацию такого сигнала? Я только начал вникать в ардуино, про генерацию сигналов не знаю ничего.

ggellorr
Offline
Зарегистрирован: 26.06.2022

BOOM пишет:

Выражение ТС «и больше» не смутило? У меня вот сразу вопрос возник - до скольки? До 1МГц? До 10МГц? Или может до 100МГц? А хрен его знает.

Извиняюсь. Оптимальный вариант для меня 1 МГц,  минимум 700 КГц

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ggellorr пишет:

BOOM пишет:

Возможно так:

Ардуино нано + Si5351 / AD9833 / AD9834 / AD9850 / AD9851 / AD9854 / AD9910 / AD9951 / AD9954 (выбрать подходящую по параметрам) + ФНЧ (не обязательно).

Подходит?

Хотелось бы найти вариант без использования дополнительных модулей, имея только ардуино

Вот КОТ: )))
 

enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};
uint32_t counter = 0;

void setup() {
   pinMode(13, OUTPUT);
   
   uint8_t prescaler = PRESCALER_1;
   uint8_t topValue = 10;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler;  // Установить СТС режим и делитель частоты
   OCR2A = topValue;           // установить TOP равным topValue
  }
   
void loop() {
 while(digitalRead(11)==LOW);
  counter++;
  if(counter==175000){
  digitalWrite(13,!digitalRead(13));
  counter = 0;}
}

 

ggellorr
Offline
Зарегистрирован: 26.06.2022

ua6em пишет:

ggellorr пишет:

BOOM пишет:

Возможно так:

Ардуино нано + Si5351 / AD9833 / AD9834 / AD9850 / AD9851 / AD9854 / AD9910 / AD9951 / AD9954 (выбрать подходящую по параметрам) + ФНЧ (не обязательно).

Подходит?

Хотелось бы найти вариант без использования дополнительных модулей, имея только ардуино

Вот КОТ: )))
 

enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};
uint32_t counter = 0;

void setup() {
   pinMode(13, OUTPUT);
   
   uint8_t prescaler = PRESCALER_1;
   uint8_t topValue = 10;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler;  // Установить СТС режим и делитель частоты
   OCR2A = topValue;           // установить TOP равным topValue
  }
   
void loop() {
 while(digitalRead(11)==LOW);
  counter++;
  if(counter==175000){
  digitalWrite(13,!digitalRead(13));
  counter = 0;}
}

 

Как я говорил только начинаю познавать мир ардуино, но как я понял этот код генерирует 700 КГц на 13 пин, так?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ggellorr пишет:

BOOM пишет:

Выражение ТС «и больше» не смутило? У меня вот сразу вопрос возник - до скольки? До 1МГц? До 10МГц? Или может до 100МГц? А хрен его знает.

Извиняюсь. Оптимальный вариант для меня 1 МГц,  минимум 700 КГц

можно и 1 мегагерц, тогда расхождение по нулям имеем:
Results for frequency: 1000000.00Hz
(0,1,2,3) Prescaler: 1; MaxValue: 7; Frequency: 1000000.00Hz; Diff: 0.00Hz
(0,1,2,3) Prescaler: 8; MaxValue: 0; Frequency: 1000000.00Hz; Diff: 0.00Hz

Скетч: (PS с тебя пиво коль ты такой ленивый пошоркаться по сайту)
 

enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};
uint32_t counter = 0;

void setup() {
   pinMode(13, OUTPUT);
   
   uint8_t prescaler = PRESCALER_1;
   uint8_t topValue = 7;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler;  // Установить СТС режим и делитель частоты
   OCR2A = topValue;           // установить TOP равным topValue
  }
   
void loop() {
 while(digitalRead(11)==LOW);
  counter++;
  if(counter==100000){
  digitalWrite(13,!digitalRead(13));
  counter = 0;}
}

Поясняю, частота генерируется на 11 пине, на 13 пине висит светодиод своим морганием показывающий что генерация работает )))

ggellorr
Offline
Зарегистрирован: 26.06.2022

ua6em пишет:

ggellorr пишет:

BOOM пишет:

Выражение ТС «и больше» не смутило? У меня вот сразу вопрос возник - до скольки? До 1МГц? До 10МГц? Или может до 100МГц? А хрен его знает.

Извиняюсь. Оптимальный вариант для меня 1 МГц,  минимум 700 КГц

можно и 1 мегагерц, тогда расхождение по нулям имеем:
Results for frequency: 1000000.00Hz
(0,1,2,3) Prescaler: 1; MaxValue: 7; Frequency: 1000000.00Hz; Diff: 0.00Hz
(0,1,2,3) Prescaler: 8; MaxValue: 0; Frequency: 1000000.00Hz; Diff: 0.00Hz

Скетч: (PS с тебя пиво коль ты такой ленивый пошоркаться по сайту)
 

enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};
uint32_t counter = 0;

void setup() {
   pinMode(13, OUTPUT);
   
   uint8_t prescaler = PRESCALER_1;
   uint8_t topValue = 7;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler;  // Установить СТС режим и делитель частоты
   OCR2A = topValue;           // установить TOP равным topValue
  }
   
void loop() {
 while(digitalRead(11)==LOW);
  counter++;
  if(counter==100000){
  digitalWrite(13,!digitalRead(13));
  counter = 0;}
}

Поясняю, частота генерируется на 11 пине, на 13 пине висит светодиод своим морганием показывающий что генерация работает )))

Спасибо) Код читать пока трудно, научусь еще))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ggellorr пишет:

Спасибо) Код читать пока трудно, научусь еще))

..."а ты налей и отойди" ...
PS BOOM! Глянь на осилографе, частота норм? Тогда ТС и тебе пиво будет должен )))

rkit
Offline
Зарегистрирован: 23.11.2016

Для начала нужно было бы спросить про форму сигнала, дорогие советчики.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

rkit пишет:

Для начала нужно было бы спросить про форму сигнала, дорогие советчики.

надеемся, что ТС это знает, нет, так подключить контур на 1 мгц какая проблема, если синус нужен

ggellorr
Offline
Зарегистрирован: 26.06.2022

rkit пишет:

Для начала нужно было бы спросить про форму сигнала, дорогие советчики.

прямоугольная

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ggellorr пишет:

rkit пишет:

Для начала нужно было бы спросить про форму сигнала, дорогие советчики.

прямоугольная

мой хрустальный шар не соврал )))

ggellorr
Offline
Зарегистрирован: 26.06.2022

ua6em пишет:

ggellorr пишет:

BOOM пишет:

Выражение ТС «и больше» не смутило? У меня вот сразу вопрос возник - до скольки? До 1МГц? До 10МГц? Или может до 100МГц? А хрен его знает.

Извиняюсь. Оптимальный вариант для меня 1 МГц,  минимум 700 КГц

можно и 1 мегагерц, тогда расхождение по нулям имеем:
Results for frequency: 1000000.00Hz
(0,1,2,3) Prescaler: 1; MaxValue: 7; Frequency: 1000000.00Hz; Diff: 0.00Hz
(0,1,2,3) Prescaler: 8; MaxValue: 0; Frequency: 1000000.00Hz; Diff: 0.00Hz

Скетч: (PS с тебя пиво коль ты такой ленивый пошоркаться по сайту)
 

enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};
uint32_t counter = 0;

void setup() {
   pinMode(13, OUTPUT);
   
   uint8_t prescaler = PRESCALER_1;
   uint8_t topValue = 7;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler;  // Установить СТС режим и делитель частоты
   OCR2A = topValue;           // установить TOP равным topValue
  }
   
void loop() {
 while(digitalRead(11)==LOW);
  counter++;
  if(counter==100000){
  digitalWrite(13,!digitalRead(13));
  counter = 0;}
}

Так, вопрос встал такой. У меня есть пьезоэлемент с двумя проводками, + и -. - на землю как всегда, а + тогда на 11 пин? Надо ли подавать другое питание, не от usb? 

upd: Прошу прощения, вопрос не актуален) В даташите указано 24-68 В, а я делал по схеме другого пьезоэлемента от 5 В.

Green
Offline
Зарегистрирован: 01.10.2015

ggellorr пишет:

Извиняюсь. Оптимальный вариант для меня 1 МГц,  минимум 700 КГц


Тут на сайте есть генератор с регулируемой частотой от Dimax-а. Пройдитесь поиском.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ua6em пишет:

можно и 1 мегагерц, тогда расхождение по нулям имеем:
Results for frequency: 1000000.00Hz
(0,1,2,3) Prescaler: 1; MaxValue: 7; Frequency: 1000000.00Hz; Diff: 0.00Hz
(0,1,2,3) Prescaler: 8; MaxValue: 0; Frequency: 1000000.00Hz; Diff: 0.00Hz

Скетч: (PS с тебя пиво коль ты такой ленивый пошоркаться по сайту)
 

enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};
uint32_t counter = 0;

void setup() {
   pinMode(13, OUTPUT);
   
   uint8_t prescaler = PRESCALER_1;
   uint8_t topValue = 7;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler;  // Установить СТС режим и делитель частоты
   OCR2A = topValue;           // установить TOP равным topValue
  }
   
void loop() {
 while(digitalRead(11)==LOW);
  counter++;
  if(counter==100000){
  digitalWrite(13,!digitalRead(13));
  counter = 0;}
}

Поясняю, частота генерируется на 11 пине, на 13 пине висит светодиод своим морганием показывающий что генерация работает )))

Скетч использует 956 байт (6%) памяти устройства. Всего доступно 14336 байт.
Глобальные переменные используют 13 байт (1%) динамической памяти, оставляя 1011 байт для локальных переменных. Максимум: 1024 байт.

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ggellorr пишет:

Так, вопрос встал такой. У меня есть пьезоэлемент с двумя проводками, + и -. - на землю как всегда, а + тогда на 11 пин? Надо ли подавать другое питание, не от usb? 

upd: Прошу прощения, вопрос не актуален) В даташите указано 24-68 В, а я делал по схеме другого пьезоэлемента от 5 В.

А зачем пьезоэлемент подключать к выходу этого генератора?

Argus19
Offline
Зарегистрирован: 08.05.2022

https://radio-samodel.ru/images/generatory%20kvarts1.png
и усилитель на транзсторах. Ваша ванна или сварка будут работать. Это дешевле чем Arduino,
если не предвидится других задач.

SLKH
Offline
Зарегистрирован: 17.08.2015

Argus19 пишет:
https://radio-samodel.ru/images/generatory%20kvarts1.png и усилитель на транзсторах. Ваша ванна или сварка будут работать. Это дешевле чем Arduino, если не предвидится других задач.
Похоже, там точность не нужна, так что можно и без кварца обойтись.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Так под пьезоэлементом подразумевается пьезо излучатель? 1МГц ему не много?

Argus19
Offline
Зарегистрирован: 08.05.2022

BOOM пишет:

Так под пьезоэлементом подразумевается пьезо излучатель? 1МГц ему не много?

ТС несколько раз подкорректировал задачу. В последней "редакции" он сказал, что у него "пъезоэлемент с двумя проводками + и -".

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Argus19 пишет:

BOOM пишет:

Так под пьезоэлементом подразумевается пьезо излучатель? 1МГц ему не много?

ТС несколько раз подкорректировал задачу. В последней "редакции" он сказал, что у него "пъезоэлемент с двумя проводками + и -".

И поэтому ему 1МГц нормально? Или наличие + и - говорит о пьезоизлучателях? Я всяких пьезо повидал, в том числе и резонаторы.

Argus19
Offline
Зарегистрирован: 08.05.2022

BOOM пишет:

И поэтому ему 1МГц нормально? Или наличие + и - говорит о пьезоизлучателях? Я всяких пьезо повидал, в том числе и резонаторы.

 Видимо. Будем ждать от ТС уточнений.

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Argus19 пишет:

BOOM пишет:

И поэтому ему 1МГц нормально? Или наличие + и - говорит о пьезоизлучателях? Я всяких пьезо повидал, в том числе и резонаторы.

 Видимо. Будем ждать от ТС уточнений.

 

Так ты Вы акцент сделали, а не ТС. Вопрос был Вам!

Argus19
Offline
Зарегистрирован: 08.05.2022

BOOM пишет:

Так ты Вы акцент сделали, а не ТС. Вопрос был Вам!

Я предположил, что ТС живёт в иной реальности и в ней действуют иные законы физики и, чтобы в неё вернуться, ему, для межпространственного прокола требуется при помощи Arduino и пъезоизлучателя, имеющего + и -, сделать устройство, возбуждающее пространственно-временной континуум.

 Дальше продолжать?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Конечно! Продолжайте, пожалуйста.