Получаем аналоговый ШИМ-сигнал с платы расширения Konnect

Predator
5-й разряд
Сообщения: 5932
Зарегистрирован: 30 авг 2014, 19:14
Репутация: 4134
Страна: СССР
 

  »

Получаем аналоговый ШИМ-сигнал с платы расширения Konnect


Предисловие

В некоторых случаях необходимо получить аналоговый ШИМ-сигнал с платы расширения Konnect, для регулируемого управления скоростью оборотов шпинделя на станке с ЧПУ. В приведённой ниже статье рассмотрим, как это можно сделать и что для этого потребуется.

Итак приступим...

Введение

Контроллер KFLOP + плата расширения Konnect + схема простого низкочастотного фильтра, могут быть использованы для получения программируемого аналогового ШИМ-сигнала, этот сигнал может использоваться в качестве основного сигнала управления регулировкой скорости шпинделя, если больше никакие другие способы управления — не доступны. Всё это демонстрирует гибкость выходов платы расширения Konnect, которые оптоизолированы.

Результаты

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

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

Прямоугольный сигнал нужен для тестирования бóльших изменений сигнала. Существенное изменение при < 25 мс.


Допустимая линейность. Потребуется калибровка, если необходима более высокая точность.



Схема

Представляет собой простой двухкаскадный низкочастотный фильтр, который состоит всего из 5-ти компонентов, трех однотипных резисторов и двух однотипных конденсаторов. Значения компонентов не критичны, но резисторы R1 и R2 должны быть одного сопротивления. Один выход с платы расширения Konnect заряжает конденсаторы и один выход разряжает их. Оба выхода не должны включаться одновременно, но даже, если это случится, то никаких повреждений схемы не произойдёт, поскольку резисторы R1 и R2 ограничивают ток.

Используемые резисторы имеют относительно низкоомные значения (100 Ом) и обеспечивают низкое выходное сопротивление, так что любая подключённая нагрузка должна иметь минимальный эффект. При нагрузке в 10 кОм или выше схема должна хорошо работать.

Двойная фильтрация обеспечивает низкие пульсации выходного сигнала, при этом имея сравнительно быструю реакцию на изменения, при использовании конденсаторов довольно маленькой ёмкости и даже с относительно низкими уровнями ШИМ.

Сигналы на выходе платы расширения Konnect могут обновляться каждые 180мкс. Так 180мкс можно считать основным шагом ШИМ. Такой результат был получен при ~10мВ p-p пульсации.



Программное обеспечение

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

Если моделируемое напряжение ниже требуемого выходного напряжения, то выход переключается на высокое напряжение для зарядки конденсатора, в противном случае он переключается на низкое напряжение для разрядки конденсатора.

То же состояние, которое моделируется, также направлено на выходы платы расширения Konnect, для управления реальной схемой. Реальная схема немного сложнее, но модель простая и работает достаточно хорошо. Две RC-цепочки в конечном счете разовьют такое же напряжение, как среднее напряжение ШИМ в устойчивом состоянии, только время отклика будет немного отличаться. Точно так же, несколько отличающиеся значения компонентов будут влиять только на время отклика. Значения в программе были скорректированы для получения наилучшего результата.

Директиве #define могут потребоваться изменения для конкретной схемы и использование битов Ввода/Вывода.

Значение Vout запрограммировано, чтобы создать синусоиду, но более типичней будет передавать значение через глобальную переменную, как Spindle Speed Setting.

Код: Выделить всё

#include "KMotionDef.h" 

// Enables a Konnect on KFLOP JP4 Aux Port then
// PWM's two outputs as push-pull drivers such that
// when low passed filtered with an RC circuit becomes
// a variable analog source.
//
// Configure KFLOP to service Konnect 32 Input 16 output IO board
// Board address is 0,
// 16 Outputs are mapped to Virtual IO 48-63 (VirtualBits)
// 32 Inputs are mapped to Virtual IO 1024-1055 (VirtualBits[0])
//
// Attach Service to Aux0 Port (KFLOP JP4) instead of standard Aux1 Port (KFLOP JP6)
//

void ServiceKonnectPWM(void);

double T,T0 = 0;

float Vout = 0.0; // desired voltage

main() {
 InitAux();
 AddKonnect_Aux0(0,&VirtualBits,VirtualBitsEx);
	for(;;) {
 T=WaitNextTimeSlice();
 ServiceKonnectPWM();
 
 // Fixed
 // Vout = 0.1;
 //Generate a 5 Hz 3V Sine Wave

 Vout = 3.0f*sin(T * TWO_PI * 5.0) + 5.0;
 
 // Generate a Saw Tooth wave
 // Vout = 2 + 6.0* (5.0*T - ((int)(5.0*T)));
 //Generate a 5 Hz Square wave
 //Vout = (5.0*T - ((int)(5.0*T))) > 0.5? 8 : 2;
 }
} 

#define C 0.00029f // 1000uF
#define R 100.0f // 100 ohms
#define Vcc 11.230f // supply voltage
#define HIGH_BIT 62 // This output drives Cap high
#define LOW_BIT 63 // This output drives Cap low 

void ServiceKonnectPWM(void) {

 static int FirstTime = TRUE;
 static float Vc = 0.0f;
 static double T0;
 static int State;
 double T = Time_sec(); 

 if (FirstTime) {
 FirstTime = FALSE;
 T0 = T;
 State = 0;
 }
	else {
 float V,I;
 
 // Compute Voltage applied to Cap
 V = Vcc*State;
 
 // Compute current
 I = (V-Vc)/R;
 
 // Compute new Cap Voltage
 Vc += I/C*(T-T0);
 
 // determine next state
 
 if (Vc > Vout) {
 ClearBit(HIGH_BIT);
 SetBit(LOW_BIT);
 State=0;
 }
 else {
 ClearBit(LOW_BIT);
 SetBit(HIGH_BIT);
 State = 1;
 }
 
 T0 = T; // save time when applied
 }
}

Автор перевода на русский язык: Александр Кадников
Коллеги представляю Вашему вниманию мой вольный перевод статьи KONNECT - PWM to Analog Example с офсайта KFLOP, если у Вас имеются какие-то пожелания по-улучшению перевода, прошу писать в личку.

При перепечатке переведённой статьи убедительная просьба указывать авторство и ссылку на источник!
С Уважением, Александр Кадников [Predator].

BenAflek
2-й разряд
Сообщения: 2655
Зарегистрирован: 29 окт 2014, 08:16
Репутация: 1054
Страна: СССР
 

  »

Александр, статья на пять с плюсом! :excellent:
И информация эта нужная :confirm:

Predator
5-й разряд
Сообщения: 5932
Зарегистрирован: 30 авг 2014, 19:14
Репутация: 4134
Страна: СССР
 

  »

Ну, кто KFlop'пом богат, тому конечно может пригодиться :smoko:

ukr-sasha
Понимающий
Сообщения: 205
Зарегистрирован: 10 окт 2014, 11:08
Репутация: 447
Страна: Украина
 

  »

Классно получилось!

Electric
Ученик
Сообщения: 799
Зарегистрирован: 02 сен 2014, 02:30
Репутация: 498
Страна: СССР
 

  »

Александр, снова на славу потрудился для нашего сообщества, молодец!
Статья отличная и нужная! :excellent:
Я всё больше хочу стать счастливым обладателем Кфлопа :hiding:

Victor-80
Начинающий
Сообщения: 78
Зарегистрирован: 16 мар 2015, 10:56
Репутация: 26
Страна: Россия
 

  »

Александр, отличная статья, хочу сказать - спасибо! Информация нужная, как раз сейчас собираю станок под управлением контролеера Кфлоп и вся информация по настройке очень нужна, тем более на русском языке.

Chuch
Новичок
Сообщения: 49
Зарегистрирован: 15 сен 2014, 17:54
Репутация: 19
Страна: Россия
 

  »

Predator, Давно я не заходил на форум, а тут смотрю столько замечательно- познавательных статей появилось, в пору тебе уже книжку писать аля «Разработка и постройка хоббийного ЧПУ станка для чайников» по всяким ЧПУ штукам, думаю будет пользоваться спросом у хоббийщиков, особенно начального класса :confirm:

Predator
5-й разряд
Сообщения: 5932
Зарегистрирован: 30 авг 2014, 19:14
Репутация: 4134
Страна: СССР
 

  »

Chuch писал(а):в пору тебе уже книжку писать аля «Разработка и постройка хоббийного ЧПУ станка для чайников» по всяким ЧПУ штукам
Думаю, что плохой из меня писатель получится, а если и получится, кто книжку будет издавать, ты?! :unknown:
На это дело средства нужны и наверное не малые...

Chuch писал(а):думаю будет пользоваться спросом у хоббийщиков, особенно начального класса
Возможно и будет, но проблема описанная строкой выше, всё запорет на корню! :nono:

Victor-80
Начинающий
Сообщения: 78
Зарегистрирован: 16 мар 2015, 10:56
Репутация: 26
Страна: Россия
 

  »

Predator писал(а):На это дело средства нужны и наверное не малые...

Безусловно деньги понадобятся. А между тем, статья действительно отличная и главное нужная, побольше бы таких статей о Кфлопе.
И не обязательно книжку издавать, можно здесь на форуме писать.

Predator
5-й разряд
Сообщения: 5932
Зарегистрирован: 30 авг 2014, 19:14
Репутация: 4134
Страна: СССР
 

  »

Victor-80 писал(а):не обязательно книжку издавать, можно здесь на форуме писать
Чем и занимаюсь :happens:
А книжки писать... не знаю даже... я ведь не писатель :hiding:


Вернуться в «KFLOP»