Мощный стабилизатор тока для диодов на Attiny85

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

Прошу помощи в доведении кода программы до рабочего состояния.
Наработки есть, но своего ума не хватает.
Собственно имеются XM-L диоды, Attiny85, AVR Studio5 и напряжение питания 11-16 Вольт.
Хочу собрать стабилизатор тока без режимов, настроек и т.п.
Есть схема:
СпойлерИзображение
И есть код, который собирал долго из разный примеров, но так до конца в нем не разобрался, он даже компилируется. Комментарии вроде делал как можно подробнее.
Спойлер

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

#include <avr/io.h>
#include <avr/interrupt.h>
unsigned int adc_counter,current;
volatile unsigned long current_value;
ISR(ADC_vect)
	{
	ADCSRA = 0; // Выключаем АЦП 
	current_value = current_value + ADC; // Суммируем измеренные значения тока и помещаем в буфер
	adc_counter++; // Увеличиваем счетчик выборок АЦП на 1
	ADCSRA=0b11111111;// Включаем АЦП
	}
int main(void)
{
	PORTB=0b00000000;
	DDRB=0b00011000;
	ADMUX=0b10000111; //Vref=1,1V, Ku=20, PB4+/PB3-
	ADCSRA=0b11111111; //pre=128,
	ADCSRB=0b00100000; //unipolare mode
	DIDR0=0b00100100; //ADC2,ADC3 enable
	sei();
	PLLCSR=0x00;//запуск PLL
	PLLCSR=0b00000010;
	while ((PLLCSR & 1)==0);
	PLLCSR|=0b00000100;
	OCR1C=255; // Шим на минимум
	OCR1A=0x00;
	OCR1B=0x00;
	GTCCR=0x00;
	TCCR1=0b01100001;
	while(1)// вычисляем среднее значение АЦП
    {
    if (adc_counter > 10)
		{
	ADCSRA = 0; // Выключаем АЦП 
current = (current_value/adc_counter);
adc_counter = 0; // Обнуляем счетчик выборок АЦП
current_value = 0; // Обнуляем буфер значений тока  
//резистор 0,01 Ом, ток 2,6 А, сл-но падение на шунте 26мВ
//т.к. Ku=20, URef=1,1V на ацп придет 520 мВ и это есть значение ADC равное 484
		if (current>486)
			{
			OCR1C++;
			}
		if (current<484)
			{
			OCR1C--;
			} 
			else
			{
			OCR1C++;
			}
	ADCSRA=0b11111111;// Включаем АЦП
		}
	}		
}
Боюсь я всетаки намудрил с настройками счетчика и прерываниями, сколько раз уже перечитывал даташит, а 100% понимания пока нет. как то больше в общих чертах.
Я не прошу готового кода, а прошу пинать меня в нужном направлении.
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение blackx »

Схема какая-то странная. Сами делали? На какой ток все рассчитывалось?

1) R5 хорошо бы поменьше поставить (меньше будет потерь на транзисторе при переключениях) - на 50-100 Ом.
2) AREF хорошо бы подключить к конденсатору на 100n. Все равно вывод без дела болтается. Или даже заморочиться и подать его на вывод самому через LC-фильтр.
3) с RESET та же история - рекомендуется сглаживать конденсатором на 100n и подтягивать к VCC резистором 1-10 кОм.
Рекомен
4) что вообще измеряет вход ADC3? Если подумать - он измеряет 0. Зачем?
5) падение на R6 ничем ни ограничивается ни усиливается. Впрочем, для ваших токов может и сойти. Но обычно ставится ОУ для сведения диапазонов ([0; X] В - [0; 5] В) и обрезки всего что из диапазона выходит.

Это только что касается вашей схемы, в код не смотрел. Есть специализированные микросхемы для стабилизации тока - хоть та же tl494. Более того, в плане драйверов для LED все давно придумали за вас. Подумайте о том, чтобы полностью переделать схему и не использовать в ней микроконтроллер вовсе.
Изображение only pure true norwegian blackx Изображение
Реклама
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

Да, делал сам, про ток - примерно 2,6А
1. R5 стоит 1 Ом куда меньше? хотя обычно ставят 10 Ом на этот драйвер.
2. Из даташита как я понял - Aref рекомендуют через конденсатор на землю только в случае использования 2,56V, я же использую 1,1
3. C ресетом согласен, но можно программно к Vcc подтянуть. (это уже мелочи)
4. АЦП я вроде настроил в дифференциальном режиме c Ku=20 bit[0..3] ADMUX, и как я думаю для лучшей стабильности входы ацп непосредственно к шунту подвести отдельными дорожками на плате, как то так.
Аппаратный шим вроде настроен на 250кГц
По поводу рациональности использования МК... пробовал разные схемы ничего хорошего не вышло денег потрачено уже немеренно на покупку готовых решений.... так что для меня использование МК важный фактор. всегда можно чтото подправить/изменить не изменяя схемы.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

делал для зубников на основе этого: http://klim.in.ua/wp/2010/10/power-led- ... t-page-65/
с таймером, контролем напряжения батареи и пр. - нормально работает.
Вам сепик не нужен - можно обойтись одной индуктивностью, только схема другая.
По схеме - думаю электролит нужен после индуктивности (зачем она тогда) и действительно ток через светодиод на R6 вряд ли увидите, если транзистор N придется ставить внешний ОУ.
что вообще измеряет вход ADC3? Если подумать - он измеряет 0. Зачем?
ADC2 и ADC3 это входы внутреннего ОУ tiny, коэффициент усиления внутреннего ОУ может быть равен 1 или 20.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

oleg110592 писал(а):По схеме - думаю электролит нужен после индуктивности (зачем она тогда) и действительно ток через светодиод на R6 вряд ли увидите, если транзистор N придется ставить внешний ОУ.
электролит я бы не советовал, керамику если только.
А вообще я просил помощи по программе, схема просто для ознакомления ( посмотреть использование выводов МК)
oleg110592 писал(а): и действительно ток через светодиод на R6 вряд ли увидите, если транзистор N придется ставить внешний ОУ.
текст из программы:

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

//резистор 0,01 Ом, ток 2,6 А, сл-но падение на шунте 26мВ
//т.к. Ku=20, URef=1,1V на ацп придет 520 мВ и это есть значение ADC равное 484
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

Вообще-то было
Я не прошу готового кода, а прошу пинать меня в нужном направлении
а как пинать в нужном направлении, если в схеме нельзя проверить будет. И как еще пинать, если непонятно что в программе не работает? Вряд ли весь текст проверять кто-то будет - проще с нуля написать.
Это например трудно понять

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

  ADMUX=0b10000111; //Vref=1,1V, Ku=20, PB4+/PB3-
   ADCSRA=0b11111111; //pre=128,
   ADCSRB=0b00100000; //unipolare mode
   DIDR0=0b00100100; //ADC2,ADC3 enable
думаю, если писать типа так как ниже, всем да и вам понятнее было:

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

 ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (0 << ADPS0);      //ADC Prescalar set to 64 - 125kHz@8MHz
  ADMUX |= (0 << REFS0) | (0 << REFS1);      //Sets ref. voltage to VCC +5v
   ADMUX |= (1 << ADLAR);       // Left adjust ADC result to allow easy 8 bit reading
// No MUX values needed to be changed to use ADC0
   ADCSRA |= (1 << ADEN);  // Enable ADC
   ADCSRA |= (1 << ADSC);  // Start A2D Conversions     
   ADCSRA |= (1 << ADFR);   //Sets ADC to Free Running Mode 
электролит я бы не советовал, керамику если только
Так а индуктивность то зачем? На R6 будут импульсы тока - как их оцифровывать.
У меня есть разработка с мощным светодиодом на меге48 с семисегментной 2 разряда индикацией - там тоже шим стабилизация тока светодиода - там есть индуктивность и электролит 1000мкФ (частота шим меньше). Содрана схема с подобного китайского устройства - правда у них было сделано на PIC16F628. Там транзистор N типа и ОУ.
Реклама
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

Импульсы тока с R6 должны скапливаться на С2 или более менее усредненное значение токов.
электролит не любой поставишь на выходе я бы уточнил, 250кГц все таки, но это уже тонкости доводки схемы до совершенства, для проверки работоспособности, для тестовых запусков, уговорили, использую электролит 100мкф.
oleg110592 писал(а):Вообще-то было
Вряд ли весь текст проверять кто-то будет - проще с нуля написать.
там текста 20 строчек, и то в основном по настройке ADC и PWM
алгоритм стабилизации проще не придумать.... 5 строчек...
Если честно мне удобнее работать с двоичным представлением регистров, сразу видно в каком бите что сидит. 10 знаков заменяют 3 строчки текста.
по память лично я все равно не вспомню по названию бита за что он отвечает и как выставляется.
ADMUX=0x87; вот с такой записью, что не удобно и не читаемо, я б согласился))))
вот обработчик прерывания по окончании преобразования АЦП
Вык. ацп вначале обработчика должно исключить случайный выход по новому прерыванию. Вопрос на сколько я прав в этом?

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

ISR(ADC_vect)
   {
   ADCSRA = 0; // Выключаем АЦП 
   current_value = current_value + ADC; // Суммируем измеренные значения тока и помещаем в буфер
   adc_counter++; // Увеличиваем счетчик выборок АЦП на 1
   ADCSRA=0b11111111;// Включаем АЦП
   }
И еще такой вопрос в ADC - 10 битное значение результата преобразования ацп? либо надо использовать ADCH и ADCL с этим моментом мне тоже не очень понятно.
Изображение
Последний раз редактировалось Mishany Пн окт 14, 2013 21:20:18, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

Осциллографом вначале на C2 посмотрите - думаю будет что попало. Алгоритм мне не понятен - исходя из этого:

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

     if (current>486)
         {
         OCR1C++;
         }
      if (current<484)
         {
         OCR1C--;
         }
         else
         {
         OCR1C++;
         }
получается если значение тока не попадает в очень малый диапазон (а значение, думаю будет скакать как сумасшедшее) шим увеличиваем (не понял так ток через светодиод больше или меньше). Рисую всегда алгоритм работы устройства и согласую его с заказчиком, может стоит начать с этого.
И еще такой вопрос в ADC - 10 битное значение результата преобразования ацп? либо надо использовать ADCH и ADCL с этим моментом мне тоже не очень понятно.
уже не помню вроде мне хватало 8 битного
Немного занимался этим - если надо чем то помогу, только не понятно чем.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

в current среднее зачение с ацп (по программе это 10 замеров) осцилографом пока некуда тыкать т.к. программа как мне кажется не совсем рабочая, хотя пока ставил эксперименты c использованием аттини13а по этому принципу с ОУ на шунте, с ОУ был ровненький сигнал, но и частота шим была около 30кГц (использовалось значение ADCH, ничего хорошого не вышло алгоритм работы такой же) потом наткнулся на http://radiokot.ru/forum/viewtopic.php?f=62&t=93569 с тех пор пытаюсь на аттини85 с High PWM и с его встроенным диффиренциальным усилителем 20х сделать.
СпойлерИзображение
можно конечно поиграть с емкостью аккуратно, но это только после как запустится программа.
Алгоритм прост измеряем напряжение на шунте, если больше расчетного значения (в моем случае 484) - уменьшаем ширину импульсов (увеличением значения OCR1C), если меньше - увеличиваем ширину импульсов. поидее должно работать, еще можно расширить диапазон например 475-490, или увеличить количество выборок ацп, else похоже лишнее в программе.
в 8 битном режиме думаю будет грубовато (резко) 256 против 1024, ADC просто подглядел в примерах на атмеге8.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

oleg110592 писал(а):Немного занимался этим - если надо чем то помогу, только не понятно чем.
проверить настройки ADC и PWM и прерывания если чесно не знаю куда sei() впихнуть, на сколько оправдано вкл/вык АЦП при манипуляциями с ADC если эти манипуляции и так находятся в прерывании.
И еще данный код компилируется но при попытках его погонять в протеусе на второй секунде вываливает ошибку загрузки цпу, толи глюк толи сам дурак
(а три месяца назад и понятия не имел как диодом поморгать на мк :))) )
Последний раз редактировалось Mishany Пн окт 14, 2013 22:13:20, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

Так по вашей ссылке схема вроде нормальная и все таки с электролитом (оказывается можно решить легко с N транзистором). И код есть. Что там вас не устраивает.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

oleg110592 писал(а):Так по вашей ссылке схема вроде нормальная и все таки с электролитом (оказывается можно решить легко с N транзистором). И код есть. Что там вас не устраивает.
там не электролит, а в итоге керамика встала, и по размерам с 5руб.
СпойлерИзображение
вся плата (не один день читал первоисточник :sleep: ), но опять же это не важно)))
все, у меня питание 11-18 вольт, мне не нужна память и всевозможные режимы и шунт там стоит не в хорошем для меня месте, боюсь МК при закрытом ключе выпустит дым, и как Вы сами говорили "Вряд ли весь текст проверять кто-то будет - проще с нуля написать." я пытался разобраться, но опыта у меня маловато и всех примочек Си я не знаю а там их много.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

Электролиты есть для импульсных цепей, у нас на радиорынке продают кому не лень, типа как в материнских платах. Если вспомнить советское время, память если не изменяет были такие "ЭТО". Да про большое входное напряжение забыл - если поставить внешний ОУ LM358 (у меня так), то можно и до 32В и шунт по барабану в каком месте. Моя схема (заказчик увидит - прибьет):
Изображение
Думаю надо начать с малого - в программе настроить шим и сделать его скважность например 50% и посмотреть тестером какой ток через светодиод. Замерить напряжение осциллографом на токовом резисторе. Потом менять скважность и смотреть. Затем можно заняться оцифровкой значения тока. Шим если у вас 8 бит, то зачем оцифровка 10 бит.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

вот моя отладочная))) как говориться мне не лень и ОУ воткнуть и тот самый вокруг которого столько шума кондер (только что керамики не хватает для полного счастья) :)))
СпойлерИзображение
И собствено используя 85 тиньку с её быстрым шим, почему бы не воспользоваться и её примочками ацп и по началу не городить 358 ОУ, вот если не будет хватать внутренних примочек или они не будут удовлетворять потребности тогда уже можно призадуматься и о 358.

осталось за малым, настроить правильно шим :roll:
По моему не хватает такой строчки (для CodeVision) которая не катит в AVR Studio5
к тому же содержимое для меня не понятно.

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

#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _optimize_size
#pragma optsize+
#endif
Последний раз редактировалось Mishany Вт окт 15, 2013 11:34:46, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

взял код из ссылки про сепик (лень было с нуля думать):
Спойлер

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

#include <tiny85.h>

void main(void)
{
    // Crystal Oscillator division factor: 1
    #pragma optsize-
    CLKPR=0x80;
    CLKPR=0x00;
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif
    // Input/Output Ports initialization
    // Port B initialization
    // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out 
    // State5=T State4=T State3=T State2=P State1=0 State0=0 
    PORTB=0x04;
    DDRB=0x03;
    // Timer/Counter 1 initialization
    // Clock source: 64MHz PCK
    // Clock value: 16000,000 kHz
    // Mode: PWMA top=OCR1C
    // OC1A output: Non-Inv., /OC1A disconnected
    // OC1B output: Disconnected
    // Timer1 Overflow Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    // Enable the PLL
    PLLCSR=0x02;
    // Wait for the PLL to lock
    while ((PLLCSR & 1)==0);
    // Enable the 64MHz clock
    PLLCSR|=0x04;
    TCCR1=0x61; //64
    //TCCR1=0x62; //32
    //TCCR1=0x63; //16
    //TCCR1=0x64; //8
    GTCCR=0x00;
    TCNT1=0x00;
    OCR1A=0x10;
    OCR1B=0x00;
    OCR1C=0xFF;
    // Analog Comparator initialization
    // Analog Comparator: Off
    ACSR=0x80;
    ADCSRB=0x00;
    
    OCR1A=127;      // шим 50%

while (1)
      {
      // Place your code here

      }
}
в Протеусе шим 50%, период 4uS :
СпойлерИзображение
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

в Code Vision я не работал, он мне почемуто не понравился, привык к аврстудио((((
соответственно код не заработает((( успел в предыдущем сообщении дописать про бяку несовместимости.
Но чувствую в меня полетят щас тапки с криками аврстудию в помойку кодевизион форевер :)))
Последний раз редактировалось Mishany Вт окт 15, 2013 12:27:48, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

проверил - заработает
Спойлер

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

#include <avr/io.h>

__attribute__((OS_main))
int main(void) 
{
    // Crystal Oscillator division factor: 1
    CLKPR=0x80;
    CLKPR=0x00;
    // Input/Output Ports initialization
    // Port B initialization
    // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out 
    // State5=T State4=T State3=T State2=P State1=0 State0=0 
    PORTB=0x04;
    DDRB=0x03;
    // Timer/Counter 1 initialization
    // Clock source: 64MHz PCK
    // Clock value: 16000,000 kHz
    // Mode: PWMA top=OCR1C
    // OC1A output: Non-Inv., /OC1A disconnected
    // OC1B output: Disconnected
    // Timer1 Overflow Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    // Enable the PLL
    PLLCSR=0x02;
    // Wait for the PLL to lock
    while ((PLLCSR & 1)==0);
    // Enable the 64MHz clock
    PLLCSR|=0x04;
    TCCR1=0x61; //64
    //TCCR1=0x62; //32
    //TCCR1=0x63; //16
    //TCCR1=0x64; //8
    GTCCR=0x00;
    TCNT1=0x00;
    OCR1A=0x10;
    OCR1B=0x00;
    OCR1C=0xFF;
    // Analog Comparator initialization
    // Analog Comparator: Off
    ACSR=0x80;
    ADCSRB=0x00;
    
    OCR1A=128;      // шим 50%

while (1)
      {
      // Place your code here

      }
}
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

ага, работает
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение Mishany »

Снял осциллограмму на выходе ОУ (красная) при 2,6А выходного
Изображение
могу представить что будет творится в ацп МК :)))
вычислил: по питанию ОУ
мерял кпд 76% потолок :)))
Почитав умных книжек пришел к выводу надо использовать внешний ОУ (LM358), т.к. можно будет хотя бы контролировать то безобразие, что приходит в ацп.
завтра наваяю новую схему, сделаю отладочную и продолжу эксперименты.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Мощный стабилизатор тока для диодов на Attiny85

Сообщение oleg110592 »

Наваял схемку чтоб задействовать внутренний ОУ, только транзистор P канальный. Вроде должна работать.
Изображение
Ответить

Вернуться в «Разные вопросы по МК»