Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Microcontroladores => Tópico iniciado por: verd em 17 de Junho de 2009, 16:54

Título: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 17 de Junho de 2009, 16:54
Boa tarde companheiros, sou novo aqui no forum e vou relatar para vocês o meu problema:

estou desenvolvendo uma mini clp microcontrolada utilizando o microcontrolador AVR Atmega16. Para seguir um padrão industrial de programação estou utilizando o programa gratuito da LDmicro, para fazer a progamação em ladder, e para fazer a gravação no atmega utilizo o ponyprog,

meu problema é o seguinte, estou querendo desenvolver em java um supervisório e um banco de dados para montar um sistema automatizado de controle de produção de baixo custo, sendo:

CLP,Supervisão e armazenamento de informações.

Estou com dificuldade em comunicar o microcontrolador com o Pc via RS-232, a parte de harware está completa, com max232 ligado ao Tx e tudo mais, o meu problema é como fazer o microcontrolador enviar dados, o programa Ldmicro até disponibiliza para você enviar dados atravez da programação em ladder, mas estou encontrando dificuldade no mesmo.

Alguem do forum que entenda bem de AVR tenha alguma outra alternativa pra resolver meu problema de comunicação??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 17 de Junho de 2009, 17:29
Alguem do forum que entenda bem de AVR tenha alguma outra alternativa pra resolver meu problema de comunicação??

Verd, tô achando que seu prob ainda não tá bem definido ... se vc já estabeleceu que vai usar o LDmicro + AVR, quer me parecer que deve agora concentrar-se nas peculiaridades da utilização das funções de comunicação serial do LDmicro, não ?

Do manual:

I support the A/D converter, PWM unit, and UART on those microcontrollers that provide them. That means that you can write ladder logic that reads analog inputs, and that sends and receives characters over serial (for example to a PC, if you add a suitable level-shifter like a MAX232, or to a character LCD). It is possible to send arbitrary strings over serial, as well as the values of integer variables, as ASCII text.

Da ajuda:

> UART (SERIAL) RECEIVE          var
                           --{UART RECV}--

    LDmicro can generate code to use the UART built in to certain
    microcontrollers. On AVRs with multiple UARTs only UART1 (not
    UART0) is supported. Configure the baud rate using Settings -> MCU
    Parameters. Certain baud rates may not be achievable with certain
    crystal frequencies; LDmicro will warn you if this is the case.

    If the input condition to this instruction is false, then nothing
    happens. If the input condition is true then this instruction tries
    to receive a single character from the UART. If no character is read
    then the output condition is false. If a character is read then its
    ASCII value is stored in `var', and the output condition is true
    for a single PLC cycle.


> UART (SERIAL) SEND             var
                           --{UART SEND}--

    LDmicro can generate code to use the UARTs built in to certain
    microcontrollers. On AVRS with multiple UARTs only UART1 (not
    UART0) is supported. Configure the baud rate using Settings -> MCU
    Parameters. Certain baud rates may not be achievable with certain
    crystal frequencies; LDmicro will warn you if this is the case.

    If the input condition to this instruction is false, then nothing
    happens. If the input condition is true then this instruction writes
    a single character to the UART. The ASCII value of the character to
    send must previously have been stored in `var'. The output condition
    of the rung is true if the UART is busy (currently transmitting a
    character), and false otherwise.

    Remember that characters take some time to transmit. Check the output
    condition of this instruction to ensure that the first character has
    been transmitted before trying to send a second character, or use
    a timer to insert a delay between characters. You must only bring
    the input condition true (try to send a character) when the output
    condition is false (UART is not busy).

    Investigate the formatted string instruction (next) before using this
    instruction. The formatted string instruction is much easier to use,
    and it is almost certainly capable of doing what you want.


> FORMATTED STRING OVER UART                var
                                   -{"Pressure: \3\r\n"}-

    LDmicro can generate code to use the UARTs built in to certain
    microcontrollers. On AVRS with multiple UARTs only UART1 (not
    UART0) is supported. Configure the baud rate using Settings -> MCU
    Parameters. Certain baud rates may not be achievable with certain
    crystal frequencies; LDmicro will warn you if this is the case.

    When the rung-in condition for this instruction goes from false to
    true, it starts to send an entire string over the serial port. If
    the string contains the special sequence `\3', then that sequence
    will be replaced with the value of `var', which is automatically
    converted into a string. The variable will be formatted to take
    exactly 3 characters; for example, if `var' is equal to 35, then
    the exact string printed will be `Pressure:  35\r\n' (note the extra
    space). If instead `var' were equal to 1432, then the behaviour would
    be undefined, because 1432 has more than three digits. In that case
    it would be necessary to use `\4' instead.

    If the variable might be negative, then use `\-3d' (or `\-4d'
    etc.) instead. That will cause LDmicro to print a leading space for
    positive numbers, and a leading minus sign for negative numbers.

    If multiple formatted string instructions are energized at once
    (or if one is energized before another completes), or if these
    instructions are intermixed with the UART TX instructions, then the
    behaviour is undefined.

    It is also possible to use this instruction to output a fixed string,
    without interpolating an integer variable's value into the text that
    is sent over serial. In that case simply do not include the special
    escape sequence.

    Use `\\' for a literal backslash. In addition to the escape sequence
    for interpolating an integer variable, the following control
    characters are available:
        * \r   -- carriage return
        * \n   -- newline
        * \f   -- formfeed
        * \b   -- backspace
        * \xAB -- character with ASCII value 0xAB (hex)

    The rung-out condition of this instruction is true while it is
    transmitting data, else false. This instruction consumes a very
    large amount of program memory, so it should be used sparingly. The
    present implementation is not efficient, but a better one will
    require modifications to all the back-ends.



Nada muito sofisticado, mas suficiente para a tarefa, me parece ...

Minha sugestão é que faça um programinha mínimo que envie / receba algo, pra aprender a usar a função, a partir daí é ir aprimorando ...
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 17 de Junho de 2009, 21:56
Não é dificil fazer a comunicação serial com o ATMega16, mas voce deve ter uma metodologia para concluir o seu trabalho:

(1) Aprender como a comunicação serial funciona, enviando alguns bits para um PC. No PC voce pode usar o Hyperterminal para checar se chegou alguma coisa. Não esqueça de usar um CI para converter de TTL (saída do ATMega) para RS232 (porta serial do PC).

(2) Um vez funcionando a comunicação, voce deve criar ou adotar um protocolo de comunicação com o software supervisório. Um protocolo simples de fazer é o MODBUS-RTU. Voce acha na Net incluisve bibliotecas em Java para esse protocolo e vc poderia incluir em seu supervisório. Eu já usei isso há alguns anos comunicando com um AT89S8252 (compatível com 8051) e funciona bem.

P.S. - Também estou orientando (sou professor) um trabalho de um medidor de pressão diferencial usando o ATMega16 que já está "falando" Modbus-RTU.

Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 17 de Junho de 2009, 22:12
Verd,

Segue o link para a biblioteca Modbus em Java, chama-se JAMOD, eu mesmo já usei e funciona bem. Com essa biblioteca é possivel usar as seguintes versões do Modbus: sobre um link RS232/485 (Modbus-RTU) e com Ethernet - TCP/IP (Modbus/TCP).

http://sourceforge.net/projects/jamod
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 18 de Junho de 2009, 10:47
Olá Jorge, então eu estava com dificuldade em fazer o LDmicro enviar pela usart, mas agora eu consegui, não consegui enviar o que eu queria mas ele enviou um monte de caracteres assim: ÀǾ8Ǿ888xŸÀ8, estou usando o programinha da rogercom para testar Rcomserial V1.2. para enviar e receber.

Olá Gil, obrigado! vou estudadar este Modbus-RTU pois não tenho conhecimento algum nesta parte!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 18 de Junho de 2009, 11:06
... não consegui enviar o que eu queria mas ele enviou um monte de caracteres assim: ÀǾ8Ǿ888xŸÀ8 ...

Que função vc utilizou para o teste ? É possível que a configuração não esteja correta ... vc deu uma espiada na tela abaixo ?
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 18 de Junho de 2009, 14:23
Jorge só consegui que ele enviasse depois de utilizar o  UART (SERIAL) SEND char--{UART SEND}-- em série com  FORMATTED STRING OVER UARTvar -{"Pressure: \3\r\n"}- , fiz um teste rapido hoje pela manhã, liguei uma entrada digital em serie com estes dois comandos, ai quando eu dava o pulso ele escrevia no programa da rogercom.

foi um teste bem na tentativa e erro e no lugar da var eu alterei para rodrigo, pensando que talvez ela pudesse escrever meu nome.

na tela de baixo do ldmicro ficava a descrição das entradas e das portas ficando (rodrigo        uart              pino14)

o que posso estar fazendo de errado??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 20 de Junho de 2009, 14:03
Fiz a seguinte linha de comando no Ldmicro e quando simulo no LDmicro ele escreve  em uma janela do programa corretamente o q estou enviando! OK!!


 ||      XC5                 _                                 {ADD  dest  :=}          ||
 4 ||-------] [-----------[OSR_/ ]------------------{cnt+1    }
   ||                                                                                     ||
   ||                                                                                     ||
   ||                                                                                     ||
   ||                                                                                     ||
   ||      XC5                      dest                                                  ||
 5 ||-------] [-----------{"Hello, world:\-5\r\n"}-----     

mas  no microcontrolador ja gravado quando vou testar com o programa da roger com ele não envia!! so envia se eu utilizar o comando 

 ||      XC5                      dest                               char                  ||
 5 ||-------] [-----------{"Hello, world:\-5\r\n"}---{UART SEND}--   

 e mesmo assim envia um monte de letras que parece mapa de caracteres!

Alguem tem alguma opinião no que está errado??!!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 20 de Junho de 2009, 16:36
Rodrigo, no momento não tenho como testar em condições reais, gravando um microcontrolador, mas fiz um teste usando o simulador do LDmicro, veja abaixo.

Pra simplicar as coisas e isolar o prob, não usei uma variável, apenas string, carriage return, new line e um contato que provoca a transmissão a cada vez que é acionado. Aparentemente funfa bem.

Eu utilizaria algo assim, o mais simples possível, até a recepção estar correta, toda a configuração em ordem ...
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 22 de Junho de 2009, 14:04
Então Jorge no Ldmicro o meu programa simula certinho, mas quando gravo no atmega e vou testar no hiperterminal da rogercom ele não escreve, ele escreve apenas se eu colocar:


 ||      XC5                      var                               char                  ||
 5 ||-------] [-----------{"string: \3\r\n"}---{UART SEND}--   

mas mesmo assim ele escreve um monte de caracteres tipo mapa de caracteres!

será algum problema de configuração do hiperterminal?? alguem sabe de algum outro hiperterminal que eu possa enviar caracteres do microcontrolador??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 22 de Junho de 2009, 14:14
Se não conseguir fazer esta comunicação vou ter que utilizar outro programa para fazer a programação do atmega, de preferência que eu possa utilizar o ponyprog pra realizar a gravação!!


o que vocês me indicariam para fazer a programação  do atmega16? visto que não entendo muito de codigos, precisaria pegar alguma estrutura ja pronta para fazer as alterações.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 22 de Junho de 2009, 21:40

Os alunos onde leciono, usam o programador que estou anexando, que é muito simples de montar. Também é usado o programa AVRStudio para desenvolver e testar os programas em assembler. Mas voce pode também usar a linguagem C, mas ai vais precisar de compilador. O programador foi obtido na Net, acho que é facil achar...

Programadores simples, pela porta paralela (Software):
http://www.nongnu.org/avrdude/
http://www.ic-prog.com/

Como terminal virtual, eu uso o Tera Term (free).
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 23 de Junho de 2009, 07:27
será algum problema de configuração do hiperterminal?? alguem sabe de algum outro hiperterminal que eu possa enviar caracteres do microcontrolador??

Acho que pode ser prob de configuração do LDmicro e/ou do microcontrolador e/ou do terminal ...

Eu uso frequentemente o Hyperterminal que vem com o Windows ... há um montão de outros por aí, como o Termite:

http://www.compuphase.com/software_termite.htm
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 24 de Junho de 2009, 08:25
Sinceramente não consigo fazer o LD micro enviar os caracteres que eu desejo enviar!

vou partir para outro programador vou utilizar o avrstudio! posso continuar a utilizar o ponyprog para gravar? tenho o brascom tbm o que vcs indicam??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 24 de Junho de 2009, 10:30
Sinceramente não consigo fazer o LD micro enviar os caracteres ...

Rodrigo, dizer apenas que não consegue não ajuda muito ... ajuda mais se vc descrever as condições do teste, as configurações que já tentou, etc ...

Como vc está fazendo a interface do microcontrolador ao PC ? Tá usando um MAX232 ou coisa que o valha ?

Que tipo de cabo tá usando, um null modem ?

Citar
vou partir para outro programador ...

O que é que o leva a suspeitar do programador ? Vc já testou outras funções pra verificar se a programação tá OK ?
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 24 de Junho de 2009, 14:22
Olá Jorge então vamos analisar a novela! hehe

a inteface controlador Pc estou utilizando um max 232, o cabo estou utilizando um serial DB9, sim um Null modem  esquema igual da rogercom!!

eu consegui enviar dados, mas os dados que vão não são o que eu gostaria de escrever, vão apenas caracteres como como y com tremas, zeros cortados por uma barra, `A's crazeados, escreve apenas isso!! no simulador do LDmicro funciona que é uma beleza, mas quando gravo e vou enviar sai somente caracteres!

a e mais um coisa so envia dados se eu utilizar os dois comando do programa para enviar, a string formatada pela uart em serie com enviar uart como já postei anteriormente, se colocar apenas uma destas duas, no LDmicro simula corretamente mas o microcontrolador não envia nada!!

por iss penso que o problema tá no LDmicro!! já tentei outros hyperterminais e sai a mesma coisa!! será que pode ser algum ruido na placa? pois enviar ela envia só não sai o que eu gostaria de enviar! pensei que poderia ser até hexadecimal mas não é utilizei hyperterminais com hexadecimal e ele só traduz os caracteres que ela está enviando!!!

Seria interessante para mim utilizar o LDmicro pois estou fazendo uma CLP e um supervisório em java para meu TCC, e a linguagem Ladder seria mais uma defesa para meu trabalho! que é a linguagem dos Clp's comerciais!!!

Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 24 de Junho de 2009, 16:19
Como esta gerando o clock?

se estiver usando o oscilador interno, talvez precise ser calibrado.

e veja também se os FUSES estão setados corretamente na hora da gravação.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 24 de Junho de 2009, 16:28
para eliminar possibilidades, coloque em curto o RX_TTL e TX_TTL do MAX232, abra o hyperterminal e veja se esta ecoando (apertando a tecla 'a, terá d aparecer 'a' na janela do hyperterminal).
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 25 de Junho de 2009, 12:58
Olá Claudio! vou fazer os teste do Max como você falou!!

o clock o proprio programa que gera eu acredito! Frequência do cristal 4Mhz; Tempo de cilco 10ms; Baund rate uart 2400bbs está com esta configuração!

Desculpe a ignorância mas não sei o que são fuses? aonde posso encontra-lo?? no LDmicro ou ponyprog??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 26 de Junho de 2009, 01:36
verd,

altera no LDmicro a freq para 8mhz e caso nao funcione para 1mhz.

o atmega16 vem de fabrica com os fuses setados para usar o oscilado interno na freq de 8mhz.
mas existe um fuse q setado divide a freq por 8 e nao tenho certeza como vem de fabrica.
eu utilizo o atmega168 q é uma versao melhorada do m16.

vou procurar nos seus posts o nome do prog q vc esta utilizando para fazer a gravacao e ver como configura os fuses.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 26 de Junho de 2009, 02:00
verd,

Pesquisando no site do ponyprog, cheguei a isso:
http://www.lancos.com/e2p/ponyprog2000.html#s2.2.2 (http://www.lancos.com/e2p/ponyprog2000.html#s2.2.2)

Sobre fuse bits:
http://electrons.psychogenic.com/modules/arms/art/14/AVRFusesHOWTOGuide.php (http://electrons.psychogenic.com/modules/arms/art/14/AVRFusesHOWTOGuide.php)

Para calcular os fuses de maneira facil:
http://www.engbedded.com/fusecalc/ (http://www.engbedded.com/fusecalc/)
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 29 de Junho de 2009, 10:37
Olá Claudio! fiz os testes como você falou:

deixei em curto o RX e Tx que vem do microcontrolador: não escreveu nada!!

alterei o LDmicro para 1Mhz e nada

continua escrevendo um monte de caracteres no hiperterminal!

segue a foto de como estão configurados os fuses no ponyprog
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 29 de Junho de 2009, 18:21
verd,

de acordo com o seu print screen, o uc esta trabalhando com o oscilador interno na freq de 8MHz. configure o LD essa frequencia.

no teste do max232, é obrigado a escrever na tela o q vc digitar, se isso não aconteceu vc esta com problema ai.

teria como postar o esquema de como vc ligou o max232? incluindo os pinos da porta serial q vc utilizou.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 29 de Junho de 2009, 18:26
verd,

esqueci de comentar

se vc colocou em curto o RX e TX sem tirar o m16, refaça o teste sem ele.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 30 de Junho de 2009, 23:44
Claudio segue o squema do max 232 que estou utilizando!

os pinos testei sem o m16 e não escreveu!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 01 de Julho de 2009, 00:57
verd,

no esquema o GND do MAX232 nao esta ligado, o pino 2 esta ligado diretamente ao negativo e os pinos do m16 nao batem.

nesse site aqui http://www.captain.at/electronic-atmega16-serial-port.php (http://www.captain.at/electronic-atmega16-serial-port.php) tem um exemplo completo incluindo esquema e código-fonte. caso precise do hex desse código-fonte para teste, eu compilo para vc.

abraço.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 01 de Julho de 2009, 09:17
os pinos testei sem o m16 e não escreveu!

Experimente inverter os fios dos pinos 2 e 3 do conector DB9 ...
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 01 de Julho de 2009, 22:26

É necessário vc usar uma metodologia correta... os ajustes no hypeterminal e o arranjo de seu cabo serial também são importantes:
-Por isso, não habilitar o controle de fluxo, por hardware (RTS / CTS) ou por software (XON / XOFF)
-No cabo serial, ligar apenas os pinos 2, 3 e 5 no conector DB-9. -Voce pode jumpear os fios ligados aos pinos 2 ao 3 e ver se no hypeterminal os caracteres digitados são "ecoados" na tela. Isso permite vc testar seu cabo e as suas ligações.
-Despois dos testes anteriores, conforme já foi sugerido anteriormente nesse tópico, faça um teste similar (interligando TX e RX no nível TTL), com o sinal passando pelo MAX232, devidamente alimentado (+ e -), os CIs não funcionam de graça .... :).
-Teste também com velocidades diferentes (4800, 9600, 19200 bps) para ser certificar se está tudo OK (sem ruídos, sem erros...).
- Se tudo funcionar, com os dados digitados ecoando na tela sem erros... só depois disso, vc pode se concentrar no LDmicro.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 13 de Julho de 2009, 15:31
Pessoal desculpe a demora para postar os resultados, estou em prova na faculdade, prometo em brevew postar os resultados do projeto
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 20 de Julho de 2009, 17:36
Boa tarde amigos, retomando o projeto, montei outro circuito max232, e deu a mesma coisa, meu programa manda uma palavra de 12 letras, mas no hiperterminal aparecem 12 caracteres, o que pode ser agora? o max232 está ok! acredito que seja o ld micro, qual outro programa posso utilizar, Bascom?WinAvr?Avrcodeware? vou esquecer esta programação por ladder!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 20 de Julho de 2009, 17:41
... montei outro circuito max232, e deu a mesma coisa ...

Rodrigo, vc fez aquele teste de loop back já sugerido ?

Lembra-se ? Conectar TxD e RxD antes do microcontrolador e verificar se funfa ? É algo bem simples, mas mais importante do que parece ...
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 20 de Julho de 2009, 18:39
hum não testei hehe, vou colocar em curto o RX e TX nos pinos que saem do micro(ttl) antes do max232?
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 22 de Julho de 2009, 16:38
jorge fiz os testes colocando em curto o rx e tx do max que vão para o microcontrolador pinos 11 e 12 do max232n da texas, e não escoa nada no hiperterminal,  aperto o a e escreve na parte TX do hiperterminal ai quando envio não vai nada! será que não está escoando??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 22 de Julho de 2009, 16:57
programo o ld micro para escrever "1" na uart atravéz de pulso em entrada digital do microcontrolador, o mais próximo de uma palavra que ele escreve é na velocidade 14400 escrevendo ààà, nas outras velocidades escreve um monte de caracteres!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 22 de Julho de 2009, 22:46
será que não está escoando??

Não Rodrigo, não está ecoando ... até que obtenha o eco corretamente nem adianta tentar outras coisas ...
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 22 de Julho de 2009, 22:51
O que eu faço agora? 
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 23 de Julho de 2009, 00:18
coloca o pino 2 e 3 do db9 em curto e refaz o teste.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 23 de Julho de 2009, 00:27
colocando em curto o RX com o TX, o computador irá receber exatamente o q ele manda independente de algum circuito externo. (desconecte o max232 antes de fazer o teste. pois pode acontecer de a porta não conseguir mudar de nivel e assim nao funcionará o teste)

caso funcione, tente refazer o teste em outro ponto do circuito, por ex. dpois do cabo. (sempre sem carga nenhuma na linha, se tu montou o max232 em soquete, basta retira-lo.)

agora se não funcionar o curto direto no db9 do pc, confirme se vc selecionou a porta corretamente no hyperterminal (com1, com2, com3, ...).

se tu não tiver sucesso colocando em curto o TX e RX direto no PC, ai o buraco ta mais embaixo.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 23 de Julho de 2009, 13:15
colocando em curto o RX com o TX, o computador irá receber exatamente o q ele manda independente de algum circuito externo.

Eu não tenho tanta certeza ... Talvez seja necessário configurar o programa de comunicação para não utilizar controle de fluxo.

Habitualmente uso cabos null modem e nenhum controle de fluxo, por isto não tô lembrado se ocorreria eco ou não, sem a configuração adequada.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 23 de Julho de 2009, 14:29
o que é estranho é que o microcontrolador está enviando e o hiperterminal está recebendo, poderia ser algum problema no max232??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 23 de Julho de 2009, 17:47
o que é estranho é que o microcontrolador está enviando e o hiperterminal está recebendo, poderia ser algum problema no max232??

Rodrigo, o prob pode estar em qualquer lugar, inclusive na configuração. Os testes sugeridos servem justamente para isolar o prob ...

Vc pode começar por verificar se a porta serial está OK e se o programa de comunicação está corretamente configurado simplesmente interconectando os pinos 2 e 3 do conector DB9. Se isto funcionar, instale o cabo e teste da mesma maneira. Se isto funcionar, conecte o cabo e verifique o MAX232, se funcionar, verifique o PIC e o programa ... Percebe ?

Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 24 de Julho de 2009, 11:50
o que é estranho é que o microcontrolador está enviando e o hiperterminal está recebendo, poderia ser algum problema no max232??

Se voce ligou os pinos 2 e 3 e o eco dio que voce digitou apareceu na tela do Hyperterminal o cabo, conectores e a porta serial do PC estão ok.

Para testar o MAX232, voce deve interligar os 2 pinos do MAX232, no nível TTL, que vão para o microcontrolador (com o microcontrolador desconectado do MAX232!!!) e repetir o teste anterior. Se o Hyperterminal ecoar com os sinais TTL, o MAX 232 está bom.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 27 de Julho de 2009, 22:48
Olá minilathe,  eu ligo o pino 2 do max232 com qual pino? estava ligando o rx e o tx que vem do microcontrolador!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 27 de Julho de 2009, 22:50
verd, esquece o circuito q vc montou.

coloca em curto o pino 2 e 3 do db9 q vem do computador e faz o teste do eco.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 27 de Julho de 2009, 23:38
Olá minilathe,  eu ligo o pino 2 do max232 com qual pino? estava ligando o rx e o tx que vem do microcontrolador!

Ôpa...,

Dá uma olhada no circuito anexo, eu simulei no ISIS e montei há um tempo atrás, para um trabalho. Nesse caso, para testar o loop-back, há tres possibilidades:

(1) Direto na porta RS-232 do PC: é só interligar os pinos 2 e 3 (DB-9 ou DB-25) na traseira do PC;

(2) Na ponta do cabo, é só interligar os pinos 2 e 3 do conector;

(3) No MAX-232, é só interligar os pinos 11 e 12, que fique claro(!!!) do meu circuito anexado..., com o PIC desligado. Em seu caso, não sei quais "drivers" do MAX-232 está usando (há 4 no MAX-232), portanto, os pinos do MAX-232 que deve "curtar" depende do seu circuito!! Mas envie um esqueminha de teu circuito...

Nos casos (1) e (2) o loop-back é no nível RS-232 e no caso (3) em TTL.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 27 de Julho de 2009, 23:41

Esqueci o meu circuito com PIC16F628, mas é apenas um exemplo. A ligação do MAX232 em seu circuito pode ser diferente!!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 03 de Agosto de 2009, 08:27
Olá minilathe meu circuito é igual ao seu esquemático, não consigo fazer o eco que vc estava explicando ele não retorna, mas meu circuito com este mesmo esquema de ligação do max envia para o hiperterminal, só não envia o que eu desejo que ele envie!!

estou querendo implementar uma comunicação modbus nesta clp microcontrolada, você até citou no inicio deste tópico, estou lendo sobre o protocolo modbus, se puder me envie algumas discas de como iniciar esta comunicação, vou ter que fazer um gateway para realizar esta conversão rs232-mudbus/rtu?
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 03 de Agosto de 2009, 09:26
Olá minilathe meu circuito é igual ao seu esquemático, não consigo fazer o eco que vc estava explicando ele não retorna, mas meu circuito com este mesmo esquema de ligação do max envia para o hiperterminal, só não envia o que eu desejo que ele envie!!

Seu circuito é igual ao meu né?

E se ligar os pinos 2 e 3 do MX232 não há eco? Então vale a pena dar uma conferida na sua montagem, senão MAX232 deve estar bichado ...

Voce poderia enviar um diagrama esquemático do teu circuito?

estou querendo implementar uma comunicação modbus nesta clp microcontrolada, você até citou no inicio deste tópico, estou lendo sobre o protocolo modbus, se puder me envie algumas discas de como iniciar esta comunicação, vou ter que fazer um gateway para realizar esta conversão rs232-mudbus/rtu?

Não precisa de um gateway, a camada física do protocolo Modbus-RTU é RS-232 ou RS-485, que voce já possui em seu circuito, "voce já tem quase a metade do caminho andado". A camada de enlace do protocolo Modbus-RTU (que inclui: a montagem das mensagens, verificação de erro de CRC, verificação de endereço, ...) voce deverá codificar no programa do teu CLP.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 03 de Agosto de 2009, 13:54
(http://www.rogercom.com.br/PortaSerial/DB9-MAX232.gif)

peguei este esquema da rogercom é igual ao seu!!

sim vou ter que criar o protocolo, para isto vou ter que descartar a programação com o ldmicro! eu entendi o protocolo so não sei como começar com o código, vc saberia aonde eu posso encontrar um  esqueleto de código fonte para eu montar meu protocolo em cima??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 04 de Agosto de 2009, 03:24
(http://www.rogercom.com.br/PortaSerial/DB9-MAX232.gif)

peguei este esquema da rogercom é igual ao seu!!

Ok, se voce interligar os pinos 11 e 12 do MAX232 deveria estar ecoando no Hyperterminal.....

Mas se não ecoar, definitivamente "não rola"....

sim vou ter que criar o protocolo, para isto vou ter que descartar a programação com o ldmicro! eu entendi o protocolo so não sei como começar com o código, vc saberia aonde eu posso encontrar um  esqueleto de código fonte para eu montar meu protocolo em cima??

Não sei se terá de descartar a programação do LDmicro...

Já fiz um Slave Modbus-RTU em assembly, usando um microcontrolador AT89S8252. E estou portando o código para um PIC.

Segue um link de Slave usando C, que pode ser portado para qq microcontrolador.

http://modbusc.sourceforge.net/

Voce pretende usar o Modbus-RTU ou ASCII? Apesar de meio ineficiente, acho que o ASCII é mais fácil para iniciantes, pois usa ASCII e voce poderia até usar o Hyperterminal, ao invés de um simulador de Modbus, para gerar as mensagens.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 07 de Agosto de 2009, 11:13
Matei a charada!! não é problema de hardware é problema de software!!

simulei o circuito no proteus e coloquei pra rodar, coloquei em uma porta virtual o proteus com2 em loop com o hiperterminal com3 e batata escreveu os mesmo caracteres!! o problema é esta porcaria de LDmicro!! LDmicro = lixo!! vou aprender C na unha para fazer alguma coisa descente!!!!
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: minilathe em 07 de Agosto de 2009, 13:27
Matei a charada!! não é problema de hardware é problema de software!!

simulei o circuito no proteus e coloquei pra rodar, coloquei em uma porta virtual o proteus com2 em loop com o hiperterminal com3 e batata escreveu os mesmo caracteres!! o problema é esta porcaria de LDmicro!! LDmicro = lixo!! vou aprender C na unha para fazer alguma coisa descente!!!!

É isso aí..., há muita coisa pronta em C (comunicação serial, rotinas Modbus-RTU Slave e Master, ....), Mas será necessário "juntar os pedaços" e montar o que voce pretende.
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: C N C N o w ! em 07 de Agosto de 2009, 16:34
Matei a charada!! não é problema de hardware é problema de software!!

simulei o circuito no proteus ...

Dá pra mandar o arquivo do Proteus ? Gostaria de dar uma espiada ...
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: verd em 07 de Agosto de 2009, 16:41
sim CNC tem como anexar no forum?? email??
Título: Re: programação Ladder Atmega16, comunicação Rs232??
Enviado por: Cláudio F. em 08 de Agosto de 2009, 01:51
n eh querendo jogar agua na tua cerveja, mas...

se o teste de eco n funcionou, bem provável q vc programando em asm tb n funcionará.

se os msm caracteres estao aparecendo, pode ser erro de configuração.

certifique de que configurou corretamente a velocidade, tamanho de palavra, bits de parada, paridade e controle de fluxo.

Sugiro vc testar um outro programa como terminal, o 232Analyser. Um pouco mais versátil.

E se mesmo assim n fazer funcionar o eco curto-circuitando o pino 2 e 3 do db9 no computador e  pós max232, nem adianta esquentar a cabeça com o microcontrolador.