Здравствуйте.
Попробую сформулировать вопрос как можно понятнее.
Есть драйвер светодиода.
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 нет ни деления, ни умножения.
Вопрос такой..... как считать поправку ???
Посоветуйте пожалуйста, сам что то никак не могу понять, есть мысли, но подумал, что лучше спросить.