Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Бесконтактный тахометр (Дополнения к статье)
Бесконтактный тахометр
ADMIN Дата: Пт, 28.02.2014, 07:39  |                                                                                                                Сообщение # 1
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Есть такая статья - Тахометр на PIC микроконтроллере. Так вот, там были вопросы по исходнику. В общем, написал на протоне, обновил архив. Схема в протеусе. Пользуйтесь.
ЯНДЕКС Дата: 28.02.2014
dimitriy-bc Дата: Сб, 01.03.2014, 15:07  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

ADMIN, здравствуйте. Я только начал осваивать символьные  ЖКИ и периодически эти индикаторы пишут, что им вздумается. Привести их в чувство получается только отключением питания. У меня такой вопрос. Если индикатор обесточивать по Вашему принципу с какой-то периодичностью, то какую задержку необходимо делать от подачи питания на индикатор и передачи на него информации, и насколько вредно для них такой режим работы. Спасибо!
MiXaS Дата: Сб, 01.03.2014, 22:53  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Очень странный случий. Предоставьте код и схему соединения, можно только дисплея. Есть кое-какие подозрения. Частенько наши форумчане ставят 500мс задержки перед началом основного кода, для инициализации жки. Я обычно либо забываю об этом либо код критичен к задержкам. Приэтом никогда не пишу задержек и все работает стабильно. Да, и еще. пришлите фото клюков жки. Если весь дисплей кривит, одна проблема, если какие-то символы, другая.
dimitriy-bc Дата: Вс, 02.03.2014, 00:43  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

MiXaS, здравствуйте. Для меня это к сожалению не странный. а повторяющейся случай. Да и похожие жалобы приходилось слышать и о других изделиях. В основном, по моим наблюдениям, это происходит при работе соленоидов (реле, пускатели...). Ну в общем при электромагнитном всплеске. МК при этом работает стабильно, а ЖКИ глючит. Все, что есть по последнему проекту прилагаю. Это парогенератор.
Прикрепления: PAR.rar (105.0 Kb)
anatol Дата: Вс, 02.03.2014, 01:00  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата dimitriy-bc ()
не странный. а повторяющейся случай
Если сбои происходят от помех, то лучше всего их устранить. Правда порой это лень делать, особенно если устройство не критично или программа не отлажена. Тогда можно просто проводить инициализацию ЖКИ перед каждым выводом инфы.
Но, боюсь, проблема скорее в другом - в использовании разных портов для работы с индикатором, при этом порты используются и для другого.
И, как правило, возникает ситуация при неизвестной инфформации на шине данных происходит стробирование и разрежение записи в индикатор.
Причина - кто помнит про Ч-М-З (чтение-модификация-запись). Обычно просто - получил нужное и скорее в порт, используя один-два разряда. А какое состояни порта было до этого - ну кого это волнует. Удачи. wink
dimitriy-bc Дата: Вс, 02.03.2014, 01:09  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Цитата anatol ()
ну кого это волнует. Удачи.

Не добрый Вы какой-то, ну прямо таки злой  tongue .

Если я Вас правильно понял, исключаем помехозащищенность, то для корректной работы индикатора, в ПРОТОНЕ, порт должен работать только на индикатор?

Сообщение отредактировал dimitriy-bc - Вс, 02.03.2014, 01:31
MiXaS Дата: Вс, 02.03.2014, 11:45  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Обратите внимание в своем коде на настройку портов С и D. RS и EN это выходы из контроллера! Тоже самое и с портом Д.
TRISХ = %00000000 - ВЕСЬ НА выход. TRISХ = %11111111 - ВЕСЬ НА вход. 0 (output) = выход, 1 (input) - вход.

Также у вас включена собака, я глубоко с кодом не разбирался, но может она там не нужна???

Цитата dimitriy-bc ()
В основном, по моим наблюдениям, это происходит при работе соленоидов (реле, пускатели...)


Учитывая Вашу закономерность, смею предположить,что сбой происходит не из-за электроМАГНИТНОЙ составляющей, т.к. соленоид не может физически развить такую мощность, чтобы с ума сошел жки, а высоко вольтные, но в тоже время очень короткие во времени (скорее всего еще и с обратным знаком) импульсы при переходных процессах.

Предложу несколько способов для устранения этого недуга. Желательно использовать комплекс мер.

1. Устранить программные недочеты: Настроить порты. Т.к. портД мультиплецирован с параллельным портом, то нужно произвести соответствующие настройки.
2. Устранить помехи в электрической цепи: если Вы коммутируете реле, катушка которого управляется постоянным током через транзистор, необходимо поставить диод параллельно катушке, но в обратном направлении (посмотрите схемы в сети), (менее важное, но может пригодиться) поставить неполярный конденсатор параллельно катушке емкостью 0.1 - 0.5 мкф. Если Вы управляете солиноидом или магнитным пускателем на ~ токе, рекомендую сделать гальваническую развязку, например, на оптроне.
3. Отфильтровать питание жки: прямо на самом жки установить 2 конденсатора по питанию. 1 = 0.1 мкф, 2 = 10-47 мкф. Второй конденсатор ставится в том случае, если длина шины от жки до мк более 0.3м(данные взял из своего личного опыта, методом проб и ошибок).

Вроде бы все. Я стараюсь ставить жки на портб, при этом оставляя внешнее прерывание свободным. Мне кажется так проще, потому что этот порт мультиплецирован только с шиной программирования. Но в этом тоже есть свой минус. Когда мк запаян (smd) и жки тоже запаян, а нужно залить новую версию прошивки, тут начинается все самое интересное....

Желаю успехов!

Добавлено (02.03.2014, 11:45)
---------------------------------------------
Интересно Ваш компилятор не ругается на это выражение: GoTo main: ?

anatol Дата: Вс, 02.03.2014, 11:47  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

dimitriy-bc, для начала  надо быть внимательным. Я скачал вашу прогу и глянул краем глаза. К сожалению Протеус не установлен пока. Но что бросилось в глаза: 
Код
Declare        LCD_DTPort = [b]PORTD     
Declare        LCD_DTPin = PORTD.4     
Declare        LCD_RSPin = PORTC.6
Declare        LCD_ENPin = PORTC.7
Declare        LCD_Interface = 4
........

[b]TRISD =    %11110011

......
ВХОДЫ         
     ....
     Symbol PROG_STACK_INC = [b]PORTD.0                ' ВЫБОР ПРОГРАММИРУЕМОЙ ЦИФРЫ        
     Symbol PROG_STACK_NUMERAL = [b]PORTD.1            ' ИЗМЕНЕНИЕ ПРОГРАММИРУЕМОЙ ЦИФРЫ  
..........
ВЫХОДЫ
     Symbol OUT_PUMP = [b]PORTD.3     
.........

Что будет делать компилятор, если не плеваться и, в лучшем случае, замолотит по умолчанию. И "помехи" от соленоидов ли виноваты? А может кусок программы перед срабатыванием соленоидов?
Почему я предложил на индикатор пускать только один порт? Это с целью не отслеживать состояние порта перед изменением.
К примеру. На PORTD.4 у вас висит ключ реле, управляется "1". А на PORTD.0 светодиод индикатор "Вкл". и выход уже "1". Состояние порта к примеру %00000001. Надо включить реле, берем число %00010000 и записываем в порт. Как результат надпись "Вкл" гаснет, а реле включается. Помеха? Нет. А работать надо так, читаем порт %00000001 делаем "или" с %00010000 и записываем в порт %00010001.
В Протоне можно указывать просто на изменение конкретного разряда порта, тогда приведенное выше выполняется. А так компилятор даже зачатками телепатии не обладает. tongue
MiXaS Дата: Вс, 02.03.2014, 12:16  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата anatol ()
На PORTD.4 у вас висит ключ реле, управляется "1". А на PORTD.0 светодиод индикатор "Вкл". и выход уже "1". Состояние порта к примеру %00000001. Надо включить реле, берем число %00010000 и записываем в порт. Как результат надпись "Вкл" гаснет, а реле включается. Помеха? Нет. А работать надо так, читаем порт %00000001 делаем "или" с %00010000 и записываем в порт %00010001.


Такие фокусы есть:
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0

Я тоже подозреваю, что скорее всего код с приключениями, + настройки портов не допилины.
dimitriy-bc Дата: Вс, 02.03.2014, 13:46  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Цитата MiXaS ()
Интересно Ваш компилятор не ругается на это выражение: GoTo main: ?

На двоеточие компилятор не ругался. 

Цитата MiXaS ()
Такие фокусы есть:
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0

Здесь не совсем понятно, что Вам не понравилось.

Цитата anatol ()
В Протоне можно указывать просто на изменение конкретного разряда порта, тогда приведенное выше выполняется.

Т.е. если не менять назначения выходов входов МК, а указывать конкретно PORTD.2 = 1, то компилятору будет понятнее?

Сообщение отредактировал dimitriy-bc - Вс, 02.03.2014, 13:48
MiXaS Дата: Вс, 02.03.2014, 14:49  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата dimitriy-bc ()
Т.е. если не менять назначения выходов входов МК, а указывать конкретно PORTD.2 = 1, то компилятору будет понятнее?


Разницы нету. У вас на порту D.4 - d7 подключена шина данных для жки. На остальном висит другая переферия, портс тоже задействован под переферию. а 2 ВЫХОДА предназначены под жки. Когда вы сбрасываете порт полностью, вы можете потерять данные.

Хочу обратить ваше внимание на
Цитата MiXaS ()
Обратите внимание в своем коде на настройку портов С и D. RS и EN это выходы из контроллера! Тоже самое и с портом Д. TRISХ = %00000000 - ВЕСЬ НА выход. TRISХ = %11111111 - ВЕСЬ НА вход. 0 (output) = выход, 1 (input) - вход. Также у вас включена собака, я глубоко с кодом не разбирался, но может она там не нужна???
ЯНДЕКС Дата: 02.03.2014
anatol Дата: Вс, 02.03.2014, 20:22  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата dimitriy-bc ()
Т.е. если не менять назначения выходов входов МК, а указывать конкретно PORTD.2 = 1, то компилятору будет понятнее?
Как я писал выше в этом случае компилятор делает подобным образом
Код
читаем порт %00000001 делаем "или" с %00010000 и записываем в порт %00010001.
Отследи пошагово код в листинге или симуляторе.
dimitriy-bc Дата: Вс, 02.03.2014, 23:18  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

MiXaSanatol, спасибо за помощь. Сделаю вид, что почти все понял  sweated . Особо времени симулировать нету, как обычно все нужно было вчера, а программист я так себе. Для упрощения, ЖКИ прицеплю на порт D и этот порт больше ни за что не отвечает. Да и честно говоря голова плохо соображает с последними событиями в УКРАИНЕ. Еще раз всем спасибо. После на яме отпишусь.
MiXaS Дата: Пн, 03.03.2014, 01:17  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Не забудьте трисы поставить на выход для жки
ADMIN Дата: Пн, 03.03.2014, 03:45  |                                                                                                                Сообщение # 15
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Я, как-то было, использовал одновременно portb.4-7 как шину данных  жки и как входы для кнопок. Все прекрасно работало. Но, к сожалению, не помню, что это за девайс был. Если найду, покажу. Да в принципе, написать можно заново.
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Бесконтактный тахометр (Дополнения к статье)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: