Китайский амперметр на 10А
проц - STM8S003F3P6
16 MHZ, FLASH 8 KB, RAM 1 KB, E2PROM 128 Byte,
1 8-bit timer, 2 16-bit timers, ADC 10-bit, SPI, I2C, UART

синий индикатор 0.56" на 3 цифры с общим анодом, SP610561B
Аноды: 		PA3, PD6, PD4	(1, 2, 3)
Сегменты: 	PB5, PB4, PC4, PC6, PC7, PA1, PC3, PC5	(A, B, C, D, E, F, G, Dp)

Вход АЦП: AIN4 (PD3)

шунт, предположительно 12.5 мОм
Ку усилителя ~27.7-28.3
вторая половина ОУ висит в воздухе

Похоже, что для оверсепленга к входному сигналу подмешивается что-то
с выхода TIM2_CH3 (PD2), нужно глянуть осцилом.

Выведены +5В, общий, Reset, SWIM
Выведен пятачёк от PA2 (OSC Out) -- можно подключить кнопку.
Свободен PD5 (UART1_TX).

Схему рисовал по плате, один резистор так и не понял куда подключен.

Идея - приспособить к импульсной зарядке для аккумов, кроме тока считать
влитую ёмкость (интегратор по току, если я правильно понял), кнопкой
переключать показания. Желлательно избавиться от встроенного шунта, и
использовать шунт использующийся в зарядном.
Желательно заменить ОУ на R2R, или запитать имеющийся от питания до 5В
стабилизатора. Цель -- получть на вход АЦП размах сигнала до 5В, дабы
использовать диапазон АЦП на полную. Сейчас он используеться на 70%, что не
добавляет точности (макс Увых ЛМ358 при 5В питании -- 3.5В).

Попытаться раскарячить 1-канальный ОУ в SOT-23-5 на площадке SO-8.
Использовать половину нормального ОУ -- жалко, а у меня ещё есть 4 шт.
MCP601T-I/OT. Распиновка: 5 на 8, 4 на 6; 1 на 7, 2 на 4, 3 на 5.
Два вывода лягут, и три распаять проводочками.

Теперь шунт и Ку.
Шунт у нас 0.05 Ом, ток пусть будет 12 А, Ку нужен (5В/(0.05*12)) 8.333
Для красоты, возмём макс ток 12.5 А, Ку тогда будет 8.
Можно взять нижний на 470 Ом, верхний на 3.3 кОм, и тогда при токе 12.5 А
напряжение на выходе будет 5.01 В -- и без подстроечников.
Или такие варианты с подстроечным:
	510	3к3 (3.57)
	649	3к9 (4.543)
	680	3к9 (4.76)
Осталось выпаять родной шунт :-)

Soft:
 - Timer 1 каждые 3,125 мсек дергает АЦП,
 - АЦП работает на частоте 2 МГц (пока),
 - в прерывании АЦП кладёт очередное значение в буфер на 64 значения

Оказалось, что питание на плате -- 3.3 В, т.е. максимальный выход с ОУ 1.8 В,
сопротивление шунта ~6 мОм.
На выходе TIM2_CH3 -- глухо, никакого оверсемленга.
Период индикаторов ~4.5 мсек, длительность одного ~1 мсек
Яркость просто бешенная, так как ток там должен быть вообще мизерный.
Резисторы на сегменты 220 Ом по номиналу, мой прибор показывал что-то вроде 160-170 Ом.
Это ток должен быть меньше милиампера, тем более в импульсе...
И теперь что? перепаивать на 5В или оставлять 3.3В ???

Для макс. тока 10.24 А:

Vin	    Vout	    R1	    R2	    Error
3.35V	512.00mV	3.60k	649.00	1.58%
3.37V	512.00mV	2.40k	430.00	2.11%
3.22V	512.00mV	3.60k	680.00	2.35%
3.17V	512.00mV	3.90k	750.00	3.81%

4.95V	512.00mV	5.62k	649.00	1.09%
5.15V	512.00mV	6.80k	750.00	3.08%
4.80V	512.00mV	3.60k	430.00	4.03%


Управление индикатором
всё выключено:  0xFF
точка: PC 0xDF
    PA      PB      PC
0   0xFD    0xCF    0x29
1   0xFF    0xEF    0xE9
2   0xFF    0xCF    0x31
3   0xFF    0xCF    0xA1
4   0xFD    0xEF    0xE1
5   0xFD    0xDF    0xA1
6   0xFD    0xDF    0x21
7   0xFF    0xCF    0xE9
8   0xFD    0xCF    0x21
9   0xFD    0xCF    0xA1

погасить всё: GPIOA->ODR |= 0x02; GPIOB->ODR |= 0x30; GPIOC->ODR |= 0xF8;
вкл. точку: GPIOC->ODR &= 0xFD;
вкл. 0: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0x29;
вкл. 1: GPIOB->ODR &= 0xEF; GPIOC->ODR &= 0xE9;
вкл. 2: GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0x31;
вкл. 3: GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0xA1;
вкл. 4: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xEF; GPIOC->ODR &= 0xE1;
вкл. 5: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xDF; GPIOC->ODR &= 0xA1;
вкл. 6: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xDF; GPIOC->ODR &= 0x21;
вкл. 7: GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0xE9;
вкл. 8: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0x21;
вкл. 9: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0xA1;

---
2016.11.12

Смотрю на программу и хочу выкинуть "ртос".
1-ый таймер остаётся пинать АЦП, 4-ый будет каждые 5 мсек переключать
индикаторы, а 2-ой каждый 200 мсек будет обновлять инфу для выхода.
Обработчик кнопки или паузы прилепить тоже на 4-ый.
Хотя 2-ой тут и не нужен...

---
2016.11.14

RTOS выкинул. на очереди SPL? :-)

---
2016.11.22

Если при включении питания на выводе кнопки (PA2) будет "0", то сработает
автокоррекция смещения "0" на входе АЦП -- будет получено и сохранено в EEPROM
значение АЦП при нулевом токе на входе, которое затем будет использовано при
расчётах.
