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

 
 
> 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
rezident
сообщение Jun 9 2007, 11:20
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



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

Цитата(alux)
number соответствует номеру знакоместа. Если включить одно знакоместо постоянно и засветить все сегменты ("8"), ток потребления составляет 104мА. 7805 греется :-/ Хотя по з-ну Ома: I=U/R = 5/220=23мА. Для 7 сегментов 23*7=161мА. Откуда такая разница?

Допустимая рассеиваемая без радиатора мощность рассчитывается довольно просто. Достаточно пары страниц из datasheet L7805CV. Тепловое сопротивление корпуса TO-220 составляет 55 С/Вт. Максимальная рабочая температура кристалла L7805CV - 150 C. Следовательно при температуре окружающей среды 25С максимально допустимая рассеиваемая температура (150С-25С)/55С/Вт=2,27Вт.
Считаем далее.
Собственный ток потребления L7805 при 25С - 6мА (+0,5мА при изменении нагрузки до 1А.) При входном напряжении 12В и токе нагрузки 35 мА на м/с будет рассеиваться примерно (12В-5В)*(0,006А+0,035А)=0,29Вт. Что даст перегрев 0,29Вт*55С/Вт=15,95С. При температуре окружающей среды 25С температура м/с составит примерно 25C+15.95C=41С, еще не горячо, но уже ощутимо smile.gif
Если 35мА ток потребления устройства при погашенном индикаторе, то при всех засвеченных сегментах всех знакомест ток потребления будет около (5В-1,3В)/220Ом*7+0,035А=118мА. Тогда температура самого стабилизатора L7805 при температуре окр. воздуха 25С будет около (12В-5В)*(0,006А+0,118А)*55С/Вт+25С= 73С - уже можно обжечься! wink.gif
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, 12:18) По справ...   Jun 8 2007, 08:42
||- - alux   Цитата(AVL @ Jun 8 2007, 11:42) Возможно ...   Jun 8 2007, 09:06
||- - AVL   Цитата(alux @ Jun 8 2007, 13:06) Радиатор...   Jun 8 2007, 10:38
- - 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 - 00:32
Рейтинг@Mail.ru


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