-
27.10.2003, 13:11 #16QRP
- Регистрация
- 15.11.2002
- Адрес
- Томск
- Возраст
- 56
- Сообщений
- 44
- Поблагодарили
- 0
- Поблагодарил
- 0
Вопрос к знатокам.
Собрал синтезатор US2II публикация в журнале Радио. Подключил энкодер EL63D 1B250Z12P10X6JR контроллер показывает что частота меняется при вращении энкодера, а на выходе синтезатора частота меняется скачками по 500 Гц
что может быть?
-
27.10.2003, 13:33 #17Standart Power
- Регистрация
- 06.09.2002
- Адрес
- Екатеринбург
- Возраст
- 62
- Сообщений
- 246
- Поблагодарили
- 7
- Поблагодарил
- 49
А петля ФАПЧ успевает отрабатывать?Первоначальное сообщение от aliv
Вопрос к знатокам.
Собрал синтезатор US2II публикация в журнале Радио. Подключил энкодер EL63D 1B250Z12P10X6JR контроллер показывает что частота меняется при вращении энкодера, а на выходе синтезатора частота меняется скачками по 500 Гц
что может быть?
В синтезаторах частоты то что Вы видете на табло - это заданная частота, а не реальная!73. Андрей (RZ9CV)
-
28.10.2003, 08:20 #18Standart Power
- Регистрация
- 27.08.2003
- Адрес
- Усть-Каменогорск - Омск
- Возраст
- 51
- Сообщений
- 375
- Поблагодарили
- 13
- Поблагодарил
- 5
Встречал в сети схему валкодера на шаговом двигателе от старых дисководов. Кто нибудь пробовал в деле такой валкод, а то я покрутил его ротор, такое приятное вращение, что использовать его было бы очень здорово в высококласном аппарате....
-
28.10.2003, 13:06 #19Very High Power
- Регистрация
- 23.04.2002
- Адрес
- Междуреченск
- Возраст
- 58
- Сообщений
- 1,788
- Поблагодарили
- 134
- Поблагодарил
- 106
UN7JHS Андрей
Пробовал. Лучше всего подходят от кассовых машин.
От совковых моторов
трудно добиться чётких импульсов. А импортные(японские) слишком чувствительные и "срабатывают" от "притрагиваний"
-
28.10.2003, 15:26 #20Standart Power
- Регистрация
- 27.08.2003
- Адрес
- Усть-Каменогорск - Омск
- Возраст
- 51
- Сообщений
- 375
- Поблагодарили
- 13
- Поблагодарил
- 5
Возможно. У меня моторчик от дисковода Роботрона 1910, при вращении ротора, по пальцам отдаются легкие щелчки, я так понимаю каждый щелчек, это импульс, по идее срабатывать при прикасании не должны, все таки необходимо приложить не большое усилие..... Но пока я синтезом не занимаюсь, мне бы меандр с помощью обычного ГПД получить..... А то у меня бред какойто выходит, не меандр а черт знает что.....
-
02.11.2003, 09:06 #21Standart Power
- Регистрация
- 16.01.2003
- Адрес
- Донецк
- Возраст
- 47
- Сообщений
- 471
- Поблагодарили
- 97
- Поблагодарил
- 293
Всем привет !Первоначальное сообщение от CO2040
Отсюда мораль : контроллер синтезатора должен быть выполнен аппаратно, т.е. на "жесткой логике" - как говорят проектировщики узлов ЭВМ. Можно использовать микросхемы серии КР1533 или ПЛИС. Алгоритмы обычно простые. Если хорошо знакомы с теорией автоматов и для вас не составит труда синтезировать автомат Мура, описываемый графом с полсотней вершин, тогда – вперед. Ну и пусть громоздко - зато быстрее.
А вывод - надо правильно программировать !
У меня (http://users.ints.net/skidan/T03DSP/) в трансивере стоит валкодер от станка с ЧПУ (Z=2500) и все работает ОК.
Кстати контроллер успевает не только подсчитывать импульсы, но и программировать синтезатор и обновлять изображение на графическом ЖКИ (и без автоматов!).
Удачи !
Олег
73 de UR3IQO
-
13.11.2003, 15:02 #22Без позывного
- Регистрация
- 10.12.2002
- Сообщений
- 123
- Поблагодарили
- 0
- Поблагодарил
- 0
Вот- вот тут вся проблема только в быстродействии контроллера, а валкодер не причем. У самого были такие проблемы когда ставил эксперименты с синтезаторами на 80С51, быстродействие контроллера и "умный + быстрый" алгоритм .
-
13.11.2003, 19:52 #23High Power
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 56
- Сообщений
- 935
- Поблагодарили
- 64
- Поблагодарил
- 4
Олег! Так поделитесь опытом! А то на сайте только фотографии...Всем привет !
А вывод - надо правильно программировать !
У меня (http://users.ints.net/skidan/T03DSP/) в трансивере стоит валкодер от станка с ЧПУ (Z=2500) и все работает ОК.
Кстати контроллер успевает не только подсчитывать импульсы, но и программировать синтезатор и обновлять изображение на графическом ЖКИ (и без автоматов!).
Интересно , что за синтезатор. Хотя бы общие принципы программирования таких вещей --- понятно , что если делать все в лоб то будет медленно , а как надо то? Изложение самых общих принципов никак не ударит по авторским правам...
Сам сейчас потихоньку, по-дилетантски начинаю ковыряться в контроллерах. Программу "в лоб" написать уже могу, а вот как хорошо написать --- пока проблемы...
-
13.11.2003, 20:37 #24Alex007Гость
В своём синтезе на PIC16F628 - 20 MHz и DDS использую валкодер из мыши на 60 прорезей. Программное учетверение. При скорости вращения 1-1.5 оборота в сек никаких проглатываний не наблюдаю. Программа написана "в лоб":
- микроконтроллер спит
- прерывание от встроенных компараторов (оптопары непосредственно к ним и подключены)
- считывание состояний компараторов и сравнение с 8-ю масками из таблицы
- шаг +/- , математика для ддс, вывод на LCD и ддс
- спать
Собственно быстродействие зависит от того, насколько быстро микроконтроллер просчитает математику и выведет на индикакор. На это требуется время, которое уменьшить не получится (можно, конечно, проверять, какие разряды изменились,и выводить только их, добывая драгоценные микросекунды, можно перед выводом проверить, не было ли ещё импульса от валкодера и отложить вывод на LCD до следующего раза итд)
Вот такие пирогиПоследний раз редактировалось Alex007; 13.11.2003 в 20:43.
-
13.11.2003, 22:48 #25Standart Power
- Регистрация
- 16.01.2003
- Адрес
- Донецк
- Возраст
- 47
- Сообщений
- 471
- Поблагодарили
- 97
- Поблагодарил
- 293
OK. То что реализовано у меня вряд ли подойдет непосредственно (поскольку я использую операционнаю систему реального времени), но принцип - вполне.Первоначальное сообщение от RU3GA
Олег! Так поделитесь опытом! ...
Разделим задачи на части (и запишем в порядке убывания приоритета):
1. подсчет импульсов от валкодера
2. пересчет числа импульсов в частоту и программирование синтезатора.
3. индикация частоты на индикаторе.
Подсоединяем один выход валкодера на вход прерывания, а второй на любой порт ввода в контроллере. В прерывании (по фронту или по спаду) считываем состояние этого порта (1-вправо, 0-влево или наоборот, как подключите
), и изменяем счетчик и устанавливам флаг изменения частоты. На этом обработка прерывания заканчивается. Если не крутить валкодер дрелью
, то любой контроллер подсчитает все импульсы.
interrupt(PORT1) Port1Int(void)
{
if(PORT1 & 0x1)counter++;
else counter--;
freq_changed=1;
}
Это на случай нормального валкодера с большим Z - здесь нет надобности учетверять или удваивать.
В основной программе делается что-то типа такого:
for( ; ; )
{
Sleep(); //Ждем прерывания (это не обязательно)
while(freq_changed)
{ //Частота была изменена
freq_changed=0; //Сбрасываем флаг
RecalcFreq(); //Пересчитываем частоту в код для ситезатора
ProgSynth(); //Программируем ситезатор
}
UpdateScreen(); //Обновляем экран
}
Пояснения:
Если мы быстро крутим валкодер, то обработчик прерывания подсчитывает импульсы быстро, но частота пересчитывается один раз на несколько импульсов поступивших с валкодера.
Поверьте, что при перестройке 10кГц в сек. нет большой разницы между шагом в 10 Гц или 100Гц, главное, что как закончите крутить частота перестроится точно туда, куда надо.
Далее цикл while позволяет сэкономить время на индикации если крутить очень быстро.
Самое главное - разбить задачу на подзадачи и определить приоритеты для них, а далее обеспечить по возможности соблюдения этих приоритетов.
То, что я здесь написал я не испытывал, так как вопросы распределения времени процессора у меня решает ОС реального времени (поскольку когда забот у контроллера становится очень много это пожалуй единственное эффективное решение, кстати в Айкоме хвастаются тем, что они для ic7800 написали свою ОС реального времени, ну не одни они
) и все делается немного по-другому, но принцип очень похож.
Синтезатор использует принципы деления с дробным коэффициентомИнтересно , что за синтезатор...
деления и цифровую компенсацию побочных колебаний с помощью
сигма-дельта модулятора четвертого порядка.
Данная технология была изобретена фирмой Маркони в 1986г. и
используется в её измерительных генераторах. Подробности можно
узнать посмотрев патент US 4,609,881 в базе данных патентной библиотеки
США
В моей конструкции собственно синтезатор (ЧФД, предварительный делитель)
реализованы с использованием м/с программируемой логики EPM7032S,
а сигма-дельта модулятор и ДДПКД на микроконтроллере MSP430F123.
При частоте сравнения 100 кГц шаг перестройки меньше 0.01 Гц (но я использую только 0.25 Гц)
.
Стаью об этом синтезаторе я опубликовал в журнале QEX Nov/Dec 2003. Я собираюсь в скором будущем выложить ее у себя на сайте (возможно с русским переводом).
Удачи !
Олег UR3IQOПоследний раз редактировалось RC6OF; 13.11.2003 в 23:00.
-
14.11.2003, 09:55 #26High Power
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 56
- Сообщений
- 935
- Поблагодарили
- 64
- Поблагодарил
- 4
Вот здесь , если можно , чуть подробнее --- это как я понял программное учетверение. Я какое-то время бился , но так и не смог написать более-менее "красиво"...Первоначальное сообщение от Alex007
- считывание состояний компараторов и сравнение с 8-ю масками из таблицы
-
14.11.2003, 10:11 #27High Power
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 56
- Сообщений
- 935
- Поблагодарили
- 64
- Поблагодарил
- 4
To UR3IQO:
Олег, спасибо. В общих чертах понятно. Буду пробовать.
-
02.12.2003, 22:35 #28Very High Power
- Регистрация
- 23.04.2002
- Адрес
- Междуреченск
- Возраст
- 58
- Сообщений
- 1,788
- Поблагодарили
- 134
- Поблагодарил
- 106
А я перепробовал много всяких шаговых движков. Лучше всего - японские от сканеров HP. Они весьма плоские и чёткие импульсы дают. Его и поставил для контроллера к Р-160п.
Пробовал и дрелью крутить. Работает! До 200 оборотов...

URL обратной ссылки
Подробнее про обратные ссылки












Ответить с цитированием

Социальные закладки