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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 26.10.2012, 22:52  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Как произвести расчёты, AtMega-8.

Здравствуйте.
Попробую сформулировать вопрос как можно понятнее.
Есть драйвер светодиода.
10 режимов яркости (не спрашивайте зачем, так нужно).
Для упрощения обсуждения сократим до трёх, смысл проблемы будет ясен.
Итак, напряжение аккумулятора изменяется от 14.3 в. до 16.8 в.
Что бы получить нужный ток для 1-го режима на выходе при полностью разряженной батарее переменная отвечающая за ШИМ принимает значение 202, для 2-го режима - 190, для 3-го - 187.
Если батарея полностью заряжена, то для 1-го режима ШИМ - 210, для второго - 200, для 3-го - 187.
Цитата:
АКБ ......14.3v....16.8v.
режим-1 202.......210
режим-2 190.......200
режим-3 187.......197
При переключении в нужный режим требуется вычислить переменную ШИМ, что бы сразу на диод пошло нужное напряжение для обеспечения заданного тока.
Если бы входное напряжение было всегда 16.8, то не было бы проблем, загоняю в переменную значение для ШИМ и на выходе имею нужный ток.
Но напряжение уменьшается по мере разряда АКБ.
У меня сделана процедура отслеживания напряжения на батарее и есть переменная, которая отображается на дисплее и показывает процент оставшегося заряда, примерно как в ноутах.
Я заметил, что разница между значениями переменной ШИМ отличается на 10 (заряжана полностью-разряжена), это видно по табличке выше.
В итоге, я делю процент оставшегося заряда на 10 и получившееся частное прибавляю к переменной шим для 14.8 вольт, в итоге имею примерное значение ШИМ для разного входного напряжения.... но значения переменной ШИМ не всегда ровно на 10 единиц отличаются от полностью разряженного состояния, до полностью заряженного.
Как видно из таблички, в первом режиме разница - 8, в третьем режиме разница уже 10.
Так основу объяснил, теперь глубже в проблему...
Переменная ШИМ это слово, я показал только старший байт, есть ещё младший, при первом режиме на разряженной АКБ это 202,18, при третьем режиме это 187,20.
В итоге имеем нелинейное изменение переменной.
В АТмеге-8 нет ни деления, ни умножения.
Вопрос такой..... как считать поправку ???
Посоветуйте пожалуйста, сам что то никак не могу понять, есть мысли, но подумал, что лучше спросить.
Реклама:
putmannn вне форума  
Непрочитано 26.10.2012, 23:16  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

Вот убей не понял, а что за проблемы?
Прямо формулу забей.
Imax = (Uп - Uсв)/Rб;
Высчитываешь ток при полной засветке в зависимости от напряжения
N = Iзаданный/Imax
Получаешь коэффициент от периода ШИМа.
PWM = Tpwm*N
Получаешь ШИМ.
Считай сразу в uint16_t.
В некоторых контроллерах можешь прямо 16-ти битное значение и заносить. Если регисты не подряд идут то заноси сначала младший потом старший.
===
Или я что-то упустил?

Последний раз редактировалось SasaVitebsk; 26.10.2012 в 23:18.
SasaVitebsk вне форума  
Непрочитано 26.10.2012, 23:18  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

Сообщение от putmannn Посмотреть сообщение
В АТмеге-8 нет ни деления, ни умножения
премного удивлен читайте ДШ на м8, заодно расскажете, что такое MUL
jump вне форума  
Непрочитано 26.10.2012, 23:26  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

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

Последний раз редактировалось putmannn; 26.10.2012 в 23:29.
putmannn вне форума  
Непрочитано 26.10.2012, 23:27  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

SasaVitebsk, хочется не в Си, а в ассемблере )
putmannn вне форума  
Непрочитано 26.10.2012, 23:28  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

Я немного выпил, потому могу неодекватно излагать вопрос, но я первый свой пост перечитываю, вроде всё правильно написал, завтра дополню если что.
putmannn вне форума  
Непрочитано 26.10.2012, 23:55  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

а кто мешает заменить деление умножением на fixed point? это если строго по указаной формуле.

я бы сделал так:
ЗначениеШИМ = (ТекущийУровеньБатареи - СреднийУровеньБатареи)*FixedPointШагШИМ + СреднийУровеньШИМ;
На ошибки точности в вычислениях наплевать, все равно элементы врут сильнее
Hives вне форума  
Непрочитано 27.10.2012, 00:06  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

Есть такая прога - curve expert. Позволяет апроксимировать экспериментально снятые зависимости и получать коэффициенты для формул, с помощью которых рассчитать подобную штуку очень легко и просто.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
putmannn (30.10.2012)
Непрочитано 27.10.2012, 00:57  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

Сообщение от putmannn Посмотреть сообщение
При переключении в нужный режим требуется вычислить переменную ШИМ, что бы сразу на диод пошло нужное напряжение для обеспечения заданного тока.
putmannn, позволю себе совершенно идиотский вопрос - А зачем это вообще надо рассчитывать?
Светодиоду нужен стабильный ток. Так на лучше ли (во всех отношениях) сразу стабилизировать ток по заданному значению? Ставьте последовательно со светодиодом измерительный резистор и стабилизируйте его практически от любого (в разумных пределах, естественно) источника без риска спалить светодиод независимо от значения компаратора.
Судя по таблице, при переключении режимов из края в край, Вашей Меге потребуется максимум 23 цикла измерения или 6,44-1,61мс при 50-200кГц такта на АЦП. На глаз мгновенно.
omercury вне форума  
Непрочитано 27.10.2012, 01:13  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Как произвести расчёты, AtMega-8.

Тогда надо вообще выкидывать мегу и собирать примитивный драйвер на 3842/3/4/5, полевом транзисторе, индуктивности и диоде шоттки. В этом случае просто использовать схему обратной связи по току. И все, будет стабильный ток независимо от питания.
В приложении схема для питания диода на 10Вт 29В током 330мА. Схема работает с 7.4в и до 24.
Миниатюры:
Нажмите на изображение для увеличения
Название: led_driver.png
Просмотров: 67
Размер:	5.6 Кб
ID:	39892  
Easyrider83 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UART + Atmega 8 miwutka Микроконтроллеры, АЦП, память и т.д 52 11.07.2012 11:45
Прошивка ATMEGA ROM200 Микроконтроллеры, АЦП, память и т.д 9 04.06.2012 09:11
[Решено] Atmega+к155ид3 GMVM TTL и CMOS логика 5 29.07.2010 00:40
Кто как упдейтит сам бутлодырь с помощью бутлодыря в ATmega- Don_Ambrosio Микроконтроллеры, АЦП, память и т.д 14 23.04.2008 16:23
АЦП ATmega 48 Tcom Микроконтроллеры, АЦП, память и т.д 2 11.10.2005 20:32


Часовой пояс GMT +4, время: 06:26.


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