CAN + CANOpen + CANfestival + STM32. Часть первая

CANOpen
Вы когда-нибудь участвовали в форумных склоках на тему «Что лучше — написать свое или взять готовое?». Лично я обожаю подобные вещи, причем я больше предпочитаю наблюдать, нежели участвовать. Ведь это так весело, сначала обсуждаются технические детали, потом постепенно переходят на личности, потом кого-то банят… Вы скажете, что я второсортное быдло, которому нравятся такие же второсортные развлечения? Знаете, а зачем это отрицать, зачем заниматься самообманом? Лучше принять себя таким, какой я есть, и гордо нести это как знамя: «Да, я — быдло!». Поэтому вместо самоотрицания я попытаюсь «набросить», и если мне повезет, то там, в комментариях разгорится такой спор переходящий от технический деталей к личным оскорблениям.
Так что может послужить предпосылкой такого спора? Ну вот, например, такая тема. Есть у вас в микроконтроллере замечательная штука — интерфейс CAN, помощью которого можно сделать массу замечательных вещей: шину для связи между модулями в умном доме, между узлами в собственном роботе, между модулями в ПЛК, между электроникой в автомобиле и т.д. и т.п. Но что пустить «поверх» CAN: свой самодельный протокол или взять готовый. А если готовой протокол, то что лучше свой самописный стек или готовый? Займу пожалуй одну из крайних позиций — все готовое, и протокол и стек к нему, а именно CANOpen и CANFestival.


Читать дальше

Анализатор протокола WS2812b для Saleae LLC

После приобретения клона анализатора Saleae, стало интересно, можно ли реализовать свой анализатор сигнала (плагин), что и было сделано на примере реализации анализатора протокола WS2812b. Остальное под катом.


Читать дальше

Зарядное устройство для Li-ion на ТР4056

  Заказал на Ali лот из пяти модулей зарядных устройств на чипе TP4056 для Li-ion аккумуляторов (цена лота 68,70 руб, за модуль 13,74 руб, сентябрь 2015). Пришли на одной печатной плате, разделенные скрайбированием (надрезанием). На печатке логотип kvsun — китайский производитель широкого спектра зарядок Li-ion аккумуляторов различных типоразмеров и применений.



Статья в основном является компиляцией разрозненных данных интернета, с целью собрать все в одном месте.


Читать дальше

Цифровые рекурсивные фильтры. Часть 3.

Продолжение статей Часть 1. и Часть 2.
Нам осталось рассмотреть преобразования аналогового НЧ фильтра в цифровой ФНЧ, ФВЧ, полосовой и режекторный фильтр.


Читать дальше

Цифровые рекурсивные фильтры. Часть 2.

Продолжаем цикл статей, посвященных цифровым рекурсивным фильтрам…
Основной акцент в этой статье будет сделан на методике расчёта матриц z- преобразования и обосновании метода «быстрого» вычисления коэффициентов фильтра. Обычно для расчёта применяют линейную свёртку, которая требует О(N^2) операций умножения. Применение матриц z- преобразования существенно снизить количество таких операций. Удалось также получить вид матриц, требующий минимального объёма памяти.
Начало — Часть 1. продолжение — Часть 3.


Читать дальше

Цифровые рекурсивные фильтры. Часть 1.

Я долго думал, как назвать тему. Вариантов было много: от рекламно-жизнерадостного «Цифровые фильтры — это очень просто!» до (с ярким оттенком снобизма) «Алгоритмы построения цифровых IIR- фильтров Баттерворта — для тупых!»
«По совету друзей» (с) я решил остановиться на нейтральном названии (простенько, но со вкусом (с)): «Цифровые рекурсивные фильтры», или, как их ещё называют в простонародье, «БИХ-фильтры» или фильтры с Бесконечной Импульсной Характеристикой, что эквивалентно буржуйскому IIR (infinite impulse response).
Моя цель — подготовить подготовить вас к чтению серьёзных статей по этой тематике (не дай Бог, конечно, но в жизни может всякое случиться...).
Продолжение в Часть 2. Часть 3.


Читать дальше

2-x фазный ШИМ (PWM) генератор на STM32F030F4

Для питания ряда устройств (например электродвигателей переменного тока) иногда необходимо наличие сдвинутых по фазе питающих напряжений. Для питания 2-х фазных индукционных двигателей необходимо наличие двух фаз синусоидального напряжения с частотой 400 Герц и сдвинутых по фазе на 90 градусов. Один из примеров таких двигателей являются двигатели серии ДИД. Они интересны тем, что их частота вращения может составлять от 16000 до 18000 об/мин. Для питания таких двигателей и было сделано данное устройство, которое представляет собой задающий генератор 2-х фазного 400 Гц напряжений сдвинутых по фазе на 90 градусов относительно друг друга.
В качестве микроконтроллера использован STM32F030F4. Его выбор обусловлен его «минимализмом» — наименьший из корпусов в серии STM32F0 и естественно с минимальной стоимостью. Схема подключения изображена ниже. Микроконтроллер работает на частоте 48 МГц. В качестве задающего генератора использован TIM3, так как в данном контроллере только этот таймер можно конфигурировать так, чтобы использовать выходы трех каналов. Третий канал можно в случае необходимости использовать для генерации 3-фазного напряжения. Таймер работает в режиме генерации ШИМ (PWM). Для получения синусоидального напряжения 400 Гц в канале используется высокочастотное изменение коэффициента ШИМ с частотой 40 кГц, на которую настроен системный таймер SysTick. Синусоида формируется с помощью таблицы значений синуса с шагом 360/100 градусов. Очень полезный калькулятор для такого рода таблиц можно найти на сайте. При желании с помощью АЦП можно управлять амплитудой, фазой, частотой генерации. Но в данной реализации это не сделано.



Ниже показаны выходные осциллограммы генератора. Синяя и фиолетовая синусоиды — сдвинуты на 90 градусов, желтая — выход таймера для синей синусоиды, зеленый — тестовый сигнал генерируемый при начале формирования синусоиды




Читать дальше

Git в домашнем хозяйстве.


Тема крайне капитанская, но, оглядываясь назад, мне бы хотелось заставить себя использовать CVS гораздо раньше, чем я начал)

Имея высшее образование по специальности «Радиотехника», и программируя микроконтроллеры на самом нижнем уровне, исходя из сложившихся представлений о программировании (коих до определенного времени хватало), я время от времени от знакомых ребят-программистов, которые интересовались моей деятельностью, слышал о системах контроля версий исходного кода, а также удивленные возгласы после того, как они узнавали, что я таковыми не пользуюсь.

Сам я просто колбасил код на Си и Ассемблере, время от времени сохраняя релизые версии firmware в папочках с соответствующими номерами.
Это, признаться, меня практически не парило, но сейчас я бы так делать не стал.

С тех пор прошло какое-то время, я решил научиться взрослому программированию, сейчас работаю в крупной компании над большим проектом под iOS, но продолжаю разрабатывать железки для своего личного проекта в свободное от работы время.

И, кончено же, я использую Git не только на работе, но и дома — потому что от его использования мы получаем следующий профит…


Читать дальше

Сигма-точечный фильтр Калмана

Если кому-то нужен протестированный код Unscented Kalman Filter (UKF) то предлагаю попробовать мою реализацию. Проверял на нескольких задачах, и сегодня проверил на модели BLDC, для которого никак не могу отладить EKF. На двигателе фильтр показывает себя хорошо, EKF так работать заставить не могу. Хотя он должен быть не на много хуже. Проблема только в поиске ошибок.


Читать дальше

Аналоговые часы на STM32F429I-DISCO (теперь с TS)

Пусть тут полежит. Может кому и пригодится. На форумах тема часто возникает, некоторые на этом даже деньги делают.




Читать дальше