Китайский амперметр на 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
значение АЦП при нулевом токе на входе, которое затем будет использовано при
расчётах.