MANIPULADOR ELETRÔNICO K8 – PARA OS AMANTES DO CW , ADAPTADO P/ VERSÃO COM PIC12F629 OU 12F675

Para os amantes das transmissões em CW (o famoso ‘código Morse’ em transmissões), o incrível manipulador eletrônico criado pelo Sr. Steven T. Elliott em 1988, conhecido como “K8”, foi um salto tecnológico nestas transmissões, facilitando em muito as comunicações. Recentemente, foi me pedido sobre a possibilidade de mudar o modêlo do microcontrolador, para um mais atual, com memória flash. Veja o resultado….

Veja o esquema abaixo:

Podemos observar que o esquema, que não difere do original, exceto pela necessidade de colocar um pull up no pino 4. Foi dado opção de escolha entre o modelo 12f629 ou 12f675, bastando alterar comentando ou descomentando, no arquivo asm, e , em seguida, recompilar no MPLAB-IDE. Infelizmente, não tenho conhecimento de código ‘morse’,e portanto , ‘penei’ para entender a rotina (excelente, por sinal). Obtive a ajuda do Sr. João, profundo conhecedor da ‘arte’ do CW. O autor original também disponibilizou seu Email para eventuais dúvidas : email: steve@k1el.com or k1el@aol.com. Vários sites também poderão prover ajuda orientadoras para o uso deste dispositivo (aviso que eu não entendo).
Abaixo, segue os arquivos ASM e HEX compilados com o prefixo da estação original do autor. Servem para testes apenas.
Altere o prefixo para corresponder a sua estação no código ASM, na parte:

CALL_0 EQU M_P ;Coloque seu prefixo aqui, letra por letra (use sempre um M_ na frente da letra)
CALL_1 EQU M_Y ; não mais de 7 caracteres
CALL_2 EQU M_2
CALL_3 EQU M_M
CALL_4 EQU M_G
CALL_5 EQU M_END
CALL_6 EQU M_END
CALL_7 EQU M_END

SPEED_DEFAULT EQU WPM_15 ; E escolha aqui a velocidade padrão que usará nas comunicações

Depois recompile com o MPLAB-IDE para obter o arquivo HEX correto para sua estação.

Segue o arquivo ASM, de novembro de 2012 (obs. com bug ao enviar prefixo da estação em modo BEACON):
K8_629_ASM

Segue o arquivo HEX, de novembro de 2012, da compilação do ASM acima:
K8_629_HEX

Pasta zipada com algumas atualizações feitas em 10/03/2018, sendo corrigido o bug ao enviar prefixo da estação em modo BEACON):
K8_MAN_MORSE

Também, manipulador PIK adaptado para 12f675, de novembro de 2012 aqui.

Links técnicos:
datasheet Pic12f629

Curiosidades:
May Day
Titanic
Telegráfo e a previsão do tempo

Até o próximo artigo!!!

110 comments on “MANIPULADOR ELETRÔNICO K8 – PARA OS AMANTES DO CW , ADAPTADO P/ VERSÃO COM PIC12F629 OU 12F675

  1. Olá Cláudio.
    Fiz mais um teste.
    Alimentei os pinos 6 e 7 via resistor de 10k não aconteceu nada.
    Parei de alimentar o pino 4 via resistor.
    Veja bem. Qando aterra o pino 6 ou o pino 7 o oscilador responte certinho. O problema é que quando os pinos 6 e 7 estão livres (desaterrados) ele continua emitindo sons aleatórios.
    Se esses sons aleatórios parassem, estaria tudo certo, entendeu.
    Att,
    João.

    1. Olá João! Por favor, poderia repetir o que vai ligado em cada pino do circuito?
      Pino 2 – ligado a….. para… por meio de …. etc
      pino 3 …..
      pino 4 …
      pino 5…
      pino 6…
      pino 7 …

      Não tendo o esquema fica as vezes confuso saber o que ocorre.
      Cláudio

  2. Caro Cláudio, Boa noite.
    Desculpe.
    Esses resistores de 1K que tenho nos pinos 6 e 7 do circuito não tem nada a ver com “VCC”. Eles estão ligados nos pinos 6 e 7 e as outras extremidades são os contatos para terra.
    O que voce quer é que ligue o VCC aos pinos 6 e 7 via resistor. pode ser de 1K?
    Att,
    joão

  3. Olá Cláudio, boa noite.
    No circuito já tenho os resistores de 1K nos pinos 6 e 7.
    Quanto ao resistor no pino 4 do 12F629 não é necessário? Desculpe responder com outra pergunta.
    Todo circuito que vejo com o PIC12F629 tem esse resistor, por isso estou acrescentando. Mas não está fazendo nenhuma diferença com ou sem.
    Att,
    João.

    1. Olá João!
      Deixa ver se entendi: Ao pressionar a chave para um lado fornece VCC para o pino 6 e para o outro, para o pino 7, certo? E os resistores são para o Gnd (pulldown)? Se for isto, então não necessita estar ativo os pullups internos. Experimente então desliga-los por substituir esta porção no código:
      movlw 0X00 ;setup the options bits liga pullup
      movwf OPTION_REG

      por:
      movlw 0X80 ;setup the options bits desliga pullup
      movwf OPTION_REG

      Cláudio

  4. Olá Cláudio, bom dia.
    Para voce entender melhor o resultado: O pino 6 do PIC ao ser aterrado o oscilador emite uma sequência de sons curtos dit dit dit dit, que são os pontos. Ao aterrar o pino 7 ele emite uma sequência de sons longos dah dah dah dah que são os traços (funcionamento básico). O potenciômetro ligado ao pino 2 aumenta ou diminui a velocidade desses pontos e traços. O que está ocorrendo é que ao ligar o oscilador e sem aterrar o pino 6 ou 7 ele já fica emitindo sons aleatórios. O resistor de 10k no pino 4 não está surtindo nenhum efeito mas o potenciômetro está atuando para maior ou menor velocidade.
    Usei o seu HEX porque não consegui compilar o ASM.
    Att,
    João

    1. Olá João! Por favor, poderia fazer o seguinte teste: colocar 2 resistores de pullup (ao vcc) , sendo um no pino 6 e outro no pino 7. Verifique se normaliza. Quanto ao pino 4, está ligado como e qual a sua função?
      Cláudio

  5. Olá Cláudio. Segue o resultado do teste:
    Ao ligar o circuito com o PIC12F629 e mesmo sem alimentar o pino 4, via resistor de 10K, ele fica emitindo, aleatóriamente, uma sequência de traços _ _ _ _ (dah dah dah dah…). O potenciômetro está atuando, aumentando ou diminuindo a velocidade desses traços.
    Ao ligar o resistor de 10K no pino 4, permaneceu da mesma forma. Ou seja, o resistor não surtiu efeito.
    Os sons dos traços só param se desligar a chave.
    Att,
    João

    1. Olá João!
      Alterar modelo de Pic dá um pouco de canseira. Notei diferença na questão do pullup e modo sleep.
      Tente o seguinte:

      __CONFIG _MCLRE_OFF & _CP_ON & _WDT_OFF & _EXTRC_OSC_NOCLKOUT ;

      LIST P=12f629
      __IDLOCS h’1′
      RADIX hex

      #include

      #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
      #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1

      ;port & flgs mask definitions
      ;these equates must be contiguous from 0
      DITSW equ 0 ;dot switch (on paddle key)
      DAHSW equ DITSW+1 ;dash switch (on paddle key)
      IL equ DAHSW+1 ;iambic dash flag
      IC equ IL+1 ;in character

      AS equ 0x03 ;auto character spacing
      TX equ 0x04 ;keying output

      ;timing calibration values
      DAH equ 0xb5 ;counts for dah
      DIT equ 0x3b ;counts for dit
      REST equ 0x39 ;counts for dit rest
      ASPACE equ 0x76 ;counts for char space

      cblock 0x20 ;antes 07
      flgs
      timer1
      paddle
      endc
      ;======================================================================
      org 0x0
      goto start
      data ‘P’,’I’,’K’,’ ‘,’V’,’1′,’.’,’1′,’4′
      org 0x40 ;leave unprotected memory unused
      ;======================================================================
      start
      clrw ;initialise GPIO
      movwf GPIO
      BANK1
      movlw ~(1<

    2. Olá João! Atente que após o simbolo ‘menor que’ não irá aparecer neste editor, apagando completamente. Recupere esta informação no ‘include’ e nos outros lugares que aparecer. Troque as aspas e os benditos ‘x’. Ajuste para ‘sensitive case’ no mpasmwin.
      Claudio

Comments are closed.

Back To Top