eddy_em: (hram nauki)
[personal profile] eddy_em
Сегодня наконец-то у меня появилось время, чтобы проверить, как же работает аналоговый коммутатор. А работает он превосходно.

Итак, я взял макетку, воткнул в нее ADG506A и соединил все аналоговые входы мелкоомными (200..900 Ом) резисторами. К S1 подключил "землю", а к S16 — +3.3В с макетки STM32. Запитал микросхему я старым БП от внешнего HDD (он дает два напряжения: 5В и 12В с общей землей).
Подключил, проверил — работает! Правда, заработало не сразу: после первого запуска все каналы, кроме первого, показывали 0xfff, а первый показывал 0. Сразу понятно, что между первым и вторым каналом плохой контакт у резистора на макетке. Резистор воткнул посильней — пошло напряжение.
Однако, мне не понравился предыдущий алгоритм работы, когда нагрузка опрашивалась постоянно, поэтому опрос всего аналогового хозяйства я повесил на функцию выдачи измеренных значений. Теперь нагрузка будет подсоединяться к АЦП только во время измерения по запросу. Чуть подправленный вариант я положил туда же, все равно исправления минимальны.
Стабильность АЦП получилась уж очень хреновенькая: значения плавают иной раз аж на 20 единиц!
Вот, например, такие получаются показания:
Temperature 0x00  = 0x00 0x00 
Temperature 0x01  = 0x00 0x84 
Temperature 0x02  = 0x00 0xaf 
Temperature 0x03  = 0x01 0xdb 
Temperature 0x04  = 0x03 0x10 
Temperature 0x05  = 0x03 0xe4 
Temperature 0x06  = 0x05 0xca 
Temperature 0x07  = 0x06 0x9b 
Temperature 0x08  = 0x07 0x4e 
Temperature 0x09  = 0x08 0xd6 
Temperature 0x0a  = 0x0a 0x04 
Temperature 0x0b  = 0x0a 0xb4 
Temperature 0x0c  = 0x0b 0xfc 
Temperature 0x0d  = 0x0d 0xe0 
Temperature 0x0e  = 0x0e 0xb7 
Temperature 0x0f  = 0x0f 0xff

А при следующем опросе — такие:
Temperature 0x00  = 0x00 0x00 
Temperature 0x01  = 0x00 0x7f 
Temperature 0x02  = 0x00 0xaf 
Temperature 0x03  = 0x01 0xdf 
Temperature 0x04  = 0x03 0x0f 
Temperature 0x05  = 0x03 0xe4 
Temperature 0x06  = 0x05 0xcc 
Temperature 0x07  = 0x06 0x9d 
Temperature 0x08  = 0x07 0x5a 
Temperature 0x09  = 0x08 0xd6 
Temperature 0x0a  = 0x0a 0x01 
Temperature 0x0b  = 0x0a 0xb5 
Temperature 0x0c  = 0x0b 0xfc 
Temperature 0x0d  = 0x0e 0x09 
Temperature 0x0e  = 0x0e 0xb0 
Temperature 0x0f  = 0x0f 0xec 

В общем, надо будет либо попробовать добавить стабильный источник опорного напряжения (да и измеряемую цепь питать оттуда же), либо вообще использовать внешний АЦП.
Кстати, глянул я, какие же значения сопротивления у платиновых элементов: порядка 20..50 Ом! Т.е. придется все-таки мне еще усилитель городить. Как говорится, как она ни плакала, а все равно померла!

Вот, кстати, даже видео снял на веб-камеру (качество, правда, получилось жуткое: вебка-то дешевенькая).
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 05:51 pm
Powered by Dreamwidth Studios