Перейти к содержанию

Корректировка схемы гирлянды


tifaso

Рекомендуемые сообщения

Делаю я в общем свою гирлянду и тут я призадумался, а не слишком ли она у меня получается прожорлива. Появилась у меня мысль заменить пока не поздно резисторы чтобы понизить токи на светодиодах. Да и транзисторы здорово разгрузит. Вот только как сильно это может сказаться на яркости свечения светодиода. 

В общем по моим подсчётам на светодиоды самой гирлянды я хочу дать по 10 миллиампер, а на светодиоды индикации по 6 миллиампер.

Светодиодов в каждом канале гирлянды по 20 поэтому нагрузка там приличная. Ведь всё это ещё планируется питать от блока питания на 5 вольт и 2 ампера.

Вот схема самой гирлянды (уже в изменённом виде):

1431587917_2.thumb.JPG.2e3a1b3d89e0ea721ae2ab06ed2df90a.JPG

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Для чего так много кнопок? Или это еще по совместительству клавишный музыкальный инструмент?

Резисторы подтяжки кнопок можно использовать внутренние микроконтроллера.

Резисторы индикаторов 600 - 1000 Ом

Базовые 1.5к

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Так и не нашел ни одного вопросительного знака в стартовом посте, поэтому пишу о том, что вижу:
1) сопротивление базовых резисторов ключей можно смело увеличить в десять и более раз, не нагружая контроллер впустую;
2) удобнее запитать светодиоды от отдельного источника, включив их последовательно и избавившись от половины токоограничительных резисторов;
3) при использовании для индикации ультраярких светодиодов ток через них может быть значительно меньше 6 мА.
Например, лично опытным путем установил, что для комфортного созерцания красного светодиода ток через него не должен превышать 1 мА, белого - 0,25 мА, синего - 0,1 мА, зеленого - 0,05 мА. Естественно, возможны незначительные вариации в зависимости от используемого типа светодиодов, но мораль в том, что применение ультраярких СИД позволяет разгрузить выходы контроллера

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

@Berg Подтяжка по мне так лучше внешними резисторами. При таком раскладе положение точно установится как нужно. Уже попадался на внутренних подтяжках. Теперь я от этого отказался и ставлю только внешние.

@sanya110 Светодиоды уже давно закуплены, но вот информации по ним очень мало известно только напряжение питания и цвет других данных увы в магазине не предоставили. Поэтому тут скорей всего методом подбора нужно сделать. Попробовать включить светодиод с разными резисторами и посмотреть его свечение.

Ссылка на комментарий
Поделиться на другие сайты

Согласен. Если ультраяркие светодиоды - то для индикации хватит и 0.5-1мА. Если они разного цвета, то у них разное напряжение - это я к тому, что резисторы тоже могут быть разными для получения одинаковой яркости. А гирлянда что собой представляет? Тоже прав Саня110 - можно запитать от 12В, соединив по 3-4 светодиода последовательно, или от 7В, соединив по два. 5В для двух последовательных мало, учитывая падение на транзисторе. Такая схема сделана для упрощения. Так что если питать будете от зарядки типа USB - оставляйте как есть. А если от трансформатора с диодным мостом и 7805 - то можно гирлянду запитать после моста до 7805.

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

@KomSoft Питание у меня будет на пять вольт от блока питания на два ампера и сама гирлянда рассчитана на это в схеме всё это видно.

Фото блока питания:

DSC02844.thumb.JPG.9efadcc79465e9ed9f877f722cf6c83c.JPG

Трансформаторное питание делать не стал потому как греться сильно будет уже пройдено.

Ссылка на комментарий
Поделиться на другие сайты

С чего это вдруг трансформаторное питание греется? Другое дело что сейчас проще и дешевле взять готовый блок, как у вас, а не заморачиваться с изготовлением своего. Тогда делайте, как в схеме, только ток светодиодам установите минимально достаточный по свечению.

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

Сейчас при помощи подстроечного резистора номиналом в 1 ком подобрал нужное сопротивление. Несмотря на разную большую палитру светодиодов (у меня используется 7 цветов) они у меня все примерно одной яркости. Потому как я долго крутил с подстроечником начинал от 1 ком, но это слишком завышеное сопротивление для моих светодиодов они едва светятся при таком сопротивлении. Далее я начал потихоньку понижать сопротивление и смотреть на свечение светодиодов и подобрав золотую серединку к своим светодиодам я остановился на сопротивлении 750 ом это 2.7 миллиампера на светодиод. При таком раскладе светодиоды светят вполне комфортно и достаточно яркости. Пробовал более низкое сопротивление, но там уже светодиоды слишком ярко светят по глазам сильно бьёт.

Н да а я вообще хотел изначально по 100 ом воткнуть. Хорошо хоть вовремя подумал об этом.

Ну теперь остаётся приобрести резисторы на 750 ом и делать.

Изменено пользователем tifaso
Ссылка на комментарий
Поделиться на другие сайты

@солар Почему же не испытывались. Там хоть прошивка пока ещё не дописана, но на порту A все кнопки и светодиоды работают. Изначально была проблемка на порту С, но после отключения в фьюзах JTAGEN всё ушло.

@Gregorianets А не повлияет ли это на работу моей схемы? Ведь там сейчас всё отлажено как нужно.

Единственное мне не нравится то что кнопки не сразу отзываются это касается всех кнопок. Вот это я бы полечил.

Ссылка на комментарий
Поделиться на другие сайты

31 минуту назад, tifaso сказал:

кнопки не сразу отзываются

А как вы ох опрашиваете? В главном цикле? Реализуйте опрос кнопок в прерывании Таймера1. 

Ссылка на комментарий
Поделиться на другие сайты

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
volatile unsigned char power=0;
volatile unsigned char menu=0;

int main(void)
{
	DDRA = 0b11110000;
	DDRB = 0b00000000;
	DDRC = 0b11111111;
	DDRD = 0b11111111;
	PORTA = 0b00000000;
	PORTB = 0b00000000;
	PORTC = 0b00000000;
	PORTD = 0b10000000;
    while(1)
    {
        if (~PINB & (1<<0))
        {
			_delay_ms(1);
			if (~PINB &(1<<0))
			{
			    while(~PINB & (1<<0));
			    if (PINC)
			    {
				    PORTD = 0b10000000;
				    PORTC = 0b00000000;
				    PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
				    power=0;
			    } 
		    	else
			    {
			    	PORTD &= ~(1<<7);
			    	PORTC |= (1<<0);
				    power=1;
			    }
		    }
        }
		if (power==1)
		{
			if (~PINB & (1<<1))
			{
				_delay_ms(1);
				if (~PINB & (1<<1))
				{
				    PORTC |= (1<<1);
			    	PORTC &= ~((1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
			    	PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;
			    	menu=1;
				}
			}
			if (~PINB & (1<<2))
			{
				_delay_ms(1);
				if (~PINB & (1<<2))
				{
				    PORTC |= (1<<2);
		    		PORTC &= ~((1<<1)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
		    		PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
	    			menu=2;
				}
			}
			if (~PINB & (1<<3))
			{
				_delay_ms(1);
				if (~PINB & (1<<3))
				{
		    		PORTC |= (1<<3);
	    		  	PORTC &= ~((1<<1)|(1<<2)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
		    		PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
		    		menu=3;
				}
			}
			if (~PINB & (1<<4))
			{
				_delay_ms(1);
				if (~PINB & (1<<4))
				{
	    			PORTC |= (1<<4);
	    			PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<5)|(1<<6)|(1<<7));
	    			PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
	    			menu=4;
				}
			}
			if (~PINB & (1<<5))
			{
				_delay_ms(1);
				if (~PINB & (1<<5))
				{
	    			PORTC |= (1<<5);
	    			PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<7));
	    			PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
	    			menu=5;
				}
			}
			if (~PINB & (1<<6))
			{
				_delay_ms(1);
				if (~PINB & (1<<6))
				{
				    PORTC |= (1<<6);
				    PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<7));
				    PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
				    menu=6;
				}
			}
			if (~PINB & (1<<7))
			{
				_delay_ms(1);
				if (~PINB & (1<<7))
				{
	    			PORTC |= (1<<7);
	    			PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6));
	    			PORTA &= ~((1<<4)|(1<<5)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
		    		menu=7;
				}
			}
			if (~PINA & (1<<0))
			{
				_delay_ms(1);
				if (~PINA & (1<<0))
				{
				    PORTA |= (1<<4);
		    		PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
	    			PORTA &= ~((1<<5)|(1<<6)|(1<<7));	
					PORTD = 0b00000000;			
	    			menu=8;
				}
			}
			if (~PINA & (1<<1))
			{
				_delay_ms(1);
				if (~PINA & (1<<1))
				{
    				PORTA |= (1<<5);
	    			PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
	    			PORTA &= ~((1<<4)|(1<<6)|(1<<7));
					PORTD = 0b00000000;				
	    			menu=9;
				}
			}
			if (~PINA & (1<<2))
			{
				_delay_ms(1);
				if (~PINA & (1<<2))
				{
    				PORTA |= (1<<6);
    				PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
    				PORTA &= ~((1<<4)|(1<<5)|(1<<7));
					PORTD = 0b00000000;				
    				menu=10;
				}
			}
			if (~PINA & (1<<3))
			{
				_delay_ms(1);
				if (~PINA & (1<<3))
				{
    				PORTA |= (1<<7);
    				PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));
    				PORTA &= ~((1<<4)|(1<<5)|(1<<6));	
					PORTD = 0b00000000;			
    				menu=11;
				}
			}
			if (menu==1)
			{
				PORTC |= (1<<1);
				PORTD |= (1<<0);
				PORTD &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6));
				_delay_ms(300);
				PORTD |= (1<<1);
				PORTD &= ~((1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6));
				_delay_ms(300);
				PORTD |= (1<<2);
				PORTD &= ~((1<<0)|(1<<1)|(1<<3)|(1<<4)|(1<<5)|(1<<6));
				_delay_ms(300);
				PORTD |= (1<<3);
				PORTD &= ~((1<<0)|(1<<1)|(1<<2)|(1<<4)|(1<<5)|(1<<6));
				_delay_ms(300);
				PORTD |= (1<<4);
				PORTD &= ~((1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<5)|(1<<6));
				_delay_ms(300);
				PORTD |= (1<<5);
				PORTD &= ~((1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6));
				_delay_ms(300);
				PORTD |= (1<<6);
				PORTD &= ~((1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5));
				_delay_ms(300);
			}
			if (menu==2)
			{
				PORTC |= (1<<2);
				PORTD |= (1<<0);
				_delay_ms(300);
				PORTD |= (1<<1);
				_delay_ms(300);
				PORTD |= (1<<2);
				_delay_ms(300);
				PORTD |= (1<<3);
				_delay_ms(300);
				PORTD |= (1<<4);
				_delay_ms(300);
				PORTD |= (1<<5);
				_delay_ms(300);
				PORTD |= (1<<6);
				_delay_ms(300);
				PORTD &= ~(1<<0);
				_delay_ms(300);
				PORTD &= ~(1<<1);
				_delay_ms(300);
				PORTD &= ~(1<<2);
				_delay_ms(300);
				PORTD &= ~(1<<3);
				_delay_ms(300);
				PORTD &= ~(1<<4);
				_delay_ms(300);
				PORTD &= ~(1<<5);
				_delay_ms(300);
				PORTD &= ~(1<<6);
			}
			if (menu==3)
			{
				PORTC |= (1<<3);
				PORTD |= ((1<<0)|(1<<6));
				_delay_ms(300);
				PORTD |= ((1<<1)|(1<<5));
				_delay_ms(300);
				PORTD |= ((1<<2)|(1<<4));
				_delay_ms(300);
				PORTD |= (1<<3);
				_delay_ms(300);
				PORTD &= ~((1<<0)|(1<<6));
				_delay_ms(300);
				PORTD &= ~((1<<1)|(1<<5));
				_delay_ms(300);
				PORTD &= ~((1<<2)|(1<<4));
				_delay_ms(300);
				PORTD &= ~(1<<3);
				_delay_ms(300);
			}
			if (menu==4)
			{
				PORTC |= (1<<4);
				PORTD |= ((1<<0)|(1<<6));
				_delay_ms(300);
				PORTD |= ((1<<2)|(1<<4));
				_delay_ms(300);
				PORTD &= ~((1<<0)|(1<<6));
				_delay_ms(300);
				PORTD &= ~((1<<2)|(1<<4));
				_delay_ms(300);
				PORTD |= ((1<<1)|(1<<5));
				_delay_ms(300);
				PORTD |= (1<<3);
				_delay_ms(300);
				PORTD &= ~((1<<1)|(1<<5));
				_delay_ms(300);
				PORTD &= ~(1<<3);
			}
		}
    }
}

Вот код прошивки. Да получается что кнопки опрашиваются в главном цикле. А то есть как это в прерывании таймера? Можно пожалуйста подробнее или примерчик кода.

Ссылка на комментарий
Поделиться на другие сайты

Где можно найти документацию по прерываниям в таймере ATMEGA16? В даташитах искал так и не нашел нужных параметров. Смотрел видеоуроки как это делается на ATMEGA8. Но документации по 16 меге так не нашёл.

Ссылка на комментарий
Поделиться на другие сайты

И всё таки я так и недопонимаю как можно сделать опрос кнопок по таймеру даже видеоуроки не особо помогают. Скорей всего прийдётся так и оставить. Потому как другого решения я не нашел.

Изменено пользователем tifaso
Ссылка на комментарий
Поделиться на другие сайты

О сложно это слишком для меня я наверное пока в эти таймеры лезти не буду.

Тут же насколько я понимаю нужно создать параллельный поток в котором будут проверятся кнопки, а основной код программы должен выполнятся отдельно. Но как его создать? И есть ли вообще какие нибудь другие способы кроме таймера.

Изменено пользователем tifaso
Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, tifaso сказал:

Вот код прошивки.

А фигурные скобки что означают? Почти в каждой строчке у вас.

Изменено пользователем Гар

Хочешь накормить человека один раз — дай ему рыбу. Хочешь накормить его на всю жизнь — научи его рыбачить.

Ссылка на комментарий
Поделиться на другие сайты

Блоки выделяются в С так. Как begin end в Pascal и Delfi. Столкнулся недавно с Пайтоном, там блоки выделяются только отступом. По-моему х..ня редкая - вдруг придется блок внести в блок -и что, считать отступы по тексту? Скобками надежнее.

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Вон справа от разьёма второй такой же, а он исправный? Почему решили что он неисправный? А сравнить их прозвонкой? А со схемой их включения разобрались? А ничего не сделав
    • Ясен красен, что фуфел. Вертеть надыть диск, либо совместно, ибо магнитное поле, созданное магнитом, оному не принадлежит, статично. Сиречь - флуктуация. П.С. ТРЕТИЙ ЗАКОН ЧИЗХОЛМА: Любые ваши предложения обязательно истолкуют иначе, чем вы их имеете в виду.
    • Земляная мекка, она же звезда работает лучше всего.
    • Попросил сотрудник отремонтировать фонарь со сгоревшей микросхемой заряда TP4056. Снял её с платки ломаного зарядника, поставил. Работает. Если заряд литиевого аккумулятора восстановил, то вот питание светодиодов оказалось сверхпримитивным - через одноваттные токоограничительные резисторы, что не совсем комильфо. И даже совсем не комильфо. В своё время затарился линейными стабилизаторами тока CN5711 (регулируемый до 1,5 А) и AMC7135 (фиксированный на 350 мА). Решил запитать пятиваттный светодиод фары Cree первым из них, с током 800 мА и одноваттный светодиод общей подсветки вторым. Фото дорожек платы после установки драйверов. AMC7135 обведен красным овалом, а CN5711 - зелёным. По центру вверху - замененная TP4056. Особых проблем с их монтажом не встретил, кроме единственной, решение которой и составило суть данного поста.  А именно: поскольку драйверы линейные, то они греются и монтировать их следует к медному теплоотводному полигону. Которого взять неоткуда. Поэтому применил старую наработку по пистонированию переходных отверстий на противоположную сторону платы латунными пистонами из Поднебесной диаметром 1 мм. Получилось два "массива" близко расположенных пистонов, к которым и были подпаяны "подбрюшья" драйверов. Обведены овалами соответствующих цветов. А уже к ним подпаяны медные "флажки", вырезанные из 0,3 мм шинки, бывшей вторичной обмоткой какого-то импульсного трансформатора (в красном овале). При длительной работе (более 10 минут) нижний "флажок" (красный) тёплый, а верхний (зелёный) горячий, но рука терпит. AMC7135.PDF CN5711.PDF
    • Гость Михаил
      Добрый день! Собрал данный фонокорректор на монтажной плате по схеме на первой странице на ОУ NE5532P. Стабилизированное питание +-12В. Голова ММ. Заработал сразу и звучит хорошо но есть несколько вопросов. Какой уровень шума у данного фонокорректора? При подключении питания он шумит сильнее чем встроенный в ресивер фонокорректор на ОУ AN6558F. Какие детали могут влиять на повышенный уровень? Все детали подобраны по номиналам схемы но не хватает высоких частот. Что можно изменить в схеме что бы немного их поднять?
    • Куда оно денется. И кто уже навряд ли БП мог держать 19 А на 12 В шине, потому замена никак не повлияет на его работу.
×
×
  • Создать...