Ir ao conteúdo
  • Cadastre-se

Kamus Of Aquarius

Membro Pleno
  • Posts

    177
  • Cadastrado em

  • Última visita

Reputação

0
  1. É meu amigo... Visualizei tudo... É muito legal como tudo funciona corretamente no Protheus. Fiz a simulação, só precisei indicar ao microcontrolador onde estava o arquivo de máquina, pois o Protheus estava apontando para seu diretório local. Simulei e vi o funcionamento. Acessei o código fonte e está em linguagem de baixo nível, como infelizmente sou inciante na área de programação, muita, mas muita coisa não entendi como funciona, poucos comandos achei semelhantes ao C, pois os endereçamentos são diferentes. Não que eu nunca tivesse visto isso anteriormente, mas não tenho familiaridade nenhuma. Contudo, agradeço sua partilha e foi ótima a experiência de ver tudo funcionando no Protheus. Forte abraço....
  2. Prezados Senhores, Hoje, depois de muito tempo da dúvida o Ernandes, estou enfrentando o mesmo problema que ele... Preciso apresentar a minha faculdade um protótipo capaz de ler e corrigir o fator de potência de uma carga (140Ω + 300mH), e de detectar a sobrecorrente. Ao longo do tempo que estou trabalhando nesse projeto, tentei pesquisar em várias fontes acadêmicas e tentei encontrar formas de resolver isso na minha própria faculdade, mas infelizmente, a impressão que tenho é que as pessoas, do meu convívio, que tem domínio de programação em C, são extremamente fechadas a compartilhar seus conhecimentos, se for alguém que tenha bons conhecimentos em C, somado a conhecimentos com Potências, essas então... Pois bem, melancolias a parte, vamos ao que interessa: Para isso estou usando um TC (SCT-013 - 20A/1V) e um sensor de tensão GPK-P8. É somente isso que está permitido. Considerando que a Potencia Ativa (W) é dada pela fórmula P=V.I.CosPhi, sem um Wattímetro, não encontro a possibilidade de executar a leitura do CosPhi, encontrando o fator de potência pelo método indireto. Meu domínio do inglês é bastante restrito, o que me impede de consultar com afinco o forum arduino.cc, qual me desmotivou a finalizar esse projeto, mas então resolvi retormar e lembrei desse fórum. Pois bem, minhas maiores dificuldades nesse momento são: - EXECUTAR A LEITURA DO CosPhi, USANDO APENAS UM VOLTIMETRO E UM AMPERIMETRO; Definindo a detecção do CosPhi, acho que consigo montar a formula para detecção dos demais itens. - CRIAR OS MENUS DOS POSSÍVEIS NÍVEIS DE CORRENTE USANDO O Switch Tenho uma grande dificuldade para criar menus e submenus, a maioria deles, consigo criar, mas não consigo fazer com que ele volte ao nível acima. Abaixo, estou colocando meu programa basicamente na íntegra, estou tirando apenas algumas informações pessoais e itens que definem a faculdade. Muitas das soluções que encontrei, são adaptações de configurações que eu li na internet. Se alguém pode me orientar, ficarei muito grato: #include "EmonLib.h" #include <LiquidCrystal.h> LiquidCrystal BEP(52,50,53,51,49,47); EnergyMonitor emon1; int SAC = analogRead(A0); //SAC = Sensor de tensão AC //declaração de variáveis para o relé int releCAP = 46; // Define pino do RELÉ DO CAPACITOR int releGERAL = 48; // Define pino do RELÉ GERAL // Informa o pino do sensor SCT-013 20A/1V int pino_sct = A1; float fundoEscala = 0.030; //****************INICIO DAS FUNCOES DO TECLADO******************** //variávies (posições na memória) char tecla=0; byte case2=1; byte limite=3; //*********** FUNÇÕES DO TECLADO ***************** // ESSE PROGRAMA DISPENSA O USO DE UMA BIBLIOTECA PARA O TECLADO void teclado() /*Função para teclado matricial A linguagem C, permite o uso do número entre apóstrofes para manter o padrão da TABELA ASCII, portanto esse programa não foge a tabela padrão. Se for usada em PIC, deve alterar para o padrão de programação DECIMAL, BINÁRIO ou HEXADECIMAL, conforme tabela ASCII*/ { //INICIO DA FUNÇÃO // definir os pinos de saída como nível alto. digitalWrite(31,HIGH); digitalWrite(33,HIGH); digitalWrite(35,HIGH); digitalWrite(37,HIGH); // Varredura de linha 1 digitalWrite(31,LOW); if (digitalRead(39)==LOW) {tecla='1';return;}// UM if (digitalRead(41)==LOW) {tecla='2';return;}// DOIS if (digitalRead(43)==LOW) {tecla='3';return;}// TRES if (digitalRead(45)==LOW) {tecla='A';return;}// A digitalWrite(31,HIGH); //************************** // Varredura de linha 2 digitalWrite(33,LOW); if (digitalRead(39)==LOW) {tecla='4';return;}// QUATRO if (digitalRead(41)==LOW) {tecla='5';return;}// CINCO if (digitalRead(43)==LOW) {tecla='6';return;}// SEIS if (digitalRead(45)==LOW) {tecla='B';return;}// B digitalWrite(33,HIGH); //************************** // Varredura de linha 3 digitalWrite(35,LOW); if (digitalRead(39)==LOW) {tecla='7';return;}// SETE if (digitalRead(41)==LOW) {tecla='8';return;}// OITO if (digitalRead(43)==LOW) {tecla='9';return;}// NOVE if (digitalRead(45)==LOW) {tecla='C';return;}// C digitalWrite(35,HIGH); //************************** // Varredura de linha 4 digitalWrite(37,LOW); if (digitalRead(39)==LOW) {tecla='*';return;}// * if (digitalRead(41)==LOW) {tecla='0';return;}// ZERO if (digitalRead(43)==LOW) {tecla='#';return;}// # if (digitalRead(45)==LOW) {tecla='D';return;}// D digitalWrite(37,HIGH); //********************* tecla=' '; // Considera que o teclado não está acionado //************************** } // FINAL DA FUNÇÃO //******************FINAL DAS FUNCOES DO TECLADO************************ void setup() { Serial.begin(9600); // Ativa o serial para funcionar a porta analogica pinMode(releCAP, OUTPUT); // Declara pino do rele1 como saída pinMode(releGERAL, OUTPUT); // Declara pino do rele2 como saída pinMode(releCAP, LOW); // Define o início em nível baixo pinMode(releGERAL, LOW); // Define o início em nível baixo BEP.begin(16,2); // Ativa o LCD emon1.current(pino_sct, 24); /* Essa é a calibração da constante da corrente.*/ //*********INICIO DO PROGRAMA QUE ATIVA O TECLADO*************** // definição das linhas como saída pinMode(31,OUTPUT); pinMode(33,OUTPUT); pinMode(35,OUTPUT); pinMode(37,OUTPUT); // definição das colunas como entrada // ativação dos resistores de pull up do Arduíno // exemplo: // pinMode(39,INPUT); considera o pino como entrada // digitalWrite(6,HIGH); informa ao Arduíno que se não estiver nenhuma entrada, considerar com nível alto. pinMode(39,INPUT);digitalWrite(39,HIGH); pinMode(41,INPUT);digitalWrite(41,HIGH); pinMode(43,INPUT);digitalWrite(43,HIGH); pinMode(45,INPUT);digitalWrite(45,HIGH); //*********FINAL DO PROGRAMA QUE ATIVA O TECLADO*************** } void loop() { teclado(); //Carrega o programa do teclado switch(tecla) //variável que trás informações // INICIO DOS MENUS // INICIO DO CASE "0" { // ESSA CHAVE INICIA OS CASES case ' ': //aqui é dois pontos // Esse case lê que o teclado não foi acionado. BEP.setCursor(0,0);BEP.print("B1-AC B3-COR"); BEP.setCursor(0,1);BEP.print("B2-FP B4-S.COR"); break; // INICIO DO CASE "1" case '1': //DEFINE O BOTÃO QUE FOI ACIONADO BEP.clear(); // Limpa LCD while(case2==1) // ele considera o zero { pinMode(releGERAL,HIGH); float Irms = emon1.calcIrms(1480); // Calculo da Corrente RMS int SAC = analogRead(A0); int Pap = (SAC*Irms); // POTENCIA APARENTE (VA) int Pat = (Pap*(Irms*Irms)); // POTENCIA ATIVA (W) Serial.println(SAC); delay(1000); BEP.clear(); BEP.setCursor(0,0); BEP.print("AC"); BEP.setCursor(0,1); BEP.print(SAC); BEP.setCursor(5,0); BEP.print("A"); BEP.setCursor(4,1); BEP.print(Irms); BEP.setCursor(9,0); BEP.print("VA"); BEP.setCursor(9,1); BEP.print(Pap,1); // O Argumento "1" é limitador o limitador de casas decimais exibidas. BEP.setCursor(13,0); BEP.print("'D'"); BEP.setCursor(13,1); teclado(); if(tecla=='D') {case2=0;} }// ESSA CHAVE FECHA O WHILE DO CASE 1 pinMode(releGERAL,LOW); case2=1; BEP.clear(); break; // FINAL DO CASE "1" // INICIO DO CASE "2" case '2': //DEFINE O BOTÃO A SER ACIONADO BEP.clear(); //Limpa LCD while(case2==1) // ele considera o zero { // ESSA CHAVE PERTENCE AO CASE 2 float Irms = emon1.calcIrms(1480); // Calculo da Corrente RMS pinMode(releGERAL,HIGH); //ACIONA O RELÉ PARA LEITURA DA TENSÃO DE REDE if (Irms <= fundoEscala) { //CHAVE DO IF BEP.clear();BEP.setCursor(0,0);BEP.print("SEM LEITURA OU");BEP.setCursor(0,1);BEP.print("INFERIOR A 30mA"); } // CHAVE DO IF else{ int SAC = analogRead(A0); int Pap = (SAC*Irms); // POTENCIA APARENTE (VA) int Pat = (Pap*(Irms*Irms)); // POTENCIA ATIVA (W) Serial.println(SAC); delay(1000); BEP.clear(); // Exibe a corrente (A) BEP.setCursor(0,0); BEP.print("A:"); BEP.print(Irms, 3); // O Argumento "3" é limitador o limitador de casas decimais exibidas. // Exibe o valor da Potência em Volt-Amperes (VA) BEP.setCursor(9,0); BEP.print("W: "); BEP.print((Pat), 1); // O Argumento "1" é limitador o limitador de casas decimais exibidas. //Exibe o Fator de Potência BEP.setCursor(0,1); BEP.print("FP:"); BEP.print((Pat)/(Pap)); // O Argumento "1" é limitador o limitador de casas decimais exibidas. // Retorna BEP.setCursor(8,1); BEP.print(" D-RET"); delay(50); }// ESSA CHAVE FECHA O ELSE teclado(); if(tecla=='D') {case2=0;} } // ESSA CHAVE FECHA O CASE 2 - VERIFICAR SE É NECESSÁRIO pinMode(releGERAL,LOW); // DESLIGA A REDE POR SEGURANÇA case2=1; BEP.clear(); break; // INICIO DO PROGRAMA PARA CORRIGIR A CARGA - CASE 3 case '3': //DEFINE O BOTÃO A SER ACIONADO BEP.clear(); //Limpa LCD pinMode(releGERAL,HIGH); //LIGA O RELE GERAL while(case2==1) // ele considera o zero {// aA CHAVE ABAIXO PERTENCE AO CASE 3 float Irms = emon1.calcIrms(1480); // Calculo da Corrente RMS if (Irms <= fundoEscala) { //CHAVE DO IF BEP.clear();BEP.setCursor(0,0);BEP.print("SEM LEITURA OU");BEP.setCursor(0,1);BEP.print("INFERIOR A 30mA"); } // CHAVE DO IF else { int SAC = analogRead(A0); int Pap = (SAC*Irms); // POTENCIA APARENTE (VA) int Pat = (Pap*(Irms*Irms)); // POTENCIA ATIVA (W) Serial.println(SAC); delay(1000); BEP.clear(); BEP.setCursor(0,0); BEP.print("AC: "); BEP.print(SAC); BEP.print("V"); BEP.setCursor(0,1); BEP.print("I:"); BEP.print(Irms, 3); // O Argumento "3" é limitador o limitador de casas decimais exibidas. BEP.print("A"); BEP.setCursor(8,0); BEP.print("FP:"); BEP.print((Pat)/(Pap), 1); // O Argumento "1" é limitador o limitador de casas decimais exibidas. BEP.setCursor(13,0); BEP.print("'D'"); BEP.setCursor(8,1); BEP.print(" A-COR"); delay(50); } // ESSA CHAVE FECHA O ELSE teclado(); if(tecla=='A') { //NÃO ESTOU ENCONTRANDO A CONDIÇÃO CERTA PARA SAIR DESSA TELA while(case2==1) { pinMode(releCAP,HIGH); int SAC = analogRead(A0); int Pap = (SAC*Irms); // POTENCIA APARENTE (VA) int Pat = (Pap*(Irms*Irms)); // POTENCIA ATIVA (W) Serial.println(SAC); BEP.clear(); BEP.setCursor(0,1); BEP.print("F.P.:"); BEP.print((Pat)/(Pap), 1); BEP.setCursor(0,0); BEP.print("F.P. CORRIGIDO"); delay(2000); BEP.setCursor(0,0); BEP.print("140ohms + 300mH"); delay(2000); if(tecla=='D') {case2=0;} } // FECHA O WHILE } // FECHA O IF DA TECLA A if(tecla=='D') {case2=0;} } // ESSA CHAVE FECHA O CASE 3 pinMode(releGERAL,LOW); // DESLIGA A REDE POR SEGURANÇA pinMode(releCAP,LOW); // DESLIGA O CAPACITOR POR SEGURANÇA case2=1; BEP.clear(); break; // FINAL DO PROGRAMA PARA CORRIGIR O FATOR DE POTENCIA DA CARGA // INICIO DO CASE "4" - SOBRECORRENTE case '4': //DEFINE O BOTÃO QUE FOI ACIONADO BEP.clear(); // Limpa LCD while(case2==1) // ele considera o zero { pinMode(releGERAL,HIGH); float Irms = emon1.calcIrms(1480); // Calculo da Corrente RMS int SAC = analogRead(A0); int Pap = (SAC*Irms); // POTENCIA APARENTE (VA) int Pat = (Pap*(Irms*Irms)); // POTENCIA ATIVA (W) Serial.println(SAC); delay(1000); BEP.clear(); BEP.setCursor(0,0); BEP.print("Corrente: "); BEP.print(Irms); BEP.print("A"); BEP.setCursor(13,1); BEP.print("'D'"); teclado(); // NÃO CONSEGUI DEFINIR OS MENUS /*if(tecla=='A') {pinMode(releCAP,HIGH); BEP.clear(); BEP.setCursor(0,0); BEP.print("F.P. CORRIGIDO"); BEP.setCursor(0,1); BEP.print("CARGA 140Ω+300mH"); delay(1000); }*/ if(tecla=='D') {case2=0;} }// ESSA CHAVE FECHA O WHILE DO CASE 1 pinMode(releGERAL,LOW); case2=1; BEP.clear(); break; // FINAL DO CASE "4" } // ESSA CHAVE FECHA OS CASES } // ESSA CHAVE FECHA O VOID LOOP, FINAL DO PROGRAMA
  3. Prezados, Não consegui fazer o teste nos bornes trazeiros com a bateria do carro de 12V por 45Ah, mas passei hoje na Santa Efigênia e comprei uma bateria nova, uma tal de Planet Bateria, pois não tinha Unipower que é a marca que veio no Nobreak, vou colocar para carregar hoje a noite, espero que tudo funcione, assim que tiver novidades não deixarei de postar...
  4. Boas... Bom pessoal, infelizmente devido a compromissos de trabalho não consegui tempo para comprar uma bateria nova, entretanto, deixei o Nobreak carregando, acreditava eu, hoje pela manhã tive tempo para trabalhar com ele novamente, a primeira coisa que fiz foi colocar uma carga nele e tirar da tomada para ver se comutaria para a bateria, infelimente não foi o que aconteceu, ele não comutou, simplesmente desligou. Então peguei a bateria dele e coloquei um multimetro para ver se havia tensão, e para minha surpressa, o multimetro digital chingling mediu uma tensão de 6.30V quando deveria ter uma tensão superior a 11V, não sei se isso reforça minha tese de problema com a bateria, estou pensando em tirar a bateria do meu carro e colocar nos bornes que ficam atrás do aparelho, colocar carga e remover da tomada para ver se ele comuta, se acontecer acho que terei um prognostico mais acertivo. Do contrário amanhã com certeza estarei pela Sta. Efigênia, e compro uma nova bateria. Só um comentário... Quando criei este post (que tá parecendo um blog), estava usando um multimetro Icel Analógico e a não ser que eu fiz a leitura de forma incorreta eu medi 12V de tensão na bateria. Vou agora colocar uma lâmpada em série com o multimetro chingling para medir a corrente que está sendo fornecida pela bateria. Depois eu posto os resultados...
  5. Boas senhores, Primeiramente Sr. Moderador, espero ter postado em local correto. Senhores, possuo um Nobreak TS Sahra UPS Soho 700VA a cerca de uns 5 ou 6 anos, desse tempo há pelo menos dois anos ele está parado, status: quebrado. Porém agora estou precisando de um nobreak no estilo dele para ligar alguns equipamentos eletrônicos, sei que se estivesse em pleno funcionamento ele antenderia perfeitamente minha necessidade. Portanto gostaria de consertá-lo. Primeiramente como já não lembrava mais o que acontecia com ele, resolvi ligar para ver, notei que o relê está estalando insistentemente, tentei ligar e ele desarma, abri o equipamento e desconectei a bateria, o sintoma permanece, tentei fazer o teste do abajur com uma lâmpada de 100W, num determinado momento do teste, sem a bateria conectada o Nobreak acendeu a lâmpada por uma das tomadas trazeiras, resolvi colocar o multimetro e vi que estava saindo tensão de todas as 6 tomadas e estava tudo estabilizado, desliguei da tomada e reconectei a bateria, desde então ele não libera mais energia nas tomadas trazeiras, fiz uma análise superficial afim de encontrar solda fria, não encontrei. Neste exato momento estou deixando ele carregar (espero), ele está com todos os leds frontais apagados e parou de instalar, se eu tentar ligar ele volta a instalar. Infelizmente sou um pouco leigo quanto ao funcionamento de nobreakds, mas tenho um conhecimento razoável em eletrônica e agradeço toda e qualquer ajuda nesta empreitada. Estou com uma leve desconfiança que o problema dele é a bateria, pensei em adquirir uma nova, achei por +/- R$ 40,00 no ML, acho que amanhã vou passar na Sta. Efigênia e comprar uma bateria. Por hora vou aguardar amanhecer para testar novamente, ver se ele se mantém ligado e sem instalar o relê. Se possível comentem e dividam suas experiências... Muito obrigado....
  6. Olá pessoal, Alguém sabe se com a KODAK EASYSHARE CX6200 é possível transforma-la em Webcam??? Obrigado,

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