-
Posts
9 -
Cadastrado em
-
Última visita
Reputação
3-
PIC Queda de tensão na leitura AD no PIC 12F683
Bruno Régis Cardozo respondeu ao tópico de Bruno Régis Cardozo em Microcontroladores
Aleluia descobri, o problema é que a porta estava configurada como input low, ai eu colocava ela em nível lógico 0, e no mesmo momento ela recebia 2,5 volts...gastando pilha... { output_low(pin_a5); OUTPUT output_low(pin_a4); OUTPUT output_low(pin_a1); OUTPUT //output_low(pin_a2); INPUT esta porta esta como entrada analogica e // colocando ela como saída low consome muita pilha...... } -
PIC Queda de tensão na leitura AD no PIC 12F683
Bruno Régis Cardozo respondeu ao tópico de Bruno Régis Cardozo em Microcontroladores
no hardware físico não liguei, coloquei um de 360 ohms... -
PIC Queda de tensão na leitura AD no PIC 12F683
Bruno Régis Cardozo respondeu ao tópico de Bruno Régis Cardozo em Microcontroladores
segue abaixo: adicionado 1 minuto depois o que esta diferente ai, é que esta na an2 e na programação esta na an1, mudei para fazer teste... adicionado 7 minutos depois o que esta diferente ai, é que esta na an2 e na programação esta na an1, mudei para fazer teste... explicar melhor, tenho duas leituras no an1 e an0, quando a lógica esta ok não acontece nada, porém se ha alguma variação de tensão, vai para uma outra parte da programação que é um alarme... -
PIC Queda de tensão na leitura AD no PIC 12F683
Bruno Régis Cardozo postou um tópico em Microcontroladores
Boa tarde a todos, estou com esse código de programação abaixo, porém a dúvida, estou usando pilhas, se deixo a leitura só em um sensor no caso AN0 ele não consome quase nada de pilha, agora se coloco o AN1 cai praticamento um volt por minuto, já fiz o teste trocando as portas continua sempre a mesma coisa, alguém pode me ajudar ou ter alguma ideia do que seja??? leitura do AD do PIC: if (analogico-5 > pilha/2 || analogico+5 < pilha/2) {inicio: { setup_adc_ports(sAN0|sAN1); setup_adc(ADC_CLOCK_INTERNAL); { while(TRUE) { set_adc_channel(0); delay_us(15); analogico = read_adc(); delay_ms(100); set_adc_channel(1); delay_us(15); pilha = read_adc(); delay_ms(100); } if (analogico-5 > pilha/2 || analogico+5 < pilha/2) goto alarme1; -
Outro Ler dois sinais analógicos
Bruno Régis Cardozo respondeu ao tópico de Bruno Régis Cardozo em Microcontroladores
Boa tarde a todos, descobri o problema, meu PIC era de 8 bits e estava na programação como se fosse de 10 bits ficou assim, #device adc=10 antes.... #device adc=8 depois -
Outro Ler dois sinais analógicos
Bruno Régis Cardozo respondeu ao tópico de Bruno Régis Cardozo em Microcontroladores
Bom dia Isadora reescrevi!!! Acho que o problema esta em declarar isto abaixo???? #device adc=10 >>>no caso como estou usando a porta 0 e 1 seria #device adc=01 ? #include<12F683.h> int analogico; int pilha; int val_pilha; int val_analogico; int val_analogico1; #use delay(clock=4000000) // Frequência do micro. #fuses INTRC_IO, // isso é indicado de acordo com o micro e a freq nesse caso (4000000). #fuses NOWDT, // no Wath Dog Timer, #fuses NOPROTECT, // para proteger a programação( acho q de cópia). #fuses NOPUT, // #fuses BROWNOUT, // isso serve para verificar se programa esta ok, se alim. esta ok, clok ok se estiver nok reset o micro. #fuses NOMCLR // esso serve para um reset no programa como reset externo. void main() { setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(sAN1); setup_adc_ports(sAN0); enable_interrupts(GLOBAL); while(TRUE) { set_adc_channel(0); delay_us(15); analogico = read_adc(); val_analogico=analogico-3; val_analogico1=analogico+3; delay_ms(100); set_adc_channel(1); delay_us(15); pilha = read_adc(); val_pilha=pilha/2; delay_ms(100); if val_analogico > val_pilha) || val_analogico1 < val_pilha for (contador = 1; contador <= 7; contador = contador + 1) { output_high(pin_a5); output_high(pin_a2); delay_ms(250); /////////temp 1/1 output_low(pin_a5); output_low(pin_a2); delay_ms(250); } else { output_low(pin_a5); output_low(pin_a4); output_low(pin_a1); output_low(pin_a2); } } -
Bom dia, alguém pode me ajudar? Qual o problema neste código que não consigo de jeito nenhum ler dois sensores analógicos? #include<12F683.h> #use delay(clock=4000000) // Frequência do micro. #fuses INTRC_IO, // isso é indicado de acordo com o micro e a freq nesse caso (4000000). #fuses NOWDT, // no Wath Dog Timer, #fuses NOPROTECT, // para proteger a programação( acho q de cópia). #fuses NOPUT, // #fuses BROWNOUT, // isso serve para verificar se programa esta ok, se alim. esta ok, clok ok se estiver nok reset o micro. #fuses NOMCLR // esso serve para um reset no programa como reset externo. //// 8 bits = 256; ##256/5 = 51mv; ##3*1,5 = 4,5; ##4,5/2 = 2,25 ##97/51=1,90v; ##118/51 = 2,31 void main() { long analogico, pilha, val_pilha, val_analogico, val_analogico1; setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(sAN1); setup_adc_ports(sAN0); enable_interrupts(GLOBAL); while(TRUE) { set_adc_channel(0); delay_us(15); analogico = read_adc(); val_analogico=analogico-3; val_analogico1=analogico+3; delay_ms(100); set_adc_channel(1); delay_us(15); pilha = read_adc(); val_pilha=pilha/2; delay_ms(100); if val_analogico > val_pilha) || val_analogico1 < val_pilha for (contador = 1; contador <= 7; contador = contador + 1) { output_high(pin_a5); output_high(pin_a2); delay_ms(250); /////////temp 1/1 output_low(pin_a5); output_low(pin_a2); delay_ms(250); } else { output_low(pin_a5); output_low(pin_a4); output_low(pin_a1); output_low(pin_a2); } }
-
Outro Leitor de tensão com TC
Bruno Régis Cardozo respondeu ao tópico de Bruno Régis Cardozo em Programação - iniciantes
Ola Devair, foi a primeira coisa que pensei, mas isso funciona quando a máquina fica ligada, o problema é quando desliga a máquina antes do tempo final, o alarme continua até o fim, mais if´s não funciona com precisão pois as vezes pega a onda senoidal abaixo do 125 estou agora tentando fazer assim!!! if((analogico - tres) > (pilha /2)) || ((analogico + tres) < (pilha /2))) goto alarme1; pilha é a tensão das pilhas, no analógico entra a metade da tensão das pilhas pois esta em um divisor de tensão, esse numero 2,5 foi para expressar aqui pois as pilhas juntas são 4,5 e metade 2,25.. ai a leitura seria acima de 2,8 e abaixo de 2,2... mas essa escrita esta errada.. -
Boa noite pessoal, estou com um problema que não consigo resolver, estou fazendo um alarme de máquina bem simples, quando ligo a máquina ela conta um certo tempo (2 minutos e emite um som, depois mais 2 minutos e outro som É assim sucessivamente até 6 minutos), isso feito com 3 pilhas de 1.5 total de 4,5, um pic 12g683, um divisor de tensão para deixar a tensão de 0 a 5 volts e um tc, problema é o que quando a máquina liga da o primeiro alarme pois está em um loop, mas quando vai para o segundo if, não dispara, as vezes sim é as vezes não, pois coloquei assim, if (analogico > 125) 125 porque tem q ler acima de 2,5 por ser divisor de tensão Output_high (pin_a2) Delay_ms (5000) Output_low (pin_a2) Aí depois repete isso só que outro alarme que sairia em outras portas... Alguém tem algumA ideia do que pode ser feito?
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