Capasitive Sensing Quirks

Вот у меня есть проблема с PIC16F1938
изготовил 5 одинаковых кнопок.
И каждый PIC16F1938 ведет себя по-своему. Один например начинает выдавать ложные включения (связанные со странными пиками) при работе (причем не сразу после включения, а через 10-15 минут), причем я заметил что это связано с помехами в сети 220в.
Его отбраковал, теперь другой PIC16F1938, никаких ложных включений, зато падает чувствительность через 2-3 дня, кнопка перестает включатся, перезагрузка девайса решает проблему (т.е. это не связано с уходом частоты изза нагрева чипа и т.д.)

Алгоритм там простой, считать среднее значение при взвешенном вкладе каждого измерения (1/16)
т.е. среднее двигается довольно быстро. И накапливаться так долго не может или может?

Код аналогичем AN1103
Method 2: Percentage Trip
ftp://193.170.235.123/Lernbehelfe/PIC-Programme/OnePIC/Capacitive%20Sensing%20Docs/AN1103%20Software%20Handling%20for%20cap%20sensing.pdf

Какие есть идеи?
все это происходит в обработчике прерываний, может другие прерывания как-то влияют?
почему значения времени уходят?
Получение времени несколько отличается от (AN1103) используется два таймера один для Gate который онстанавливает счет таймера в железе и держит значение до обработчика прерывания. поэтому interrupt latency не должно оказывать влияния? или может произойти что обработка какого-то прерывания настолько долгая, что период Gate timera сработал дважды?

Ардуино: удивительное рядом

В одном из проектов в виде вспомогательного контроллера (ничего сложного, опрашивает ножки и 18b20, дрыгает ножками, общается с центральным процессором по UART) использую Arduino Nano (точнее, её китайского клона с 328 атмегой). В дальнейшем, разумеется, перейду на атмегу отдельно, но пока партия в 10 штук - удобно и так.
Поймал удивительный глюк. Собирал очередной экземпляр девайса, взял очередную ардуинку, подключил к usb прошивать - она стала мигать диодиком на 13й ноге, как обычно - я так понимаю, туда с завода залит этот простенький скетч blink. Я залил свою прошивку (из ардуинской IDE) как обычно, воткнул ардуинку на положенное место, включил свой девайс с ней - всё работает. Сутки примерно работало всё в составе девайса без проблем. Потом устройство было выключено, транспортировалось по морозцу, отогрелось и снова включено. Проработало минут 20 и сдохло. Отключил по питанию, включил. Не работает.
Заглянул внутрь - ба, на ардуинке снова ритмично мигает диодик на 13й ноге!! Я её извлёк, снова подключил к ноуту, снова залил свою прошивку - и с тех пор всё работает.

То есть после отключения и охлаждения каким-то образом восстановилась заводская прошивка ардуны. Вот как такое возможно?

Подбора электролитов вопрос.

Камераден, а что из конденсаторов (производитель, серия) нынче модно ставить на выход DC/DC преобразователя, при условии, что частота этого преобразователя 200-500кГц, выходное напряжение 12В и ток до 10А? Ну и чтоб это в России купить можно было не по заоблачным ценам. Или на Али такое тож найти можно?

Предварительный подогрев платы. Бюджетный.

Приходится мне паять микросхемы (например AD9958) у которых выводы под корпусом. До текущего момента просто грел феном сверху. Наверняка грел слишком сильно, не так как разрешенно даташитом. Паять мне нужно не очень много, буквально 20-30 корпусов в год, поэтому хочется подешевле.

Вот задумываюсь как-бы немного "распрямить" техпроцесс. Видео на ютубе многие очень странные, поэтому спрашиваю здесь. Как понимаю надо купить станцию для предварительного подогрева.


Закрепить на ней плату. Нагреть градусов до 150-180 C. А потом греть сверху феном, пока не припаяется.

Правильно ли понимаю техпроцесс? Получиться ли припаять BGA таким способом?

разряд ёмкости в коллектор-эмиттер

Идиотский вопрос в идиотской ситуации.

Чур не ржать.

Есть датчики движения - стандартные, 220 вольт на выходе. Есть вход контроллера - стандартный, 0-24 вольта.

Сейчас связаны через реле. Достало щёлкать. Решил из палки и верёвки сделать развязку на оптронах.

Ну тупо всё - 4N35, 0.022мкф и встречно-параллельный диод на стороне 220, к контроллеру открытый коллектор.

Всё просто, вопросов нет. Собрал, смонтировал. Понял, что контроллер будет принимать 100Гц прямоугольник.

Залудил 22.0 в параллель к коллектору-эмиттеру.

Потом как-то осознал, что при открывании транзистора оптрона ток через него будет недетский, и, наверное, долго он не проживёт.

И вот сижу в мучениях. Собрано тесно, резистор в коллектор уже не запаять, надо всё полностью переделывать. Жуть, как неохота - закорпусировано уже. :(

Может, есть у кого опыт? Транзистор оптрона по шиту 50ма в долгую и 100ма в импульсе. В принципе, там же синусоида, открываться транзитор будет плавно...

Экзоскелет как устройство ввода для компьютерных игр

Возникла потрясающая (на первый взгляд) идея. Так как я с большой вероятностью не первый, кто догадался до этого, то решил поделиться ею здесь, в надежде, что кто-то в ответ поделится существующими наработками или наведёт на нужную элементную базу.

Итак. Обычно устройством ввода служит клавиатура, мышь, геймпад или что-то подобное. На крайняк какой-нибуль кинект. У этих устройств очень ограничена обратная связь.

А мы сделаем устройством ввода экзоскелет, внутрь которого игрок должен залезть. Во-первых, экзоскелет в реальном времени принимает такую форму (положение головы, рук-ног и т.п.), которая соответствует конфигурации тела игрового персонажа. Во-вторых, экзоскелет измеряет силу противодействия игрока на каждую степень свободы (именно силу, а не координаты или скорость, которые являются, наоборот, обратной связью от экзоскелета к игроку), и использует эту информацию для моделирования тела персонажа в игре.

Какие будут советы по устройству такого экзоскелета? Как организовать механику? Чем измерять силу противодействия?

Есть и конструктивные противоречия. С одной стороны, экзоскелет должен как можно быстрее и точнее передавать конфигурацию тела персонажа. С другой стороны, персонаж может испытать заведомо несовместимые с жизнью нагрузки (падение с большой высоты, например), в этом случае экзоскелет не должен травмировать игрока (нужно ограничить предельные ускорения или ещё что-нибудь). Совсем отключать в таком случае экзоскелет вариант плохой, так как в игре игрок будет скорее всего терминатором, для которого такие нагрузки опасны лишь потерей немного здоровья. Ограничение нагрузок на основе измеренной силы противодействия тоже вариант плохой, так как датчик может сломаться, и, собственно, тем самым и поспособствовать попаданию персонажа в такую передрягу. Дело осложняется тем, что травмирующий уровень нагрузок может оказаться зависимым от конкретного положения тела игрока в этот момент, причём зависеть от физических данных этого игрока (например, его растяжки мышц).

Ну и с датчиками силы. Они должны иметь минимальный люфт, иначе сигнал будет запаздывать. Они должны обеспечивать хороший динамический диапазон, позволяющий как ломать стены, так и целиться из кустов. И, конечно, они не должны легко выходить из строя, если игрок надавит на них чуть сильнее, чем нужно.

В общем, слушаю ваши советы.

Корпус для небольшого усилка + корпус для колонок

Приветствую всех, с прошедшим вас, коллеги, и с наступающим.
Решил я тут на днях пустить на детали старый магнитофон, выдрал оттуда платку усилка и динамики, теперь хочется это оформить как-то красиво или хотя бы не очень позорно.
Плата усилителя совсем немного не влезает в стандартный корпус от компьютерного БП, что меня сильно огорчило. Это значит, что корпусок придется из чего-то строить. Что уважаемое сообщество может подсказать? По высоте деталей она сантиметра три-четыре, соответственно корпус будет плоским с гнездами и регуляторами на торце.
Хочется каких-то лайфхаков в целях уменьшения трудозатрат.
И еще вопрос по колонкам. Как считаете, из обычного ламината (который на пол кладут) выйдет что-то дельное? С ним, как мне кажется, возни поменьше будет, чем с дсп. К тому же динамики небольшие, сантим десять в диаметре, и сильно тяжелые колонки мне представляются излишне громоздкими.
Опыта в строении корпусов для РЭА и тем более акустики у меня нет совсем.

Разъёмы IDC.



В продолжение вопроса про разъемы. Есть IDC разъемы (они применялись в старых IDE винчестерах) и еще много где. Посмотрел видео, вроде запрессовывать их несложно. Можно будет резать провода требуемой длинны. Т.к. провод выходит в бок, то по высоте тоже получается удовлетворительный результат.

Вопрос тем, кто имел с ними дело. Какой процент брака при запрессовке?

STM32F103: странная проблема с DMA (исправлено, но не решено)

Пытаюсь заюзать DMA для пересылки данных из фиксированного массива в регистр, так же находящийся в памяти по фиксированному адресу (на него отображается шина SSD1963).

Ежели адрес источника данных не инкрементируется (т.е. чтение идёт всё время из одного и того же адреса), то всё ок - на экране видим однотонную заливку (на картинке ниже синий фон именно так и создан).

Если же адрес инкрементируется (в соответствии с флагом в соответствующем регистре контроллера DMA), то каждые первые n посылок (в терминологии референс-мануала -- "токенов") портятся, но каким-то не очень случайным образом:
картинкаCollapse )
Ширина испорченной зоны подозрительно похожа на 32. Посылки все 16-битные (16-битных массив пересылается в 16-битный регистр). Эффект не зависит ни от стартового адреса, ни от количества данных в одной транзакции. Скорость работы шины вряд ли виновата (т.к. равномерная заливка всё-таки работает и тактовая частота микроконтроллера более чем в два раза ниже, чем тактовая на видеочипе).

КодCollapse )

Если я пересылаю ровно точно тот же массив в точно тот же регистр "вручную", но всё пишется нормально, просто медленнее. Если я запускаю программу под отладчиком (опции компиляции все точно те же) и смотрю на регистры, то там записанно именно то, что надо - и глюка пересылки данных НЕТ.

Вопрос - чё за хренотень и как с ней бороться?

Upd: нашёл. Виновата оптимизация -O3. Если её не так туго затягивать, то на -O1 всё работает как и должно работать. Я понял это, когда в отладчике стал смотреть инициализацию DMA по шагам. В сишном коде все операции записаны в том порядке, в котором они ДОЛЖНЫ быть - сначала устанавливаем регистры адресов, затем настраиваем транзакцию, затем включаем... а оптимизатор решил, что всё это неправильно и в итоге получилось так: сначала блок DMA включается на передачу, успевает что-то передать (тот самый мусор!), а затем уже исполняются инструкции, которые его настраивают и дальше высылаются корректные данные.

Игрушка-самоделка на выходные: винтажный электронный термометр

Оригинал взят у bigmaxx в Игрушка-самоделка на выходные: винтажный электронный термометр


Из всех «винтажных» типов индикаторов и дисплеев мне больше всего нравятся VFD. Их мягкое и ненавязчивое сине-зелёное свечение, отличающееся четкими контурами равномерно-ярких графем, ассоциируется с электроникой, производившейся в 70-е – 90-е годы прошлого века в Японии и имевшей безупречную репутацию по надежности и качеству.

Read more...Collapse )