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