Jump to content
Sign in to follow this  
-=FISHER=-

Вежливая подсветка на AtTiny25

Recommended Posts

Just now, -=FISHER=- said:

потреблением 0,5 А

У транзистора Q1 по паспорту коэффициент минимум 100. То есть базовый ток нужен 5мА. Должно получиться через штатные 820 Ом резистор.

Только, вот, если из 7мА через стабилитрон в питании забрать 5мА в транзистор, то хватит ли микроконтроллеру оставшихся 2мА для нормальной работы?

Поставьте 500 Ом для стабилитрона, запузырьте в него 14мА, тогда всем хватит.

Share this post


Link to post
Share on other sites
Только что, Yurkin2015 сказал:

Только, вот, если из 7мА через стабилитрон в питании забрать 5мА в транзистор, то хватит ли микроконтроллеру оставшихся 2мА для нормальной работы?

В общем, как я понимаю, единственный нормальный вариант это ставить стабилизатор 7805, при этом больше ничего в схеме не меняя?


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
Just now, -=FISHER=- said:

единственный

ну, можно току наддать через стабилитрон.

Share this post


Link to post
Share on other sites

Время – деньги и наноамперы: применение часов реального времени Maxim Integrated

Зачем использовать внешнюю микросхему часов реального времени (RTC), а не внутренние RTC микроконтроллера? Хотя бы потому, что у RTC MAX31342 производства Maxim Integrated типовое потребление составляет 150 нА при 3 В и температуре 25°С, а у встроенных RTC одного из самых малопотребляющих микроконтроллеров при тех же условиях – примерно 370 нА.

Читать статью

1 минуту назад, Yurkin2015 сказал:

току наддать через стабилитрон.

Уменьшив резистор перед ним?

Edited by -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
                     

Чип-резисторы Panasonic - технология мягких выводов и сертификация AEC-Q200

Технология мягких выводов чип-резисторов производства компании Panasonic. Обзор серий с оптимизированными параметрами: прецизионных тонкопленочных, токоизмерительных, антисерных, резисторов с повышенной стойкостью к статике и импульсным нагрузкам, резисторных сборок.

Читать статью

1 час назад, ivani-2a сказал:

Он по идеи, включат плафон когда ключ вставлен, а мотор ещё не заведён.

у меня на оборот в машине, когда я ключ вытаскиваю, плафон включается.

Share this post


Link to post
Share on other sites
16 минут назад, DrobyshevAlex сказал:

когда я ключ вытаскиваю, плафон включается.

Да у товарища на форде так же работает. В общем нужно будет исследовать этот сигнал.

18 минут назад, Yurkin2015 сказал:

ну, да.

А какой можно предположить максимальный ток нагрузки, например 20 мА? В такой случае по формуле расчета резистора для параметрического стабилизатора, получается что резистор нужен:

01.gif.a0ffe66287065ab86fa09f0c557cbbaa.gif

fm01.gif.2f787ca9975689e7e538024560dda13c.gif

R= (12 В - 5,1 В)/(0,02 А + 0,001 А) = ~330 Ом

Стабилитрон же не должен перегреваться в таком случае? И кстати, 820 Ом резистор тоже можно попробовать оставить на плате?

Edited by -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
20 minutes ago, -=FISHER=- said:

не должен перегреваться

Не должен, мощность на стабилитроне будет 5В * 20мА = 100мВт. Возьмите стабилитрон на 300мВт или больше.

21 minutes ago, -=FISHER=- said:

820 Ом резистор тоже можно

Надо проверить, какое напряжение будет на коллекторе при включении светодиодов в плафоне. Ещё раз, может 820 Ом будет нормально, надо подать +5В на резистор и проверить.

Share this post


Link to post
Share on other sites
8 минут назад, Yurkin2015 сказал:

Возьмите стабилитрон на 300мВт или больше.

В паспорте пишут что 0.5 Вт у них мощность https://www.chipdip.ru/product/bzv55c4v7


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites

@Yurkin2015 добрый вечер!

В итоге я решил использовать МК по проще, а именно Attiny13, и мне необходим в нём аппаратный таймер-счетчик, поэтому мне придется использовать программный ШИМ. Нашел первый же попавшийся пример программного ШИМ, и у меня возник вопрос, а где же строчка обнуления переменной counter? Или это она и есть в самом условии if (++counter==0)? Типа когда счет дойдет до предела размерности переменной, у uint8 это 254, то значение переменной автоматически станет равно 0 или я чего-то не понимаю?...

#define PWM_PORT PORTB //PORT на котором расположен ШИМ
#define PWM_DDR DDRB //DDR на котором расположен пин ШИМ
#define PWM_PIN 0 //номер пина на который будет выводиться программный ШИМ

//****************ПЕРЕМЕННЫЕ ДЛЯ ПРОГРАММНОГО ШИМ******************************
uint8_t counter; //аналог счетного регистра в аппаратном ШИМ
uint8_t lev_ch; //
uint8_t buf_lev_ch; //аналог регистра OCR0A

ISR (TIMER1_OVF_vect)
{
	if (++counter==0) //счетчик перехода таймера через ноль
	{
		buf_lev_ch=lev_ch; //значения длительности ШИМ
		PWM_PORT |=(1<<PWM_PIN); //подаем 1 на канал
	}
	if (counter==buf_lev_ch) PWM_PORT&=~(1<<PWM_PIN); //подаем 0 на канал
}

 


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites

Все правильно только не после 254 а после 255 будет обнуление. Скважность изменяется lev_ch = х;

А вот частоту ШИМ можно только вместе с  таймером.

Share this post


Link to post
Share on other sites

Я кажется запутался в трёх соснах, уже сломал всю голову себе. Много раз пользовался прерываниями по переполнению у Atmega8, но ни разу у Attiny13. И вот никак не получается их запустить. Код инициализации таймера, проще некуда и вроде все что нужно указал, но обработчик прерывания не запускается! Пожалуйста, покажите где я ошибся.

#define F_CPU 9600000 //fuse LOW=0x7a

#include <avr/io.h>
#include <avr/interrupt.h>  
  
void timer_ini(void)
{
	TIMSK|=(1<<TOIE1); //включили прерывание по переполнению
	TCCR0B|=(1<<CS02); //предделитель 256 - 9600000/256=37500 тиков в секунду или 147 переполнений в секунду
}

ISR (TIMER0_OVF_vect)
{ 
	PORTB|=(1<<0); //эту строку использую чисто для проверки прерывания
}

int main(void)
{
  	DDRB|=(1<<0); //PBO - на выход
	timer_ini(); //инициализация встроенного таймера/счетчика
	sei(); //глобально разрешаем прерывания
    while (1) 
    {

    }
}

 

Edited by -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
15 минут назад, -=FISHER=- сказал:

TOIE1

разрешает 0-вой таймер???:

 

16 минут назад, -=FISHER=- сказал:

TIMER0_OVF_vect

 


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
12.02.2020 в 16:36, ruhi сказал:

разрешает 0-вой таймер???:

Это опечатка...Конечно у меня в коде TOIE0


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
Только что, -=FISHER=- сказал:

Конечно

Вот еще какая то фигня есть - включать надо (если я ту пдф-ку смотрю):

The Power Reduction TC0 bit in the Power Reduction Register (PRR.PRTIM0) must be written to zero to
enable the Timer/Counter0 module.


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
12.02.2020 в 16:40, ruhi сказал:

Вот еще какая то фигня есть - включать надо (если я ту пдф-ку смотрю):

В даташите нет такого https://ww1.microchip.com/downloads/en/devicedoc/doc2535.pdf


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
Только что, -=FISHER=- сказал:

В даташите нет такого https://ww1.microchip.com/downloads/en/devicedoc/doc2535.pdf

а без прерывания она ногой дергает, может там и без прерываний ничего не работает, Проверяли???


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
12.02.2020 в 16:46, ruhi сказал:

Проверяли???

 

В общем ситуация следующая, если в коде есть функция инициализации таймера, то PB0 можно только включить в 1, а выключить не получается. А если инициализацию закоментить, то все нормально.

Edited by -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
7 минут назад, -=FISHER=- сказал:

Проверял, просто порт в 1 включает

блин, тогда все надо проверять, в первую очередь клоки, меандр вывести посмотреть осцилографом, без прерывания по флагу прерывания ногу переключить...

просто ногу в 1 переключить навсегда, это уж очень примитивная проверка, оно вполне может в заблуждение ввести, просто совпасть может по какой то причине что после перепрошивки чего то другого там теперь 1-ца, надо что то более содержательное увидеть!

Edited by ruhi

Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
17 minutes ago, -=FISHER=- said:

а выключить не получается

А в каком месте программы PB0 зануляется? В прерывании PB0 устанавливается в 1 и всё, стоит там навечно.

Share this post


Link to post
Share on other sites
12.02.2020 в 17:07, Yurkin2015 сказал:

В прерывании PB0 устанавливается в 1 и всё, стоит там навечно.

Сейчас вот так

    while (1) 
    {
			PORTB|=(1<<0);
  			_delay_ms(500); //пауза 5мс
			PORTB&=~(1<<0);  
			_delay_ms(500); //пауза 5мс
    }

Но стоит включить предделитель, как перестает моргать. При пустой функции прерывания.

Попробовал ШИМ запустить аппаратный, но и он не стартует, попробую поменять МК.


Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites
51 минуту назад, -=FISHER=- сказал:

Это опечатка...Конечно у меня в коде TOIE0

А TIMSK? Он тоже должен быть TIMSK0 (по datasheet).

Share this post


Link to post
Share on other sites
12.02.2020 в 17:30, Геннадий сказал:

А TIMSK?

Я проверил, в Atmel Studio 7 он именно так продефайнен, по адресу совпадает.

МК заменил на новый, как только активирую предделитель, код из while перестает работать...

А нет, дело не в предделителе.

Вот так работает

void timer_ini(void)
{
	//TIMSK|=(1<<TOIE0); //включили прерывание по переполнению
	TCCR0B|=(1<<CS02); //предделитель 256 - 9600000/256=37500 тиков в секунду или 147 переполнений в секунду
}

Вот так тоже работает

void timer_ini(void)
{
	TIMSK|=(1<<TOIE0); //включили прерывание по переполнению
	//TCCR0B|=(1<<CS02); //предделитель 256 - 9600000/256=37500 тиков в секунду или 147 переполнений в секунду
}

А вот в такой связке не работает, как будто МК зависает

void timer_ini(void)
{
	TIMSK|=(1<<TOIE0); //включили прерывание по переполнению
	TCCR0B|=(1<<CS02); //предделитель 256 - 9600000/256=37500 тиков в секунду или 147 переполнений в секунду
}

Нет же такого правила, что нельзя использовать ножку PB0, если таймер запущен и настроен на прерывание по переполнению? Хотя у меня и ШИМ не запускается аппаратный...

Edited by -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Share this post


Link to post
Share on other sites

У вас похоже неправильно прерывание объявлено TIMER0_OVF_vect обычно должно быть TIM0_OVF_vect

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Робот однако...https://aliexpress.ru/item/4000036818252.html?yclid=2944093463414341440&src=yndxweb&albch=srch&acnt=7443951&isdl=y&aff_short_key=_eMF23G&tracelog=yandexmg_Standard_Promocode_dsa Модный
    • Делайте это, плиз, до того как задаёте вопросы на форуме Иначе на вопросы, типа : Будете получать в ответ : "А почему она должна работать ?".
    • а от чего транзистор слез? хочу спросить хозяина усЯ походу ты в него залез!? а он кричит- не я! а кто крутил винты? скажи не сами же они? а он каки винты, каки винты? ты пальцем покажи! а вот, смотри, да не туда! ты чё, ваще слепой? а он поникнув головой сказал лишь тихо ой... тогда, мой друг, бери кашель и доставай бабло покуда добрый я сей час скажи что повезло но, ссука, в следующий раз молись своим богам хоть жопу натяни на глаз гарантию не дам! (радиоремонтная. жизненная. экспромт)
    • Купил сварочный бу Ресанта 250а, свистит на хх. Вскрыл, обнаружил люфт сердечника силового трансформатора. Пошевелил, частота свиста/писка меняется. Подскажите, чем приклеить и как спозиционировать в нормальное положение? ЕЕ65
    • раз пошла такая пьянка с вариантами, то три дэ принтер забыли... я же говорю о доступных подручных и практически бесплатных материалах, в смысле тары, в смысле их крышек. вот вариант женских банок с кремами очень подходящий. есть такие крышки у кремов для рук/лица/век и вообще кожи на любых местах (типа баба сшита из разных сортов а мужик из одного ) прям ништячные. у фирмовых поликарбонатные как корпуса смартов. у дешёвых либо колкие либо мягкие  полиэтиленовые как на баклашках (чаще всего белые, чёрные и матовые) о, есть же ещё банки из под кофе типа нескафе, монарх и тд. крышки в основном коричневые и чёрные. диаметр близок к требуемому. просто надо померить.  а пенсионеров так обижать грешно. им итак досталось в войну, потом восстановление из разрухи, стройки века, перестройка, развал союза а тут ещё и крышку со счётчика спёрли... 
    • А есть люди после которых таксисты протирают сиденья
    • Простое зарядное устройство с возможностью установки тока и напряжения заряда. Зарядное устройство для аккумуляторов.rar
×
×
  • Create New...