Приветствую Вас, Гость
Кодер и Декодер пропорциональной системы управления
Четырех канальная пропорциональная система управления
    Описанный ниже модулятор и демодулятор был разработан в 1997 году, основная причина применения PIC16F84 это наличие его под рукой. Несмотря на низкую функциональность схема до сих пор довольно популярна , видимо из за своей простоты. Тем немение желающим повторить описанную ниже конструкцию рекомендую обратить внимание на RC2005 как на более совершенную

Кодер
С появлением одно кристальных программируемых микроконтроллеров построение схем обработки существенно упростилось. Вот пример построения кодера на PIC16F84 или аналогичном
      В PIC16F84 нет встроенного АЦП, поэтому для определения положения ручки управления используется такой принцип:
      На портах А0-А3 устанавливается высокий уровень , при этом заряжаются конденсаторы С1-С4 затем порт А0 переключается в режим входа конденсатор С1 разряжается до уровня логического 0. Время заряда зависит от положения движка резистора R1. В результате формируется канальный импульс первого канала. Процесс повторяется для 2,3 и 4 го каналов, далее идет синхроимпульс в результате получается что то похожее на широко распространенную PPM кодировку. В приведенных ниже полных текстах программ синхроимпульс имеет фиксированную длинну в то время как стандартный PPM сигнал имеет фиксированную длину пакета, но для большинства PPM приемников это особого значения не имеет

      Вот фрагмент программы для первого канала.

 call ki ;Формирование канального импульса
 bsf Status,RP0
 movlw b'00000001'
 movwf TrisA ; RA0 input
 bcf Status,RP0 ;
 clrf PortA ; RA0..RA4 = 0

detect btfsc PortA,0 ;Если С1 разрядился до лог.0
 ;пропустить команду
 goto detect ; 

 bsf Status,RP0 ;
 movlw b'00000000' ;
 movwf TrisA ; RA output
 bcf Status,RP0 ; RA0..RA3=1
 movlw b'00001111'
 movwf PortA
 

      Резисторы R5-R8 нужны для предотвращения короткого замыкания вывода микроконтроллера на массу в случае если движек потенциометров R1-R4 окажется в крайнем нижнем положении.
      Последовательно с R5-R8 можно установить подстроечные резисторы на 1-3 кОм которые будут выполнять роль триммеров


Декодер

      Предлагаемый далее декодер предназначен для работы с сервоприводами без электроники типа "Новопрп" или самодельными


      В декодере сравнивается длительность импульса пришедшего из приемника с импульсом полученным в результате разрядки RC цепочки. Резисторы R1-R4 механически связаны с моторами М1-М4 соответственно. Если пришедший с приемника импульс короче полученного двигатель крутится в одну сторону если длиннее в другую
      Вот фрагмент программы декодера для первого канала.

 call DetectSI ;Ловим синхроимпульс
;********** 1-й канал **************
 call ki ;Ждем Канального импульса
 movlw 08h ;!!!! Завистит от инерционности серво
 movwf TiMZ ;
 btfsc PortB,1 ;
 goto s1 ;
 btfsc PortB,0 ;
 goto s1
 movlw 1h ;Если двигатель стоит мертвая зона минимальна
 movwf TiMZ ;

s1 bcf PortB,1 ;
 bcf PortB,0 ;
 bsf Status,RP0
 movlw b'00010001'
 movwf TrisA ; RA0,RA4 input
 bcf Status,RP0 ;

 ;определение направления вращения

detect1 
 btfss PortA,0 ;Пропустить если RC первого канала 1
 goto GRB0 ;Вращать в сторону увеличения R
 btfss PortA,4 ;Пропустить если KI первого канала 1
 goto GRB1 ;Вращать в сторону уменьшения R
 goto detect1

GRB0
 call p1 ;Задержка для устранения колебаний
 btfss PortA,4 ;Если КI=1 перейти на включение сервопривода
 goto K1_OK ;Если KI=0 сервопривод в нужной точке
 bsf PortB,0 ;Включить сервопривод в сторону увеличения R
 btfsc PortA,4 ;Дождаться обнуления 
 goto $-1 ;RA4.
 goto EndK1 ;завершение обработки 1го канала
GRB1
 call p1 ;Задержка для устранения колебаний
 btfss PortA,0 ;Если SI=1
 goto K1_OK ;Если SI=0 сервопривод в нужной точке
 bsf PortB,1 ;включить сервопривод в сторону уменьшения R
 goto EndK1 
K1_OK
 bcf PortB,0 ;Выключить сервопривод
 bcf PortB,1
EndK1
 bsf Status,RP0 ;
 movlw b'00010000' ;
 movwf TrisA ; RA output
 bcf Status,RP0 ; RA0..RA3=1
 movlw b'00001111'
 movwf PortA

;********** 2-й канал **************
 
     (схему приемника на MC3361 можно взять здесь здесь)
      Для увеличения входной мощности и избавления от необходимости источника питания со средней точкой сервоусилители можно построить по таким схемам.

Причем в варианте с BA6955, BA6208 резисторы R9-R16 не нужны.
Скачать тексты программ


РадиоЛоцман - Медиа