avatar
Ну, естественно, одна бусинка менее эффективна, чем две :) А паразитная емкость там очень мала и через нее ничего не может пролезть, в этом и заключается основное свойство бусинки.
avatar
Насколько мне позволило мое знание англ., тов. Джимм говорит, что применение одной ферритовой бусинки не так эффективно, как применение двух (по входу и выходу)?.. И что он говорил насчет паразитной емкости, кот. параллельно индуктивности из «бусинки»?..
p.s. Второе видио — вот это я понимаю, рабочий беспорядок :)
avatar
По падению напряжения согласен — это обязательно нужно учитывать. Разве что не найдешь шотки на большие напряжения. Подправил статью.

А супрессор я обычно ставлю больше питающего и меньше максимального для микросхемы — питающее 24Вольта в проекте, микросхема держит максимально 60 Вольт между выходными точками. Так что 33В супрессора самое то для подавления скачков.
avatar
Проблема с супрессорами в том, что их нужно выбриать на напряжение больше питающего, иначе через них потечет основной ток. Но если их брать на напряжение больше питающего, то они не защитят от защелкивания.

Правда еще вопрос, какие быстрее
Для защиты от защелкивания всегда нужно использовать Шоттки. Из-за низкого падения, они не дадут потечь току внутрь микросхемы.
avatar
Супрессор защищает от выбросов. Причем довольно неплохо.
А про вилочки диодные я и говорю. Правда еще вопрос, какие быстрее — у HER-ов как правило емкость перехода меньше на порядки.
В своей девайсине у меня стоят Шотки из БП-шников компьютерных — что было под рукой.
avatar
Скорее всего, пробивается из-за защелкивания выходного каскада. В таком случае супрессор не поможет (точнее, похоже, но его нужно уж очень точно подбирать), зато помогут вилки из диодов Шоттки с выходов на землю и питание.
avatar
Хотел замечаний, получи:
Объявляем библиотеки и данные:
Ты в каждой статье их объявляешь. Пора уже вынести куда-нибудь.

//общее количество разрядов индикатора
#define LEDDIGITS 4

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

template <uint8 SegmentCount> class SegmentDisplay
// а потом сделать тайпдеф для своего индикатора:
typedef SegmentDisplay<4> RlnSegmentDisplay


Это хоть и правильно, но сложно и не нужно. Ведь в текущей реализации нельзя использовать несколько индикаторов. В итоге, у тебя два варианта — вынести весь код, который специфичен для твоего индикатора в отдельные методы и в своей реализации переопределять их:

class SegmentIndicatorBase
{
    protected:
        virtual int segmentCount() = 0 const;
        ....
};

class RlnSegmentIndicator : protected SegmentIndicatorBase
{
    protected:
        virtual int segmentCount() { return 4; };
        ....
};


Либо просто забить и прописать 4 константой в классе.

void Init(uint8_t _Base);//функция инициализации
Всегда радовали такие комментарии :)

мне не удалось передать указатель на эту функцию ни изнутри класса, ни снаружи
Указатель на метод класса называется «делегат». Фишка в том, что чтобы вызвать метод класса нужно не просто его вызвать, но еще и передать ему указатель на данные класса. Поэтому твой хак — вполне нормальная штука.

BUTTONSSETUP;

Такого вообще лучше не делать. Совсем не понятно, что это.

uint16_t UIntPow(uint16_t _data, uint8_t _pow){//Возведение целого числа в степень

Ты извини, но функция гениальна. Напиши лучше просто таблицу

Ну, это — для начала :)
avatar
Будет. Реализую знаковый и десятичный вывод на индикатор и будет.
avatar
Мне кажется, что функции типа «вывод информации на индикатор» неплохо бы оформить в качестве библиотеки. Потому, что когда читаешь статью про энкодер, кусок кода для вывода на индикатор как-то не в тему смотрится.

По идее, должно быть что-то типа такого:

#include "RlnElectro.h"

void main()
{
    RlnInit();
    RlnSegmentDisplay_Show(1234);
}
avatar
Таких реле — тьма: начиная от мелочи и кончая контакторами на тыщи ампер. Вот, для примера, даташит на релюшку от OMRON.
avatar
Никогда не видел таких реле
avatar
Это — для всех компиляторов, просто потому, что по другому не сделаешь.
avatar
А это для какого компилятора? Например, между майкрософтовским и GCC есть отличия, которые мешают использовать одинаковые библиотеки на C++.
avatar
Угадал. Молодец, держи плюсик :)
Спасибо тебе добрый человек.
avatar
Сергей, обрати, плз, внимание на формат коммента: после редактирования кнопкой «изменить» в форме вылазит много мусора и после сохранения вылазит в видимость тэг «code»…
avatar
А не связано это с тем, что приоритет операции логического отрицания выше, чем побитовое «и»? Мб скобки переставить:
if (EncPortData[1]&0x01 && !(EncPortData[0]&0x01))//нарастающий фронт по А!
if (EncPortData[1]>>1)&0x01 && !(EncPortData[0]>>1)&0x01)//нарастающий фронт по B!
В первой строчке вообще не понятно зачем скобки вокруг элемента массива…
avatar
Спойлер
Смахивает на помешательство. Пойду ка я отдохну, а то уже void вместо vk.com в командной строке набираю
avatar
реле, катушка которого рассчитана на переменное напряжение 220В, не?
avatar
Код указанный выше. И в нем есть очень неявная ошибка.
Задача кода — устанавливать выход в единицу по фронту сигнала А, а сбрасывать — по фронту сигнала Б.
Два «независимых» условия, каждое смотрит текущее и предыдущее состояния и в стучае фронта — делает свое дело.
Вот только если сначала появляется фронт А, а потом Б — все работает как надо (что идеально работает как раз с упомянутой кнопкой).
Но вот если крутить наоборот, т.е. сначала Б, потом А, то операция (EncPortData[1]>>1) портит данные. Именно этим меня утром и осенило :) Попытался найти подобный случай в Макконнелле(Совершенный код), но нашел только приведенную выше цитату на первой же странице результатов поиска :)
avatar
Что это за реле такое, на катушку которого подается 220В переменки?