Ir ao conteúdo

MatheusLPS

Membro Pleno
  • Posts

    2.891
  • Cadastrado em

  • Última visita

Tudo que MatheusLPS postou

  1. Vou tentar retirar umas variáveis.... Mas não garanto que vá funcionar com essa simplificação. DEixa eu fazer aqui. Falou
  2. Compilo sim. Mas o código que tenho não cabe no 16F628A. Para o receptor, você teria outro pic com mais ram? Falou
  3. Antena tanto no emissor quando no receptor viu, esqueci de comentar. Nos meus testes, se não me fallha a memória, até uns 5m o receptor nao precisa de antena, mas o transmissor precisa sim. Falou
  4. Esse seu código é para o CCS? Está tão parecido e ao mesmo tempo muito diferentes. Seguinte, experimenta ligar tanto o transmissor e o recptor sem resistor algum no PIC. OUtra coisa de suma importancia.: Vejo que você liga o pino B2 no transmissor: PORTA.B2 = 1; // Liga Transmisso Experimenta colocar um delay pequeno logo depois desse comando. Uma outra coisa que não vi nas suas imagens são as ANTENAS. Quando fiz o meu, sem antena ele não funciona de jeito nenhum. Pega um fio de cobre comum meio rígido e descasca ele, uns 15~20cm é suficiente. Testa aí. Falou
  5. Segue os esquemas: Meu recptor é esse: Ligo ele parecido com isso, sem esse CI aí debaixo. Apenas ele e o PIC. Nesse caso, pino 2, digital.: Meu transmissor é igual a esse: Ligo ele assim, mais uma vez, sem o CI debaixo, apenas ele e o PIC. A Alimentação é VCC mas coloco em um pino qualquer do PIC para poder ligar e desligar. Falou
  6. Exatamente. Uso a RS232 como comunicação serial. O pino de DATA do transmissor vai no pino TX do PIC e o de alimentação do transmisssor vai no pino C2. O grande lance que descobri é q você envia os dados e logo em seguida você desliga o transmissor. Pode colocar um botao p teste. Aperta um botao ele envia... e pisca um led do outro lado. Falou
  7. Uso o CCS pois comecei a estudar ele. Aí com o tempo aprendi mais sobre ele que sobre os outros. Ta aí: Transmissor: //Código de exemplo para transmissão de IDs por RF //Feito por MatheusLPS - matheuslps@yahoo.com.br #include <18f4550.h> #include <STRING.H> #include <STDIO.H> #include <STDLIB.H> #define WireTX PIN_C6 #define WireRX PIN_C7 #FUSES HS, NOWDT, NOPROTECT,NOLVP,BROWNOUT, PUT #use delay (clock = 12000000) #use rs232(baud=2400, xmit=WireTX, rcv=WireRX, ERRORS, STREAM=Wireless) int8 i; void main() { while(1) { if(!input(PIN_D2)) //Só enviar quando o botão for precionado. { output_high (PIN_C2); //Ligo o transmissor (IMPORTANTE) delay_ms (50); fprintf(Wireless, "%c", 0xBA); // LAM - algo para que o RX's USART "lock onto", algo do tipo, olhe receptor, estoua qui fprintf(Wireless, "%c", 0xBE); // LAM - algo para que o RX's USART "lock onto", algo do tipo, olhe receptor, estoua qui fprintf(Wireless, "%c", 0xFA); // LAM - algo para que o RX's USART "lock onto", algo do tipo, olhe receptor, estoua qui fprintf(Wireless, "%c", 0xCE); // LAM - algo para que o RX's USART "lock onto", algo do tipo, olhe receptor, estoua qui fprintf(Wireless,"Dave "); // Vou enviar isso ao recptor e ele vai procurar por Dave como sendo a senha, se for correta, ele interpreta a variável temp_1 output_low (PIN_C2); //Desligo o tnsmissor (MAIS IMPORTANTE AINDA) output_high (PIN_D1); //Ligo um LED para ver que voi enviado os dados delay_ms(1000); output_low (PIN_D1); //desligo o led delay_ms(1000); } } } Receptor: #include <18f4550.h> #define WireTX PIN_C6 #define WireRX PIN_C7 #FUSES HS, NOWDT, NOPROTECT,NOLVP,BROWNOUT, PUT #use delay(clock = 12000000) #use rs232(baud=2400, xmit=WireTX, rcv=WireRX, ERRORS, STREAM=Wireless) #define RX_BUFFER_SIZE 80 #define TX_BUFFER_SIZE 80 int8 x; int8 temperatura[7]; float temp; int8 rx_wr_index = 0, tx_rd_index = 0, tx_wr_index = 0, tx_counter = 0, received = 0; int8 lock_state = 0, rxd, i, valid_data_count; unsigned int8 rx_buffer[RX_BUFFER_SIZE + 1], tx_buffer[TX_BUFFER_SIZE + 1]; int1 data_avail = FALSE, got_id = FALSE; #int_RDA void RDA_isr(void) { rx_buffer[rx_wr_index] = getc(); rxd = rx_buffer[rx_wr_index]; rx_wr_index++; if (rx_wr_index > RX_BUFFER_SIZE) { rx_wr_index = 0; } // now look for unique ID: "Dave " if (rxd == 'D' && lock_state == 0) { lock_state++; } else if (rxd == 'a' && lock_state == 1) { lock_state++; } else if (rxd == 'v' && lock_state == 2) { lock_state++; } else if (rxd == 'e' && lock_state == 3) { lock_state++; } else if (rxd == ' ' && lock_state == 4) { // got the entire string "Dave ", in that order lock_state = 0; // reset our "combination lock" got_id = TRUE; valid_data_count = 0xff; // get ready to count the number of data bytes - we know we have to expect 5 (Rocks) // also going to reset the buffer write index back to 0, so that I know where my valid data will be rx_wr_index = 0; } else { // we didn't receive "Dave ", so reset the lock back to the beginning lock_state = 0; } if (got_id && ++valid_data_count == 7) { data_avail = TRUE; got_id = FALSE; } } #int_TBE void TBE_isr(void) { if (tx_counter != 0) { putc(tx_buffer[tx_rd_index]); if (++tx_rd_index > TX_BUFFER_SIZE) { tx_rd_index = 0; } tx_counter--; if (tx_counter == 0) { disable_interrupts(INT_TBE); } } } void bputc(int c) { int restart = 0; while (tx_counter > (TX_BUFFER_SIZE - 1)); if (tx_counter == 0) { restart = 1; } tx_buffer[tx_wr_index++] = c; if (tx_wr_index > TX_BUFFER_SIZE) { tx_wr_index = 0; } tx_counter++; if (restart == 1) { enable_interrupts(INT_TBE); } } void main() { enable_interrupts(INT_RDA); enable_interrupts(global); while (TRUE) { restart_wdt(); if (data_avail) { data_avail = FALSE; output_high (PIN_c2); delay_ms (1000); output_low (PIN_C2); } } } NO transmissor, a alimentação do módulo vai no PIC, no pino C2. Falou
  8. Tenho um código pronto e funcionando para o CCS. Serve? Falou
  9. Meu vídeo. Mas não tem temperatura pois quando fiz não botei. Falou
  10. Eu tenho um vídeo aqui do meu projeto. Depois posto aqui. Falou
  11. A foto não está clara. Mas repare q esse capacitor tem UMA LISTRA BRANCA na lateral. Assim: A perna do capacitor q tem essa listra branca vai no -(ground). A perna que NÃO tem listra branca vai no +(+5V). Falou
  12. Isso mesmo, sendo que a faixa branca do diodo fica orientada para o PINO e a outra perna do diodo vai no +5V. Certo, nesse caso, você faz os ajustes pelo PIC e envia para o RTC. O pic nesse caso serve para acessar o RTC pegando os valores do tempo e colocando no LCD. A vantagem de usar o RTC é que se a alimentação do PIC for cortada, você nao precisa configurar o relógio........ Tenho um código e circuito pronto aqui..... Falou
  13. Obrigado colega pit.du, você está correto! Mude o que foi dito acima! Falou
  14. Para usar os numeros antes do .(ponto) mude a seguinte linha: printf(lcd_putc,"\fFreq = %fHz\nDuty = %2.2f%%", freq,d); Para: printf(lcd_putc,"\fFreq = %3.0fHz\nDuty = %3.0f%%", freq,d); Para mudar o clock, mude essa linha: #use delay(clock=12000000) //Meu clock Para: #use delay(clock=4000000) //Meu clock Mas para medir frequencia é bom que o clock seja o mais alto possível!. Para simular, altere o clock do PIC no proteus também. Falou
  15. Então essa máquina de tatuar vai de 0 a 30V? Mas e o PWM vai onde? De toda forma o divisor resistivo para essa configuração é formado por um resistor de 5K e um de 1K em série e você pega o sinal para o pic entre eles. Pode simular aí. Falou
  16. Espere le chegar e veja o nome do fabricante na parte de trás dele. Se não tiver fabricante, pelo menos vai ter vários números...... Aí você pesquisa eles no google e com sorte encontra o datasheet e poderá conferir a pinagem.... Mas costumam ser padronizados...... Falou
  17. Depende do LCD. Nos meus, ele vai no pino 15, para limitar a corrente a 150mA para o back light. Falou
  18. Depende do sinal a ser medido. Se ele tiver uma amplitude de até 5V pode ligar direto. Mais q isso teremos q mudar o circuito.... Falou
  19. O diodo qualquer um serve... qualquer loja você encontra....pode ser um 1N4007 Mas você pode colocar no lugar do diodo um resistor de 5 ohm e 1/4 de W... Falou
  20. Isso é um diodo para fazer os 5V da alimentação para algo em torno de 4.3V para o lcd. Falou
  21. Já postei lá na página 2, post nº 20! Falou
  22. Boa lincon! E nycolas, o colega janascimento está correto! Não compensa montar um gravador, a não ser que você queira montar o seu. Mas EU prefiro comprar pronto, bem menos dor de cabeça. Sem falar que você pode comprar o de 26 reais. Sendo que o seu PC tem que ter conector serial atrás. Falou
  23. Modificado: Circuito: Código: #include <16f628a.h> //O PIC utilizado, obigatório! //ser utilizado de 8 bits também. #FUSES NOWDT //Sem Watch dog, evitando reset #FUSES HS //Crystal de oscilação igual a 4mhz #FUSES PUT //Tempo de início do PIC #FUSES NOPROTECT //Codigo sem proteção de leitura, software livre! #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #use delay(clock=12000000) //Meu clock #include <LCD_flex.C> //Rotina de LCD modo 4 vias. Obrigatório! int1 nuevopulso=0; int16 T_descida_1=0,T_subida_1=0,T_ON=0,T_total=0,T_subida_2=0; float32 AP=0.0,freq, d; int flag; #int_ccp1 void ccp1_int(void) { if (flag == 3) { flag = 0; } if(flag==0) { T_subida_1=CCP_1; setup_ccp1(CCP_CAPTURE_FE); } if (flag == 1) { T_descida_1=CCP_1; setup_ccp1(CCP_CAPTURE_RE); } if(flag==2) { T_subida_2=CCP_1; setup_ccp1(CCP_CAPTURE_RE); if(nuevopulso==0) { nuevopulso=1; } } flag++; } void main() { lcd_init(); setup_timer_1(T1_INTERNAL); setup_ccp1(CCP_CAPTURE_RE); flag = 0; enable_interrupts(int_ccp1); enable_interrupts(global); nuevopulso=0; do { if(nuevopulso==1) { T_ON=(T_descida_1-T_subida_1); T_total = (T_subida_2-T_subida_1); AP = (float)T_total/3.0; freq=(float)1/(AP)*1000000; d = (float)T_ON*100/T_total; printf(lcd_putc,"\fFreq = %fHz\nDuty = %2.2f%%", freq,d); delay_ms (200); nuevopulso=0; } } while (TRUE); } Não deixe de comentar se a dúvida foi resolvida! Falou
  24. Uso o PICpgm. Ele vem junto num CD com o gravador, mas pode buscar no google ai que tem ele. Gratuito. Falou
  25. Se o seu computador tiver saída serial, compra esse: Gravador PIC JDM Extreme Serial Grava 8,14,18,28 e 40 pinos Se ele não tem , compra a versão USB: Gravador Usb Pic Pickit2 Mplab - Icsp/Zif 40 - Analisador Lógico Falou

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!