реклама на сайте
подробности

 
 
> 74HC4094 в качестве расширителя порта, Кто-нибудь пробовал?
alux
сообщение Jun 7 2007, 18:03
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Привет. Необходимо сделать динамическое включение катодов 7-сегментного индикатора. Выводов контроллера как всегда не хватает. В качестве расширителя порта решил поставить преобразователь последовательной шины в параллельную 74HC4094. Т.е. по сути мне необходимо периодически (10мсек) на выходе 4094 сдвигать "1" для включения соответсвующего индикатора. Или другими словами последовательно загружать числа 1,2,4,8,16,32 и так по кругу. Вывод OE всегда притянут к питанию. Важно не допустить одновременного включения нескольких катодов. Правильно ли я делаю :

1) SI=1, CLK=1, SI=0, CLK=0 . Повторить n раз (n =1,2,4,8,16,32)
2) STROB=1;
3) STROB=0;

Сильно греется КРЕН. Померял ток потребления схемы - около 130 мА. Схема - это микроконтроллер (Мега48) с двумя светодиодными индикаторами, управляемые динамически. Видимо, проблема связана с неправильным формированием сигналов на 74HC4094.

Прикладываю даташит. Кстати, у разных производителей по-разному осуществляется загрузка данных: либо по наростающему фронту на CLK, либо по спадающему... Странно.

Сообщение отредактировал alux - Jun 7 2007, 18:19
Прикрепленные файлы
Прикрепленный файл  74HC4094N_PHLPS.pdf ( 72.54 килобайт ) Кол-во скачиваний: 94
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AVL
сообщение Jun 7 2007, 20:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 392
Регистрация: 29-05-07
Из: Москва
Пользователь №: 28 020



Микросхема 74HC4094 для Вашей задачи подходит не лучшим образом. Для этой задачи нужен счетчик с дешифратором (одна микросхема). Вам будет достаточно управлять 2-мя входами этой микросхемы: счетный вход и вход сброса, при этом активность единственного выхода в каждый момент времени гарантирована независимо от логики работы программы мк.

Если же микросхема 74HC4094:
Цитата(alux @ Jun 7 2007, 22:03) *
1) SI=1, CLK=1, SI=0, CLK=0 . Повторить n раз (n =1,2,4,8,16,32)
2) STROB=1;
3) STROB=0;

Из Ваших слов не понятно, что вы повторяете и как, и похоже, что все равно не правильно.
Должно быть так (если по кругу).

CLK=0, STR=0
1) SI=0
2) {CLK=1, CLK=0} повторить 7 раз
3) SI=1, CLK=1, CLK=0
4) STR=1, STR=0 => станет активным выход QP0
5) SI=0, CLK=1, CLK=0
6) STR=1, STR=0 => станет активным выход QP1
7) SI=0, CLK=1, CLK=0
8) STR=1, STR=0 => станет активным выход QP2
9) SI=0, CLK=1, CLK=0
10) STR=1, STR=0 => станет активным выход QP3
11) SI=0, CLK=1, CLK=0
12) STR=1, STR=0 => станет активным выход QP4
13) SI=0, CLK=1, CLK=0
14) STR=1, STR=0 => станет активным выход QP5
15) SI=0
16) {CLK=1, CLK=0} повторить 2 раза
17) переход на п.3

Цитата(alux @ Jun 7 2007, 22:03) *
Сильно греется КРЕН. Померял ток потребления схемы - около 130 мА. Схема - это микроконтроллер (Мега48) с двумя светодиодными индикаторами, управляемые динамически. Видимо, проблема связана с неправильным формированием сигналов на 74HC4094.

Неплохо бы схему принципиальную тоже приложить.
Go to the top of the page
 
+Quote Post
alux
сообщение Jun 7 2007, 21:22
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(AVL @ Jun 7 2007, 23:09) *
Должно быть так (если по кругу).

CLK=0, STR=0
1) SI=0
2) {CLK=1, CLK=0} повторить 7 раз
3) SI=1, CLK=1, CLK=0
4) STR=1, STR=0 => станет активным выход QP0
5) SI=0, CLK=1, CLK=0
6) STR=1, STR=0 => станет активным выход QP1
7) SI=0, CLK=1, CLK=0
8) STR=1, STR=0 => станет активным выход QP2
9) SI=0, CLK=1, CLK=0
10) STR=1, STR=0 => станет активным выход QP3
11) SI=0, CLK=1, CLK=0
12) STR=1, STR=0 => станет активным выход QP4
13) SI=0, CLK=1, CLK=0
14) STR=1, STR=0 => станет активным выход QP5
15) SI=0
16) {CLK=1, CLK=0} повторить 2 раза
17) переход на п.3


Не понял с п.17. Чтобы включить следующее знакоместо (QP1="1", все остальные="0"), при следующем вызове начинать с п.3 ?
Go to the top of the page
 
+Quote Post
AVL
сообщение Jun 8 2007, 07:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 392
Регистрация: 29-05-07
Из: Москва
Пользователь №: 28 020



Цитата(alux @ Jun 8 2007, 01:22) *
Не понял с п.17. Чтобы включить следующее знакоместо (QP1="1", все остальные="0"), при следующем вызове начинать с п.3 ?

Вы же по кругу хотите. Соответственно после активации QP5 должен быть активирован QP0. Следовательно из п.17 нужно перейти на пункт 3.

Цитата(alux @ Jun 8 2007, 00:43) *
... но 7805 все равно греется (палец не удержать), хотя ток составляет 35мА ?! В холостом режиме (когда от откренки все отсоединено), не греется. Странно однако %-()

Значит на вашей 7805 рассеивается большая мощность. Какое напряжение Вы подаете на вход 7805? Такое ощущение, что входное напряжение велико и вся разность падает на 7805, поэтому и греется и не важно, что ток всего 35мА. К примеру, если Вы подаете на вход 7805 15В, на выходе 7805 5В, то все 10В при токе 35мА, падающие на 7805, превращаются в тепло.

Цитата(rezident @ Jun 8 2007, 01:29) *
Может совет несколько неуместный, но зачем вам заниматься учетом сдвигов в самом регистре? У вас же МК для управления имеется. Сдвигайте и XOR-те байт как хотите программно в самом МК, а в регистр записывайте этот байт каждый раз целиком. Все будет детерменировано и никакого геморроя - всего один цикл записи 8-ми бит (установить бит данных, сформировать сдвиговый импульс - и так 8 раз) плюс формирование строба записи по окончании цикла.

В данном случае он в примерно в 8 раз теряет в производительности.

Цитата(alux @ Jun 8 2007, 11:01) *
for(unsigned char i=0; i < *(table+number); i++)
{
PORTC |= (1<<SI);
PORTC |= (1<<CLK);
PORTC &= ~(1<<SI);
PORTC &= ~(1<<CLK); //загрузить число n=0,1,2,4,8,16,32 раз
}
PORTD |= (1<<STR);
PORTD &= ~(1<<STR); //строб
}

Последовательность действий абсурдна. То как Вы пытаетесь делать, только единицы будут записываться в сдвиговый регистр (все выходы станут активными).

Смотрите мой алгоритм. Его можно упростить (как описал rezident), но при этом потеряете в производительности. Если вопрос производительности не стоит, то, конечно, можно загружать каждый раз весь регистр. Но для данной задачи выглядит это криво.

Сообщение отредактировал AVL - Jun 8 2007, 07:39
Go to the top of the page
 
+Quote Post
alux
сообщение Jun 8 2007, 08:18
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(AVL @ Jun 8 2007, 10:35) *
Значит на вашей 7805 рассеивается большая мощность. Какое напряжение Вы подаете на вход 7805? Такое ощущение, что входное напряжение велико и вся разность падает на 7805, поэтому и греется и не важно, что ток всего 35мА.

Трансформатор на выходе под нагрузкой дает 10,5В. На входной емкости 4700мкФ еще на пару вольт накидывается. По справочнику допустимое входное напряжение 7805 от 7 до 35В. Вы хотите сказать, что причина перегрева в том, что на входе стабилизатора напряжение 12В?

Цитата(AVL @ Jun 8 2007, 10:35) *
Если вопрос производительности не стоит, то, конечно, можно загружать каждый раз весь регистр.

Да, мне так удобней. Кроме индикации мне необходимо по событию на выходы Q6, Q7 подать управляющие сигналы. Т.е. вызывать функцию digit(znak), в качестве аргумента является загружаемое значение (0,1,2,4,8,16,32 или др). Если я правильно понял, надо делать так? :

void digit(unsigned char number)
{
for (unsigned char i = 0; i < 8; i++)
{
if ((number & 1)) SI = 1;
else SI = 0;
CLK = 1;
CLK = 0;
number = number >> 1;
};
STR = 1;
STR = 0;
}
Мне сейчас необходимо определится: можно ли добится желаемого результата с этой микросхемой или покупать и менять на 74HC595?

Сообщение отредактировал alux - Jun 8 2007, 08:30
Go to the top of the page
 
+Quote Post
AVL
сообщение Jun 8 2007, 08:42
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 392
Регистрация: 29-05-07
Из: Москва
Пользователь №: 28 020



Цитата(alux @ Jun 8 2007, 12:18) *
По справочнику допустимое входное напряжение 7805 от 7 до 35В. Вы хотите сказать, что причина перегрева в том, что на входе стабилизатора напряжение 12В?

Возможно из-за этого. Радиатор стоит какой-нибудь для отвода тепла? И дополнительно рекомендую снизить входное напряжение до 8-9 Вольт (при больших токах потребления этот момент уже существенен).

Цитата(alux @ Jun 8 2007, 12:18) *
Да, мне так удобней. Кроме индикации мне необходимо по событию на выходы Q6, Q7 подать управляющие сигналы. Т.е. вызывать функцию digit(znak), в качестве аргумента является загружаемое значение (0,1,2,4,8,16,32 или др). Если я правильно понял, надо делать так? :

void digit(unsigned char number)
{
for (unsigned char i = 0; i < 8; i++)
{
if ((number & 1)) SI = 1;
else SI = 0;
CLK = 1;
CLK = 0;
number = number >> 1;
};
STR = 1;
STR = 0;
}

Да, Вы правильно поняли.

Цитата(alux @ Jun 8 2007, 12:18) *
Мне сейчас необходимо определится: можно ли добится желаемого результата с этой микросхемой или покупать и менять на 74HC595?

конечно можно. Единственное в микросхеме 74HC4094 нет входа сброса. Чревато это тем, что пока Вы не загрузите в регистр корректное значение (все 8 бит), на выходе 74HC4094 при включении питания будет мусор, что приведет к активации нескольких индикаторов сразу. Возможно для Вас это не критично (но Вы указывали, что нельзя, чтобы активизировалось больше, чем один выход).

Сообщение отредактировал AVL - Jun 8 2007, 08:46
Go to the top of the page
 
+Quote Post
alux
сообщение Jun 8 2007, 09:06
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(AVL @ Jun 8 2007, 11:42) *
Возможно из-за этого. Радиатор стоит какой-нибудь для отвода тепла? И дополнительно рекомендую снизить входное напряжение до 8-9 Вольт (при больших токах потребления этот момент уже существенен).

Радиатора нет. По идее 7805 (TO-220) может работать без радиатора до 0,5А.

Цитата(AVL @ Jun 8 2007, 11:42) *
Единственное в микросхеме 74HC4094 нет входа сброса. Чревато это тем, что пока Вы не загрузите в регистр корректное значение (все 8 бит), на выходе 74HC4094 при включении питания будет мусор, что приведет к активации нескольких индикаторов сразу.

Если эта проблема проявляется только при включении питания, то это не проблема. Только я не до конца уяснил один момент. Во время загрузки значения при OE=1 каждый входной бит будет сразу отображаться на выходе до сигнала строб?

Кстати, какая нагрузочная способность 74hc4094? В моем даташите(Philips)указаны только временные характеристики. Судя из аналогичного других фирм, указан параметр DC Output Source Sink Current Per Output Pin +/-25mA, DC VCC or Ground Current +/-50mA. Т.е. в статике можно включать одновременно не более 5 нагрузок током 10мА?

Сообщение отредактировал alux - Jun 8 2007, 09:14
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alux   74HC4094 в качестве расширителя порта   Jun 7 2007, 18:03
- - rezident   Народ обычно использует 74HC595 и TPIC6C595. При н...   Jun 7 2007, 19:34
|- - alux   Цитата(rezident @ Jun 7 2007, 22:34) Наро...   Jun 7 2007, 20:43
||- - AVL   Цитата(alux @ Jun 8 2007, 13:06) Радиатор...   Jun 8 2007, 10:38
|- - rezident   Цитата(alux @ Jun 8 2007, 14:18) Трансфор...   Jun 9 2007, 11:20
- - rezident   Похожую схему только без аналоговых входов (индика...   Jun 7 2007, 21:14
- - rezident   Может совет несколько неуместный, но зачем вам зан...   Jun 7 2007, 21:29
|- - alux   Цитата(rezident @ Jun 8 2007, 00:29) Сдви...   Jun 8 2007, 07:01
- - alux   Все, заработало! Вот окончательный код: void ...   Jun 8 2007, 13:07
|- - AVL   Цитата(alux @ Jun 8 2007, 17:07) Если вкл...   Jun 8 2007, 13:28
|- - alux   Цитата(AVL @ Jun 8 2007, 16:28) Откуда Вы...   Jun 8 2007, 14:02
- - almay   ЦитатаЕсли включить одно знакоместо постоянно и за...   Jun 8 2007, 13:30
- - alux   Прошу прощения, но есть еще одна проблема с индика...   Jun 9 2007, 00:03
|- - AVL   Цитата(alux @ Jun 9 2007, 04:03) А вот в ...   Jun 9 2007, 07:06
|- - alux   Цитата(AVL @ Jun 9 2007, 10:06) Как часто...   Jun 9 2007, 08:14
|- - AVL   Цитата(alux @ Jun 9 2007, 12:14) 10 мсек ...   Jun 9 2007, 09:22
|- - alux   Цитата(AVL @ Jun 9 2007, 12:22) тогда вес...   Jun 9 2007, 09:58
|- - AVL   Цитата(alux @ Jun 9 2007, 13:58) Приклады...   Jun 9 2007, 10:48
|- - alux   Цитата(AVL @ Jun 9 2007, 13:48) Во первых...   Jun 9 2007, 12:05
|- - rezident   Цитата(alux @ Jun 9 2007, 18:05) 1) поста...   Jun 9 2007, 12:37
||- - alux   to rezident. Я хочу вернуться к вопросу чрезмерно...   Jun 14 2007, 07:28
||- - AVL   Цитата(alux @ Jun 14 2007, 11:28) to rezi...   Jun 14 2007, 08:32
||- - Сергей Борщ   Цитата(alux @ Jun 14 2007, 10:28) Я хочу ...   Jun 14 2007, 09:23
||- - rezident   Цитата(alux @ Jun 14 2007, 13:28) to rezi...   Jun 14 2007, 12:01
||- - alux   Цитата(rezident @ Jun 14 2007, 15:01) Тол...   Jun 14 2007, 16:58
||- - Сергей Борщ   Цитата(alux @ Jun 14 2007, 19:58) 7805 пи...   Jun 14 2007, 19:26
||- - alux   Цитата(Сергей Борщ @ Jun 14 2007, 22:26) ...   Jun 15 2007, 06:36
|- - AVL   Цитата(alux @ Jun 9 2007, 16:05) А зачем?...   Jun 9 2007, 12:38
||- - alux   Цитата(AVL @ Jun 9 2007, 15:38) А причем ...   Jun 9 2007, 13:16
||- - AVL   Цитата(alux @ Jun 9 2007, 17:16) Цитата и...   Jun 9 2007, 13:33
||- - rezident   Цитата(AVL @ Jun 9 2007, 19:33) P.S. Напр...   Jun 9 2007, 13:43
||- - AVL   Цитата(rezident @ Jun 9 2007, 17:43) Насч...   Jun 9 2007, 14:44
||- - alux   Цитата(rezident @ Jun 9 2007, 16:43) Вот ...   Jun 11 2007, 04:23
|- - alux   Цитата(alux @ Jun 9 2007, 15:05) А вот ту...   Jun 9 2007, 13:02
|- - AVL   Цитата(alux @ Jun 9 2007, 17:02) Прошу пр...   Jun 9 2007, 13:12
||- - alux   Цитата(AVL @ Jun 9 2007, 16:12) Предделит...   Jun 9 2007, 14:22
|- - AVL   Цитата(alux @ Jun 9 2007, 17:02) И еще од...   Jun 9 2007, 19:04
|- - alux   Цитата(AVL @ Jun 9 2007, 22:04) Для того,...   Jun 9 2007, 19:17
|- - AVL   Цитата(alux @ Jun 9 2007, 23:17) Одно уто...   Jun 9 2007, 19:29
- - rezident   Цитата(alux)2)опорное напряжение (+2.5В) на TL431 ...   Jun 9 2007, 15:11
|- - alux   Цитата(rezident @ Jun 9 2007, 18:11) Выво...   Jun 9 2007, 15:58
|- - rezident   Цитата(alux @ Jun 9 2007, 21:58) А на сче...   Jun 9 2007, 16:25
|- - alux   Цитата(rezident @ Jun 9 2007, 19:25) А во...   Jun 9 2007, 18:26
|- - rezident   Цитата(alux @ Jun 10 2007, 00:26) Просто ...   Jun 9 2007, 19:10
|- - alux   Цитата(rezident @ Jun 9 2007, 22:10) Каки...   Jun 9 2007, 19:48
|- - rezident   Цитата(alux @ Jun 10 2007, 01:48) Неужели...   Jun 9 2007, 21:18
|- - alux   Цитата(rezident @ Jun 10 2007, 00:18) А д...   Jun 9 2007, 22:02
- - rezident   ratiometric, это просто делитель напряжения питани...   Jun 9 2007, 22:39
- - rezident   Несмотря на то, что в вашем примере переменная Fla...   Jun 11 2007, 17:56


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 03:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01521 секунд с 7
ELECTRONIX ©2004-2016