Page 102 of 109

Re: Термостат ∆T=0,1°C

Posted: 01 Dec 2017 22:54
by gulliver
Всем привет, нужна помощь , после прошивки контроллера индикация появляется (хаотическая) при касание 4 ноги МК . Собрал две платки шил Khazama AVR Programmer фьюзы ставил относительно SPIEN

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 01:39
by jumbo
Здравствуйте. Очень нужная и удачная конструкция. Но вся проблема в том, что если этот терморегулятор использовать для обогрева, то выход = 1 получается постоянно включен после старта контроллера, и только если температура перевалила за установленное значение, то тогда выход становится = 0, а вот если к примеру отключить датчик, (или датчик потеряет контакт), то выход установится в 1 и нагрев будет постоянный. Помогите модернизировать пожалуйста код данной конструкции чтобы при обрыве датчика выход нагрева устанавливался в 0. Спасибо.

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 11:36
by propell_ant
jumbo, в ветке Термостат ∆T=0,1°C - работа над ошибками лежит прошивка, в которой всё это исправлено, пробуйте.

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 15:25
by astron
IYra wrote:У этого ЖКИ 4 com и 10 выводов сегмента (для 3 цифр без лишних символов). Надо немного подумать
Может просто подобрать другую модель пропроще, чтобы Вам голову не ломать? После поисков в интернете, становится понятно, что отыскать динамический ЖК индикатор с нормальной разводкой, задача довольно-таки сложная. Давайте возьмем 4 одноразрядных семисегментника, скажем, LCD056-2 и соберем динамическую индикацию на них, объединив выводы? Так будет проще, имхо. И не придется извращаться с подстраиванием показаний под положение точки, ибо получится полный аналог светодиодного семисегментника.
trashbox.jpg

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 17:42
by IYra
astron wrote: Может просто подобрать другую модель пропроще, чтобы Вам голову не ломать? После поисков в интернете, становится понятно, что отыскать динамический ЖК индикатор с нормальной разводкой, задача довольно-таки сложная. Давайте возьмем 4 одноразрядных семисегментника, скажем, LCD056-2 и соберем динамическую индикацию на них, объединив выводы? Так будет проще, имхо. И не придется извращаться с подстраиванием показаний под положение точки, ибо получится полный аналог светодиодного семисегментника.
В принципе для проверки такого варианта можно использовать уже сделанную. Правда там 3 цифры.
Соединения сегментов с PORTB

Code: Select all

BYTE byCharacter[10] = 
                       {0b01011111,     //0
                        0b01010000,     //1
 	                0b01101101,     //2
	                0b01111001,	//3 
	                0b01110010,     //4 
	                0b00111011,     //5 
	                0b00111111,     //6
                        0b01010001,     //7 
                        0b01111111,     //8
                        0b01111011,     //9
PORTB.0 - сегмент A (7pin)
PORTB.1 - сегмент F (8pin)
PORTB.2 - сегмент E (9pin)
PORTB.3 - сегмент D (2pin)
PORTB.4 - сегмент C (3pin)
PORTB.5 - сегмент G (5pin)
PORTB.6 - сегмент B (6pin)
PORTB.7 - сегмент DOT (4pin)

Соединения COM1 - COM4 -> PORTD.0 - PORTD.3

Для удобства разводки назначения PORTB.0 - PORTB.7 можно поменять

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 18:37
by hardlock
gulliver, значит что-то с фьюзами начудили. Что значит "фьюзы ставил относительно SPIEN"?

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 19:38
by propell_ant
Всем привет,
кто-нибудь может нарисовать печатку в SprintLayout по картинке и схеме из Eagle?
Я тут сваял термостат на Mega8 TQFP, по размерам плата как у Хардлока, только у меня всё в игле, а народ в форуме привык к спринту, а времени перенести совсем нету.
Если кто готов помочь - пишите в личку.

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 19:50
by hardlock
propell_ant, может давай отдельной темой? Я могу попробовать нарисовать.

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 21:52
by propell_ant
hardlock, щас запилю новую тему.

Re: Термостат ∆T=0,1°C

Posted: 02 Dec 2017 21:57
by hardlock
propell_ant, кидай туда всё как есть, я постараюсь побыстрее дополнить "привычным форматом" )))

Re: Термостат ∆T=0,1°C

Posted: 03 Dec 2017 11:21
by astron
IYra wrote: В принципе для проверки такого варианта можно использовать уже сделанную. Правда там 3 цифры.
Соединения сегментов с PORTB
Хорошо, постараюсь на днях собрать стенд и испытать прошивку. Я тут просто приболел слегка, грипп, будь он неладен( Поэтому надолго из дома стараюсь не выбираться, а до радиомага ехать прилично.

Re: Термостат ∆T=0,1°C

Posted: 03 Dec 2017 18:36
by IYra
astron wrote:
IYra wrote:У этого ЖКИ 4 com и 10 выводов сегмента (для 3 цифр без лишних символов). Надо немного подумать
Может просто подобрать другую модель пропроще, чтобы Вам голову не ломать? После поисков в интернете, становится понятно, что отыскать динамический ЖК индикатор с нормальной разводкой, задача довольно-таки сложная.
Поломал все таки голову и вот что получилось. Как будет в реале не знаю, но в модели работает. Модель я взял из Протеуса, подправил, так что она соответствует ITM-1693P (в первом приближении).
Если получится в реале то можно использовать этот вариант для любого ЖКИ.

Re: Термостат ∆T=0,1°C

Posted: 16 Dec 2017 15:43
by astron
Извиняюсь что пропал. Индикаторы наконец-то у меня, приступаю к изготовлению макета

А как посмотреть посегментную распиновку индикатора в протеусе и ее соответствие реальному ITM? Я протеус только базово знаю просто.

Re: Термостат ∆T=0,1°C

Posted: 23 Dec 2017 20:58
by astron
Итаак. Первый блин оказался слегка комом :dontknow: . Ножки мк дрыгаются примерно как надо, и изображение есть, но не то, что нужно. Распиновку подбирал методом научного тыка: в модели задал температуру 88,8 градусов, чтобы засветить все разряды, а затем, размыкая по очереди каждую линию данных, определял номера ног. Вроде правильно определил? (см. карандашный набросок). И чтобы облегчить работу уважаемому IYra, накидал тут распиновку на применяемые в наших целях пины индикатора, плюс таблицу символов с номерами выводов. Возможно, где-то что-то записано не оптимально, но как уж есть. Старался как можно нагляднее сделать. ЗЫ. Пардон за ссылки на посторонний хостинг, по-другому такие "габаритные" изображения сюда не вставить.
Image
Image
Image

Re: Термостат ∆T=0,1°C

Posted: 24 Dec 2017 16:59
by IYra
astron wrote:Итаак. Первый блин оказался слегка комом :dontknow: . Ножки мк дрыгаются примерно как надо, и изображение есть, но не то, что нужно.
Было бы удивительно если бы все заработало.
Для начала надо проверить соответствие подключения ножек МК и ЖК.


1 - не используется
2 - PB0 (12) (1A,1J,1M,1D)
3 - PB1 (13) (1K,1B,1L,1C)
4 - PB2 (14) (,2F,2G,2E)
5 - не используется
6 - PB3 (15) (2A,2J,2M,2D)
7 - PB4 (16) (2K,2B,2L,2C)
8 - PB5 (17) (T ,3F,3G,3E)
9 - PC0 (23) (dp,3H,3N,3P)
10 - PB7 (8) (3A,3J,3M,3D)
11 - PB6 (7) (3K,3B,3L,3C)
12,13,14,15 - не используется
16 - PD0 (30) (COM1)
17 - PD1 (31) (COM2)
18 - PD2 (32) (COM3)
19 - PD3 (1) (COM4)
20 - PC1 (24) (,1F,1G,1E)

Первая цифра в ряду это номер ножки дисплея.
Второе это имя порта (в скобках номер ножки для TQFP)
Третье это какие сегменты подключены. Проверить можно касанием включенного паяльника (намотать проволоку) ножки МК ( выключенном !). Должны засветиться соответствующие сегменты (4 штуки)
При касании COM1-COM4 светятся все сегменты в строке таблицы

Re: Термостат ∆T=0,1°C

Posted: 24 Dec 2017 19:03
by astron
Ничего не могу понять, всё равно мусор идёт
Image
Подключения ног дисплея к МК проверил, была пара ошибок, которые сразу исправил. Соответствие сегментов ногам и их "паттерны" скажем так, тоже проверил - распиновка полностью совпадает с датшитом. Проверял кстати генератором на 555, ибо паяльник от паяльной станции наводок не даёт. Еще раз протыкал все ноги осциллографом - форма напряжений, на первый взгляд, верная. Во всяком случае, эпюры на пинах COM имеют четкие три состояния и разнесены по времени между собой, частота тоже как положено. Но мусор как шел, так и идёт. Наводки от длинных проводов? Тоже маловероятно - подключил на неиспользуемые пины четвертого разряда длинную "косу", но характер изображения на дисплее не изменился, ничего лишнего не зажглось.

Может быть, сделать отладочную прошивочку чисто с индикацией? Которая, скажем, будет зажигать цифру 8 на первом разряде, через секунду гасить ее и зажигать восьмерку на втором, затем на третьем и далее по кругу? Может так багу и отловим?
Да, забыл сказать, индикаторов у меня две штуки, изображение одинаковое на обоих. Так что вариант с неисправным дисплеем исключается.

Re: Термостат ∆T=0,1°C

Posted: 24 Dec 2017 20:33
by IYra
astron wrote:подключил на неиспользуемые пины четвертого разряда длинную "косу", но характер изображения на дисплее не изменился, ничего лишнего не зажглось.
Может неиспользуемые ноги надо тоже подключать и обрабатывать ? Надо подумать
astron wrote: Может быть, сделать отладочную прошивочку чисто с индикацией?
Сделал обычный счетчик раз в секунду.

Re: Термостат ∆T=0,1°C

Posted: 24 Dec 2017 21:20
by astron
Так, кажись я понял в чём дело! Решил по наитию засветить индикатор сбоку, и заметил едва различимые цифры температуры на фоне мусора. То есть, налицо проблема с таймингами, возможно инерционность дисплея играет тут некую роль, и сегменты засвечиваются не те. Сейчас попробую влить тестовую прошивку и проверить

Да, действительно, вижу счетчик на фоне мусора. Запечатлеть на камеру не получается по понятным причинам. Кстати, если присмотреться на фото крупным планом, выложенное мной выше, можно кое-как разглядеть температуру 28,3 градуса.

Засвеченные сегменты при любых показаниях индикатора всегда остаются одни и те же. Может быть, в исходнике есть какой-то косяк при обработке этих сегментов?

Таак, еще подробность: оказывается, "полуподсвечеными" являются вообще все задействованные для индикации сегменты. То есть те, что не горят (например 1H 1P 1N) просто физически не подключены. Так что это точно проблема с таймингами, что-то не даёт погасить сегменты до конца.

Добавлено спустя 29 минут 59 секунд:
Видимо, в прошивке необходимо увеличить временнЫе промежутки, зажигающие и гасящие сегменты. Дело точно не в частоте обновления, ибо во-первых она соответствует паспортной на данный тип индикатора, а во-вторых я проверял сегменты меандром частотой 400 Гц, и они отлично и "чисто" зажигались и гасли

Re: Термостат ∆T=0,1°C

Posted: 25 Dec 2017 09:00
by IYra
astron wrote: Таак, еще подробность: оказывается, "полуподсвечеными" являются вообще все задействованные для индикации сегменты. То есть те, что не горят (например 1H 1P 1N) просто физически не подключены. Так что это точно проблема с таймингами, что-то не даёт погасить сегменты до конца.
А если уменьшить питающее напряжение до минимума - порядка 3 в. Как тогда ?

Re: Термостат ∆T=0,1°C

Posted: 25 Dec 2017 22:26
by astron
Сбросил напряжение до трёх вольт, стало получше. Но проблема полностью не ушла
Image
По крайней мере, теперь показания читаемы. Думаю, результат приемлемый :-) Значит, причина была в слишком большой чувствительности индикатора. Паразитная засветка почти полностью исчезает при напряжении питания порядка 2,5 вольт, но тут уже сам МК работает на грани и начинает умирать. Попробовал поставить делитель из переменного резистора в разрыв одного из сегментых проводов, и побаловался сопротивлением: результат есть, но менее выраженный, чем при общем снижении напряжения питания. Оно и понятно, ведь там пропорционально смещаются все значения рабочих напряжений, а не только одно. В любом случае, этот вопрос уже решаем.
Любопытства ради, померял потребление схемы. При напряжении 3.3 вольта, оно составляет порядка 6,5 мА. При 5 вольтах - порядка 11 мА.
Думаю, можно смело пилить полнофункциональную рабочую прошивку)

Re: Термостат ∆T=0,1°C

Posted: 26 Dec 2017 09:28
by IYra
IYra wrote:
astron wrote: Таак, еще подробность: оказывается, "полуподсвечеными" являются вообще все задействованные для индикации сегменты. То есть те, что не горят (например 1H 1P 1N) просто физически не подключены. Так что это точно проблема с таймингами, что-то не даёт погасить сегменты до конца.
А если уменьшить питающее напряжение до минимума - порядка 3 в. Как тогда ?
Случайно наткнулся http://microsin.net/programming/avr/avr ... -gpio.html
Немного по другому организованно. Надо попробовать этот вариант.

Re: Термостат ∆T=0,1°C

Posted: 26 Dec 2017 15:51
by astron
IYra wrote:Случайно наткнулся http://microsin.net/programming/avr/avr ... -gpio.html
Да, мне тоже попадался этот аппноут, когда я изучал данную тему. Здесь алгоритм немного упрощенный, отсутствует эффект противофазного импульса для ускоренного гашения сегмента после его зажигания. Но попробовать стОит, вдруг как раз ускоренное гашение и даёт эффект мусора. Тогда имеет смысл написать какую-нибудь совсем простую прошивку, реализующую метод из аппноута, скажем, только для зажигания одного единственного сегмента дисплея. И посмотреть, какой будет эффект. Если толку не будет, то и заморачиваться с более сложным вариантом прошивки не будет смысла.

Re: Термостат ∆T=0,1°C

Posted: 28 Dec 2017 16:26
by IYra
IYra wrote:
astron wrote: Таак, еще подробность: оказывается, "полуподсвечеными" являются вообще все задействованные для индикации сегменты. То есть те, что не горят (например 1H 1P 1N) просто физически не подключены. Так что это точно проблема с таймингами, что-то не даёт погасить сегменты до конца.
А если уменьшить питающее напряжение до минимума - порядка 3 в. Как тогда ?
Увеличил частоту импульсов. 16 мс на период. 60 Гц. (а было 30). Вариант старый.
Будут ли изменения ?

Добавил еще тестовый вариант по новому (как в апноуте)

Re: Термостат ∆T=0,1°C

Posted: 29 Dec 2017 00:00
by astron
Попробовал новые прошивки, принципиальных отличий по-прежнему нет.
Вариант с 60 гц:
При напряжении 5 вольт
Image
При снижении напряжения до трех вольт, эффект ровно тот же, что и в старом варианте прошивки
Другой алгоритм индикации:
При напряжении 5 вольт
Image
При снижении напряжения до трех вольт, эффект как будто чуть хуже, чем раньше. Но возможно мне только кажется
Image
Image
Похоже сам по себе индикатор попался "капризный". Полагаю, лучше чем есть, уже никак не улучшить, но повторюсь, результат приемлемый. Всё читается неплохо.

Re: Термостат ∆T=0,1°C

Posted: 29 Dec 2017 18:33
by IYra
astron wrote:Попробовал новые прошивки, принципиальных отличий по-прежнему нет.
А вот эту ? Должно гореть 001