Муфты электромонтажные от производителя Fucon

Простейший ЧМ модулятор позволяет передавать данные через низкоскоростное соединение

Передача цифровых данных через низкоскоростное соединение.

Частотная модуляция (ЧМ) – это вид модуляции сигнала для осуществления передачи цифровых данных через аналоговую линию связи. Частотный модулятор состоит из управляемого цифровым сигналом генератора синусоидального напряжения, частота которого переключается между двумя предопределенными значениями в соответствии с двумя логическими уровнями цифровых данных. Схема на рис.1 генерирует синусоидальное напряжение, непрерывно производя выборку каждого периода синуса. Выходной сигнал IC2A пропорционален токам, протекающим через резисторы R1, R2 и R3. Эти резисторы присоединены совместно к одному из выводов инвертирующего входа IC2A, на котором поддерживается половина напряжения питания схемы VCC/2. Выходы GP0, GP1 и GP2 микроконтроллера IC1 создают последовательность неперекрывающихся импульсов. Когда выход устанавливается в высокое или низкое логическое состояние, другие выводы отключены — т.е. находятся в состоянии высокого импеданса. Когда на выходе установлен высокий уровень, напряжение на подключенном к нему резисторе имеет значение VCC/2. Когда на выходе установлен низкий уровень, напряжение на подключенном к нему резисторе имеет значение –VCC/2.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Простейший ЧМ модулятор позволяет передавать данные через низкоскоростное соединение

Значения резисторов R1, R2 и R3 выбираются таким образом, чтобы импульсы тока имели амплитуду, пропорциональную значениям синусоидального напряжения в точках с фазами 30, 60 и 90°, соответственно. Установка всех выходов IC1 в отключенное состояние соответствует выборке sin(0°), и ток через резистор не течет. Таким образом, начиная с состояния, в котором все выходы IC1 выключены и последовательная периодическая установка выводов GP0, GP1 и GP2 в состояние высокого уровня и, затем, в обратном порядке, установка выводов GP1 и GP0 снова в состояние высокого уровня, приводит к генерации положительной полуволны синусоидального напряжения. Повторение этого процесса, но с установкой выводов в состояние низкого уровня, приводит к генерации отрицательной полуволны синусоидального напряжения.

С помощью этой схемы получается синусоидальная волна, состоящая из 12 отсчетов за период. Кроме того, гармоники этой частоты этого сигнала, f0, содержат высокочастотные компоненты с частотами (12k+1)f0 и (12k−1)f0, k=1,2,3 и т.д. Фильтр низких частот, состоящий из IC2B, R7, R8, C3 и C4 легко отфильтровывает эти нежелательные компоненты малой амплитуды. На Листинге 1 показан пример программы на языке ассемблера, который реализует алгоритм ЧМ, удовлетворяющий стандарту Bell 202. Когда управляющий вход Data In находится в состоянии высокого уровня, выходная частота составляет 1200 Гц; когда управляющий вход находится в состоянии высокого уровня, выходная частота составляет 2200 Гц. Переход от одной частоты к другой осуществляется так, чтобы фаза сигнала оставалась непрерывной. На рис.2 показано соответствие сигнала на выходе ЧМ модулятора (CH1) уровнями напряжения на модулирующем входе (CH2).

Листинг 1

DI 4445

      TITLE "A SIMPLE FSK MODULATOR"

     ; THIS CODE IMPLEMENTS A BELL 202 FSK MODULATOR

      list p=10F200

      include      ; This file is part of Microchip MPLAB IDE

;------------------------- PIC10F2xx CONFIGURATION -----------------------------

 __CONFIG   _MCLRE_OFF & _WDT_OFF & _CP_OFF ; External Reset off

                                              ; Watch Dog timer off

                                              ; Code Protection off  

;-------------------------- VARIABLE DEFINITIONS -------------------------------

 UDATA

PERIOD     RES   1    ; Delay counter (Presets to time between sine samples)

#define DATA_IN GPIO,3 ; GP3 is DATA_IN input pin

OUT_0 EQU b'00001111' ; GP0-GP3 configured as High Impedance       

OUT_1 EQU b'00001110' ; Only GP0 configured as output

OUT_2 EQU b'00001101' ; Only GP1 configured as output

OUT_3 EQU b'00001011' ; Only GP2 configured as output

P1 EQU d'19'   ; Delay constant for 1200 Hz

P2 EQU d'9'    ; Delay constant for 2200 Hz

      ; Start of program

RESET     CODE          0x000

      GOTO init       

SUBS CODE 0X10

CHK_DATA:                    ; Checks Data input pin

          MOVLW P1           ; Load W with 1200 Hz Delay constant

          BTFSS DATA_IN      ; If DATA_IN == High skip next instruction

          MOVLW P2           ; Load W with 2200 Hz Delay constant

          MOVWF PERIOD       ; Load Delay counter;

          NOP                ; NOP'S added here to fine tune FSK frequencies

          NOP

          RETLW 0

init:

      

       MOVWF OSCCAL          ; Load the factory Internal oscillator calibration                         

                             ; value  

       MOVLW OUT_0          ; GP0 - GP3 are OFF (High impedance)

       TRIS   GPIO

       CLRF   GPIO           ; initialize outputs to Low Level

  

; initialize OPTION register

       

       MOVLW b'11000111'    ; Weak Pull-ups disabled ,Wake-up on pin change       

       OPTION                ; disabled   

                  

LOOP:                        ; This loop produces the twelve sine samples

        CALL CHK_DATA        ; Check Data

        DECF PERIOD,F        ; decrement delay counter twice to compensate for

        DECF PERIOD,F        ; the 6 added instruction cycles:

                             ; GOTO LOOP(2 cycles) DECF PERIOD,F DECF PERIOD,F

                             ; MOVLW 0xFF and MOVWF GPIO

        MOVLW OUT_0              

        TRIS GPIO            ; GP0-GP2 are OFF (High impedance)

        MOVLW 0xFF

        MOVWF GPIO               

L1:     DECFSZ PERIOD,F             

        GOTO L1       

        CALL CHK_DATA                 

        MOVLW OUT_1

        TRIS GPIO            ; GP0 is High  

L2:     DECFSZ PERIOD,F

        GOTO L2

        CALL CHK_DATA      

        MOVLW OUT_2

        TRIS GPIO             ; GP1 is High     

L3:     DECFSZ PERIOD,F

        GOTO L3

        CALL CHK_DATA

        MOVLW OUT_3

        TRIS GPIO             ; GP2 is High

L4:     DECFSZ PERIOD,F

        GOTO L4

        CALL CHK_DATA

        MOVLW OUT_2

        TRIS GPIO             ; GP1 is High         

L5:     DECFSZ PERIOD,F

       GOTO L5

        CALL CHK_DATA

        MOVLW OUT_1

        TRIS GPIO             ; GP0 is High       

L6:     DECFSZ PERIOD,F

        GOTO L6

        CALL CHK_DATA

        DECF PERIOD,F    ; decrement delay counter to compensate for the

                         ; following 3 added instruction cycles

                         ; (DECF PERIOD,F MOVLW 0x00 and MOVWF GPIO )

        MOVLW OUT_0     

        TRIS GPIO             ; GP0-GP2 are OFF (High impedance) 

        MOVLW 0x00

        MOVWF GPIO

L7:     DECFSZ PERIOD,F

        GOTO L7

        CALL CHK_DATA

        MOVLW OUT_1

        TRIS GPIO              ; GP0 is Low         

L8:     DECFSZ PERIOD,F

        GOTO L8

        CALL CHK_DATA

        MOVLW OUT_2

        TRIS GPIO              ; GP1 is Low

L9:     DECFSZ PERIOD,F

        GOTO L9

        CALL CHK_DATA

        MOVLW OUT_3

        TRIS GPIO              ; GP2 is Low 

L10:    DECFSZ PERIOD,F

        GOTO L10

        CALL CHK_DATA

        MOVLW OUT_2

        TRIS GPIO              ; GP1 is Low

L11:    DECFSZ PERIOD,F

        GOTO L11

        CALL CHK_DATA

        MOVLW OUT_1

        TRIS GPIO              ; GP0 is Low              

L12:    DECFSZ PERIOD,F

        GOTO L12       

      

        GOTO LOOP

      END

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Я так понял - это типовая реализация ЦАП. PS: в тексте ошибок много.
  • Ни какой это не ЦАП. А один из вариантов передатчика модема. Такая модуляция изжила себя лет 15 назад, из-за низкой скорости передачи данных. Хотя подобный способ позволяет передавать данные по "плохим" линиям связи. Такой-же принцип использовался для хранения информации на магнитной ленте (комп. БК-001 и первые "синклеры")
  • Я имел ввиду, что мы имеем генератор управляемый напряжением, а в свою очередь это напряжение мы получаем от микроконтроллера (цепи с "весовыми" сопротивлениями).
  • Терминологию необходимо использовать соответствующую, что читатели не гадали. Генератор управляемый напрячжением (ГУН) отньти ни ЦАП.