Ir ao conteúdo

Marcio Pizano

Membro Pleno
  • Posts

    33
  • Cadastrado em

  • Última visita

Tudo que Marcio Pizano postou

  1. Perdão, a conta não ficou bem explicada. Seria então: 5v - 3,6v = 1,4v R = 1,4v / 0,004A (4ma) R = 350R Valores comercial apriximados: 330 e 390.
  2. Olá! Desculpe digitar nesse tópico, faz parte da minha dúvida. Estou colocando uma bateria NICD 3,6V 60mah no meu projeto, porém, ela vai ficar recebendo carga constante após a retificação, mesmo depois de recarregada, o que pode acontecer com ela, isto que estou fazendo é totalmente inviável ou como deveria proceder após seu carregamento? Muito obrigado!
  3. Olá! Como estão? Estive lendo o Datasheet do regulador de tensão LM7805 e vi que ele tem uma saída de 1A, no Load Regulation mostra 1,5A, em Dropout Voltage 1A. Preciso usar um transformador de 1,5A 15V, será que é correto eu usar este regulador de tensão, isso não causaria um aquecimento maior do que o normal? Vou usar diodos 1n5408. Obrigado!
  4. Você é linda Isadora, mesmo com o rosto do Mr. Bean kkk Obrigado!
  5. Você acha que irei precisar de uma fonte simétrica para o processo da eletrólise?
  6. Muito obrigado!
  7. Obrigado por responder Isadora! Tinha mesmo esquecido da água rs. A água não é pura e as barras estão no máximo 4mm de distância uma da outra e eu realmente pretendo conseguir a eletrólise. Ok, pelo que entendi com sua resposta e a da Isadora, é que a resistência do cobre é quase despresível (nesta aplicação) e eu não deveria me preocupar tanto com estes calculos. Então somente para fechar o post e eu entender. Se eu não considerar nehuma resistência nem mesmo as perdas nos diodos, colocando por exemplo 10V terei 500ma nas barras? Levando em consideração 24V 1A do trafo. Muito obrigado mais uma vez. Abraço!
  8. Muito obrigado pela resposta meu amigo. Estou pensando em usar o TIP41 justamente pela praticidade e também por ter visto no DataSheet que ele é superior ao que estou querendo, como mencionou o colega Albert, mas vou estudar o Mosfet como sugerido por Isadora. Mesmo que eu use o Tip ou o Mosfet, ainda ficaria com dúvidas sobre a corrente, sou totalmente confuso em relação a isso. Fiz um desenho meio tosco abaixo para tentar ilustrar minha confusão, não usei a variação do potenciômetro e simplesmente joguei a tensão direto nas barras de cobre simplesmente para tentar entender a questão da corrente neste caso. Por favor, veja se meu raciocínio está correto. Se estiver, então como preciso variar até 1A nas barras, vou ter que repensar algumas coisas como por exemplo a potência do transformador eu acho. Muito obrigado mais uma vez. Abraço!
  9. As informações que encontrei no datasheet são valores diferentes para o NPN TIP41C, é o que teno aqui. Sei como gerar um PWM com 555 mas, nesta aplicação não entendi como isso seria porque só consigo imaginar uma tensão contínua. Obrigado por responder!
  10. Obrigado por responder! Vou alimentar duas barras de cobre que ficaram submersas na água para fazer a Ionização da mesma. adicionado 0 minutos depois Vou pesquisar mais sobre o Mosfet. Obrigado!
  11. Olá! Gostaria de agradecer primeiramente pela ajuda e que tenho tido aqui no forum e pela paciência, não sou prático em eletrônica. Gostaria de colocar 24v com o máximo de 1A em barras de cobre. Após retificar a tensão, o que seria correto, colar a tensão direto nas barras ou passa-las por um Transistor IRF640N? A corrente de 1A não é uma constante, posso ter que aumenta-la para 2A posteriormente. Preciso variar esta corrente com um potenciômetro. Uma outra opção que encontrei mas não sei se seria o correto seria usar um TIP41, isso procede? Muito obrigado!
  12. High-current sink/source 25 mA/25 mA Porém, isso só esta acontencendo quando ligo a bomba em 220V testei em 127V por 10 minutos e não deu problema. Para acionar o relé da bomba, uso um transistor BC337 com um resistor 8.2k. Obrigado!
  13. Estou usando o 7805
  14. Não tem erro no circuito, esse é o terceiro que faço, só troquei o trafo mesmo, os dois primeiros eram de 12v 1A agora 24v 2A. Passa nos diodos para 2A que vai para o capacitor de 2200uf e então para um regulador de tensão 7818. Putz. Acho que a alimentação está alta mesmo. Vou tentar o circuito da bateria. Obrigado! adicionado 3 minutos depois Obrigado por responder. A tensão que chega no pic esta ok e também aciono os relés da forma que informou. Veja o esquema, postei. Não vejo outra alternativa para este aquecimento senão o trafo mesmo que foi trocado de 12v 1A para 24v 2A kkkk, acho que foi isso. Obrigado!
  15. Olá! Preciso de duas informações por favor. Em meu circuito, a última que fiz, o pic esquentou muito e ficou reiniciando, já troquei alguns componentes e nada, continua esquentando, coloquei um dissipador com pasta térmica e melhorou bastante, acredito que foi na troca do trafo, mas ok. O que gostaria desaber é de uma boa prática para evitar esses aquecimentos. A outra coisa que gostaria de fazer na placa, é que quanto faltasse energia, a tensão do pic fosse alimentado por uma bateria, teria como fazer essa troca automático com o reconhecimento da perda da tensão? Obrigado!
  16. Entendi, vou fazer o teste do botão sim. Será que se eu enviar uma frequência do 555 posso recupera-lo do outro lado direto no pino do PIC e determinar com nível lógico alto? Pensei que se SIM, talvez deveria usar um capacitor antes, algo do tipo. Obrigado!
  17. Olá! Preciso fazer um sensor de presença, porém, não trenho muito espaço para o circuito que vai enviar o sinal (tx) ao receptor (rx), então, gostaria de saber se consigo enviar um sinal sem ter que usar decodificador ou até mesmo um pic e etc. Isso é possível? Caso alguém saiba de algum módulo que facilite minha vida me indique por favor, já procurei bastante na internet, achei alguns mas não sei como fazer a montagem no meu circuito e também não sei se vai funcionar da forma que pretendo. Muito obrigado!
  18. Entendi. Show, vou fazer os testes e posto o resultado. Abraço! adicionado 45 minutos depois Funciona realmente, testei e deu certo. Porém acho que não vai funcionar para minha necessidade, então, teria uma forma "congelar" o pic ENQUANTO o botão estiver precionado e só voltar a ler a programação ao soltar o mesmo? O Break seria uma solução? Não testei ainda. Obrigado!
  19. Olá! Fiz um circuito e programação para o pic 12f629, funciona tudo ok, mas agora preciso fazer uma alteração na programação e não estou conseguindo. No trecho do código abaixo, onde identifico o clique no botão, preciso de uma forma que ao SEGURAR o botão precionado o codigo seja executado imediatamente, independente se foi um clique rápido ou se o botão foi mantido precionado. Se poderem me ajudar ficaria muito grato. Obrigado! if(!(input(inicia))){ //PULSO BOTÃO (PINO 6) delay_ms(500); //Evitar retorno output_high(rele_corta); //ACIONO o relé que permite a passagem de corrente (TEMPO) - (PINO 5) output_low(rele_buzina); //ACIONO o relé que permite a passagem de corrente (BUZINA) - (PINO 7) FOCO = 2; //Adiciono 1 ao FOCO para controlar o While SEGUNDOS = 15; //Ao receber o pulso, os segundos devem ser MAIOR do que os segundos para o corte, isso evita erros. goto pega; //VAI PARA o marcador }//IF
  20. Voltando aqui para fechar este tópico rs. Não satisfeito com o resultado apresentado pelo pic 18F4550, fiz um melhor estudo sobre o ciclo de máquina. Cheguei a conclusão de que o pic realmente esta com problemas, pôs os calculos estão corretos como pode ser visto no código acima. Estudo do CICLO DE MÁQUINA (Microcontroladores) Visão geral. 1º - Defina o tipo de cristal que vai trabalhar. 2º - Defina qual timer ira usar, Timer0, Timer1. Dependendo do timer ele pode ser de 8 ou 16bits 8 bits = 255 (Máximo de contagem) 16 bits = 65536 (Máximo de contagem) 3º - Escolha o Prescale que deseja trabalhar. 1:8 1:4 1:2 1:1 etc. Iniciando os cálculos OBS.: Cálculo para achar 1 segundo no ciclo de máquina. Calculando Timer1 de 16bits para um cristal de 4Mhz com prescale de 1:8 1º - Sempre dividimos o cristal por 4 (Constante) 4000000 / 4 = 1Mhz (Frequência útil) 2º - Eleve a 1 1 / 1000000 = 0,000001us (1 micro segundos para cada ciclo de máquina) 3º - Utilizando o prescale selecionado 1:8 1/(1Mhz/8) = 0,000008us (8 micro segundos para cada ciclo de máquina) 4º - Multiplica o resultado pelos bits do timer, neste caso 16bits = 65536 65536 * 0,000008 = 0,524288 (Segundos por ciclo de máquina) 5º - Regra de três X = 0,50 * 65536 / 0,524288 = 62500 (0,50 arredondando o valor para maior precisão) 6º - Subtrai o resultado pelo máximo do ciclo referente aos bits selecionado (16bits = 65536) 65536 – 62500 = 3036 (Valor inicial da contagem) setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); (T0_DIV_BY_Prescale selecionado) set_timer1(3036); (Valor inicial da contagem) enabled_interrupts(INT_TIMER1); enabled_interrupts(GLOBAL); valeu!
  21. Aos amigos meu feedback. Após estudar e seguir as recomendações referentes ao DataSheet do Pic 18F4550, informo que no Proteus funciona perfeitamente, mas quando soldo o PIC na placa, ele simplesmente não funciona como o esperado, usei Timer0 e Timer1 para fazer o processo e nada, porém, quando volto com os valores dos capacitores referente ao PIC 18fr4520 e soldo o pic na placa, tudo funciona perfeitamente. Lembrando que usei 2 PICs 18F4550 comprados na MultoComercial, não sei exatamente se o problema esta no PIC, mas é estranho porque o outro PIC funciona. Em fim. Minha placa segue então com o PIC 18F4520, vou continuar estudadndo o 4550 e ver se descubro algo que talvez eu esteja fazendo de errado. Muito obrigado pelas respostas. Abraço!
  22. Obrigado por responder! Agora fiquei mais inquieto ainda kkk Segundo explicação do aphawk em outro tópico (https://www.clubedohardware.com.br/forums/topic/662735-dúvida-fórmula-timer0/) diz que para um cristal de 4mhz usa a mesma configuração que está no meu programa, e mesmo adicionando o PLL e o CPUDIV ainda não funcionou. Segue o código e obrigado mais uma vez! #include <18F4550.h> #include <stdlib.h> //Para strings /* OBS.: Este código não usa saída (Definições) nas portas D porque este tipo de PIC com mais de 40 pinos, faz buscas diretas no pino D Este código é típico para estes pics. */ //http://www.clubedohardware.com.br/forums/topic/764932-rel%C3%B3gio-e-calend%C3%A1rio-com-pic-16f628-super-simples/ #FUSES NOWDT //Sem Watch dog, evitando reset #FUSES BROWNOUT //Resetar quando detectar brownout (Quando a tensão cair abaixo do previsto no datasheet) //#FUSES HS //Crystal de oscilação de 4mhz alta velocidade //#FUSES XT //Crystal de oscilação de 4mhz #FUSES PUT //Power Up Time Aguarda 72ms para iniciar o pic evitando surto de tensão #FUSES NOPROTECT //Codigo sem proteção de leitura, software livre! #FUSES NODEBUG //Verifica se tem erros no código (desabilitado) #FUSES NOLVP //No low voltage prgming (prog. baixa tensão desabilitado), B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection (Sem travar o chip) #pragma config PLL DIV = 1 #pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL2 #pragma config FOSC = HSPLL_HS #use delay(clock=4000000) // Definição do clock utilizado. Obrigatório! //***************************************** LCD ***************************************** //Definição de entradas e saídas //Cada bit representa um pino físico de I/O // 0 significa que o pino será uma saída // 1 significa que o pino será uma entrada #define trisa 0b11111111 #define trisb 0b00000000 #define trisc 0b00000000 #define trisd 0b00000000 // Estas são as definições dos pinos que o LCD utiliza. // Definem quais pinos do PIC controlarão os pinos do LCD #define lcd_enable pin_a1 // pino enable do LCD (E) #define lcd_rs pin_a0 // pino rs (register select)do LCD (RS) // (0) para comandos (1) para dados //O pino RW vai no negativo. #define lcd_db4 pin_b4 // pino de dados d4 do LCD #define lcd_db5 pin_b5 // pino de dados d5 do LCD #define lcd_db6 pin_b6 // pino de dados d6 do LCD #define lcd_db7 pin_b7 // pino de dados d7 do LCD #include <lcd.h> //declaração da biblioteca do LCD //***************************************** LCD ***************************************** /*====================================================================================================================================== PINOS I/O ======================================================================================================================================*/ #define BOTAO_MENU PIN_B0 //BOTÃO de escolha de ajuste das funções. #define AJUSTE_1 PIN_B1 //BOTÃO incremento de variáveis. (AJUSTE 1) #define AJUSTE_2 PIN_B2 //BOTÃO de escolha de ajuste das funções. (AJUSTE 2) #define POTENCIOMETRO PIN_D1 //POTENCIOMETRO PINO 20 Trata-se de ligar o led do potenciometro apenas quando for ionizar #define SAIDA_HIONIZADOR_C4 PIN_C4 //SAÍDA DO IONIZADOR PINO 23 #define SAIDA_HIONIZADOR_C5 PIN_C5 //SAÍDA DO IONIZADOR PINO 24 #define SAIDA_BOMBA PIN_C7 //SAÍDA DA BOMBA PINO 26 #define BOMBA_DIRETO PIN_D3 //SAÍDA DA BOMBA DIRETO PINO 22 (Trata-se do botão, quem liga a bomba) //pull-down em todos os botões para evitar ruídos. /*====================================================================================================================================== PINOS I/O ======================================================================================================================================*/ /*====================================================================================================================================== Minhas variáveis: ======================================================================================================================================*/ int MENU = 0; //0 = MOSTRA RELÓGIO /// 1 = NÃO MOSTRA RELÓGIO (TEMPO REAL) int FOCO = 1; //FOCO - 0=HORA REAL - 1=HORA (AJUSTES) - 2=DATA (AJUSTES) - 3=DIA DA SEMANA (AJUSTE) - 4=Bomba ligada inicio - 5=Bomba ligada FIM - 6=Agendando dias int dia_semana = 0; //1 = SEGUNDA... int dia_semana_bomba = 0; //Para o ajuste da bomba ligada ou não BOTÃO 2 int final_mes = 31; //para saber quantos dias tem um determinado mes. char SEMANA[] = "SEGUNDA"; //Inicio na SEGUNDA int LIGADO = 0; //Para informar se a bomba ou o Hionizador sera ligado ou não int contador = 1; //Para fazer a alteração no pino do hionizador (A1) int troca = 0; //Para fazer a alteração nos RELÉS int DIRETO = 0; //INFORMA SE A BOMBA FOI LIGADA DIRETO OU NÃO int CONDICAO = 0; //Para determinar a hora e minutos que vai ligar a bomba e ou o tratamento. int EXIBE = 0; //Somente para exiber dados no LCD, ficar trocando //char DT[] = "02/07/2017"; //Esse é o tipo de var texto aceito pelo LCD, mantive aqui só para lembrar, acho que não estou usando-o ai para baixo //int ndia_semana=1; //Variável dos dias da semana, é associada a uma string. int dia = 0; //Variável dos dias do mês. 0 a 31. int mes = 0; //Variável dos meses. 0 a 12. int ano = 17; //Variável dos anos. 2017 a 2099. int bomba_h_i = 0; //Variável da programação da bomba (horas ligada INICIO) int bomba_m_i = 0; //Variável da programação da bomba (minutos ligado INICIO) int bomba_h_f = 0; //Variável da programação da bomba (horas ligada FIM) int bomba_m_f = 0; //Variável da programação da bomba (minutos ligado FIM) //Variáveis que informa se a bomba e o hionizador estarão igados nos determinados dias da semana int seg_b = 0; int seg_h = 0; int ter_b = 0; int ter_h = 0; int qua_b = 0; int qua_h = 0; int qui_b = 0; int qui_h = 0; int sex_b = 0; int sex_h = 0; int sab_b = 0; int sab_h = 0; int dom_b = 0; int dom_h = 0; /*====================================================================================================================================== Minhas variáveis: ======================================================================================================================================*/ /*====================================================================================================================================== Minha Interrupção: ======================================================================================================================================*/ //HORAS --------------------------------------------------------------------------------------------------------------- //********************************* Variáveis da HORA *********************************** int16 q=0; //Variável que incrementa a cada 0.5s dentro da interupção do timer1. int s=0; //Variável dos segundos, incrementa na metade de q. int m=0; //Variável dos minutos. 0 a 59 int h=0; //Variável das horas. 0 a 23. //******************************* Interrupção do timer ********************************** #int_TIMER1 //Interrupção do Timer1 void temp1s(void) //Funcão. O que deverá ser feito a cada interrupão. { q++; //Variável q incrementada a cada estouro do Timer1 set_timer1 (3036); //Preload do Timer1 } //HORAS --------------------------------------------------------------------------------------------------------------- /*====================================================================================================================================== Minha Interrupção: ======================================================================================================================================*/ //?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? /*====================================================================================================================================== Programa Principal: ======================================================================================================================================*/ void main() { inicializa_lcd(); //Inicializa o LCD //TRATAMENTO DE INTRERRUPÇÃO, AQUI EU INICIALIZO O TIMER******************************************************************************* setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); //Configuração do Timer1 para clock interno = 1E6 dividido por 8 set_timer1 (3036); //Preload do Timer1 enable_interrupts(INT_TIMER1); //Habilita interrupção timer1 enable_interrupts(global); //habilita interrupcão global ::: CONTINUA :::
  23. Isadora, então vou eliminar um tandcoiz rs. Acho que sei o que pode estar acontecendo. Olhando a programação, reparei que estava 18f4520, era o que eu usava mesmo, agora comprei pics 18F4550, então, pode ser o Prescaler mesmo, porém, qual seria para o 18F4550? Mais uma coisa, devo usar o XT ou HS para o cristal de 4Mhz? No Datasheet existem as duas opções. Obrigado mais uma vez pela ajuda.
  24. O código é enorme, postei parte relacionado ao Timer. Os fuses. #FUSES NOWDT //Sem Watch dog, evitando reset #FUSES BROWNOUT //Resetar quando detectar brownout (Quando a tensão cair abaixo do previsto no datasheet) #FUSES HS //Crystal de oscilação de 4mhz alta velocidade //#FUSES XT //Crystal de oscilação de 4mhz #FUSES PUT //Power Up Time Aguarda 72ms para iniciar o pic evitando surto de tensão #FUSES NOPROTECT //Codigo sem proteção de leitura, software livre! #FUSES NODEBUG //Verifica se tem erros no código (desabilitado) #FUSES NOLVP //No low voltage prgming (prog. baixa tensão desabilitado), B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection (Sem travar o chip) #use delay(clock=4000000) // Definição do clock utilizado. Obrigatório! Obrigado!
  25. Olá! Gravei o segundo pic 18F4550 e todos os dois apresentam o mesmo "problema". Para contar 1 segundo é preciso se passarem 2 ou 3 segundos em um relógio digamos normal. Esta programação é do meu costume usar, ela sempre funciona, porém agora esta dando este problema, o que pode ser, o pic? Uso MPLAB para fazer estaprogramação. Códigos do relógio (Timer) //HORAS --------------------------------------------------------------------------------------------------------------- //********************************* Variáveis da HORA *********************************** int16 q=0; //Variável que incrementa a cada 0.5s dentro da interupção do timer1. int s=0; //Variável dos segundos, incrementa na metade de q. int m=0; //Variável dos minutos. 0 a 59 int h=0; //Variável das horas. 0 a 23. //******************************* Interrupção do timer ********************************** #int_TIMER1 //Interrupção do Timer1 void temp1s(void) //Funcão. O que deverá ser feiro a cada interrupão. { q++; //Variável q incrementada a cada estouro do Timer1 set_timer1 (3036); //Preload do Timer1 } //HORAS --------------------------------------------------------------------------------------------------------------- Após o void main() //TRATAMENTO DE INTRERRUPÇÃO, AQUI EU INICIALIZO O TIMER******************************************************************************* setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); //Configuração do Timer1 para clock interno = 1E6 dividido por 8 set_timer1 (3036); //Preload do Timer1 enable_interrupts(INT_TIMER1); //Habilita interrupção timer1 enable_interrupts(global); //habilita interrupcão global Muito 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!