Программирование на Си

Управление бесколлекторным двигателем постоянного тока с датчиками Холла

Бесколлекторные двигатели с датчиками Холла(Sensored brushless motors) применяются как тяговые, в электроприводах, где нужен высокий крутящий момент при низких оборотах. Переключение обмоток двигателя происходит по сигналу датчиков. Обычно они встроены в корпус двигателя. В зависимости от типа они могут быть аналоговыми или цифровыми, это следует учесть при написании программы. В моем двигателе датчики цифровые.

Датчики Холла

Двигатель в разобранном состоянии

Силовая часть схемы остается прежней. Вместо сигналов обратной ЭДС мы будем обрабатывать сигналы с датчиков Холла. В большинстве случаев датчики Холла подключают к выводам внешних прерываний микроконтроллера. В этом примере мы используем контроллер Atmega48, так как у него внешние прерывания можно организовать на всех портах, в отличие от Atmega8. Тактирование осуществляется от внешнего кварца частотой 8МГц. Ниже показана схема контроллера:

Печать

Управление бесколлекторным двигателем постоянного тока(IR2101)

В этом варианте контроллера бесколлекторного двигателя для управления силовыми ключами используется специальный драйвер IR2101, который позволяет избавиться от дорогих и дифицитных P-канальных полевых транзисторов. В исходный код внес некоторые изменения, в частности плавный пуск и изменение вращения вала двигателя. При первом запуске двигатель плавно разгоняется, от уровня ШИМ  START_PWM, до уровня WORK_PWM, задержку можно поменять. При повторном запуске двигатель разгонится уже до уровня, который будет в переменной motor_pwm. Эта переменная меняется при помощи ручки энкодера. Переключатель направления вращения работает только когда двигатель находится в выключенном состоянии.

Печать

Управление бесколлекторным двигателем постоянного тока

Управление бесколлекторным двигателем постоянного токаКак известно в коллекторных двигателях постоянного тока коммутация обмоток в нужный момент времени осуществляется с помощью коллекторного узла(якоря). В беcколлекторных двигателях коммутацией управляет электроника. Для определения момента коммутации контроллер может использовать или датчики положения(Датчики Холла) или обратную ЭДС, генерируемую неподключенными обмотками. Датчики положения наиболее часто используются в низкооборотистых (таговых)двигателях, где пусковой момент существенно варьируется или где требуется его высокое значение, а также где двигатель используется для позиционирования. Управление бесколлекторными двигателями без датчиков используется в тех случаях, когда пусковой момент существенно не изменяется и когда отсутствует необходимость в управлении позиционированием, как, например, в вентиляторах.

Печать

Декодирование сигналов протокола NEC

Продолжаем знакомиться с различными протоколами передачи данных по ИК связи, на этот раз разберем протокол NEC, который в настоящее время стал очень популярным среди радиолюбителей. Информация в этом стандарте кодируется паузой разной длины между импульсами, если длительность паузы меньше это лог. ноль, если больше - лог. единица. Длина периода лог. нуля составляет 1,12 мс, а длина лог. единицы 2,25 мс, длина паузы лог. нуля составляет 560 мкс, а длина паузы лог. единицы 1,675 мс.

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

Печать

Использование асинхронного режима таймера 2. "Точные часы"

Все таймеры контроллера тактируются от основного тактового генератора, исходя из битов конфигурации контроллера это может быть внутренний RC генератор, внешний кварцевый резонатор или сигнал внешнего генератора. Также регистром TCNTn может управлять сигнал идущий со счетного входа Tn. В микроконтроллере Atmega8 есть один таймер, который имеет свой собственный генератор - это Таймер/счетчик 2, т.е. таймер может работать асинхронно от всей остальной периферии. Чтобы задействовать генератор Т2 необходимо подключить к выводам TOSC2 и TOSC1 кварцевый резонатор на рекомендуемую частоту 32768 Гц. Корпус этого кварца необходимо заземлить. Обычно асинхронный режим применяют для постройки часов реального времени, т.к. Т2 будет отдельно работать от основного ядра контроллера это значительно снижает энергопотребление процессора. Обслуживанием асинхронного режима работы Т2 занимается регистр ASSR, ниже показано назначение его битов:

Печать

Подключение семисегментных индикаторов к AVR через транзисторные ключи

При подключении к микроконтроллеру светодиодных семисегментных индикаторов малой мощности использовать управляющие транзисторы нет необходимости, т.к. при использовании динамической индикации ток потребления сегмента уменьшается. Можно обойтись лишь использованием токоограничительных резисторов, а общие аноды/катоды подключать напрямую к контроллеру. Другое дело если используются индикаторы с большим током потребления, например с высотой цифр более 30 мм. Ток потребления таких индикаторов более 30мА, а макс. ток для ножки контроллера 20мА, поэтому такие индикаторы подключают через управляющие транзисторы(ключи). В основном используются биполярные транзисторы для общего анода pnp-структура, для общего катода npn - структура, также можно использовать полевые транзисторы или транзисторные сборки типа ULN2003 и т.п.

Печать

PCF8591 - АЦП и ЦАП в одном

Микросхема PCF8591 обладает следующими возможностями:

- единственный источник питающего напряжения;
- сохранение работоспособности в диапазоне питающих напря­жений от 2,5 до 6 В;
- низкий ток потребления;
- три вывода задания slave-адреса;
- четыре аналоговых входа с возможностью программирования включения (прямое и дифференциальное);
- использование A/D преобразования с последовательным при­ближением и 8-разрядным диапазоном чисел;
- мультиплексированный D/A преобразователь с одним аналого­вым выходом.

Данная микросхема выполнена по технологии КМОП, имеет 4 аналоговых входа и 1 аналоговый выход, управляемые посредством задания данных на шине I2C. Биты А2...А0 в slave-адресе микросхемы задаются внешними сигналами по традиционному способу: подключением соответствующих выводов либо к общему проводу, либо к напряжению питания. Это позволяет использовать до 8 однотипных микросхем. В составе PCF8591 имеется только один A/D преобразователь, но использование методов мультиплексирования расширяет входные возможности микросхемы. Вход АЦП последовательно подключается к 4 сигнальным входам, и происходит считывание информации с них. К сожалению, мультиплексирование нельзя использовать для D/A преобразования, поэтому аналоговый выход только один. Максимальная скорость преобразования данных ограничена максимальным быстродействием шины I2C.

Печать

PCF8574 - расширитель портов ввода/вывода

PCF8574 содержит 8-битный порт ввода-вывода общего назначения, чтение или запись данных осуществляется любым микроконтроллером или другим устройством по шине I2C. Расширитель имеет низкий потребляемый ток и выходы с регистром-защелкой с высокими характеристиками по току для прямой передачи сигнала на светодиоды и т.п. Также в устройстве есть линия прерывания (INT), которая может быть подключена к логике прерывания микроконтроллера. Посылая сигнал прерывания по этой линии, дистанционный ввод - вывод сообщает микроконтроллеру о поступающих на его порты данных, без необходимости поддерживать связь через I2C-шину. Это значит, что PCF8574 может оставаться простым "подчиненным" устройством.

Печать

Использование таймера в режиме захвата. Измерение ширины, скважности и частоты сигнала

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

Задача измерения длины импульса, периода и частоты сводится к следующему:

1. Настраиваем шестнадцатиразрядный таймер/счетчик 1

Рабочая частота микроконтроллера(Atmega8) 8 МГц, используем предделитель на 8 для таймера/счетчика 1, т.е. частота таймера 1 МГц и 1 тик таймера будет равен 1/1000000 Гц = 1 мкс., т.е. за 65536 мкс произойдет одно прерывание таймера. Также используем входной подавитель шума, который активируется записью лог. 1 в бит ICNC1 регистра TCCR1B. Разрешаем прерывание по захвату и переполнению таймера.

Печать

Регулировка яркости семисегментного индикатора

При использовании семисегментных индикаторов часто возникает необходимость в регулировке их яркости свечения. Существуют несколько таких способов. Например, изменять номиналы токоограничительных резисторов, подключенных к сегментам индикатора, но опять нет возможности оперативно регулировать яркость. Также можно подключить к общему катоду(аноду) транзистор, который будет ограничивать ток протекающий через индикаторы. Мы же применим способ благодаря которому можно программно менять яркость - ШИМ регулирование.

Печать

Похожие материалы

Советуем посмотреть...

Авторизация