Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств.

 
Опции темы

Миниатюрный линейный светодиодный индикатор

Непрочитано 19.08.2015, 21:39  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Сообщение от alvadep Посмотреть сообщение
Та отож-бо
Ну, у Вас тоже ошибочка
Сообщение от alvadep Посмотреть сообщение
максимум светодиодов будет 16
32 будет - светодиод штука полярная.
omercury вне форума  
Непрочитано 19.08.2015, 21:50  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Что-то я сомневаюсь, что одна 595 сможет управлять 32-мя светиками независимо. Если не затруднит, изобразите.
alvadep вне форума  
Непрочитано 20.08.2015, 00:13  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Да что ж мне не везёт-то так сегодня?
С утра лоханулся, сейчас тоже, да ещё и на работу сегодня ходил...
Наверное потому, что отпуск кончиля...


Сообщение от alvadep Посмотреть сообщение
Что-то я сомневаюсь
Абсолютно правильно сомневались...
Но эффект получился интересный.

(между тем с четырьмя светиками на трёх проводах всё прокатило)
Вложения:
Тип файла: zip LED_8_to_32.zip (31.8 Кб, 72 просмотров)
omercury вне форума  
Непрочитано 20.08.2015, 00:58  
krug_vv
Вид на жительство
 
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 376
Сказал спасибо: 191
Сказали Спасибо 153 раз(а) в 98 сообщении(ях)
krug_vv на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Сообщение от omercury Посмотреть сообщение
Ой

А Z-состояние зачем, если не секрет?

Упс, ступил.
Иначе группами светить будет...
Попадались как-то смд-светодиоды, которые слегка светились от микро-токов как раз на Z-состоянии...
Долго парился, пока не дошло навесить на каждый из них по 1 ком.
А может контрольник был бракованный, с утечками.
Флюс отмывал хорошо.
krug_vv вне форума  
Непрочитано 29.08.2015, 14:39  
uepapx
Прописка
 
Регистрация: 22.05.2009
Адрес: Волгоград
Сообщений: 215
Сказал спасибо: 103
Сказали Спасибо 39 раз(а) в 22 сообщении(ях)
uepapx на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Уважаемые omercury и alvadep! Прислали мне с Китая микроконтроллеры TINY13A. Помогите до конца довести вариант figure.1 (пост#2).
Основные требования: Отображение нуля посередине шкалы. Любое приемлемое для МК количество светодиодов в каждую сторону от нуля. Отображение одним светодиодом. Любая: линейная или логарифмическая шкала (что легче реализовать).
Как будет выглядеть полная схема устройства и что делать с прошивкой, как её изменить под эту задачу?
uepapx вне форума  
Непрочитано 30.08.2015, 01:31  
alvadep
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

uepapx, схема из статьи будет без изменений. Единственно к ней нужно добавить входную часть типа как на картинке. ОУ можно взять типа LMV321 (SOT23). Прошивку под линейный вариант в этом случае можно не менять (ссылка на исходники, на данный момент просто нечем откомпилировать, сорри, может кто-то поможет).
Код:
#include‹avr/interrupt.h›
#include‹avr/io.h›
#include‹avr/pgmspace.h›

//Linear Scale Display

volatile uint16_t curadc=0;
//instantaneous adc value

volatile uint8_t displaylevel=0;
// number of leds to be lit up

volatile uint8_t displaycounter=0;
// current lit up led

SIGNAL (SIG_OVERFLOW0)
{
	TCNT0 = -5;	//1875 Hz
//    TCNT0 - Timer/Counter Register
  switch (displaycounter)
	{
		case 0:		DDRB=0b00000000;
					PORTB=0b00000000;
					break;
		case 1:		DDRB=0b00011000;
					PORTB=0b00010000;
					break;
		case 2:		DDRB=0b00010100;
					PORTB=0b00010000;
					break;
		case 3:		DDRB=0b00010010;
					PORTB=0b00010000;
					break;
		case 4:		DDRB=0b00010001;
					PORTB=0b00010000;
					break;
		case 5:		DDRB=0b00011000;
					PORTB=0b00001000;
					break;
		case 6:		DDRB=0b00001100;
					PORTB=0b00001000;
					break;
		case 7:		DDRB=0b00001010;
					PORTB=0b00001000;
					break;
		case 8:		DDRB=0b00001001;
					PORTB=0b00001000;
					break;
		case 9:		DDRB=0b00010100;
					PORTB=0b00000100;
					break;
		case 10:	DDRB=0b00001100;
					PORTB=0b00000100;
					break;
		case 11:	DDRB=0b00000110;
					PORTB=0b00000100;
					break;
		case 12:	DDRB=0b00000101;
					PORTB=0b00000100;
					break;
		case 13:	DDRB=0b00010010;
					PORTB=0b00000010;
					break;
		case 14:	DDRB=0b00001010;
					PORTB=0b00000010;
					break;
		case 15:	DDRB=0b00000110;
					PORTB=0b00000010;
					break;
		case 16:	DDRB=0b00000011;
					PORTB=0b00000010;
					break;
		case 17:	DDRB=0b00010001;
					PORTB=0b00000001;
					break;
		case 18:	DDRB=0b00001001;
					PORTB=0b00000001;
					break;
		case 19:	DDRB=0b00000101;
					PORTB=0b00000001;
					break;
		case 20:	DDRB=0b00000011;
					PORTB=0b00000001;
					break;
		default:	DDRB=0b00000000;
					PORTB=0b00000000;
					break;
	}
	
	if(displaycounter == displaylevel)
	{
		displaycounter=0;
		ADCSRA = 0b11001111; // start conversion
	}
	else
	{
		displaycounter++;
	}
}



SIGNAL (SIG_ADC)
{
	curadc=ADC;
	displaylevel=curadc/50;
}

int main(void)
{
	DDRB = 0b00000000;
	PORTB = 0b00000000;
//    All pins set to High Z (Pins set as input with pullups disabled)


	TIMSK0 = 0b00000010;	//Timer/Counter0 Overflow Interrupt Enable is set
//    TIMSK0 - Timer/Counter Interrupt Mask Register
//    ---------------------------------------------------------
//    |  -   |  -   |  -   |  -   |OCIE0B|OCIE0A| TOIE0|  -   |
//    |  7   |  6   |  5   |  4   |  3   |  2   |  1   |  0   |
//    ---------------------------------------------------------

	TCCR0A = 0b00000000;
//    TCCR0A - Timer/Counter Control Register A
//    ---------------------------------------------------------
//    |COM0A1|COM0A0|COM0B1|COM0B0|  –   |  –   | WGM01| WGM00|
//    |  7   |  6   |  5   |  4   |  3   |  2   |  1   |  0   |
//    ---------------------------------------------------------

	TCCR0B = 0b00000101;	//Fed by System Clock of 9 600 000 divided by 1024 = 9375 Hz
//    TCCR0B - Timer/Counter Control Register B
//    -------------------------------------------------
//    |FOC0A|FOC0B|  –  |  –  |WGM02| CS02| CS01| CS00|
//    |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
//    -------------------------------------------------

	TCNT0 = -5;	//1875 Hz
//    TCNT0 - Timer/Counter Register

	ADMUX = 0b00000000; //ADC0 (PB5) is input to ADC
//    ADMUX - ADC Multiplexer Selection Register
//    -------------------------------------------------
//    |  -  |REFS0|ADLAR|  -  |  -  |  -  | MUX1| MUX0|
//    |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
//    -------------------------------------------------

	ADCSRA = 0b11001111;	//Sampling rate is system clock divided by 128
//    ADCSRA - ADC Control and Status Register A
//    -------------------------------------------------
//    |ADEN |ADSC |ADATE| ADIF| ADIE|ADPS2|ADPS1|ADPS0|
//    |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
//    -------------------------------------------------

	DIDR0 = 0b00100000;	//Disable Digital input buffer on PB5
//    DIDR0 - Digital Input Disable Register 0
//    -------------------------------------------------
//    |  –  |  –  |ADC0D|ADC2D|ADC3D|ADC1D|AIN1D|AIN0D|
//    |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
//    -------------------------------------------------

	sei();
//    Global Interrupt Enable -  Sets bit I in SREG

	while(1){};
	
}
При 0 на входе на выходе ОУ должно быть 2,5В. При этом должен гореть светодиод посредине шкалы. Смешение регулируется резистором R3.
Можно еще добавить по выходу ОУ RC фильтр. И на всякий случай защитные диоды на +5В и землю после резистора R1.
В общем как-то так в первом приближении.
Миниатюры:
Нажмите на изображение для увеличения
Название: схема1.GIF
Просмотров: 33
Размер:	8.9 Кб
ID:	82787  
alvadep вне форума  
Сказали "Спасибо" alvadep
uepapx (31.08.2015)
Непрочитано 30.08.2015, 10:55  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Не привыкайте к полотнищам в switch.

Это делается через таблицы.

PHP код:


const uint8_t tab_DDRB[] = { };
const uint8_t tab_PortB[] = { };

SIGNAL (SIG_OVERFLOW0)
{
    TCNT0 = -5;    //1875 Hz
//    TCNT0 - Timer/Counter Register
uint8_t i = displaycounter;
if ( i ›= sizeof( tab_DDRB ) ) i = 0;
DDRB = tab_DDRB[ i ];
PORTB = tab_PortB[ i ];
     if(displaycounter == displaylevel)
    {
        displaycounter=0;
        ADCSRA = 0b11001111; // start conversion
    }
    else
    {
        displaycounter++;
    } 
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
uepapx (31.08.2015)
Непрочитано 31.08.2015, 01:16  
uepapx
Прописка
 
Регистрация: 22.05.2009
Адрес: Волгоград
Сообщений: 215
Сказал спасибо: 103
Сказали Спасибо 39 раз(а) в 22 сообщении(ях)
uepapx на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Сообщение от alvadep Посмотреть сообщение
uepapx, схема из статьи будет без изменений. Единственно к ней нужно добавить входную часть типа как на картинке.
При 0 на входе на выходе ОУ должно быть 2,5В. При этом должен гореть светодиод посредине шкалы. Смещение регулируется резистором R3.
Можно еще добавить по выходу ОУ RC фильтр. И на всякий случай защитные диоды на +5В и землю после резистора R1.
В общем как-то так в первом приближении.
В приборе микроамперметр стоит на выходе каскада на ОУ UA741 в cmd корпусе (см. вложение). Его питание +15 и -15 Вольт. Можно ли использовать этот каскад для смещения нуля на середину шкалы светодиодного индикатора, не применяя дополнительный каскад на ОУ, что предложили Вы, если часть отрицательного напряжения от -15 V подать на нижний конец микроамперметра через резистивный делитель? Или все-таки лучше применить предложенный вариант - дополнительный каскад ОУ с питанием 5V? Не возникнет ли при этом конфликт по питающим напряжениям: двухполярное и однополярное?
Миниатюры:
Нажмите на изображение для увеличения
Название: Каскад.jpg
Просмотров: 16
Размер:	21.3 Кб
ID:	82809  

Последний раз редактировалось uepapx; 31.08.2015 в 01:21.
uepapx вне форума  
Непрочитано 31.08.2015, 02:15  
elon
Почётный гражданин KAZUS.RUN
 
Аватар для elon
 
Регистрация: 29.12.2004
Адрес: Bернулся в San Jose,CA,USA,Beach BLVD,свой дом,окна на океан-ничего личного,просто бизнес!
Сообщений: 1,098
Сказал спасибо: 22
Сказали Спасибо 425 раз(а) в 318 сообщении(ях)
elon на пути к лучшему
Сообщение Re: Миниатюрный линейный светодиодный индикатор

можете так включить ... тогда доп. каскад не нужен , смещение в + выставляйте какое нужно
Миниатюры:
Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 29
Размер:	81.0 Кб
ID:	82812  
__________________
"Дворяне и их младые отроки должны всегда меж собою говорить на ВЫ и на иностранных языках, дабы тем навыкнуть могли, и чтобы их можно было от других незнающих болванов распознать."
Уложение о поведении (с) царь Пётр I
elon вне форума  
Сказали "Спасибо" elon
uepapx (31.08.2015)
Непрочитано 31.08.2015, 03:00  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Миниатюрный линейный светодиодный индикатор

Сообщение от alvadep Посмотреть сообщение
на данный момент просто нечем откомпилировать, сорри, может кто-то поможет
Во-первых компилировать пока преждевременно - всё равно переделывать.
Во-вторых Boba_spb прав, лучше сделать таблично, да и править потом удобнее. (Кстати-1, это не alvadep написал, он "просто разместил объяву") (Кстати-2, массив наверное лучше сделать двухмерным).

Сообщение от uepapx Посмотреть сообщение
Можно ли использовать этот каскад для смещения нуля
Можно, и я уже говорил как.
Сообщение от uepapx Посмотреть сообщение
Не возникнет ли при этом конфликт по питающим напряжениям: двухполярное и однополярное?
Не, не возникнет.
Сообщение от elon Посмотреть сообщение
можете так включить
Тоже вариант, тогда питание "цифры" однополярное.


uepapx, давайте сначала определимся с несколькими принципиальными вещами:
- хотите ли Вы, чтоб светодиод нуля гас при смещении напряжения?
- если да, то хватит ли вам одиннадцати светодиодов?
(если "ноль" будет гореть постоянно, то хватит ли 13 диодов?)

Второй вопрос не праздный.
Так, как контроллер всего с восемью ножками, то на входы/выходы остаётся только 6 ножек, из них одна будет задействована на вход и одна служебная - активация режима стирания/записи контроллера (её можно использовать как стандартный вход/выход, но в этом случае перепрограммировать контроллер простым программатором уже не получится - нужен специальный. В случае ошибки (а они точно будут, уж поверьте), микроконтроллер отправится в долгий ящик до лучших времён. Поэтому варианта два: либо ограничиться двенадцатью моргающими диодами, либо (гулять, так гулять) ставить все 20. Но с риском.
Кстати, постоянно светящийся "ноль" будет не только ориентиром для отсчётов, но и станет двадцать первым светодиодом в шкале. )))
По поводу платы.
Лучше разделить её на две части - на одной будет микроконтроллер, а на второй только светодиоды. Так как светиков много, а места мало и разводка двадцати диодов на плате 10х30мм дело нетривиальное, то лучше не загромождать эту плату ещё и микросхеминой, да и конструкция жёстче получится - гибкую плату со светодиодами припаять по торцам к жесткой плате и соединить их ещё двумя-тремя проволочными стойками по длинным сторонам.

Готовьте ответы на эти вопросы, а потом займёмся алгоритмом работы показометра.
Программу пока отложим...

Последний раз редактировалось omercury; 31.08.2015 в 03:03.
omercury вне форума  
Сказали "Спасибо" omercury
uepapx (31.08.2015)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
16 сегментный светодиодный индикатор. Таблица кодов 3d cube Микроконтроллеры, АЦП, память и т.д 10 20.02.2015 23:40
Светодиодный матричный индикатор HCMS-397x iggor Микроконтроллеры, АЦП, память и т.д 1 11.10.2011 22:13
Светодиодный индикатор и нагрузка на порты rocky7 Микроконтроллеры, АЦП, память и т.д 64 10.10.2011 12:48
Нужен линейный светодиодный или ЖК индикатор nick1954 Информация по радиокомпонентам 6 02.12.2010 18:00


Часовой пояс GMT +4, время: 15:20.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.