Помогите узнать больше Atmega8A

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Stass48
Потрогал лапой паяльник
Сообщения: 329
Зарегистрирован: Пн фев 18, 2008 17:48:40

Помогите узнать больше Atmega8A

Сообщение Stass48 »

Доброго времени суток!
Понимаю, может быть вопрос для кого-то и пустяковый, но честно, искал и не нашел.
Моя задача сделать "мигалку" на базе контроллера Atmega8A, реализовав при этом само мигание при помощи ШИМ.
Соответственно, требование у меня к такому устройству - мигать как можно большим количеством светодиодов и чтобы это "чудо" могло спокойно питаться от 3 вольтовой батарейки.

Так вот вопросы:
1) Какое максимальное количество светодиодов я смогу поцепить на контроллер? Ну, то есть какие ноги контроллера поддадутся программной реализации ШИМ? Или из любого порта можно выжать ШИМ программными средствами?
2) Какую частоту контроллера лучше выбрать чтобы получить максимально качественное мигание?
3) На что влияет Startup time: 6 CK + 0ms или 64ms, ну то есть, в чем разница? То есть как конфигурировать фьюзы?

Спасибо, с уважением!
The only one thing necessary for the triumph of evil ...is for good people to do nothing.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите узнать больше Atmega8A

Сообщение YS »

Программный ШИМ можно реализовать на каком угодно порту.

Частоту - как можно больше в пределах допустимого. Для программного многоканального ШИМ это особо актуально.

Startup time ... как конфигурировать фьюзы?


Оставьте этот параметр по умолчанию.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Stass48
Потрогал лапой паяльник
Сообщения: 329
Зарегистрирован: Пн фев 18, 2008 17:48:40

Re: Помогите узнать больше Atmega8A

Сообщение Stass48 »

Спасибо за ответ! Я это очень ценю то, что именно ответили, а не ткнули рылом в мануал! Ибо перечитал я их уже... Но по неопытности своей не понимаю я мануалов, а интернете мало такой специфической инфы, а если она и есть то для меня почему-то найти ее нереально, а времени разбираться особо нету, хочу девушке подарочек сварганить :)

Итак, давайте разберем по порядку:
Программный ШИМ можно реализовать на каком угодно порту.

Как оказалось, не совсем на любом, по крайней мере, в моем случае - точно. У меня последовательный программатор (PonyProg 2000). Например для того, чтобы из ноги "Reset" сделать порт, нужно переконфигурировать фьюз. Для меня же это невозможно, ввиду того, что PonyProg просто не даст этого сделать. Потому я и задаю сейчас вопрос: Это единственный порт, которым я не смогу пользоваться или есть еще порты? Просто мне аж не верится, что я смогу полноценно использовать все ноги контроллера для ШИМ, кроме Ресета и питания, включая аналоговое питание (то есть, еще несколько ножек)...

Я на одном из сайтов прочитал что:
23 порта ввода/вывода, объединенных в 3 группы:
Порт В (PB0 - РВ7): Два вывода (РВ6 и PB7) используются для подключения кварцевого резонатора. Выводы РВ2 - РВ5 зарезервированы для внутрисхемного программирования. Таким образом, для общего применения остаются порты PB0 и PB1.
Порт С (PC0 - РС6 : 7 выводов): Порты PC0 - РС5 можно использовать в качестве аналоговых входов. РС6 обычно используется для сброса.
Порт D (PD0 - PD7 : 8 выводов): Эти порты можно использовать для общего применения.

1) Если я не использую внутрисхемное программирование, смогу ли я использовать для ШИМ еще и РВ2 - РВ5 порты?
2) Смогу ли я подключить кнопку к портам отличным от PCx, например, к PDx или это возможно только для портов PC?
3) Смогу ли я использовать для ШИМ порты PCx или это касается только портом PDx?

4) Можно ли сконфигурировать ATMEGA8A на работу 16 MHz (то есть, максимальную) без применения внешнего кварца? Или нужно будет поключать кварц, при этом теряя еще две ноги?
5) И последний вопрос, будет ли ATMEGA8A при 16 МГц, работать от 2,7 вольт? Судя по даташиту вроде должен, но так ли это на самом деле?

Понимаю, вопросов куча, но хочу заполнить дырки в своих знаниях восьмой меги. Спасибо за внимание.
The only one thing necessary for the triumph of evil ...is for good people to do nothing.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Помогите узнать больше Atmega8A

Сообщение SmarTrunk »

Вывод RESET - да, если его сделать обычным выводом порта, изменив фьюзы, то понадобится параллельный программатор для перепрошивки МК, это неудобно.

Кнопку можно подключить к любым портам.

Программный ШИМ можно сделать на любых портах (но если их много, то хватит ли производительности МК? И вообще, тут все зависит от программиста, что он сможет сделать, лично я не делал никогда). Аппаратный ШИМ (который удобнее) - нет (читать описание таймеров). Хотя все выходы порта PC (кроме двух) питаются от аналогового источника питания AVCC, но если АЦП не используется, то это пофиг.

С внутренним RC-генератором работает до 8 МГц.

При питании 2,7В максимум 8МГц, даташит - (Figure 26-1. Maximum Frequency vs. Vcc).
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите узнать больше Atmega8A

Сообщение YS »

хочу девушке подарочек сварганить


Ёмае, у вас там брачный сезон, что ли? :)) Только недавно на заказ делал одному кадру электронику для говорящей его голосом шкатулки. :)

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

Как оказалось, не совсем на любом


Ясное дело, в пределах разумного. Если пин уже сконфигурирован под сервисную функцию, то его, понятное дело, одновременно для двух разных задач использовать не получится. Впрочем, как видно, если сильно хочется, даже RESET можно сделать обычным пином. Но делать этого не стоит, иначе прошивать надо будет только параллельным программатором.

Просто мне аж не верится, что я смогу полноценно использовать все ноги контроллера для ШИМ


Для программного ШИМ, написанного руками. Чего не верится-то? Написать можно все, что угодно. И программный ШИМ в том числе. Но программный ШИМ - это не фунт изюму, тем более на столько ножек - частота будет малой, загрузка проца большой. Хотя для вашего применения это неважно. Будет герц 100 - и уже хорошо.

Если я не использую внутрисхемное программирование, смогу ли я использовать для ШИМ еще и РВ2 - РВ5 порты?


Извините, но с этим вопросом давайте все же к даташиту. Насколько они там зарезервированы - надо смотреть. Обычно ничто не мешает в рабочем режиме использовать ножки ISP как обычные пины.

Смогу ли я подключить кнопку к портам отличным от PCx, например, к PDx ... ?


Этому ничто не мешает.

Смогу ли я использовать для ШИМ порты PCx ... ?


Для программного (!!!) ШИМ доступна любая ножка, к которой можно обратиться. Т.е., разумеется, кроме сервисных.

Можно ли сконфигурировать ATMEGA8A на работу 16 MHz (то есть, максимальную) без применения внешнего кварца?


Нет.

И последний вопрос, будет ли ATMEGA8A при 16 МГц, работать от 2,7 вольт? Судя по даташиту вроде должен, но так ли это на самом деле?


На этот вопрос уже ответили выше, зависит от частоты.

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


Лучше найдите кого-то рядом, кто за мзду малую разработает электронику за вас. Как сделал упомянутный мной товарищ.

UPD.

Телепатически я вижу, что следующая пачка вопросов будет про то, как же реализовать программный ШИМ. Короче вот, держите реализацию программного ШИМ на все доступные ноги (20 шт., кроме RESET и XTAL1/XTAL2) для ATmega8. Код для AVR-GCC (WinAVR + AVR Studio). Предполагаемое тактирование - 8 МГц.

Неиспользованные выводы XTAL1/2 тоже в принципе можно использовать, но вдруг вы все же захотите внешний кварц?

Массив pwm_values - значения ШИМ для каждой ножки, от 0 до 255; pwm_pins - собственно битовые маски ножек; pwm_ports - соответствие масок ножек и портов.

Вызываем softPWM_Init(), разрешаем прерывания, а дальше просто пишем в pwm_values[] по нужному номеру ножки желаемое значение ШИМ на ней.

Спойлер

Код: Выделить всё

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdint.h>

#define PWM_PIN_COUNT   20

//PWM values for every pin
volatile uint8_t pwm_values[PWM_PIN_COUNT];

//PWM pin/port look-up table

uint8_t pwm_pins[PWM_PIN_COUNT] PROGMEM = {

   _BV(PD0),_BV(PD1),_BV(PD2),_BV(PD3),_BV(PD4),
   _BV(PD5),_BV(PD6),_BV(PD7),_BV(PB0),
   _BV(PB1),_BV(PB2),_BV(PB3),_BV(PB4),_BV(PB5),
   _BV(PC0),_BV(PC1),_BV(PC2),_BV(PC3),_BV(PC4),_BV(PC5)

};

#define PWM_PD         1
#define PWM_PB         2
#define PWM_PC         3

uint8_t pwm_ports[PWM_PIN_COUNT] PROGMEM = {

   PWM_PD,PWM_PD,PWM_PD,PWM_PD,PWM_PD,
   PWM_PD,PWM_PD,PWM_PD,PWM_PB,
   PWM_PB,PWM_PB,PWM_PB,PWM_PB,PWM_PB,
   PWM_PC,PWM_PC,PWM_PC,PWM_PC,PWM_PC,PWM_PC

};

ISR (TIMER0_OVF_vect)
{
   static uint8_t pwm_counter=0;
   uint8_t k;

   if (!pwm_counter)
   {
      for (k=0; k<PWM_PIN_COUNT; k++)
      {
         switch (pgm_read_byte(&(pwm_ports[k])))
         {
            case PWM_PB:
               PORTB|=pgm_read_byte(&(pwm_pins[k]));
            break;

            case PWM_PC:
               PORTC|=pgm_read_byte(&(pwm_pins[k]));
            break;

            case PWM_PD:
               PORTD|=pgm_read_byte(&(pwm_pins[k]));
            break;

            default:
            break;
         }
      }
   }

   for (k=0; k<PWM_PIN_COUNT; k++)
   {
      if (pwm_counter>pwm_values[k])
      {
         switch (pgm_read_byte(&(pwm_ports[k])))
         {
            case PWM_PB:
               PORTB&=~pgm_read_byte(&(pwm_pins[k]));
            break;

            case PWM_PC:
               PORTC&=~pgm_read_byte(&(pwm_pins[k]));
            break;

            case PWM_PD:
               PORTD&=~pgm_read_byte(&(pwm_pins[k]));
            break;

            default:
            break;
         }
      }
   }

   pwm_counter++;
}

void softPWM_Init(void)
{
   //Enable timer 0 overflow interrupt
   TIMSK=_BV(TOIE0);
   //Initialize and start timer 0
   TCNT0=0;
   TCCR0=_BV(CS00);

   //All available ports are outputs
   DDRB=0xFF;
   DDRC=0xFF;
   DDRD=0xFF;
}

void main(void)
{
   uint8_t i;

   for (i=0; i<PWM_PIN_COUNT; i++)
   {
      pwm_values[i]=i*10;
   }

   softPWM_Init();

   sei();

   while (1);
}


Протестил в Proteus (кликабельно):

Изображение
Разница между теорией и практикой на практике гораздо больше, чем в теории.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Помогите узнать больше Atmega8A

Сообщение SmarTrunk »

К слову, есть пример от самой AVR, как сделать до 24 шт. программных ШИМов в обычном 8-битном МК AVR.
Правда, на английском - appnote AVR136:

http://www.atmel.com/Images/doc8020.pdf
www.atmel.com/Images/AVR136.zip
Аватара пользователя
Stass48
Потрогал лапой паяльник
Сообщения: 329
Зарегистрирован: Пн фев 18, 2008 17:48:40

Re: Помогите узнать больше Atmega8A

Сообщение Stass48 »

Вау! Вот это так ответ!
За такой ответ надо бы и репутацию + кинуть! Только почему-то она зависает и все...((( Ну я позже попробую.
Спасибо огромное, YS. Теперь я действительно узнал гораздо больше!

Ну и какие же я выводы могу сделать?
- Для моих целей - делай-не хочу!!!)))
- Я думаю, нет смысла в том кварце, только схему нагромождать, не хочу! (Само собой, как поцепить кварц, я знаю + емкости конденсаторов указаны в даташите под определенную частоту кварца, на крайняк, можно нарыть другие схемы в инете с примером подключения кварца 16 МГц, зачастую, емкость 22 pf)
- Насчет того, что забежали наперед, похвально и я благодарен Вам, но не стоило так торопиться. Программу я пишу на BASCOM AVR + как реализовуется и работает программный ШИМ я знаю ибо разобрался самостоятельно.
- Что касается того, чтобы попросить кого-то... Ну и в чем же тогда смысл такого подарка? В наличии денег? Так и на базаре подобной мигающей китайской хрени полно готовой, и дешевле бы обошлось, и гемора бы меньше было... Но вот в чем тогда смысл затеи? Смысл то в другом, чтобы подарок был действительно сделан своими руками и мозгами, вложенной в него душой и любовью! + Бесценный опыт, которому просто так нигде не научишься! Вот в чем смысл! Вы даже не представляете, как я Вам благодарен, если бы мог, то натыкал бы и десять плюсов в репутацию или даже сотню, чтобы все видели!
- Вопросы будут, но теперь уже, немного в другом направлении:

Нужна логарифмическая шкала для ШИМ - уровней градации яркости светодиодов!
У меня есть такая шкала на 16 уровней:

Код: Выделить всё

Brightness:
Data 255, 253, 252, 251, 249, 246, 243, 238, 231, 221, 208, 189, 162, 125, 73, 0


В моем случае, это массив, с которого я буду читать градации яркости.
Что если я хочу посчитать не на 16 уровней, а, скажем, на 32 уровня? Или на 6 уровней? Или на 3 уровня?
Рисовать график логарифмической кривой от 0 до 255 и делить потом его на нужное количество отметок? Но это графический метод, то есть, не точный! Да и не сделаю его я, не смогу нарисовать саму лог. кривую от 0 до 255, ибо слабо дружу с математикой. Наверняка есть математический метод, но какой и как его решать?

Кстати, SmarTrunk, Вам тоже огромное спасибо! Я более чем уверен, что когда-то пример реализации ШИМ для 24 ног ATMEGA8A мне пригодится!
The only one thing necessary for the triumph of evil ...is for good people to do nothing.
takei
Нашел транзистор. Понюхал.
Сообщения: 181
Зарегистрирован: Пн янв 14, 2013 15:06:57
Откуда: Д.Вс.

Re: Помогите узнать больше Atmega8A

Сообщение takei »

Интересно как бы это программный ШИМ сделать для CodeVisionAVR на 4 канала. Код который предложил уважаемый YS мне не по "зубам" переделать.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите узнать больше Atmega8A

Сообщение YS »

Вау! Вот это так ответ!
За такой ответ надо бы и репутацию + кинуть! Только почему-то она зависает и все...(((


Спасибо. :)

Насчет плюсиков не беспокойтесь. :) Это не главное. Да и зависает-то там, по опыту, только интерфейс, а по факту плюсики после нажатия остаются. :)

Для моих целей - делай-не хочу!!!)))


Естесственно. :)

Я думаю, нет смысла в том кварце


Можно и без него, да.

Программу я пишу на BASCOM AVR


На вкус и цвет... Зато у меня теперь в копилке будет программный ШИМ. :) Самое полезное в помощи другим - то, что попутно оттачиваешь собственные навыки. :)

Смысл то в другом, чтобы подарок был действительно сделан своими руками и мозгами, вложенной в него душой и любовью! + Бесценный опыт ...


Могу только пожелать, чтобы вам повезло больше, чем мне. :)

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


Не стоит тратить время на натыкивание плюсов. :) Лучше свое устройство доделывайте. :)

Что если я хочу посчитать не на 16 уровней, а, скажем, на 32 уровня? Или на 6 уровней? Или на 3 уровня?


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

Нужная вам функция имеет вид

f(n)=exp(k*n),

где n - номер уровня яркости, f(n) - соответствующее ему значение коэффициента заполнения ШИМ, k - вспомогательный коэффициент

k=ln(Nmax)/nmax,

здесь Nmax - максимальное значение ШИМ (при восьми битах - 255), nmax - количество уровней яркости.

Единственно только, не вздумайте считать все это прямо в прошивке. Только предрассчитанные таблицы с целыми числами! Математика слишком ресурсоемка для такого контроллера.

Интересно как бы это программный ШИМ сделать для CodeVisionAVR на 4 канала.


Для этого надо:

1. Определить макрос _BV() как

Код: Выделить всё

#define _BV(n)                (1<<(n))


2. Поправить объявление прерывания (привести его к CVAVR-стилю).

3. Привести объявление и доступ к массивам во FLASH к CVAVR-стилю.

4. При необходимости поправить обозначения ножек/портов/регистров и проследить, чтобы инициализация таймера не конфликтовала с кодом, сгенерированным тамошним визардом.

5. Уменьшить количество каналов, описанных в массивах, до четырех.

Собственно все.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Stass48
Потрогал лапой паяльник
Сообщения: 329
Зарегистрирован: Пн фев 18, 2008 17:48:40

Re: Помогите узнать больше Atmega8A

Сообщение Stass48 »

Спасибо!
Есть еще один вопрос (надеюсь что уже последний).
Я буду использовать синие SMD-светодиоды хз, на упаковке написано 140 градусов...
Их можно подключать к контроллеру напрямую или последовательно через резистор?
Если через резистор, то какого сопротивления?

На разных сайтах по-разному пишут (220 - 1000 Ом - большой разброс, не так ли?)

Выставил я на блоке питания 3 вольта, включил последовательно амперметр и светодиод.
Амперметр показал 6,3 мА, в то время как с обычным светодиодом (за 30 копеек, не сверх-яркие - обычные, мутные) - 60 мА.
Надеюсь, эта информация пригодится...

Спасибо! =)
The only one thing necessary for the triumph of evil ...is for good people to do nothing.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Помогите узнать больше Atmega8A

Сообщение SmarTrunk »

Так это зависит от того, какой ток хотите получить через светодиоды!

У разных светодиодов разный максимально допустимый ток, надо смотреть в даташите. У не-"мощных" это обычно 20мА или типа того. Но современные отлично светятся уже при 5мА, а сверхъяркие и того меньше (тут обычно надо попробовать живьем и решить самому). В этом смысле, сверхъяркие лучше для работы от батарей, т.к. схема будет экономичнее.

Еще, у светодиодов разного цвета разное падение напряжения на них. От 1,6В для красных, 2В для зеленых, а для синих и белых около 2,7В. В общем, для синих почти 3В, так что сопротивления будут очень небольшими.

Еще, при уменьшенном напряжении питания у КМОП микросхем растет выходное сопротивление (сопротивление выходных ключей), при 3В у АТмега8а это около 30 Ом. Следует это учитывать.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите узнать больше Atmega8A

Сообщение YS »

Их можно подключать к контроллеру напрямую или последовательно через резистор?


Напрямую не надо. Через резистор.

На тему резисторов и прочего для светодиодов я написал статью (даже две, там есть ссылка на предыдущую, более теоретическую).

На разных сайтах по-разному пишут (220 - 1000 Ом - большой разброс, не так ли?)


Все ОК. И так, и так работать будет.

Выставил я на блоке питания 3 вольта, включил последовательно амперметр и светодиод.
Амперметр показал 6,3 мА, в то время как с обычным светодиодом (за 30 копеек, не сверх-яркие - обычные, мутные) - 60 мА.


Почитайте мои статьи по ссылке. :)

Спасибо! =)


May the force be with you. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Stass48
Потрогал лапой паяльник
Сообщения: 329
Зарегистрирован: Пн фев 18, 2008 17:48:40

Re: Помогите узнать больше Atmega8A

Сообщение Stass48 »

SmarTrunk
надо смотреть в даташите


Так где ж его взять, даташит то?
Был бы известен максимально допустимый ток светодиодов, было бы проще, а так, наблюдаю такую картину:
Когда подкручиваю ручку напряжения на блоке питания, цифра на амперметре растет, причем не хило так - раза в три! Определенно становится понятно, что если крутить дальше, то диод сгорит! Кстати, вообще показания амперметра колеблятся в зависимости от времени чем дольше держу - тем больше ток (скорость примерно 1 сотая миллиампера в секунду).

YS
Почитайте мои статьи по ссылке.


Читал, и на РадиоКоте подобная статья есть:
http://radiokot.ru/articles/15/

Но толку то? Для формулы нужен ток, потребляемый светодиодом, а где его взять то?
Вот фото моих светодиодов, мне нужно для SMD:
Изображение
Изображение
The only one thing necessary for the triumph of evil ...is for good people to do nothing.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Помогите узнать больше Atmega8A

Сообщение SmarTrunk »

Если максимальный ток неизвестен, можно считать его примерно =20мА. Ток больше - ресурс снизится или сгорят.

140 - это угол обзора (смечения), т.е. светодиоды ненаправленные, широкий угол.

Нельзя подключать светодиоды напрямую к блоку питания или батарейке никогда, без токоограничивающего резистора. К выходу МК иногда подключают напрямую, тогда выходное сопротивление порта МК работает резисторром, но оно может быть слишком мало.

То, что со временем через светодиод, подключенный к БП, ток растет - это не новость. p-n переход обладает отрицательным температурным коэффициэнтом. Нагревается... а если паяльником подогреть, ток еще больше вырастет. При питании светодиода через резистор это несущественно.
Аватара пользователя
Stass48
Потрогал лапой паяльник
Сообщения: 329
Зарегистрирован: Пн фев 18, 2008 17:48:40

Re: Помогите узнать больше Atmega8A

Сообщение Stass48 »

Итак, проделал кое-какое количество экспериментов. Отпишусь о результате.

1) При состоянии порта контроллера в "1", напряжение на выходе = напряжению питания самого контроллера (ну, если не считать потери в пару сотых вольта). При состоянии порта контроллера "0", на выходе милливольты.
2) Подключив светодиод к порту через резистор 910 (Ом), при этом перевел состояние порта контроллера в "1", яркость свечения светодиода была нормальной, но низковатой, неудовлетворительной.
3) Посчитал по формуле в статье от YS, взяв при этом максимальный ток потребление светодиода 10 (мА) (когда питал от блока и мерял ток, при таком потреблении яркость свечения меня вполне устроила, хотя можно было давать и до 20 мА, но есть ли в этом смысл?):
R=(Uпит. — Uпр.)/I
то есть считал 10 (мА) = 0.01 (А)
Питание контроллера 5 вольт (а значит и выход с порта = 5 вольт)
Считал, что диод рассчитан на 3 вольта. Итого:
(5 - 3)/0.01 = 200 (Ом)
Естественно, что при моих 910 (Ом), яркость свечения будет меньше, чем меня устраивает.
Казалось бы, все, проблему решили, но нет! Смущает одно - питание контроллера.
Что если я захочу питать контроллер от 4.5 вольт? Для 4.5 вольт питания, сопротивление на светодиод уже будет равно 150 (Ом).
Ну что самое интересное, по логике вещей, при частоте процессора 8 МГц, можно питать контроллер от 2.7, грубо говоря от 3 вольт. При таком раскладе, получается, что резистор вообще не нужен!
Как же мне быть? На сколько таки ставить?
The only one thing necessary for the triumph of evil ...is for good people to do nothing.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Помогите узнать больше Atmega8A

Сообщение SmarTrunk »

С питанием и резистором нужно определиться.

В случае, если питание меняется (например, разряжается батарея), яркость тоже будет меняться, конечно. Или надо ставить стабилизатор напряжения.

Для синих светодиодов питать от 2,7В вряд ли хорошо, т.к. должен быть запас на падение напряжения на резисторе.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите узнать больше Atmega8A

Сообщение YS »

Так где ж его взять, даташит то?


Ну, так-то, перед тем, как покупать диоды, надо бы узнать их наименование, а потом погуглить. :)) Либо уточнить параметры диодов у самого продавца (ненадежный вариант).

Если по каким-то причинам документации не добыть, то, как уже сказал SmarTrunk, для таких диодов в качестве безопасного предела принимают 20 мА.

Кстати, вообще показания амперметра колеблятся в зависимости от времени чем дольше держу - тем больше ток (скорость примерно 1 сотая миллиампера в секунду).


Вот потому и нужен резистор...

Как же мне быть? На сколько таки ставить?


Для пяти вольт ставьте 200 Ом и забудьте про проблему.

Для 4.5 вольт питания, сопротивление на светодиод уже будет равно 150 (Ом).


Мелкий светодиод - не тот прибор, ток в котором нужно поддерживать с точностью до миллиампера. Ну будет 15 мА, а не 20. Ничего не изменится.

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

Яркость диода линейно зависит от тока. А глаз реагирует логарифмически. Соответственно, при изменении тока в два раза визуально это будет выглядеть изменением яркости на примерно 30%. То есть разницы почти не будет. Тем более, что, чтобы так уж заметить изменение яркости, нужно прямое сравнение.

Короче, возьмите для питания три ААА-батарейки и поставьте резистор на 200 Ом.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
nirq
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Re: Помогите узнать больше Atmega8A

Сообщение nirq »

"3 вольтовая батарейка" заслуживает ещё большего внимания к себе персонально.
Хотя бы не меньшего, чем уделено остальным частям изделия.

http://www.google.ru/search?q=%D0%BF%D0 ... %D1%8F+LED - так точнее, а совсем точно получится через самостоятельный эксперимент с конкретным экземпляром светодиода.

Частота интернального осциллятора меняется через OSCCAL.
Кварц нужен для точности. Или не нужен.

Выходной ток сабжёвого пина ограничен где-то в пределах 100 мА. Объясняется "неидеальностью" транзисторов внутре ея, доказывается амперметром, предполагается не сильное различие между экземплярами одной и той же микросхемы.
Это ограничение никак не нормировано и никем не гарантировано, но при желании (и понимании) им можно воспользоваться для ещё более экстремального удешевления и/или упрощения изготовления и/или уменьшения размера поделки. В сочетании с максимально разрешённым импульсным током через светодиод, как вариант (и пониманием, что конкретно значит слово "импульсный").
И да, выше про это написано уже не менее чем два раза. Но другими словами.
С другой стороны: желательно иметь в виду разрешённый ток через один пин сабжа и через корпус в целом. Но опять же - с пониманием, почему это и зачем. То есть: если хулиганить - то аккуратно.

Выбирай похожий по конструкции, прикидывай максимально возможный ток.
Оценивай яркость глазами, выбирай рабочий ток.

И возвращаемся обратно к батарейке.



По зависимости яркости от (среднего) тока: да хоть котангенсом.
Нужно в реальном времени яркость регулировать каким-то линейным органом либо параметром на входе, или всё-таки выводить заранее подготовленные "картинки"?
В "картинках" можно прописать любые цифры. Заранее.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите узнать больше Atmega8A

Сообщение YS »

им можно воспользоваться для ещё более экстремального удешевления и/или упрощения изготовления


Вот кстати это философский момент. В любительской схемотехнике такое допустимо, а вот профессионалы всегда стараются уходить от непредсказуемых/паразитных/негарантируемых эффектов и параметров.

и пониманием, что конкретно значит слово "импульсный"


Это, к сожалению, можно узнать только из даташита.

По зависимости яркости от (среднего) тока: да хоть котангенсом.


Вообще говоря, нет. От тока она зависит линейно, такова физика.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите узнать больше Atmega8A

Сообщение BOB51 »

Экономия энергии источника... :roll:
Программный ШИМ с мультиплексированием выходных каналов.
Для 8-каналки (от 1 из 8 / 2 из 8 (он же 1 из 4х) до полного включения всех 8) это вот здесь:
viewtopic.php?f=57&t=84941&hilit=+%D1%82%D0%B0%D0%BD%D1%86%D1%8B+%D1%81+%D0%B1%D1%83%D0%B1%D0%BD%D0%BE%D0%BC
завершающий проект
8)
Ответить

Вернуться в «AVR»