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