-
Posts
724 -
Cadastrado em
-
Última visita
-
@Renato.88 matou a pau, valeu, muito obrigado mesmo.
-
@Renato.88 a ideia é só fazer funcionar mesmo, depois eu levo lá pra oficina e alinho a frequência no osciloscopio, lógico, com a plaquinha montada e tudo mais adicionado 31 minutos depois @Isadora Ferraz minina você até leu o artigo no site só pra me ajudar, mocionei... Eu entendi que a fórmula é em farads, porém como eu disse antes, o resultado foi muito aquém do esperado ( provavelmente erro meu na matemática elementar ) agora vou tentar me explicar, eu refiz o circuito substituindo o resistor por um de 4,7k e dois capacitores em paralelo, um de 47n e outro de 22n, total de 69n, logo na formula ficou assim: f=1/1453xRtxCt f=1/1453x4700x0,000000069 f=1/0,4712079 f=2,12 Viu só? A frequência no circuito fisico, com esse novo arranjo está na casa de 1khz, sei disso pelo ruído do trafo, porém na fórmula está dando 2hz. Risca o fosque do seu conhecimento na maconha das minhas duvidas e me mostra meu erro na interpretacao da formula pelo amorrrrr...
-
@Isadora Ferraz entendi, eu fiquei em dúvida na fórmula pois colocando desta forma como você sugeriu(10^-6) porém havia dado um valor muito abaixo de 1hz, daí eu coloquei o capacitor como vem na nomenclatura 102(eu coloquei 1000 na formula), deu um valor em 60hz. Pode ter sido vacilo meu no uso da calculadora rsrsrs, vou refazer aqui. Obrigado
-
@Renato.88 segue o esquema... Estou usando o CI IRS2453 com um trafo comum. Esse integrado foi projetado para trabalhar com 50/60hz embora eu percebi por dedução que ele pode gerar frequências bastante altas, o site que peguei as informações foi este: https://makingcircuits.com/blog/h-bridge-inverter-circuit-using-ic/
-
Boa tarde pessoal, estou com uma dúvida para calcular uma frequência cuja fórmula é: 1/1453 x Rt x Ct Rt=resistor (ohms) Ct=capacitor (farads) Preciso de uma frequência de 60hz, com base nesta fórmula cheguei ao resistor com 88R e o capacitor com 1uf(102 ceramico), por se tratar de um inversor de 12v p/127v, a frequência é bem crítica e pior que que não tenho um osciloscopio pra confirmar a frequência, de ouvido mesmo da pra perceber pelo chiado no trafo, que a frequência está na casa de alguns quilohertz, o que faz com que o trafo não consiga fazer a inversão. Usando um trafo bem menor, até que deu inversao, porém com tensão abaixo do esperado no secundário. Qualquer ajuda é bem vinda, obrigado.
-
Transição de telas no Display 16x2
ViniciusKruz respondeu ao tópico de Guilherme Batalha em Microcontroladores
Já tentou fazer assim: if (millis() - previousTime < 3000 ) A única coisa de diferente que percebi foram os parênteses. -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
@alexandro umbert O trecho do seu código que recebe os dados é este: #INT_RDA void Serial_isr(void) { char temp; temp = RCREG; TpS = 5; RxBuf[VetorPos] = temp; VetorPos++; if(VetorPos>1000){ TpS = 0; TemPacote = 1; return; } } Como pode-se observar, ele fica aguardando 1000 caracteres para fechar o pacote, como eu te disse, se eu entendi corretamente, o seu gps manda em torno de 60 caracteres, não entendi esse buffer gigantesco desse jeito. Proponho alterar esse buffer para 100 bytes: #define Buffer_Size 100 char RxBuf[Buffer_Size]; float latitude,longitude,latReal; char latCompleto[11];//memória para receber a latitude char longCompleto[12];//memória para receber a longitude void LimpRxBuf (void){ int16 i; for(i=0;i<100;i++){ RxBuf[i] = 0; } } int recebendoPacote=0; int pacoteCompleto=0; #INT_RDA void Serial_isr(void) { char temp; temp = RCREG; if(temp=="$"){//se for início de pacote... LimpRxBuf();//limpa o buffer recebendoPacote=1;//sinaliza que tem pacote sendo recebido } RxBuf[VetorPos] = temp;//guarda no buffer o caractere recebido VetorPos++; if(temp==0x0D){//Final de pacote <LF> VetorPos=0; pacoteCompleto=1;//recebeu um pacote completo } if(VetorPos>=100){//se for mais de 100 caracterees considera erro e zera o buffer de recepção LimpRxBuf();//limpa o buffer de recepção recebendoPacote=0;//reseta as flags de recepção pacoteCompleto=0; } } Esse código acima seria para a sua recepção do pacote, agora nesse seu laço for() ficaria assim: //formato dos dados recebidos: //$GPGLL,4717.11634,N,00833.91297,E,124923.00,A,A*6E //antes de pegar um novo valor, salva o valor antigo latReal= atof(latCompleto); if(pacoteCompleto == 1){ int virgula=0; for(k=0;k<100;k++){//filtra o pacote recebido pegando a latitude e longitude //como os dados são separados por vírgula, filtramos com base nela if(RxBuf[k]=="," && virgula==0){//pega a latitude int L; for(L=0;L<=11;L++){ latCompleto[L]=RxBuf[k+L+1]; } virgula++; } if(RxBuf[k]=="," && virgula==2){//pega a longitude int L; for(L=0;L<=12;L++){ longCompleto[L]=RxBuf[k+L+1]; } virgula++; } } //agora faz as conversões: latitude = atof(latCompleto); longitude = atof(longCompleto); lcd_gotoxy(1,1); lcd_putc("Lat "); printf(LCD_PUTC,"\f%1.5f ",latitude); lcd_gotoxy(1,2); lcd_putc("Lon "); printf(LCD_PUTC,"\f%1.5f ",longitude); if (latitude < latReal){ output_low(PIN_B0); } else{ output_high(PIN_B0); } O que estou sugerindo aqui é uma mudança significativa no seu código que pode fazer toda a diferença na velocidade do processamento. Na parte acima em que os valores são filtrados, é possível que seja necessário fazer alguns ajustes, até que seja pêgo o campo correto, pela lógica expressa no documento desse seu GPS, as informações chegam da seguinte forma: $GPGLL,4717.11634,N,00833.91297,E,124923.00,A,A*6E e o que eu fiz foi pegar 11 campos após a primeira virgula(latitude) e depois pegar mais 12 campos após a terceira vírgula(longitude), desta forma você pode fazer o mesmo para pegar qualquer informação baseada no separador(virgula). Testa aí e me fala o que deu. Seria interessante se você utilizasse um terminal serial para capturar o pacote enviado pelo gps, dar um print na tela e me mostrar para trabalhar melhor a filtragem. adicionado 6 minutos depois Material muito bom sobre seu GPS: https://www.u-blox.com/sites/default/files/products/documents/u-blox6_ReceiverDescrProtSpec_(GPS.G6-SW-10018)_Public.pdf?utm_source=en%2Fimages%2Fdownloads%2FProduct_Docs%2Fu-blox6_ReceiverDescriptionProtocolSpec_(GPS.G6-SW-10018).pdf -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
@alexandro umbert Tem que ter alguma biblioteca de comunicação, ou no mínimo alguma função que inicializa o GPS e também funções de escrita e leitura nele, por exemplo esta variável: RxBuf[], tem alguma função que povoa ela para que você possa filtrar os dados desejados, onde estão estas funções? De qualquer maneira já consegui alguns materiais referentes ao seu GPS e pelo que pude verificar, o retorno dele é bem simples, algo tipo assim: $GPGLL,4717.11634,N,00833.91297,E,124923.00,A,A*6E Ou seja, 50 caracteres, só aí já daria uma enoooorme enxugada no seu código. Verifica aí e me passa a função que recebe esses dados para que eu possa te ajudar a melhorar a recepção. -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
@alexandro umbert Você tem a biblioteca de comunicação desse GPS? -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
@alexandro umbert Na documentação do seu GPS deve explicar melhor esse retorno, você tem esta documentação? Caso não tenha, informe o nome/modelo pra eu verificar. -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
Na verdade seu problema de lentidão, acredito com quase 100% de certeza que está nesse trecho(já te alertei antes sobre esse problema): for(k=0;k<1000;k++){ Este laço está gigantesco, seu processador vai perder muito tempo percorrendo este trecho, pra resolver isso, tenta mudar esse tamanho, verifica se realmente seu GPS retorna uma variável de 1KB porque é isso o que você está processando, toda vez que seu GPS retorna os valores, seu processador vai precorrer 1KB para localizar as informações. -
tenho que fazer um radar com o pic 18f4520
ViniciusKruz respondeu ao tópico de Victor 222222 em Microcontroladores
@Victor 222222 Q erro da? -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
ViniciusKruz respondeu ao tópico de aphawk em Microcontroladores
Se for o ESP12 ele tem 4MB de memoria onde 1MB é para o programa e os outros 3MB são para dados, o Esp não possui eeprom fisica logo ele usa os 3MB para simular uma. Por exemplo, se definir a eeprom com 512, você terá 512 Bytes de 8 bits cada, ou seja, daria para armazenar uma frase com 512 caracteres. Para gravar/ler as informações nas eepron seja simulada ou fisica, tem que acessar endereço por endereço. Por exemplo, para gravar a palavra "senha" você envia cada caractere para uma posição espacífica da memória tipo assim: eeprom (0,"s") eeprom (1,"e") eeprom (2,"n") eeprom (3,"h") eeprom (4,"a") Depois para ler, pega de um po um: String pass; pas [0]=eeprom (0) pass [1]=eeprom (1) pass [2]=eeprom (2) pass[3]=eeprom (3) pass [4]=eeprom (4) Ignorem a sintaxe! -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
@alexandro umbert Cara, se tá certo não sei, tem que testar. Olhando somente um trecho do código assim fica meio difícil de dizer. Uma coisa é certa, já observei que se você quiser ler a latitude usa assim: latCompleto [j]=RxBuf [k+7+j] e se você quiser pegar a longitude faça assim: longCompleto [j]=RxBuf [k+21+j] Observe esses detalhes q vai dar certo. -
variavel matriz com PIC18f4550
ViniciusKruz respondeu ao tópico de alexandro umbert em Microcontroladores
@alexandro umbert beleza , entendi.
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