ReadMe.txt 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. Китайский амперметр на 10А
  2. проц - STM8S003F3P6
  3. 16 MHZ, FLASH 8 KB, RAM 1 KB, E2PROM 128 Byte,
  4. 1 8-bit timer, 2 16-bit timers, ADC 10-bit, SPI, I2C, UART
  5. синий индикатор 0.56" на 3 цифры с общим анодом, SP610561B
  6. Аноды: PA3, PD6, PD4 (1, 2, 3)
  7. Сегменты: PB5, PB4, PC4, PC6, PC7, PA1, PC3, PC5 (A, B, C, D, E, F, G, Dp)
  8. Вход АЦП: AIN4 (PD3)
  9. шунт, предположительно 12.5 мОм
  10. Ку усилителя ~27.7-28.3
  11. вторая половина ОУ висит в воздухе
  12. Похоже, что для оверсепленга к входному сигналу подмешивается что-то
  13. с выхода TIM2_CH3 (PD2), нужно глянуть осцилом.
  14. Выведены +5В, общий, Reset, SWIM
  15. Выведен пятачёк от PA2 (OSC Out) -- можно подключить кнопку.
  16. Свободен PD5 (UART1_TX).
  17. Схему рисовал по плате, один резистор так и не понял куда подключен.
  18. Идея - приспособить к импульсной зарядке для аккумов, кроме тока считать
  19. влитую ёмкость (интегратор по току, если я правильно понял), кнопкой
  20. переключать показания. Желлательно избавиться от встроенного шунта, и
  21. использовать шунт использующийся в зарядном.
  22. Желательно заменить ОУ на R2R, или запитать имеющийся от питания до 5В
  23. стабилизатора. Цель -- получть на вход АЦП размах сигнала до 5В, дабы
  24. использовать диапазон АЦП на полную. Сейчас он используеться на 70%, что не
  25. добавляет точности (макс Увых ЛМ358 при 5В питании -- 3.5В).
  26. Попытаться раскарячить 1-канальный ОУ в SOT-23-5 на площадке SO-8.
  27. Использовать половину нормального ОУ -- жалко, а у меня ещё есть 4 шт.
  28. MCP601T-I/OT. Распиновка: 5 на 8, 4 на 6; 1 на 7, 2 на 4, 3 на 5.
  29. Два вывода лягут, и три распаять проводочками.
  30. Теперь шунт и Ку.
  31. Шунт у нас 0.05 Ом, ток пусть будет 12 А, Ку нужен (5В/(0.05*12)) 8.333
  32. Для красоты, возмём макс ток 12.5 А, Ку тогда будет 8.
  33. Можно взять нижний на 470 Ом, верхний на 3.3 кОм, и тогда при токе 12.5 А
  34. напряжение на выходе будет 5.01 В -- и без подстроечников.
  35. Или такие варианты с подстроечным:
  36. 510 3к3 (3.57)
  37. 649 3к9 (4.543)
  38. 680 3к9 (4.76)
  39. Осталось выпаять родной шунт :-)
  40. Soft:
  41. - Timer 1 каждые 3,125 мсек дергает АЦП,
  42. - АЦП работает на частоте 2 МГц (пока),
  43. - в прерывании АЦП кладёт очередное значение в буфер на 64 значения
  44. Оказалось, что питание на плате -- 3.3 В, т.е. максимальный выход с ОУ 1.8 В,
  45. сопротивление шунта ~6 мОм.
  46. На выходе TIM2_CH3 -- глухо, никакого оверсемленга.
  47. Период индикаторов ~4.5 мсек, длительность одного ~1 мсек
  48. Яркость просто бешенная, так как ток там должен быть вообще мизерный.
  49. Резисторы на сегменты 220 Ом по номиналу, мой прибор показывал что-то вроде 160-170 Ом.
  50. Это ток должен быть меньше милиампера, тем более в импульсе...
  51. И теперь что? перепаивать на 5В или оставлять 3.3В ???
  52. Для макс. тока 10.24 А:
  53. Vin Vout R1 R2 Error
  54. 3.35V 512.00mV 3.60k 649.00 1.58%
  55. 3.37V 512.00mV 2.40k 430.00 2.11%
  56. 3.22V 512.00mV 3.60k 680.00 2.35%
  57. 3.17V 512.00mV 3.90k 750.00 3.81%
  58. 4.95V 512.00mV 5.62k 649.00 1.09%
  59. 5.15V 512.00mV 6.80k 750.00 3.08%
  60. 4.80V 512.00mV 3.60k 430.00 4.03%
  61. Управление индикатором
  62. всё выключено: 0xFF
  63. точка: PC 0xDF
  64. PA PB PC
  65. 0 0xFD 0xCF 0x29
  66. 1 0xFF 0xEF 0xE9
  67. 2 0xFF 0xCF 0x31
  68. 3 0xFF 0xCF 0xA1
  69. 4 0xFD 0xEF 0xE1
  70. 5 0xFD 0xDF 0xA1
  71. 6 0xFD 0xDF 0x21
  72. 7 0xFF 0xCF 0xE9
  73. 8 0xFD 0xCF 0x21
  74. 9 0xFD 0xCF 0xA1
  75. погасить всё: GPIOA->ODR |= 0x02; GPIOB->ODR |= 0x30; GPIOC->ODR |= 0xF8;
  76. вкл. точку: GPIOC->ODR &= 0xFD;
  77. вкл. 0: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0x29;
  78. вкл. 1: GPIOB->ODR &= 0xEF; GPIOC->ODR &= 0xE9;
  79. вкл. 2: GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0x31;
  80. вкл. 3: GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0xA1;
  81. вкл. 4: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xEF; GPIOC->ODR &= 0xE1;
  82. вкл. 5: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xDF; GPIOC->ODR &= 0xA1;
  83. вкл. 6: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xDF; GPIOC->ODR &= 0x21;
  84. вкл. 7: GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0xE9;
  85. вкл. 8: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0x21;
  86. вкл. 9: GPIOA->ODR &= 0xFD; GPIOB->ODR &= 0xCF; GPIOC->ODR &= 0xA1;
  87. ---
  88. 2016.11.12
  89. Смотрю на программу и хочу выкинуть "ртос".
  90. 1-ый таймер остаётся пинать АЦП, 4-ый будет каждые 5 мсек переключать
  91. индикаторы, а 2-ой каждый 200 мсек будет обновлять инфу для выхода.
  92. Обработчик кнопки или паузы прилепить тоже на 4-ый.
  93. Хотя 2-ой тут и не нужен...
  94. ---
  95. 2016.11.14
  96. RTOS выкинул. на очереди SPL? :-)
  97. ---
  98. 2016.11.22
  99. Если при включении питания на выводе кнопки (PA2) будет "0", то сработает
  100. автокоррекция смещения "0" на входе АЦП -- будет получено и сохранено в EEPROM
  101. значение АЦП при нулевом токе на входе, которое затем будет использовано при
  102. расчётах.