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

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

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

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

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

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

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

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

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

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

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


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

(между тем с четырьмя светиками на трёх проводах всё прокатило)
Вложения:
Тип файла: zip LED_8_to_32.zip (31.8 Кб, 72 просмотров)
omercury вне форума  
Непрочитано 20.08.2015, 00:58  
krug_vv
Вид на жительство
 
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 377
Сказал спасибо: 192
Сказали Спасибо 156 раз(а) в 99 сообщении(ях)
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.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
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.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 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 ( 
›= sizeoftab_DDRB ) ) 0;
DDRB tab_DDRB];
PORTB tab_PortB];
     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.RU
 
Аватар для elon
 
Регистрация: 29.12.2004
Адрес: Bернулся в San Jose,CA,USA,Beach BLVD,свой дом,окна на океан-ничего личного,просто бизнес!
Сообщений: 1,098
Сказал спасибо: 22
Сказали Спасибо 423 раз(а) в 316 сообщении(ях)
elon на пути к лучшему
Сообщение Re: Миниатюрный линейный светодиодный индикатор

можете так включить ... тогда доп. каскад не нужен , смещение в + выставляйте какое нужно
Миниатюры:
Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 29
Размер:	81.0 Кб
ID:	82812  
__________________
"Дворяне и их младые отроки должны всегда меж собою говорить на ВЫ и на иностранных языках, дабы тем навыкнуть могли, и чтобы их можно было от других незнающих болванов распознать."
Уложение о поведении (с) царь Пётр I
elon вне форума  
Сказали "Спасибо" elon
uepapx (31.08.2015)
Непрочитано 31.08.2015, 03:00  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
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:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot