какой то косяк с динамической индикацией

Обсуждаем цифровые устройства...
Ответить
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

если вместо транзисторов стоят инверторы - всё работает, а с ними - везде горят восьмёрки
я уже и резисторы пихал, и подтягивам выводы к + или -, ничего не помогает

это вольтметр двухканальный
Capture.PNG
схема
(55.77 КБ) 491 скачивание
Vmeter.zip
проект шпрот8+cv
(27.31 КБ) 124 скачивания
Реклама
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

Смени индикаторы СА на СС
Реклама
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

otest писал(а):Смени индикаторы СА на СС
я всё это строю вокруг индикатора) в блоке питания уже вырезал место под него.
он с какого то телефона с АОНом
Друг Кота
Аватара пользователя
Сообщения: 44283
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

котМатроскин писал(а):если вместо транзисторов стоят инверторы - всё работает, а с ними - везде горят восьмёрки
А "инверторы" как стоят?
"горят восьмёрки" это открытый транзистор. (или неправильно установленный)
В протеусе то же самое, или это вы схему в потеусе эмулируете?
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

да, я в первом пости прикрепил проект и скрин
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Схема не полностью видна... Однако, если предположить, что у вас общий провод на схеме - это минус, то транзисторы включены правильно, а индикаторы с общим катодом (ОК). Транзисторы управляются логической единицей (высоким уровнем, резисторы в базах все равно надо), а на сегменты индикаторов тоже подаются высокие логические уровни (логические единицы). Все должно работать.
А чего у вас не по четыре транзистора? один сегмент не используется?

З.Ы. Ищите ошибку в программе. )

З.З.Ы. Если индикаторы с общим анодом (ОА), то транзисторы не правильно стоят.
Станислав
Реклама
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

на плате 3 группы по 3 индикатора

поставил на базу и на коллектор поставил резисторы по 10к, вроде заработало
а какие там номиналы должны быть?
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Что значит на базу и на коллектор?
Номиналы обычно рассчитывают исходя из типа ваших транзисторов. Если много практического опыта в конструировании устройств, то некоторые номиналы подбирают чисто с потолка. :))) Т.е. мастер уже знает, сколько примерно должно стоять в той или иной цепи.

З.Ы. Если вы эмулируете схему в Протеусе, то по сути там не важно какие резисторы, и есть ли они в ключевых каскадах... :dont_know:
Если схема собрана в железе, то там см. выше.
Где-то в Инете видел расчеты транзисторных ключей, http://roboforum.ru/forum11/topic3323.html
Станислав
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

2n2222
рандомно натыкал резисторов от 100 ом до 10к, всё работает
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Работает в схеме (железе) или Протеусе??
Я почему спрашиваю?, потому что в Протеусе теоретически вообще без резисторов может работать, а в схеме может выйти из строя...
Станислав
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

в железе)))
сейчас сробрал нормально
на коллекторах 100 ом
на базах 4,7к
всё работает
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Поздравляю с победой. :) :beer:
Станислав
Друг Кота
Аватара пользователя
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Сообщение musor »

странно что всеж заработало..вообщето не должно
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

musor писал(а):вообщето не должно
Ну... автор сказал, что работает. :)))
А программу я не смотрел, т.к. лень разбираться, по железу нормально.
Станислав
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

воюю с ацп, постоянно показывает муть, а при замыкании AREF на 0 - показывает 1023
на avcc ни какой реакции
Спойлер#include <mega8.h>
#include <delay.h>

static flash unsigned char digit[] = {
//matrix on DC DNS
(0b11011101), //0
(0b01000001), //1
(0b01111100), //2
(0b01110101), //3
(0b11100001), //4
(0b10110101), //5
(0b10111101), //6
(0b01000101), //7
(0b11111101), //8
(0b11110101), //9
(0b00000010), //dot
};

void ind (unsigned char chislo) {
PORTB=digit[chislo];
delay_ms (3);
};

void gen (unsigned char pin) {
if (pin==1) {PORTD=0b10000000;PORTC.5=0;};
if (pin==2) {PORTD=0b01000000;PORTC.5=0;};
if (pin==3) {PORTD=0b00100000;PORTC.5=0;};
if (pin==4) {PORTD=0b00010000;PORTC.5=0;};
if (pin==5) {PORTD=0b00001000;PORTC.5=0;};
if (pin==6) {PORTD=0b00000100;PORTC.5=0;};
if (pin==7) {PORTD=0b00000010;PORTC.5=0;};
if (pin==8) {PORTD=0b00000001;PORTC.5=0;};
if (pin==9) {PORTC.5=1;PORTD=0b00000000;};
};


#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
PORTB=0b00000000;
DDRB=0b11111111; // 1out 0input segments 1hight

PORTC=0b00100000;
DDRC=0b00100000; // 1out 0input

PORTD=0b11111111;
DDRD=0b11111111; // 1out 0input general 0hight

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x85;

while (1)
{



int a[4],x,i; //разбиение на цифры и занесение в массив число 1
int q[4],w,e; //разбиение на цифры и занесение в массив число 2


read_adc(0);
x=ADCW;

read_adc(1);
w=ADCW;

for (i=4;i>0;i--)
{
a[i-1]=x % 10;
x=x/10;
};

for (i=0;i<4;i++) //вывод на дисплей
{
gen (i+1);
ind(a);
};

gen (2); ind(10); // вывод точки
//----------------------------------------------------------------

for (e=4;e>0;e--)
{
q[e-1]=w % 10;
w=w/10;
};

for (e=0;e<4;e++) //вывод на дисплей
{
gen (e+6);
ind(q[e]);
};

gen (7); ind(10); // вывод точки

}

}
Вложения
Capture.PNG
(48.66 КБ) 401 скачивание
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

в протеусе всё работает
Друг Кота
Аватара пользователя
Сообщения: 44283
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

котМатроскин писал(а):воюю с ацп, постоянно показывает муть, а при замыкании AREF на 0 - показывает 1023
на avcc ни какой реакции
AREF - это "опорное напряжение" АЦП, "выход" АЦП- это отношение измеряемого напряжения к опорному, умноженное на 1024, если вы FREF сажаете на "НОЛЬ", то у вас в любом случае на выходе АЦП будет 1023 (он просто больше показать не может), то же самое- 1023 будет в том случае, если напряжение на входе будет выше AREF.
К тому же AREF может вырабатываться внутренним источником- на внешний надо "переключать" К тому же, внешнее напряжение AREF для Мега8 не может быть меньше 2,00 вольта (таблица 103, ADC Characteristics - VREF - Reference Voltage min - 2.0 V )
А AVCC это питание "аналоговой части"- должно быть такое же, как и Vcc, только рекомендуется через RC или LC цепь..
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Сб фев 02, 2013 10:34:39

Сообщение котМатроскин »

написал ADMUX=adc_input | (ADC_VREF_TYPE & 0xC0); всё работает

а как убрать тремор в последнем разряде?
Друг Кота
Аватара пользователя
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ

Сообщение просто КОТ »

Дык он там всегда будет, ибо ошибка оцифровки + шум... Можно только фильтровать -- должно помочь. Например, загнать в кольцевой буфер мне советовали в своё время. Просто и эффективно.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Контактная информация:
Ответить

Вернуться в «Цифровая техника»