123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- ** Проект VAPC-meth **
- * Измеритель напряжения/тока/мощности/ёмкости *
- Немогу никак определиться с диапазонами.
- Думал сначал сделать по два диапозона на напряжение и ток, но что-то мне эта
- идея разонравилась. Опять же, измерять большие напряжения/токи не особо часто
- приходится. Напряжения в основном до 20 вольт, токи - до пары ампер.
- Тем более, так как это измеритель в конкретное устройство, то нужно под него и
- подстраиваться.
- Будет по одному диапазону на ток и напряжения.
- нужно сделать пару кнопок.
- сделать ввод Кд делителя напряжения умноженного на 1000,
- и сопротивление шунта * Ку услителя тока * 1000.
- Далее в программе при вычислениях - получили код ацп, перевели в напряжение,
- умножили на 1000 и поделили на коэффициент.
- Ох и здоровая (85х40мм) плата получилась...
- можно попробовать разбить на две -- на одной индикатор и кнопки, на второй всё
- остальное. получится две платы ~ 45х40 мм.
- вариант A -- поменял входной разъём.
- вариант B -- поменял компановку, плата стала 51х47 мм.
- вариант C -- убрал кварц, добавил двухцветный светодиод, плата стала 49.53 x 46.67 мм.
- думаю последний вариант вполне неплох -- мне даже нравится :-)
- можно использовать в качестве окончательного.
- только вот нормы 0.4/0.17 -- можно пробовать фоторезистом.
- по софту пока идей нету :-)
- SVN-инит 2014.12.29
- появилась мысль -- сделать транзисторный ОК выход, например для управления
- релюхой. хотя если брать ардуиновское реле -- то там нужен просто выход.
- реле для управления нагрузкой -- можно сделать тот-же зарядно-разрядный
- автомат.
- ===
- 2014.12.30
- вывел ещё два вывода на колодку.
- ---
- 2015.05.14
- добавил скелет проекта, makefile, C::B проект.
- ---
- 2015.05.15
- настройка SPI.
- должно вывести 0-7 на индикаторы.
- ---
- 2015.05.18
- добавил RTOS, перенёс туда timing_delay, задержка на 4-ом таймере 1 мс,
- обработчик таймера перенёс в RTOS.
- должно вывести 0-7, через 5 сек 8-f, и так по кругу.
- ---
- 2016.03.23
- Проект уже на git.
- Закончил паять (начал вчера), прошил.
- И тишина...
- Попутно исправил в схеме некоторые номиналы.
- Шунт на 0.1 -- не влезет по мощности, использовал 0.05 Ом.
- На плате есть мелкие огрехи, но самый конкретный косяк -- не те индикаторы.
- По факту использовал корпуса 3-х символьных 7.62 мм. Втулил свои 4-х символьне
- 9 мм. подогнув выводы, но кнопки и светодиод не влезли.
- Исправил дефайны индикаторов.
- Осцилом ничего не увидел на выводах SPI, нужно искать.
- Почитал даташит на тему SPI, поправил свой код.
- ---
- 2016.03.24
- Так-как по прежнему тишь и глухомань, поднял проект в IAR-е и полез в
- отладку. Всё застряло где-то в Delay - похоже на проблемы с таймером.
- Таки да, забыл включить тактирование таймера -- похоже потерялось при
- переносе инициализации то туда, то сюда...
- Повторяем заповедь -- "Часы, ноги, перефирия".
- Вобщем, SPI работает. Проблема была в том, что токозадающий резистор для
- MAX нужно подключать на +5В, а у меня он был на земле. Напаял навесом.
- Картинка появилась, но на индикаторах какой-то бред.
- Исправил коды символов. Исправил позиции индикаторов.
- Вылезло два момента -- неправильно запаял индикаторы, собирался красный
- вниз, под ток, а жёлтый вверх под напряжение. В итоге запаял наоборот. Так
- ещё и на схеме они местами попутаны, так как на плате DS1 внизу, а DS2
- вверху. Исправил схему и позиции индикаторов под факт.
- Добился картинки. Похоже тут какой-то бешенный оптимизатор -- выкинул нах
- похожую функцию. Нужно учесть на будущее.
- ---
- Пора браться за ADC.
- С учётом входного сопротивления канала напряжения в 100 кОм,
- на частоте 16 МГц нужно использовать 384 цикла измерений,
- а на частоте 8 МГц -- 192 цикла.
- Формула расчёта (AN2834 стр. 25) = (циклы / (f_adc * C_adc * ln(2^N+1)) - 1 кОм
- ln(2^13) = 9,01091334728
- C_adc = 16 * 10^-12, т.е.:
- циклы/(f_MHz * 0.00016 * 9,01091334728) - 1 == кОм
- С канала тока, по идее, можно мерять на любой скорости.
- ---
- 2016.03.25
- Factory_VREFINT у меня == 0x7E, т.е. полное значение 0x067E == 1662
- Если это мерялось при 3В, то получается -- 1.218 В
- Предварительный успех -- читаю три канала АЦП и ПДП складывает их в
- память, преобразовываю и вывожу на индикаторы. Запуск АЦП каждые 10 мсек
- тригером от Т2. Настройка Т2 пока заклинанием -- понимания нету.
- На очереди -- усреднение результатов, вычисление напряжения питания через
- опорное напряжение.
|