Ir ao conteúdo
  • Cadastre-se

jfeliciano

Membro Pleno
  • Posts

    162
  • Cadastrado em

  • Última visita

  1. Ola Paulo, Acho que uma gambiarra assim da pra simular um rotary encoder no ISIS. j-feliciano
  2. Veja este ai. http://www.svetelektro.com/upload/Audio_Spectrum_Analyzer_En___velke_dosky.pdf
  3. Estou achando meio complicado e recompor a variável dados (sensor), na recepção depois de fazer o deslocamento (Shift) dos Bits,por que ela precisa ser exatamente o valor dos sensores.
  4. Mas você levou em consideração que quem define o valar da variável dados (sensor) e os sensores instalado na caixa, e que este valor nuca vai ultrapassar o valor 7(111)? E sempre tenho que zerar as variáveis auxiliares (id & id_rx).
  5. Acho que pra fazer desta forma teria que acrescenta mais um bit ao byte_dados(3-bits) ,veja na tabela abaixo, pois 001 tambem e um dado valido(util). Mas se for usar 4 bits talvez tenha que refazer todo o programa. 'SP = sensor de caida (Proteçao contra falha, falta de agua no poço etc...) 'SC = nivel maximo 'SV = nivel minimo 'sp,sc,sv ' 0 0 0 = 0 ' 0 0 1 = 1 ' 0 1 0 = 2 ' 0 1 1 = 3 ' 1 0 0 = 4 ' 1 0 1 = 5 ' 1 1 0 = 6 ' 1 1 1 = 7 '***************************************************** EDIT. Veja esta outra ideia que tive, acho que ficou melhor que a primeira, o que voce acha ?..... TRANSMISSOR...... Variaveis, Dim sensor As Byte Dim id As Byte inicio: sensor = PORTA And 00000111b id = sensor + 211 SeroutInv serial_tx, 600, sensor, id GOTO inicio ******************************************************* RECEPTOR..... Variaveis, Dim valor As Byte Dim id As Byte 'Teste id Dim id_rx As Byte id = 0 id_rx = 0 valor = 0 '------------------------------------------------------- receber: 'Serial SerinInv serial_rx, 600, valor, id id_rx = valor + 211 SE id_rx <> id >>ERRO 'Se houver falha de comunicaçao Senao >> CONTINUA.....
  6. Caramba!!!!! isto esta cada vez mais confuso para mim, nao estou conseguindo captar este lance da mascara ,Acho o manual do PSI e meio pobre.
  7. rafael.luc, beleza Acho que vou regravar os pics e colocar pra rodar com a nova versão, e ver no que vai dar. Gostaria de testar tambem com a tecnica do Checksum que o Paulo comentou, mas nao sei como implementar , voce sabe como? Obrigado jfeliciano
  8. Acho que ainda não consegui ser claro na explicação. Este código postado já foi modificado e testado apenas na simulação, mostrou funcionar na forma desejada. Gostaria de uma opinião se isto e valido na pratica, ou tem forma melhor de fazer. A modificação foi que acrescentei uma constante "ID" com o valor ( 211) escolhido ao acaso, e enviado serialmente com a variável "sensor" (leitura dos sensores ligado ao PortA .BITs 0,1,2) , e recebido em "ID", e também " sensor" que e guardado na variável "valor" , se o valor de "ID " recebido for (211) o programa executa normalmente, caso contrario o sistema será inibido ou desativado se já estiver em execução, e sinaliza com um LED ligado no PortB.0 "led erro_com" Acredito que desta forma seria muito difícil uma interferência (lixo) conseguir gerar exatamente uma “ID” com o valor (211)-binário -11010011, e se faltar também comunicação (falta de luz no transmissor, por exemplo. etc...) o sistema também se comportaria da mesma forma. Não sei se falei besteira, mas se falei corrijam-me, por favor. Att. jfeliciano
  9. Rafael.luc, como falei nao sou um expert na arte de programar, mas o que sei e que o sistema funcIona ja ha um bom tempo sem problemas ,apenas ocasionalmente ( raramente) sofre com alguma interferencia na parte do RF,o que faz com que o sistema fique louco,por isso gostaria de tornar o sitema mais confiavel. Obs. destaquei com cores diferente a parte importante do codigo para facilitar o entendimento. Att. jfeliciano
  10. Rafael.luc, obrigado pela resposta. Desculpe pelo tamanho do texto, e que ainda estou meio perdido com a nova cara do forum. Nao usei interupcao, apenas criei loops , que fica o tempo todo enviando e recebendo dados, Ate porque so sei mesmo o fijao com arros kakakak....,nao sei como seria sua ideia porque meus dados pode mudar em poucos minutos ou demorar um dia ou mais para mudar. Abs jfeliciano
  11. Paulo, muito obrigado pela resposta. Quem sabe um dia tambem tente brincar com os avrs,mas ainda tenho muito que aprender com os pics, ate ganhei um arduino UNO de um amigo ,mas por enquato esta na gaveta. Nao sei se voce deu uma olhada no meu programa, mas eu fiz uma modificaçao que nao testei na pratica, so simulei, onde estou enviando um byte ( constante ), e na sequencia envio os bytes com os dados ( 3 bits que podem variar de 0 a 7), e na recepçao verifico se a constante recebida e igual outra no receptor, se for diferente inibe o sistema. nao sei se na pratica vai funcionar. Seria posivel voce postar um exemplo pratico do que voce disse?,pois nao entendi muito bem com fazer, ja que meus dados muda de valor frequentemente (0 a 7). Grato. jfeliciano
  12. Ola a todos, Bem pessoal conheci, e ainda conhecendo o mundo da programação de micro controladores pic usando pic Simulator (PSI) através deste fórum e lendo a apostila do prof. Paulo “pena que ele abandonou os PICs”,mas infelizmente não evolui muito neste período. Mas ainda nao desisti, desenvolvi um projeto para automatizar uma bomba d água que abastece o sistema de caixas aqui de casa, acredito que para a maioria aqui seja algo simples, mas para mim foi uma evolução e tanto. Vou postar o código e tentar descrever o projeto, e o motivo deste post. O sistema e basicamente uma comunicação serial via módulos de RF 433MHZ entre dois pic, sendo que o Transmissor faz a leitura de três sensores "duas bóias magnéticas e um eletrodo”, instaladas na caixa d água, e envia para o receptor que se encarrega de fazer o trabalho pesado, tenho o sistema instalado e funcionando já a um bom tempo, mas às vezes acontecem algumas interferências (Rf) que faz com que o sistema funcione de forma errada. Modifiquei o código para tentar melhorar isto, ainda não testei na pratica, na simulação (Proteus) funcionou ok, a modificação foi criar uma constante que chamei de "ID" e enviar junto com os dados (variáveis "sensor "), e comparar com uma constante “ID" no receptor, se as constantes forem diferentes entre-se o sistema e bloqueado ou desativado. Gostaria da opinião e ajuda de vocês para saber se e isto mesmo? Ou tem uma melhor forma de resolver isto, para tornar o sistema mais confiável. Obs. Se alguém se interessar só pedir que posto os desenhos. Codigo transmissor. 'TRANSMISSOR RF433Mhz "SERIAL v1.0" 'PIC16F628A CLOCK INTERNO 4 MHZ Define CONF_WORD = 0x3f38 AllDigital Define CLOCK_FREQUENCY = 4 TRISA = 00000111b 'Bits 0 ao 2 entada p/ sensores TRISB = 00000000b 'Leds_Bits 5,6,7 PORTA = 0 PORTB = 0 Define SEROUT_DELAYUS = 2000 CMCON = 0x07 OPTION_REG.7 = 0x00 Dim sensor As Byte Dim n As Byte Const id = 211 Symbol serial_tx = PORTB.2 'Saida p/ modulo RF 433MHZ "Serial" Symbol led_sp = PORTB.5 Symbol led_sc = PORTB.6 Symbol led_sv = PORTB.7 '----------------------------------------------------- '******** Inicializaçao ********* For n = 0 To 4 Toggle led_sp Toggle led_sc Toggle led_sv WaitMs 300 Next n '------------------------------------------------------ '********* Inicio Programa ******** inicio: 'Transmissao sensor = PORTA And 00000111b WaitMs 50 SeroutInv serial_tx, 600, id, sensor led_sp = Not PORTA.0 'SP led_sc = Not PORTA.1 'SC led_sv = Not PORTA.2 'SV Goto inicio Codigo receptor. 'RECPTOR RF433Mhz "SERIAL v1.0" 'PIC16f628a oscilador interno 4MHZ Define CONF_WORD = 0x3f38 Define CLOCK_FREQUENCY = 4 AllDigital CMCON = 0x07 OPTION_REG.7 = 0x00 TRISB = 00000010b PORTB = 0 Symbol serial_rx = PORTB.1 'Entrada p/receptor Modulo RF "Serial" Symbol buzzer = PORTB.6 'Saida para alarme "Buzer" Symbol rele = PORTB.7 'Saida para rele "Bomba d'agua" Symbol led_sp = PORTB.3 'Leds sensores Symbol led_sc = PORTB.4 '"""" """""""" Symbol led_sv = PORTB.5 '"""" """""""" Symbol erro_com = PORTB.0 'Led erro de comunicaçao Dim n As Byte Dim valor As Byte Dim flag_sv As Bit Dim id As Byte 'Teste id id = 0 valor = 0 flag_sv = 0 erro_com = 0 'Teste id '*************************************************** '"So pra facilitar a vida" 'Binario __ decimal 'sensors<=>valor 'SP = sensor de caida (Proteçao contra falha, falta de agua no poço etc...) 'SC = nivel maximo 'SV = nivel minimo 'sp,sc,sv '0 0 0 = 0 '0 0 1 = 1 '0 1 0 = 2 '0 1 1 = 3 '1 0 0 = 4 '1 0 1 = 5 '1 1 0 = 6 '1 1 1 = 7 '***************************************************** For n = 0 To 3 'Pisca "leds_Inicializaço" Toggle led_sp Toggle led_sc Toggle led_sv WaitMs 300 Next n Goto inicio '***************************************************** End '-------------------------------------------------------------------------- '**********INICIO_PROGRAMA ********** inicio:'Recepcao Gosub receber 'Receber leirura da serial While valor = 4 Goto inicio Wend Gosub sensores 'Verifica sensores Goto inicio '-------------------------------------------------------------------------- sensores: If valor = 7 And flag_sv = 0 Then Gosub liga If valor = 7 And flag_sv = 1 Then Gosub alarme If valor = 6 And flag_sv = 1 Then Gosub alarme If valor = 0 Then Gosub desliga Return '------------------------------------------------------------- liga: rele = 1 'Liga rele "Motor Bomba" flag_sv = 1 WaitMs 5000 'Tempo ate começar a cair agua na caixa(+-45 SEGUNDOS) Gosub receber If valor = 6 Then flag_sv = 0 Else flag_sv = 1 Endif Return '---------------------------------------------------------------- desliga: buzzer = 0 'Desativa alarme rele = 0 'Desliga rele flag_sv = 0 'Zera flag_sv Return '---------------------------------------------------------------- alarme: rele = 0 'Desativa rele (bomba d`agua) Toggle buzzer 'Toca_alarme sonoro Toggle led_sp 'Pisca Leds Toggle led_sc '- " " Toggle led_sv '- " " WaitMs 400 Goto alarme '----------------------------------------------------------------- receber: 'Serial SerinInv serial_rx, 600, id, valor '*******Teste id led_sv = Not valor.0 'led = inverso do bit_0 da variavel valor led_sc = Not valor.1 'led = inverso do bit_1 da variavel valor led_sp = Not valor.2 'led = inverso do bit_2 da variavel valor If id <> 211 Then 'Se houver falha de comunicaçao buzzer = 0 'Desativa alarme rele = 0 'Desliga rele flag_sv = 0 'Zera flag_sv '------------------------------------------------------------------ For n = 0 To 5 Toggle erro_com 'Pisca Led erro_com WaitMs 100 Next n '------------------------------------------------------------------ WaitMs 200 Goto receber Else Endif Return ABS. jfeliciano
  13. Sim, voce pode manter esta conexao, apenas observando o fio da chave HH, tem que ser o fio para 220v do transformador, ou se voce preferir pode tambem configurar o FAN para 110 volts e ligar na chave HH no lado para 110volt , o sesultado final sera o mesmo. Boa sorte Jfeliciano
  14. Por concidencia foi exatamente este o ultimo servico que executei hoje no final do expediente,a troca de um FAN de um ampli. igual a este.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...