Программа для зарядника пишется, то, что получается – мне нравится.
Что есть.
Я эксперемертирую с АКБ от упса, потому про него. Хотя в программе заложена возможность работы с nicd и lion.
По сигналам с ардуины.
1 – импульс на дедово устройство. Ограничения макс период 8000 мкс, мин импульс 10.
Шаг изменения импульса 1мкс, периода 10.
2 – логика: импульс должен заряжать или разряжать.
3 – ШИМ для управления источником постоянного тока. Частота в районе 32к, не помню)). В принципе, можно добавить еще одну ногу, чтоб управлять двумя транзисторами. Я в этом пока слаб, так что пока одна.
4 – логика: постоянным током заряжать или разряжать.
5 – логика: включить силовую часть.
Одна нога свободна, если её не занять под источник постоянного тока.
Отключаются и импульсы и постоянный ток выключением соответствующего шима.
По сигналам на ардуину.
1 – планировалось напряжение на АКБ с фильтрацией импульса, которая у меня не работает )). В общем чтоб точнее мерить диапазон напряжения до 15В.
2 - планировалось напряжение на АКБ без фильтрацией импульса, в программе есть типа «осцилл». Мерить диапазон напряжения до трансформатора. У меня получается где-то до 40В.
Похоже, это разделение от лукавого и можно использовать один вход.
3 – датчик постоянного тока в/из АКБ. Сами датчики еще не пришли, пока в воздухе болтается. Не ясно, смогут ли они корректно работать рядом с трансформатором.
Две ноги АЦП свободны, возможно, это будет защита от кз. Жду датчики.
Что мы с ардуиной умеем делать и считать.
Прикидку сколько в теории должны дать/забрать импульсы и постоянный ток, по сумме токов определить зарядка это или разрядка и отслеживать соответствующее напряжение.
И теперь самая главная фишка.
Поскольку думаю я на паскале, так получилось, что процесс работы с АКБ в одну сторону ( заряд, разряд, отстой ) для себя называю «стадией».
В программе stage обозвал, так и закрепилось.
Так вот, программа работает именно в рамках стадий.
Вот как выглядит "стадия" зарядки в человеческом виде
A3;PU200,8000,11.80,13.67;CD33,0.00;
Читать так
A3 - АКБ№3 индекс в табличке с параметрами датчиков и акб. Для АКБ пока есть такие характеристики:
max_voltage; // максимально при зарядке
min_voltage; // минимально при разрядке
voltage; // нормальное напряжение
sensor_voltage;// диапазон датчика напряжения АКБ
sensor_current_c; // диапазон датчика тока зарядки АКБ
sensor_current_d; // диапазон датчика тока разрядки АКБ
max_pulse_c; // максимальная длительность импульса при зарядке, мкс
max_pulse_d; // максимальная длительность импульса при разрядке, мкс
min_pause; // минимальная пауза между импульсами
max_pause; // максимальная пауза между импульсами
max_current_c; // максимальный пост ток зарядки
max_current_d; // максимальный пост ток раззарядки
relax; // время отстоя после зарядки, сек
PU200,8000,11.80,13.67 - импульс вверх (зарядка), 200мкс импульс, 8000 - период.
Остановить при 11.8 или при 13.67. PU это Pulse Up.
CD33,0.00 - постоянный ток разряжает, шим константа 33, 0.00-ток разрядки не контролировать. Если б была цифирь - шимом удерживать этот ток. CD это Сurrent Discharge.
Пока ардуина умеет обрабатывать одну стадию и останавливаться. Дальше обучу её выполнять программы из стадий, это уже будет КТЦ)).
Пока этим не парюсь, потому как не знаю сколько ресурсов чипа останется после вылизывания того что уже есть.
У ардуины осталось еще 7кб под программирование и 1к оперативки. Так что думаю, поместится всё.
Естественно, все время пока ардуина включена, она шлет в COM данные с датчиков в формате arduinoReader. Кто скрывается за портом – комп или вторая ардуина с флешкой – неважно.
В чем нужна помощь.
Дедову силовую часть я собрал. Транзисторы 460 два штуки, трансформатор три Ш сердечника от компьютерных БП в стопку, 16 витков. Диод 80ebu. Управление транзисторами как в зажигании. На 972 с ардуины идет через CD40109. Микросхема попортила фронты с 20 до 100нс, буду пробовать переход на 2 полевиках, когда придут.
Получил вот такую картинку на 0,1ом.

Это при питании от 15в 1А, ёмкости 30 000 . Больше не включал, пока незачем.
Вопрос.
Для импульсов на заряд и импульсов на разряд трансформатор подключается по-разному.
Как делать коммутацию?
Можно ли эту коммутацию делать реле? Если да, то какой ток должны держать контакты? Я получил китайские чудеса, пишут DC 30V 10A. Сколько их нужно в параллель поставить, чтоб силовой диод перемкнуть?
Может не париться и сделать 2 трансформатора и 2 шины?
Вопрос.
Что и как еще можно/нужно подсчитывать во время стадии?
Вопрос.
Для источника постоянного тока писать двухканальный ШИМ или один оставить? А может есть готовый узел (микросхема) источника тока, которым можно управлять постоянным напряжением с моего шима?
Вопрос.
Кто занимался плотно микроконтроллерами, никак не могу найти или понять логику работы АЦП. Вот загрузил я мультиплексор, скомандовал цифруй, дождался результат.
А результат, какому моменту времени соответствует? Команде «цифруй», или размазан по времени оцифровки и живёт где-то внутри. Если внутри, то с какой стороны подход к результату идет снизу или сверху? По данным, которые получаю, однозначного вывода не могу сделать.
Вопрос.
Может где есть перевод на русский спецификации ATMEGA328p. Устаю буржуйский читать.))
Программу выкладываю в состоянии «как есть». Это для экстремалов, может спалить чегонить дорогое)). Но выложить нужно, ибо…
В программе много комментариев, распиновка и всякое такое.
Компилировать Arduino 1.0.6,
[ссылка] .
Другие версии дадут ошибки. Бобро пожаловать в мир свободного ПО.))
Присоединяйтесь к обсуждению, пока я в процессе все можно изменить или дополнить. Обычно программа держится в голове 2-3 месяца, потом бывает проще переписать чем поменять.))
моя железяка Размер : 7.15 KB

- Правка 30.10.14(14:23) -
SunSB
"типа Бейсика" для работы с АКБ, т.е. номера строк и условные переходы, чтобы можно было свои алгоритмы писать smile
Это и делаю. Дед засомневался, так я теперь из принципа.
Вы вчера родились ?
В стране микроконтроллеров - да

. Не возражаю, но с логикой неувязка. При таком алгоритме, скорость измерения должна зависеть от того чего меряем. Маленькое напряжение - быстро, большое долго. А контроллер всё меряет одинаковое время. Дык вот и хочеца уточнить.
Прочел. Спасибо! Как японял, работает оно не так, но чертовски элегантное решение. Придумавший это - великолепен. Пиво продавать с секундомером)).
Не удержусь:
Берем конденсатор и подаем на него наш сигнал.
Пока конденсатор заряжается, мы отсчитываем время, ну например 1 миллисекунду.
По истечении времени прекращаем подавать сигнал. Теперь все наоборот, начинаем
разряжать наш конденсатор, а в это время считаем от нуля до конца разряда конденсатора.
Получившееся число и есть та точка которая попадает на график по истечении
1 миллисекунды. В МК эта процедура называется "выборка".
Теперь понятно откуда ноги торчат. Если выбранo время преобразования 16мкс, то половину времени идет зарядка емкости, половина разрядка. Т.е. чтоб померять напряжение в момент t, скомандовать нужно на 8мкс раньше. Очередные грабли.)) Я в программе видел, что измерение запаздывает на 5-7мкс, но почему и на сколько - понять не мог.
Еще раз спасибо за наводку.
Подумал, даже наверное не команду давать, а переключить мультиплексор на нужный канал. Буду пробовать.
учим английский. без этого никак smile
С англ всё в порядке. Но образы возникают от русского. Двойное преобразование, лишняя работа.
- Правка 30.10.14(17:01) -
SunSB
AlexSoroka Пост:
450597 От 30.Oct.2014 (14:50)
Все АЦП работают по одному принципу: команда "начать счет" - считаем, поднимая напряжение со своего делителя на входе внутр. компаратора, пока не станет "больше или равно". Останавливаемся, .....
Не обманывай маленьких- хохол вырастет.

АЦП разных куча, и все работают по разному.
В атмелах- поразрядное сравнение- начиная со старшего- всего 10 разрядов и поэтому занимает время ровно 10 тактов ацп.
У ацп свои такты- они выставляются отдельно.
Ну и плюс еще такт выборки-хранения.
В самом начале- запоминается напряжение на входе и именно оно будет оцифровано. На входе кондер заряжается, и он держит напряжение,
именно поэтому источник должен быть довольно низкооиным-
чтобы за один такт выборки успел кондер зарядиться.
Поэтому по времени все строго.
А то что ты описал- это метод последовательного приближения,
там можно обойтись более медленными и более точными компараторами,
а еще метод двойного интегрирования- там тоже свои плюсы-
но это совсем другие ацп- типа тех что в китайских мультиметрах.
А книжки кстати- Евстифеев, хорощий перевод даташитов.
_________________
я плохого не посоветую
- Правка 30.10.14(18:44) -
dedivan
Gembird, год, брал для эксов, в упсе стоял 3 месяца. Остальное время всякие устройства. Я его слушаю)). Хотя может и стоит открыть.
У Вас нет прав отвечать в этой теме.