Ir ao conteúdo
  • Cadastre-se

DL.Fernandes

Membro Pleno
  • Posts

    28
  • Cadastrado em

  • Última visita

Reputação

4
  1. Bom dia pessoal, Estou com uma dúvida que não sei se é ou não leviana: Tenho um campo (o retangulo grande) da qual quero inserir uma imagem dentro dele, conforme a lista suspensa selecionada. Por exemplo: Quando eu selecionar na lista suspensa (L11) "Ceu2", eu quero que no retangulo apareça a imagem do "Ceu2" localizada em Q6. Quando selecionar Ceu, a mesma coisa, porém para a imagem em Q5. Porém, no mesmo retangulo, quando a pessoa selecionar através da célula L3 a 2ª Lista suspensa, com as opções, deixe de aparecer as imagens do céu e apareça o qual ela escolher, seja o "oculos" ou o "trem". Só até ai já seria ótimo. Eu estava tentando fazer isso usando as funções ÍNDICE e CORRESP, porém não atingia o limite de caracteres da função CORRESP kkk Se alguém puder dar uma mão até ai.. depois quero que passado X tempo sem uma nova troca de opção da lista suspensa, a imagem que aparecesse no retangulo fosse a do "tema" contido em Q9 Se ficar confuso volto a explicar, mas a princípio era isso mesmo. Obrigado a quem puder dar uma ajuda
  2. Pessoal, no display estou pedindo para o usuário digitar uma SENHA e conforme ele vai digitando, vai aparecendo os números. Ao pressionar o "botão EQ" coloquei uma mensagem (APAGAR? S = + N = - ) para, caso pressione o botão "+" ele reseta a senha digitada e, caso pressione "-" ele volte para a digitação da senha.. Mas não sei como fazer isso, de pressionar o botão para criar um IF nessas condições.. Segue o trecho que contém as "cases" void actions() //Executa as ações das teclas do controle { switch(results.value) { case tecla1: Serial.println("1"); lcd.print("1"); break; case tecla2: Serial.println("2"); lcd.print("2"); break; case tecla3: Serial.println("3"); lcd.print("3"); break; case tecla4: Serial.println("4"); lcd.print("4"); break; case tecla5: Serial.println("5"); lcd.print("5"); break; case tecla6: Serial.println("6"); lcd.print("6"); break; case tecla7: Serial.println("7"); lcd.print("7"); break; case tecla8: Serial.println("8"); lcd.print("8"); break; case tecla9: Serial.println("9"); lcd.print("9"); break; case tecla0: Serial.println("0"); lcd.print("0"); break; case teclaPLAY: Serial.println("OK"); lcd.print("OK"); break; case teclaEQ: { lcd.setCursor(0, 0); lcd.print("APAGAR? S=+ N=-"); } } //end switch } //end actions *No início do programa eu já usei o #Define relacionando cada hexadecimal para a respectiva "tecla"
  3. Queria medir a corrente de um motor, por isso a preocupação em freq de amostragem Sobre o TC, tem sim um resistor embutido! De 62 ohms, segundo datasheet
  4. Encontrei uma outra tese que um rapaz fez algo próximo do que gostaria de fazer, porém utilizando um Arduino Mega (tenho o UNO) e o sensor invasivo Efeito Hall ACS712-5 (utilizo o SCT013 30A). Ele também utilizou 3 Op-Amp no ccto dele (LM324) e no código do arduino utilizou TIMERs. http://www.eletrica.ufpr.br/dokuwiki/arquivostccs/355.pdf
  5. @aphawk Infelizmente não estou conseguindo entrar no site que foi postado o arquivo (do Roberto Valgolio).. na sua máquina, você consegue acessar o site ? Estou dando uma lida. Realmente, já vi essa relação dos 1920Hz (32x60) e dos 3840Hz (64x60). Tem uma tese que encontrei que uma pessoa fez isso, capturando 128 amostras, com frequencia natural 60hz, e frequencia de amostragem em 1920Hz. Ela fez o que queria fazer, aplicar FFT sobre os dados, porém foi utilizado, além do arduino, um kit da Freescale .. Uma dúvida, tanto no projeto que você postou no Proteus, quanto em outros lugares que vi, o pessoal utiliza 2 Op-Amp (já vi utilizarem o LPV358 - caso acima - ou o LM358) e, em alguns casos, um filtro anti-aliasing (filtro passa baixa). Você acha necessário no meu caso ? Acho que esses Amp serviam como ccto condicionador, nao é ? Pois o SCT 100A gera um sinal de corrente que precisa ser condicionado para tensão para entrar na porta do arduino, é isso ? Opa, vamos pro bar.. só assim para relaxar depois de mexer com eletrônica kkkk
  6. Vou pesquisar sobre. Sabe se tem um nome específico ?
  7. @aphawk Eu tentei montar minha própria shield pro arduino, com um adaptador de cartão SD mas não deu muito certo rs Vou comprar uma a shield SD pro arduino mesmo e tentar Eu não sei, se for possível seria legal, mas não seria obrigatório. Estou tentando salvar os dados no microSD (em txt ou cvs) e inserir no computador pois não sei como transferir em tempo real p o computador rs.. até vi algumas coisas, mas usava programas para isso, ai já não seria interessante Estou usando ela pois acreditava ser obrigatório para utilizar o SCT, mas sim, ela é utilizada para os cálculos da potências e corrente. Não entendi muito bem como fazer da forma da qual você me explicou, mas vou pesquisar um pouco mais. @Isadora Ferraz pelo que entendi, a função emon1.calcIrms(1480) retorna o valor da corrente sim. Os 1480 diz respeito a quantidade de amostras. Em um site vi o pessoal comentando o seguinte: Já a função "micros()" retorna o número de microssegundos passados desde que o Arduino começou a executar o programa. Só utilizei para ter uma noção do tempo.. não preciso dessa parte do programa na "versão final"
  8. @aphawk Obrigado pela ajuda, vamos lá: Com essas informações, eu importo para o excel (ou matlab) e crio o gráfico da onda da corrente. - Puts, não sei quantos bits são minhas amostras. A ideia a princípio era salvar esses dados em um microSD e exportar manualmente. - Sim, farei a FFT em cima do gráfico, porém isso no computador, não no Arduino. - Também não sei em relação à memória.. E está sendo, rs .. afim de evitar isso, no site "https://www.embarcados.com.br/arduino-taxa-de-amostragem-conversor-ad/?fbclid=IwAR2mb9gkXkAq8zZt5SnxAgMSP3EbQKnGfXvgIdh2g-p6qEGwcnyfJs6aS_A" que explica sobre taxa de amostragem do ADC do Arduino UNO, ele comenda como configurar o preescaler do ADC para variar o tempo de leitura, chegando ATÉ 20us , o que dá uma taxa de amostragem de 50.000 amostras/s !! (1/20us) Pensei que se eu fosse por esse caminho e conseguisse uma taxa que me informe perto dos 4k amostras/s, seria bom. Não preciso que todos esses dados sejam mostrados no "Monitor Serial" da IDE, mas que fossem gravados, pelo menos, no microSD rsrs.. isso eu não sei se é possível Fiz umas adaptações do meu código com o do site que configura o preescaler e cheguei nisso: // Variáveia para armazenar os resultados unsigned long tempo_inicio; unsigned long tempo_fim; // constante para configuração do prescaler const unsigned char PS_16 = (1 << ADPS2); const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0); const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1); const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); //Carrega as bibliotecas #include "EmonLib.h" #include <LiquidCrystal.h> EnergyMonitor emon1; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //tensão da rede eletrica int rede = 127.0; //Pino do sensor SCT int pino_sct = 1; void setup() { lcd.begin(16, 2); lcd.clear(); Serial.begin(9600); // configura o preescaler do ADC ADCSRA &= ~PS_128;//limpa configuração da biblioteca do arduino // valores possiveis de prescaler só deixar a linha com prescaler desejado // PS_16, PS_32, PS_64 or PS_128 ADCSRA |= PS_128; // 64 prescaler //ADCSRA |= PS_64; // 64 prescaler //ADCSRA |= PS_32; // 32 prescaler //ADCSRA |= PS_16; // 16 prescaler //Pino, calibracao - Cur Const= Ratio/BurdenR. 1800/62 = 29. emon1.current(pino_sct, 30); //informações iniciais display lcd.setCursor(0,0); lcd.print("Corr.(A):"); } void loop(){ //leitura tempo_inicio = micros(); //marca tempo de inicio de leitura //Calcula a corrente double Irms = emon1.calcIrms(1480); tempo_fim=micros();//le tempo no fim da conversão Serial.print("Tempo leitura: "); Serial.print(tempo_fim - tempo_inicio); Serial.println(" us"); //Mostra o valor da corrente Serial.print("Corrente: "); Serial.print(Irms); // Irms Serial.println(" A"); Serial.println(); lcd.setCursor(10,0); lcd.print(Irms); Serial.println(); } O problema está nos dados mostrados no Monitor Serial: Os valores da corrente estão ok, porém esse "Tempo leitura" que está estranho.. se esse valor estiver correto, estou coletando apenas 3 ~ 4 amostras/s ? (1/269000us)
  9. @Isadora Ferraz Desculpe, eu acho que não entendi. Não é possível fazer isso no Arduino ou tem como no código que me mandou ?
  10. Olá amigos, Estou fazendo um projetinho com Arduino UNO e gostaria de uma ajuda. Através de um sensor de corrente, quero capturar cerca de 4096 amostras em 1s (não preciso de mais informações além do 1º s), mas não estou encontrando onde consigo mexer no tempo de amostragem do Arduino, para que ele me dê essa quantidade de informação. Alguém tem alguma ideia ? Acredito que para isso eu precise definir um Tempo de Amostragem (Ts) em torno de 976us, para conseguir uma Frequência de Amostragem (fs) de 1025 Hz +/- ( fs = 1/ Ts ) . Preciso desses valores para trabalhar com banda de 500 Hz, da qual consigo verificar freqûencias até a 7ª harmônica para uma alimentação de 60 Hz. Δ f = fs/N = 1025/4096 = 0,25 Hz f máx = ( N x Δf ) / 2 = ( 4096 x 0,25 ) / 2 = 512,5 Hz adicionado 18 minutos depois O meu código segue abaixo, muito parecido com o do link citado. A diferença é que retirei os cálculos da Potência. //Carrega as bibliotecas #include "EmonLib.h" #include <LiquidCrystal.h> EnergyMonitor emon1; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //tensão da rede eletrica int rede = 127.0; //Pino do sensor SCT int pino_sct = 1; void setup() { lcd.begin(16, 2); lcd.clear(); Serial.begin(9600); //Pino, calibracao - Cur Const= Ratio/BurdenR. 1800/62 = 29. emon1.current(pino_sct, 30); //informações iniciais display lcd.setCursor(0,0); lcd.print("Corr.(A):"); } void loop() { //Calcula a corrente double Irms = emon1.calcIrms(1480); //Mostra o valor da corrente Serial.print("Corrente: "); Serial.print(Irms); // Irms Serial.println(); lcd.setCursor(10,0); lcd.print(Irms); delay(1000); } Depois que conseguir requisitar todos esses dados, vou pesquisar a respeito de como capturar os valor da amplitude e frequência, pois quero construir a forma de onda da corrente capturada (parecido com um osciloscópio)
  11. @aphawk , bom dia O projeto que quero desenvolver necessariamente precisa da captura de apenas 01 das fases do motor. Pelo que me falou, é possível de se realizar essa captura, e isso já me animou bastante. No momento não tenho conhecimento de como realizar essa captura, mas vou estudar o que me disse para conseguir fazer o que me informou. Já tinha em mente capturar por volta dessa qtdade de interrupções para conseguir informações mais precisas na hora de gerar o gráfico.. obrigado !! adicionado 1 minuto depois No caso, essa seria minha carga, um motor de indução trifásico
  12. Prezados, bom dia ! Através de alguns tutoriais que encontrei, tais como o abaixo, utilizando o SCT-013 consigo medir a corrente de uma carga, como abaixo: Segue tutoriais: https://www.filipeflop.com/blog/medidor-de-energia-eletrica-com-arduino/ O que eu quero, na verdade, é medir a forma de onda de uma carga (no caso, será um motor de indução trifásico). O projeto que quero desenvolver ao todo é, através do SCR e do arduino (tenho o uno), capturar a forma da onda da carga e exportá-la para o MatLab, para lá, trabalhar com ela hehe. Alguém tem alguma ideia se é possível algo do tipo ? Também penso em mostrar a forma de onda capturada em um display, antes de exportá-la para outras plataformas.. Enfim, qualquer sugestão seria muito bem vinda. Obrigado a todos !
  13. @devair1010 eu fiz como sugeriu e não resolveu... testei através do compilador online (https://www.onlinegdb.com/online_c_compiler) e utilizando o CodeBlocks 17.12... Deu certo quando compilou ai ?
  14. Boa noite pessoal, Tenho um problema aqui que parece ser simples mas não estou conseguindo progredir: tenho que criar um programa em C que calcule o custo do ouro em função da espessura da camada de ouro depositada em um anel. Então, por exigências do comando, eu preciso: 1. Entrar com raio interno do anel; 2. Entrar com diâmetro; 3. Entrar com mínimo e máximo de espessura que quero saber o preço (sendo esp. mín= 5 e máx. = 50 µm); 4. Entrar com Intervalo de espessura (em relação ao min e max, quantos valores eu quero saber) e; 4. Entrar com custo da grama do ouro. Também devo criar um arquivo em txt onde apresente o valor da grama do ouro e os valores de espessuras de camadas de ouro depositadas no anel e seus respectivos custos. Para facilitar, foi dado mais algumas informações: Área superficial do anel S é: S= pi² (2r +d)d Peso do revestimento é: P= p * S * t, onde p = peso especifico do ouro (17.7 g/cm³) , S = area superficial e t = a espessura. Para testar, pode-se utilizar os valores: raio: 8 mm diâmetro: 2 mm custo do ouro = 132 p/ grama. Estou anexando o código que escrevi. Eu consigo criar o arquivo .txt e fazer o cálculo, porém como podem ver se testarem, o valor final sempre fica em 0 .. Esse é o problema, o que não está funcionando que eu defino, por exemplo, 3 espessuras e as 3 me retornam 0 ? PS. tentei converter tudo para mm para não ficar trabalhando com várias unidades.. por isso há lugares que os valores estão meio estranhos.. #include<stdio.h> #include<math.h> #include<conio.h> int main(){ FILE *pont_arq; float area, valor, superficie, espessura, quantidade, raio, peso, tmin, tmax, custoouro, diametro, PI; int qtdade, i; printf("\n\nVamos calcular o valor do seu revestimento de ouro!\nDigite o raio interno do anel [mm]: "); scanf("%f", &area); printf("\nDigite o diametro [mm]: "); scanf("%f", &diametro); printf("\nAgora entre com a espessura minima e maxima, respectivamente [mm]: "); scanf("%f %f", &tmin, &tmax); while (tmin < 0.005){ printf("\nEspessura minima nao aceita. Favor digitar novamente um valor de espessura minima >= 0.005 [mm]: "); scanf("%f", &tmin); } while (tmax > 0.05){ printf("\nEspessura maxima nao aceita. Favor digitar novamente um valor de espessura maxima <= 0.05 [mm]: "); scanf("%f", &tmax); } printf("\nEstamos acabando.. Informe agora a quantidade de valor da espessura que deseja visualizar: "); scanf("%d", &qtdade); printf("\nAgora basta informar o valor de custo da grama do ouro por [g/cm3]: "); scanf("%f", &custoouro); peso = 0.0177; PI = 3.14; pont_arq = fopen("dados.txt", "w"); fprintf(pont_arq, "\n\nCusto da grama do ouro: %f", &custoouro); //Aqui entra um comando para repetir as expressões para os diferentes valores de T (espessura). i=0; for(i=1 ; i <= qtdade ; i++){ superficie = ((PI * PI ) * ( ( (2 * raio) + diametro) * diametro)); quantidade = (peso * superficie * espessura); valor = custoouro * (quantidade / 10); fprintf(pont_arq, "\n\nO valor do anel e: %f", &valor); printf("\n\nO valor do anel e: %f", &valor); } return 0; }
  15. Boa tarde galera, Tenho uma dúvida aqui. Preciso escrever um código onde eu digito a data do meu aniversário e o programa me informa, levando em consideração os anos bissextos, quantos dias corridos eu vivi. Porém, é para ele pegar do computador a data atual e não é para o usuário digitá-la. Não estou conseguindo implementar dessa forma, só consigo se eu digitar a data atual hehe.. Alguém pode dar um help ? Segue o código (estou usando o Codeblock): #include<stdio.h> #include<locale.h> int main(){ setlocale(LC_ALL, "portuguese"); int dia,diaatual,mes,mesatual,ano,anoatual,totaldias; int anos, meses, dias, diaano, diames; printf("Digite a data do seu aniversario no formato DD MM AAAA: \n"); scanf("%d %d %d",&dia, &mes, &ano ); printf("Digite a data de hoje no formato DD MM AAAA: \n"); scanf("%d %d %d",&diaatual, &mesatual, &anoatual); //total de anos vividos anos=anoatual-ano; // diaano é os anos multiplicados por 365 dias, mais os dias dos anos bissextos, obtido pelo resto a divisao por 4 diaano=(anos%4)+(anos*365); if(mesatual>mes){ meses=mesatual-mes; } else { meses=mes-mesatual; } // meses convertido em dias diames=meses*30; if(diaatual>dia){ dias=diaatual-dia; } else { dias=dia-diaatual; } totaldias=diames+diaano+dias; printf("voce viveu: %d dias",totaldias); }

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...