Энкодер
|
|
dimitriy-bc |
Дата: Ср, 14.01.2015, 00:58 | Сообщение # 31 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
terrarus, еще раз спасибо. Производства для которых вытворяю, это сплошной белый шум в сотни кВт. (тиристорные привода постоянного тока и парогенераторы на пускателях). На помехи сетовать не могу поскольку почти все моя работа. Частотники и энкодоры только осваиваю, соответственно проблем выше крыши. Еще такой вопрос, не в эту тему, на восемнадцатые пики Вы пишите в Протоне или Рыба в приоритете? Спрашиваю поскольку Протон для восемнадцатых пиков меня замучил, вот и думаю, может переосилить лень и попробовать Рыбу. И еще, для считывания с энкодеров я использую отдельный контролер но он работает не по прерываниям, а по варианту предложенному ivan_fd.
' New = PORTB & %00110000
Select EncState
Case %00100000
If New = %00110000 Then Inc REAL_WAY If New = %00000000 Then Dec REAL_WAY Break;
Case 0
If New = %00100000 Then Inc REAL_WAY If New = %00010000 Then Dec REAL_WAY Break;
Case %00010000
If New = %00000000 Then Inc REAL_WAY If New = %00110000 Then Dec REAL_WAY Break;
Case %00110000
If New = %00010000 Then Inc REAL_WAY If New = %00100000 Then Dec REAL_WAY Break; EndSelect ' EncState = New;
Чем этот метод мне больше импонирует это отсутствие ошибки от возможного дребезга, включая помехи в момент переключения. Хотя Вы себя немного обезопасили используя H11L1, у них присутствует триггер шмитта (я эти оптроны использую в платах приводов). Для быстродействующих участков я чаще использую 6N137 А также плюс в том, что допустим при считывании по прерываниям с энкодера 250 импульсов на оборот мы получим 250 значений. При использовании такого считывания 1000. Передачу и прием информации пришлось фантазировать самому. передача: ' ' If BITS.0 = 1 Then If COUNTER_2 > 1 Then COUNTER_2 = 1 ' If SCLK_ENC = 0 Then SCLK_ENC = 1 Inc COUNTER_1 ' If COUNTER_1 < 17 Then D_OUT_ENC = REAL_WAY_OUT.0 REAL_WAY_OUT = REAL_WAY_OUT >> 1 ' ПРОЙДЕННЫЙ ПУТЬ В ОДНУ ИЗ СТОРОН ' ElseIf COUNTER_1 > 16 And COUNTER_1 < 33 Then ' КОЛИЧЕСТВО ИМПУЛЬСОВ ЭНКОДЕРА КАРЕТКИ ЗА 1 ОБОРОТ БАРАБАНА D_OUT_ENC = QUANTITY_ROTATION_OUT.0 QUANTITY_ROTATION_OUT = QUANTITY_ROTATION_OUT >> 1 ' ElseIf COUNTER_1 > 32 Then D_OUT_ENC = ROTATION_OUT.0 ' КОЛИЧЕСТВО ИМПУЛЬСОВ ОТ ЭНКОДЕРА БАРАБАНА ROTATION_OUT = ROTATION_OUT >> 1 End If Else SCLK_ENC = 0 End If Else Inc COUNTER_2 End If End If '
прием: '_________________СЧИЫВАНИЕ С ЭНКОДЕРОВ ДЛЯ ОБРАТНОЙ СВАЗИ ПО СКОРОСТИ ДВИЖЕНИЯ УКЛАДЧИКА______ ' ' feed_back_IN:
VEL_1_WAY_IN = 0 ' КОЛИЧЕСТВО ИМПУЛЬСОВ ЭНКОДЕРА КАРЕТКИ ЗА 1 ОБОРОТ БАРАБАНА REAL_WAY = 0 ' ПРОЙДЕНЫЙ ПУТЬ В ОДНУ ИЗ СТОРОН ROTATION = 0 ' КОЛИЧЕСТВО ИМПУЛЬСОВ ОТ ЭНКОДЕРА БАРАБАНА BITS = 0 ' CYCLE_1: If SCLK_ENC = 1 Then BITS.0 = 1: GoTo CYCLE_1 ElseIf SCLK_ENC = 0 And BITS.0 = 1 Then BITS.0 = 0 Inc COUNTER_1 ' If COUNTER_1 < 17 Then ' ПРОЙДЕНЫЙ ПУТЬ В ОДНУ ИЗ СТОРОН REAL_WAY.15 = D_IN_ENC If COUNTER_1 != 16 Then REAL_WAY = REAL_WAY >> 1 EndIf ' ElseIf COUNTER_1 > 16 And COUNTER_1 < 33 Then 'КОЛИЧЕСТВО ИМПУЛЬСОВ ЭНКОДЕРА КАРЕТКИ ЗА 1 ОБОРОТ БАРАБАНА VEL_1_WAY_IN.15 = D_IN_ENC If COUNTER_1 != 32 Then VEL_1_WAY_IN = VEL_1_WAY_IN >> 1 EndIf ' ElseIf COUNTER_1 > 32 Then ' КОЛИЧЕСТВО ИМПУЛЬСОВ ОТ ЭНКОДЕРА БАРАБАНА ROTATION.15 = D_IN_ENC If COUNTER_1 != 48 Then ROTATION = ROTATION >> 1 EndIf EndIf ' EndIf ' If COUNTER_1 = 48 Then COUNTER_1 = 0 Else GoTo CYCLE_1 EndIf Return Еще раз хочу поблагодарить за информацию и попрошу уточнить по Протону и Рыбе.
Сообщение отредактировал
dimitriy-bc - Ср, 14.01.2015, 01:11
|
|
|
|
AndrF |
Дата: Ср, 14.01.2015, 07:18 | Сообщение # 32 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
145
Замечания:
±
На сайте с 03.02.2012
Статус:
Offline
|
Лично я предпочитаю Swordfish. На Протоне писал раньше, но дюже он древен и неудобен - одно только отсутствие нормальных функций убивает... Ну и развиваться он больше не будет -> путь в тупик. Для древних и маломощных пиков еще сойдет, а на новые уж лучше сразу использовать Swordfish или Firewing.
И еще, у всех этих трех продуктов (Proton/Swordfish/Firewing) один производитель...
|
|
|
|
MiXaS |
Дата: Ср, 14.01.2015, 09:35 | Сообщение # 33 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
dimitriy-bc, если Вы пишите исключительно на пиках по-мощнее 18f.. 24f.. то вам полюбому нужно или рыба или огнекрылый, как говорит AndrF. Протон нормально работает с 18f, но не все внем есть таргеты, то есть не под все можно написать код, плюс он уже устарел. Если Вы освоили Протон, то рыбу тоже освоите. Немного другой синтаксис, но если надо, можно и переучиться.
|
|
|
|
dimitriy-bc |
Дата: Ср, 14.01.2015, 10:58 | Сообщение # 34 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
MiXaS, AndrF, спасибо. Вчера в Протоне нашел ошибку, IF X <= Y Then. Для шестнадцатого пика работает без проблем, а в восемнадцатом вариант = воспринимает не во всех участках программы, а отрабатывает только < . И попило кровушки не мало. И еще один вопрос по экранированию. Чаще всего я цеплял экран только на GND питания передающего устройства. Со стороны приемника экран оставался в воздухе. Как делаете Вы.
|
|
|
|
demanik |
Дата: Ср, 14.01.2015, 23:03 | Сообщение # 35 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Цитата AndrF ( ) уж лучше сразу использовать Swordfish или Firewing
Попробуй всё и вся... может быть пол...
|
|
|
|
terrarus |
Дата: Чт, 15.01.2015, 16:18 | Сообщение # 36 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
dimitriy-bc: "...Еще такой вопрос, не в эту тему, на восемнадцатые пики Вы пишите в Протоне или Рыба в приоритете? Спрашиваю поскольку Протон для восемнадцатых пиков меня замучил..."
Отчечаю dimitriy-bc: Я пишу на Протоне.
Кстати конструкции, Подобные вашей IF X <= Y Then мной используют очень часто, например:
If VRA1 >=1000 Then VRA1 =1000 или If VRA1 > 400 AND VRA1 <= 600 Then
Работаю очень даже нормально! Ничего плохого ни в 16 серии ни в 18-ой я за ними не замечал никогда.
К вопросу о экранировании. Экран я припаиваю к контактам разъема длинной линии с обоих сторон. Соответствующий контакт разъема со стороны микроконтроллера припаиваю к земле (естественно изолированной посредством DC/DC преобразователя). Со стороны энкодера (или подобного датчика, например, измерительной головки магнитной линейки) припаиваю к соответствующему контакту разъема, который соединяется с металлическим корпусом энкодера (датчика). Соответственно корпус датчика имеет электрический контакт со станиной станка, так как корпус энкодера крепится к станине металлическими винтами.
На реплику AndrF, ".... На Протоне писал раньше, но дюже он древен и неудобен - одно только отсутствие нормальных функций убивает... Ну и развиваться он больше не будет -> путь в тупик. Для древних и маломощных пиков еще сойдет, а на новые уж лучше сразу использовать Swordfish или Firewing. И еще, у всех этих трех продуктов (Proton/Swordfish/Firewing) один производитель..."
Замечу так:
Когда я увидел в новых версиях Протона, что появились новые операторы и поддержка PIC 24 серии, то я понял, что Протон будет развиваться и дальше. То есть все утверждения, что Протон "...это тупиковая ветвь" это мягко говоря не верно! Сразу предупреждаю оппонентов, что в полемику на эту тему вступать не буду. Если хотите в это верить - верьте. Флаг вам в руки!
Протон меня вполне устраивает и я вижу в нем большие возможности. Считаю, что особенно для начинающих (и не только) это самая лучшая среда программирования для PIC микроконтроллеров и освоить начинающим Протон годаздо проще, чем Swordfish и в Firewing
ОН МНЕ НРАВИТСЯ! Очень нравится то, что в Протоне очень много различных функций и операторов более 200.
В пользу моего положительного мнения о Протоне говорит и тот факт, что у всех этих трех продуктов (Proton/Swordfish/Firewing) один производитель. Я вижу что, в последнии версии Протона уже интегрировано много того, что было отработано и в Swordfish и в Firewing.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 16.01.2015, 14:14
|
|
|
|
dimitriy-bc |
Дата: Пт, 16.01.2015, 00:06 | Сообщение # 37 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
terrarus, здравствуйте. Спасибо за ответ по экранированию. Если для каждого датчика у Вас индивидуальный DC/DC преобразователь то все логично, петли не получается. Еще раз спасибо за правильное направление. По поводу Протона. Не понимаю в чем проблема, но периодически у меня такие непонятки вылазят. Причем в одной части программы отрабатывает нормально в другой глючит. Сейчас у меня стоит версия 3.5.2.6. Пробовал поставить 3.5.6.5. то в одном месте программы при Х=Х-У в Х вписывалось значение 0. Посмотрев асм. увидел, что Протон с генерировал Х-Х На других участках программы такой ошибки не давал. У меня на компьютерах стоит ХР. Какие версии Протона стоят у Вас и на какую винду?
Сообщение отредактировал
dimitriy-bc - Пт, 16.01.2015, 00:08
|
|
|
|
terrarus |
Дата: Пт, 16.01.2015, 14:35 | Сообщение # 38 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
До середины октября 2014 года у меня стояли XP и Протон 3.5.2.6.. Затем я поставил вторую операционную систему Win 8.1 и Протон 3.5.6.5, они все 64-битные. Старая XP и Протон 3.5.2.6 осталась в резерве, так как начитался у нас на форуме о "проблемах" с ними. Опасался что и у меня будут проблемы. И вот уже более трех месяцев полностью перешел на работу в Win 8.1 и Протон 3.5.6.5. Никаких серьезных проблем не замечаю. За это время ни разу не переходил на XP.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 16.01.2015, 16:48
|
|
|
|
ADMIN |
Дата: Пт, 16.01.2015, 17:00 | Сообщение # 39 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Вот, кстати, человек с энкодером работал. Может, кому-то интересны будут его решения.
|
|
|
|
dimitriy-bc |
Дата: Сб, 17.01.2015, 01:34 | Сообщение # 40 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
ADMIN, спасибо за ссылку.
Сообщение отредактировал
dimitriy-bc - Сб, 17.01.2015, 11:57
|
|
|
|