Feb. 12th, 2021

eddy_em: (Default)
Сижу, разбираюсь, как с датчиком температуры-влажности SI7005 работать на STM32F103. Намучился уже с его кривым I2C (почему-то периодически возникают глюки на пустом месте, а первая попытка запуска I2C вообще не срабатывает, натыкаясь в момент посылки адреса слейва на NACK — а между прочим, некоторые в этом месте не делают проверку таймаута!).
Все более-менее заработало, но вот захотел я средствами МК вычислить точку росы. А там нужен логарифм. Я его, естественно, давай кусочно-линейной интерполяцией вычислять. Правда, оказалось, что точность для формулы нужна приличная (не хуже 0.01, чтобы результат отличался от формулы не больше, чем на ±0.1℃). И вот получилось, что, в отличие от STM32F0xx, здесь проще флоатами воспользоваться.
Однако…
Вообще ненормальная штука: если к элементу массива по вычисленному индексу (например, K[idx]), происходит зависание. А вот если этот же индекс вписать как константу (K[27]) — вопросов ноль!
Вот он, проблемный участок кода )
Ссылка на код на гитхабе.
Нужно теперь подумать, как победить проблему с I2C (первое обращение абсолютно всегда заканчивается с ошибкой) и как избавиться от флоатов (чтобы на STM32F0x2 тоже это работало). Возможно, опять надо будет сделать целочисленную арифметику, заменив коэффициент на числитель/знаменатель. Или все-таки оставить флоаты.
eddy_em: (Default)
В связи с возможным проведением очной весенней школы АФШ (детей набрали еще прошлым летом, но пока очно не было возможности встретиться из-за проклятого ковида) Григорий Меерович попросил меня предложить несколько тем для школьников. Выкладываю темы, может, кто-нибудь еще что интересное посоветует.
Темы )
Надеюсь, среди детей найдутся железячники-линуксоиды…
eddy_em: (Default)
Купил парочку ионисторов на 4Ф. Продавец пишет, что саморазряд у них — 15мкА! Однако, зарядив их до 1В вижу, что разряжаются они со скоростью примерно 10мВ/с. А коль в начале разрядки dU/dt=1/(RC), получается, что разряжается он так, как будто бы сопротивление моего мультиметра в режиме измерения напряжения R=1/(CdU/dt)=25Ом? Ну или проще: I=dq/dt=CdU/dt=40мА!!! А будь ток саморазряда 15мкА (хотя, конечно, он будет в несколько раз больше при подключенном мультиметре), скорость была бы dU/dt=-I/C — порядка 4мкВ/с, т.е. сам по себе с 5В до 3В он разряжался бы почти шестеро суток!
Жаль, однако! Я хотел попробовать запитывать такой штукой какие-нибудь поделки на МК как мелким "ИБП" (при потреблении в 50мА на 2В он разрядился бы за 2*4/0.05=160 секунд — вполне хватило бы на раздумья и отсылку последних данных по CAN/485/232).

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 12:17 am
Powered by Dreamwidth Studios