ГЕНЕРАТОР В FLProg

Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

2300328.jpg
1153649.jpg
1153649.jpg
1153649.jpg
1153649.jpg
Почему генератор в программе FLProg не выдает частоту больше 24кгц.

Работаю с моделью Nano 168.  Модель работает на частоте 87,974 гц.

Прилагаю скрин, программа написана для проверки модели в Proteuse не на FLProg.
3978264.jpg
Сейчас я приложу еще один скрин, генератора с частотой 87кгц (11.494мкс ) выведу эту длительность.
Но уже в программе FLProg.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alex54 18 сен 2015, 12:38, всего редактировалось 1 раз.
С Уважением Alex
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

Сергей Добрый День ! ! !

У меня сообщение было предыдущее. В нем ответов 0. Оно естественно отскочило что я его еле нашел.

Как стоит 50мкс, все мертво. Думал в последней версии исправлено. НЕТ.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
С Уважением Alex
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск

ГЕНЕРАТОР В FLProg

Сообщение DerAlex »

А если одновременно использовать два генератора? Изменится период?
аврора
Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06 сен 2015, 13:12
Откуда: Тюмень-Баку
Имя: Максим

ГЕНЕРАТОР В FLProg

Сообщение Max »

Вопрос важный и интересный! Ждем ответа, или решения.

P.S. Может подправить размер изображений, уважаемый Alex54? А то, при входе в Вашу тему крышу сносит...
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

DerAlex писал(а):А если одновременно использовать два генератора? Изменится период?
Не понял, как два генератора ? Да тут еще указывается не период, а пол периода. Даже если ставить
несимметричный мульт. То при любой полож. длительности меньше 50мкс, он все равно выдает 50мкс.

Тут видимо в самих моделях надо просто убирать внутренние задержки. Или принцип построения
делать другой.

Max

В диташитах ( виртуальный ардуино) я дал ссылку на интересную прогу. Вы смотрели ее. Там есть в ней для вас модули.
Посмотрите. Я сам эту прогу установил. Устанавливается также как портативная FLProg. Только в ней
еще и легко печать сделать для периферии к нашим ардуинкам.
Последний раз редактировалось Alex54 29 окт 2015, 12:16, всего редактировалось 1 раз.
С Уважением Alex
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск

ГЕНЕРАТОР В FLProg

Сообщение DerAlex »

Использовать два генератора и выход каждого подать на свой пин ардуино.Какое влияние это окажет на увеличение периода .
аврора
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

DerAlex писал(а):Использовать два генератора и выход каждого подать на свой пин ардуино.Какое влияние это окажет на увеличение периода .
Попробую что вы предлагаете. Можно еще исключающим или сделать умножение на 2. Тут надо
смотреть а сколько сама логика пропустит.
Тут мне прислали ардуинку в Протэусе. Программа генератора. Программисту конечно не в FLProg
удалось получить 80кгц с хвостиком на ней. Пишет при желании можно и больше выжить.
С Уважением Alex
oren
Рядовой
Сообщения: 38
Зарегистрирован: 07 сен 2015, 21:02

ГЕНЕРАТОР В FLProg

Сообщение oren »

здравствуте  Alex
"Попробую что вы предлагаете. Можно еще исключающим или сделать умножение на 2"
но существует ли способ умножения частоты генератора, в FLProg есть только аналоговые умножители
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

oren

Cсуществуют конечно умножители частоты. В FLProg, не знаю. Ну даже если сделать удвоитель на
исключающим ИЛИ в программе, это не выход. Будет 50кгц. Полож. полупериоды будут короткие. Схемы ФАПЧ нет здесь. Типа CD4046. Так что пока думаю между делами как это реализовать в программе.
В задумке нужно сделать с 200кгц. Получить нужную линейку частот. Внутри ардуинки. Пока на дискретных элементах работает.
С Уважением Alex
gore-40
Рядовой
Сообщения: 29
Зарегистрирован: 04 окт 2015, 18:02

ГЕНЕРАТОР В FLProg

Сообщение gore-40 »

Alex54
Накидай в  FLProg  умножение частоты на 2, спасибо.
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

qore-40

ЗДЕСЬ все прописано :

http://nauchebe.net/2010/06/obrabotka-d ... elementov/

Проверял вчера. Этот удвоитель в FLProg. Не получается. Логика тоже как и генератор не работает
с сигналами ниже 50мкс. Ставил искл. или. Просто по двум входам через цифровые входы подавал
от внешних генераторов различные частоты. Различные и по частотам и длительности. С вых. через
цифровой выход. Наблюдал все это. Как только сигнал был меньше 50мкс (например 50кгц 20мкс) Вых
работал на 24кгц с хвостом. И все. На низких рабочих частотах не смотрел. Работать думаю будет.
Ну мне надобности в этом не было. А вообще так и должно быть. У нас в котроллере цифровые
входа это не перемычки просто также как и выходы. Они делают обработку сигнала. По аналоговым
входам еще сложнее.
Последний раз редактировалось Alex54 04 ноя 2015, 09:03, всего редактировалось 1 раз.
С Уважением Alex
gore-40
Рядовой
Сообщения: 29
Зарегистрирован: 04 окт 2015, 18:02

ГЕНЕРАТОР В FLProg

Сообщение gore-40 »

а попробуй частоту мк поднять, по ссылке  Конструктор Bootloader`а для Arduino
http://homes-smart.ru/index.php/oborudo ... zagruzchik
делал 20MHz нормально работает, и где то на форумах читал - что и на 24MHz работает
Последний раз редактировалось gore-40 04 ноя 2015, 20:40, всего редактировалось 1 раз.
oren
Рядовой
Сообщения: 38
Зарегистрирован: 07 сен 2015, 21:02

ГЕНЕРАТОР В FLProg

Сообщение oren »

Дело не в Аrduino,а в генерации кода зашитого в ГЕНЕРАТОРЕ FLProg.
при написании кода так: 
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(0.001);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(0.001);

можно получить 100KHz .зависит от переменной    delay
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

oren

Cпасибо. Но откровенно сам нечего не понимаю в этих кодах. Подскажите что где изменять.

Тут советовался с программистом. Интересовался как вообще сделаны эти блоки. Общее понятие он
разъяснил.

Давайте вместе, может что выйдет.
С Уважением Alex
oren
Рядовой
Сообщения: 38
Зарегистрирован: 07 сен 2015, 21:02

ГЕНЕРАТОР В FLProg

Сообщение oren »

К сожалению, я так же далёк от этих кодов,кто нам может помочь,так это тот ,кто их писал,надо еще раз попробовать обратиться к модератору ,возможно он найдет время исправить код или хотя бы указать способ решения проблемы.

С уважением Орен
Аватара пользователя
Kocтик
Рядовой
Сообщения: 75
Зарегистрирован: 07 сен 2015, 23:51

ГЕНЕРАТОР В FLProg

Сообщение Kocтик »

oren писал(а):надо еще раз попробовать обратиться к модератору ,возможно он найдет время исправить код
Не надо никуда обращаться. Это расплата за универсальность кода.

Другими словами:
 digitalWrite(13, HIGH);   // Включаем вывод 13
  delay(0.001);              // Пауза секунд
  digitalWrite(13, LOW);  // Выключаем вывод 13
  delay(0.001);              // Пауза секунд

Теперь попробуйте скомпелировать генератор и посмотрите какой код выдаст Ида. И не забывайте что программа ходит по кругу (если нет прерываний). Потому чем длинее программа (больше круг) тем меньшую частоту выдаст генератор. МК просто не успевает отработать эту частоту.
Если очень нужно. Ищите в дополнительных блоках Бузер. Там генератор получше, и меандр почище. Думаю это максимум что можно выжать из Ардуино.
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

Kocтик, вы про это :

Сам задал вопрос, сам отвечаю. Да 30кгц получаю и очень чистенькие. И выставление по частоте
очень точное. Не на пол периода как в генераторе ( таймере) а как положено.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alex54 06 ноя 2015, 08:55, всего редактировалось 1 раз.
С Уважением Alex
oren
Рядовой
Сообщения: 38
Зарегистрирован: 07 сен 2015, 21:02

ГЕНЕРАТОР В FLProg

Сообщение oren »

Спасибо за помощь,но buzzer не имеет выхода для продолжения логической схемы,полезен лишь для использования платы в качестве генератора при нагрузке на один из внешних портов.
Сам же МК мне выдает любую(из нужных мне) частоту при написании кода :

digitalWrite(4, HIGH);   // Включаем вывод4
  delay(0.001);              // Пауза секунд
  digitalWrite(4, LOW);  // Выключаем вывод 4
  delay(0.001);              // Пауза секунд

А вот "голый" ГЕНЕРАТОР FLProg дает такой код:

pinMode(4, OUTPUT);
}
void loop()
{
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = micros(); } } else { _gen1I = 0 ; _gen1O= 0;}
 if (_gen1I) {  if ( _isTimerMicros ( _gen1P , 10 )) { _gen1P = micros(); _gen1O = ! _gen1O;}}
digitalWrite(4, _gen1O);
}
bool _isTimerMicros(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = micros();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
А результат разный- вот в этом я и пытаюсь разобраться,если Вам не затруднительно,помогите разобраться.
Аватара пользователя
support
Супермодератор
Сообщения: 1905
Зарегистрирован: 03 янв 2018, 11:45
Откуда: Астрахань
Имя: Сергей
Контактная информация:

ГЕНЕРАТОР В FLProg

Сообщение support »

Давайте я объясню. Разберём по строкам.

if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = micros(); } } else { _gen1I = 0 ; _gen1O= 0;}
  
Определение состояния входа EN (if (1) - у Вас константа). Запоминание текущего момента (_gen1P = micros()). перевод генератора в рабочее состояние (_gen1I = 1) Установка выхода в 1 (_gen1O = 1)

if (_gen1I) {  if ( _isTimerMicros ( _gen1P , 10 )) { _gen1P = micros(); _gen1O = ! _gen1O;}}

Если генератор в рабочем состоянии (if (_gen1I)) проверяем с помощью функции не настало ли время переключения (if ( _isTimerMicros ( _gen1P , 10 ) - у Вас период переключения 10 мс). Если время наступило, то  запоминаем текущее время ( _gen1P = micros(); - необходима для минимализации влияния временицикла прграммы, но такое влияние всё равно есть), и инвертируем выход (; _gen1O = ! _gen1O;)

bool _isTimerMicros(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = micros();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
 }


Функция определения конца периода времени с учётом переполнения аппаратного счётчика (аппаратный счётчик микросекунд считает до 4294967295 а потом сбрасывается в 0).
Автор программы FLProg.
Аватара пользователя
Alex54
Сержант
Сообщения: 281
Зарегистрирован: 06 сен 2015, 09:06
Откуда: Москва

ГЕНЕРАТОР В FLProg

Сообщение Alex54 »

oren

Так все правильно, пьезо динамик выдает частоту на внешний пин. Даже если сделать просто перемычкой
внешней,(с цифровым входом на вашу схему) если хотите работать от него. То вся логика не потянет свыше 24кгц. А так можно применять
его или несколько в зависимости от вашей программы. Делать допустим линейку частот кратную 10
здесь имеет смысл.

Сергей спасибо большое. Объяснили.

Гоню частоту в протэусе. 35кгц работает. Даже по нулям уход. Посмотрю где предел.
Этот пьезо динамик на 40кгц работает. Но уже частотка немного меньше. Далее гнать по частоте нет смысла. Но все равно это уже не 24кгц.
Я еще вот что хочу сказать. В Протэусе все модели контроллеров сделаны идеальными по всем параметрам. Это относиться только для котроллеров чисто итальянского производства.
Китайское железо имеет отличие.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alex54 06 ноя 2015, 11:59, всего редактировалось 1 раз.
С Уважением Alex
Ответить

Вернуться в «Таймеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей