|
|
![]() ![]() |
|
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() |
![]() ![]() |
|
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8162 раз(а) в 2385 сообщениях
|
![]() Цитата:
![]() Что касается заметности ступенек ШИМ - ещё тот самый первый драйвер на тиньке, где я только только решил заюзать аналоговый мультиплексор в качестве драйвера (в 2009-м году, кажется), имея инвертирующую топологию и гарантированный режим с прерывистым током дросселя (т.е. очень мягкую регулировочную характеристику) показал насколько заметна низкая разрядность родного ШИМ. Именно из-за этого эффекта я и начал экспериментировать с различными вариантами модуляции LSB ШИМ, чтоб скрыть этот эффект. Я бы не стал заявлять что вижу, если бы сам до этого в этом не убедился... Тинька может держать спокойно ток в 100...200 раз меньший за максимальный (с помощью шунта), такой у неё практический динамический диапазон при полноценной реализации. Если он меньше, значит что-то не оптимально. По крайней мере лучше я пока не сделал, а этот результат уже не один я повторил... Интересно, как мы проведём слепое тестирование? ![]() Показания АЦП может просто "шумят"? Накладывается шум ШИМ, вырождается в статическую ошибку из-за синхронизации по частоте и т.п. Или слишком рано после мультиплексирования пытаемся семпл прожевать. Сколько семплов выбрасывается после переключения ИОН или канала? [Исправлено: INFERION, 21.08.2013 в 22:54] |
|
![]() |
![]() |
Поблагодарили: 1 раз |
NazarSunrise (21.08.2013)
|
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]()
Ничего не переключается, АЦП просто работает в одном режиме, с автозапуском. Вообще отключил всё, даже управление. Старт, настройка АЦП, вывод его показаний в цикле.
Такая же ситуация (ну может чуть лучше) в калибровочном режиме: это когда два диф. входа мультиплексируются на один пин, т.е. соединяются в кристалле. Тут уж железный ноль должен быть, ан нет... Может шумы по питанию от моего сопливого БП? Да тоже уж слишком. Устал. Завтра ещё подумаю. |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]()
А зачем тогда калибровка, если железно 0? Она нужна для получения смещения. Может быть 0 это хорошо, если там 0, но обычно его нет
![]() Посмотрел исходники, а как у Вас ADC на такой частоте шпарит? Делитель, то установить надо. Биты ADPS2 ADPS1 ADPS0. На 4 мегагерцах он и должен полную ерунду показывать. ADPS2 в единичку, а остальные пусть нули остаются. |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]()
Тоже верно, я и забыл про делитель. Попробую.
|
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]()
Короче понизил частоту АЦП, убрал ещё пару косяков. Оффсет АЦП примерно 20-30 единиц в 10-битном режиме. Это отлично. Но напрягает, что этот оффсет плавает от напряжения.
Сделал при старте измерение этого оффсета, так как на разных контроллерах он будет разный, чтобы потом скомпенсировать. Но при разряде батареи будет чуть уплывать, если только изредка (например раз в несколько секунд) опять мультиплексировать входы на самих себя и измерять его. Но тут я не знаю, что произойдёт с диф. входами, не замкнутся ли они снаружи? А то ток диода попрёт на них в обход шунта. Хотя разработчики не идиоты, не должны были так поступить. |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]()
Плохо. У меня 0-2 при 4.2 и 3-6 при 3-х вольтах. Не забывай, что его еще из задания вычитать придется и следить, чтобы задание меньше нуля не стало.
После каждого замера могут получены разные значения и т.к. они вычитаются из задания, то каждые несколько секунд будет прыгать ток? Тем более, если это 20-30 единиц получится моргалка просто. |
![]() |
![]() |
![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8162 раз(а) в 2385 сообщениях
|
![]()
У меня смещение зависит от того, какие пины используются. Поэтому меряю только на реальном шунте, когда через него не течёт ток. А эти всякие внутрикристальные замыкали - ерунда...
Если вычитать смещение с показаний АЦП - будут серьёзные проблемы на максимальных значениях тока. Если добавлять к опорному значению - ничего страшного не произойдёт. Tamagotchi, это мы сейчас какой МК обсуждаем? 85-ю тиньку, или что? 0...2 у меня на 44-х, а на 85-х 30...40 и куча грязи, с которой не получается бороться. Даже 25-е себя так похабно не ведут. [Исправлено: INFERION, 22.08.2013 в 20:53] |
![]() |
![]() |
Поблагодарили: 1 раз |
Tamagotchi (22.08.2013)
|
![]() |
![]() ![]() |
|
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]() Цитата:
cur_adc = (ADCW > offset) ? (ADCW-offset) : 0; offset вычисляем при старте на реальном шутнте. Если напряжение 2.5В, offset ~ 15, при 5.2В offset ~ 30 Закоммитить, глянешь? Короче, прилепил я ПИД свой на флоатах, при настройке I и D - коэффициенты были нулями, один пропорциональный стоял. Блин, светодиод стоит как вкопанный на напряжении 2.5 - 5.5В! Ток был 200 мА. Продолжаю опыты. Что-то тут не так ![]() Вот и не хотелось бы. [Исправлено: ploop, 22.08.2013 в 21:00] |
|
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]()
Tamagotchi, код тама.
Блин, никогда так наглядно с ПИДом не играл. Дёрнешь напряжение - как будто лампочку покачал, шатается, потом останавливается ![]() Пока коэф-тами играю. |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]()
ploop,
Круто, 128 замеров. Я 16-ю обхожусь. IMHO после переключение входов и опор даем несколько раз устаканится и потом замер. |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]()
Да не пробовал ещё. На глаз смотрю. Вот сейчас на сильном токе проверил - не работает. (Блин, не знал, что если светодиод накрыть бумагой, она за 10 сек прожжется
![]() А там старт, время не важно (в разумных пределах). 128 эт от балды. |
![]() |
![]() |
![]() |
![]() ![]() |
||
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8162 раз(а) в 2385 сообщениях
|
![]()
А если я выставлю опорное значение в 1000LSB, что произойдёт?
![]() Цитата:
Цитата:
Если качается - огромная склонность к возбуждению: От балды коэффициентами поиграться не получится, ибо не учитываются все возможные условия эксплуатации. Разная нагрузка, банально разные параметры на разных токах требуются и т.п. [Исправлено: INFERION, 22.08.2013 в 21:53] |
||
![]() |
![]() |
Поблагодарили: 1 раз |
nikita.filukov (22.08.2013)
|
![]() |
![]() ![]() |
![]() |
![]()
ploop,
Там особо и смотреть пока не на что. У меня только ADC по другому флагу читается Код:
uint16_t adc_accurate_result(uint8_t cnt) { do{ ADCSRA |= (1<<ADSC); while ((ADCSRA&(1<<ADIF))==0); ADCSRA|=(1<<ADIF); } while (--cnt); return ADCW; } |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: 15.08.2024 23:42
Сообщений: 4776
Сказал(а) спасибо: 657
Поблагодарили: 1914 раз(а) в 1180 сообщениях
|
![]()
Какое опорное значение? Где выставишь?
Это основное, чего я боялся - стабилизация. Остальной фарш пишется без проблем. подцепил амперметр. Дефайны вида #define MODE1_ADC ((RESISTANCE*MODE_1*20*1024)/REFERENCE) отлично работают, не ожидал. [Исправлено: ploop, 22.08.2013 в 22:20] |
![]() |
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() |