Volt/Amper/Power/Capacitance meter

Vladimir N. Shilov 3bef3e716e Now: read, convert and output values from ADC channels. 9 ani în urmă
EWSTM8 97b7518f25 Исправил последствия git revert. 9 ani în urmă
StdPerphDrv 6128cd6685 VAPC: добавил скелет проекта. 10 ani în urmă
inc b8db42d441 VAPC: Configure SPI, out to LED. 10 ani în urmă
lib a407ea307b Всё для работы с АЦП 9 ani în urmă
misc b8db42d441 VAPC: Configure SPI, out to LED. 10 ani în urmă
sch ee272fd6f4 Первичная цель достигнута. Переходим ко второму этапу. 9 ani în urmă
src 3bef3e716e Now: read, convert and output values from ADC channels. 9 ani în urmă
.gitignore 2c96769f53 Исправил мелкие огрехи. RTOS работает, SPI - нет. 9 ani în urmă
Makefile 3bef3e716e Now: read, convert and output values from ADC channels. 9 ani în urmă
ReadMe.txt 3bef3e716e Now: read, convert and output values from ADC channels. 9 ani în urmă
VAPC-meter.cbp 3bef3e716e Now: read, convert and output values from ADC channels. 9 ani în urmă

ReadMe.txt

** Проект 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 пока заклинанием -- понимания нету.
На очереди -- усреднение результатов, вычисление напряжения питания через
опорное напряжение.