HOMENAGEM
† 12 de março de 2016
Quem está conectado?
Há 172 usuários online :: 1 registrado, 0 invisíveis e 171 visitantes :: 3 motores de buscairaja
O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
Top dos mais postadores
Rafael Silveira (7816) | ||||
Caca Silva (6057) | ||||
renatoscp (3891) | ||||
CMeletronica (3234) | ||||
michel chagas (2791) | ||||
Railson (2119) | ||||
alexsandro rodrigues de a (1835) | ||||
naldo santos (1625) | ||||
ablacon64 (1222) | ||||
gilvantexas (1061) |
Tópicos semelhantes
Medidor de Velocidade
Temporizador com ADC pic 12f675
4 participantes
Página 1 de 1
Temporizador com ADC pic 12f675
Bom dia a todos do fórum. Esto tentando acionar uma carga através, do ADC de um pic. O negocio é o seguente quando o ADC registrar uma tensão de 1 volte quero que a carga se desligue se a tensão for 2 volte a carga é também desligada se o ADC for 3 volte a carga seja ligada e se for 4 volte novamente ira desligar a carga.
Até aqui eu consegui fazer tudo funcionar certinho, o problema é que preciso adicionar um tempo para cada um desses acionamentos. Exemplo quando o ADC registrar os 3 volte, quero um tempo de 1 milissegundo antes que a leitura do ADC seja executada. E depois disso quero esperar 5 minutos para de fato acionar a carga.
Já tentei de tudo, e não consegui implementar esse código. Já faz três mezés que trabalho nele e nada alguém ai
de-me uma luz já esgotei todas as possibilidades.
eu programo com o compilador Microc da microship.
Belezinha.... Obrigado
Até aqui eu consegui fazer tudo funcionar certinho, o problema é que preciso adicionar um tempo para cada um desses acionamentos. Exemplo quando o ADC registrar os 3 volte, quero um tempo de 1 milissegundo antes que a leitura do ADC seja executada. E depois disso quero esperar 5 minutos para de fato acionar a carga.
Já tentei de tudo, e não consegui implementar esse código. Já faz três mezés que trabalho nele e nada alguém ai
de-me uma luz já esgotei todas as possibilidades.
eu programo com o compilador Microc da microship.
Belezinha.... Obrigado
Denildo Andrade- Nível 1
- Mensagens : 6
Data de inscrição : 05/06/2014
Idade : 37
Localização : sao paulo
Re: Temporizador com ADC pic 12f675
Não entendi bem a questão de entradas e saídas. Você vai monitorar uma ADC e:
1 v -> desliga a carga
2 v -> desliga a carga
3 v -> liga a carga ->espera 1ms -> habilita ADC
4 v -> desliga a carga
Pode fornecer mais detalhes?
1 v -> desliga a carga
2 v -> desliga a carga
3 v -> liga a carga ->espera 1ms -> habilita ADC
4 v -> desliga a carga
Pode fornecer mais detalhes?
anilto- Nível 1
- Mensagens : 1
Data de inscrição : 24/05/2016
Idade : 66
Localização : Ribeirão Pires, SP, Brasil
Re: Temporizador com ADC pic 12f675
Não entendi muito, eu não programo em Microc,eu programo em ccs mais o logica e o mesmo.
"Exemplo quando o ADC registrar os 3 volte, quero um tempo de 1 milissegundo antes que a leitura do ADC seja executada. E depois disso quero esperar 5 minutos para de fato acionar a carga."
nesse seu exemplo no mais simples possível,
while(1) // laço principal
{
read_adc(ADC); // faz a leitura do adc
if(ADC==Volts) // Compara se o adc e igual a variável volts que teria o valor do 3V
{
tempo = 0; // variavel tempo para contar o tempo
delay_ms(1) // espera 1 milesegundo
A=1 // variavel do loop while
while(A=1) // enguanto A = 1 fica no loop
{
read_adc(ADC) // faz a leitura do adc
if(ADC=>4){ //aqui pode colocar se o adc passar do 4V a saida seria desligada e a variavle A mudaria de valor para sair do loop
output_low(PIN_D0);//desliga a saida
A=2; //sai do loop
}
if(ADC=<2{ //aqui coloco para desligar a saida assim que o adc e igual o menor que 2V variavle "A" mudaria de valor para sair do loop
output_low(PIN_D0);//desliga a saida
A=2; //sai do loop
}
delay_ms(1) //conta 1 ms para ter uma base de tempo
tempo = tempo + 1; //soma a variavel tempo ate dá o valor de 5 minuto que seria "30000 ms"
if (tempo ==30000) // se der os 5 min
{
output_high(PIN_D0); // liga a saida D0
}
´}
É apenas um exemplo para ter uma base não é o codigo e apenas uma ideia ,da para usar o time_0 para ter um tempo mais preciso
"Exemplo quando o ADC registrar os 3 volte, quero um tempo de 1 milissegundo antes que a leitura do ADC seja executada. E depois disso quero esperar 5 minutos para de fato acionar a carga."
nesse seu exemplo no mais simples possível,
while(1) // laço principal
{
read_adc(ADC); // faz a leitura do adc
if(ADC==Volts) // Compara se o adc e igual a variável volts que teria o valor do 3V
{
tempo = 0; // variavel tempo para contar o tempo
delay_ms(1) // espera 1 milesegundo
A=1 // variavel do loop while
while(A=1) // enguanto A = 1 fica no loop
{
read_adc(ADC) // faz a leitura do adc
if(ADC=>4){ //aqui pode colocar se o adc passar do 4V a saida seria desligada e a variavle A mudaria de valor para sair do loop
output_low(PIN_D0);//desliga a saida
A=2; //sai do loop
}
if(ADC=<2{ //aqui coloco para desligar a saida assim que o adc e igual o menor que 2V variavle "A" mudaria de valor para sair do loop
output_low(PIN_D0);//desliga a saida
A=2; //sai do loop
}
delay_ms(1) //conta 1 ms para ter uma base de tempo
tempo = tempo + 1; //soma a variavel tempo ate dá o valor de 5 minuto que seria "30000 ms"
if (tempo ==30000) // se der os 5 min
{
output_high(PIN_D0); // liga a saida D0
}
´}
É apenas um exemplo para ter uma base não é o codigo e apenas uma ideia ,da para usar o time_0 para ter um tempo mais preciso
marcosr- Nível 1
- Mensagens : 11
Data de inscrição : 29/02/2012
Idade : 53
Localização : Paiçandu
Re: Temporizador com ADC pic 12f675
não sei se já resolveu!
A opção de usar delay() não é a melhor.
deve usar o timer do processador ou interrupções!
cada vez que a condição que pretende se verifica, faz a leitura do timer,
XYZ=timer
se( timer-XYZ > tempo de espera) ->opção.
não uso microc mas o algoritmo é independente da linguagem.
pessoalmente prefiriria usar interrupções com o timer, assim podia o processador continuar a fazer outras coisas.
A opção de usar delay() não é a melhor.
deve usar o timer do processador ou interrupções!
cada vez que a condição que pretende se verifica, faz a leitura do timer,
XYZ=timer
se( timer-XYZ > tempo de espera) ->opção.
não uso microc mas o algoritmo é independente da linguagem.
pessoalmente prefiriria usar interrupções com o timer, assim podia o processador continuar a fazer outras coisas.
joaquimseixo- Nível 1
- Mensagens : 1
Data de inscrição : 30/04/2011
Idade : 70
Localização : guarda
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Ontem à(s) 20:57 por sandy silva de oliveira
» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Dom 24 Mar 2024 - 16:10 por crisnich
» Defeito intermitente amplificador Ciclotron TIP5000
Qua 20 Mar 2024 - 9:13 por fastaveira
» Esquema Amplificador Audio Leader AL 5.0
Qua 20 Mar 2024 - 9:01 por fastaveira
» MK4000 - FONTE CHAVEADA FULL BRIDGE
Dom 17 Mar 2024 - 18:43 por sandy silva de oliveira
» amplificador class h tailandes
Sex 15 Mar 2024 - 22:41 por mehuysal
» Amplificador Super Strong
Qui 14 Mar 2024 - 13:03 por Reginaldo Silva
» Amplificador Classe D UCD1500
Qua 13 Mar 2024 - 13:07 por Guille
» NS450 - FONTE CHAVEADA PARTE 2
Seg 11 Mar 2024 - 6:55 por ffernand3s
» DETECTOR DE METAIS IDX-PRO
Sex 1 Mar 2024 - 16:41 por Benyamin
» Amplificador Fonte Simples em teia de aranha
Sex 1 Mar 2024 - 12:17 por Reginaldo Silva
» Manutenção Gradiente 366 / 266
Qui 29 Fev 2024 - 21:40 por tiaogaviao
» Criação pcb esquema phono cápsula ceramica
Qui 29 Fev 2024 - 16:58 por warley cesar
» DETECTOR DE METAIS MKII (PINPOINTER)
Qua 28 Fev 2024 - 19:09 por Benyamin
» Fonte chaveada compacta IR2153D - 10 x 10 cm
Ter 27 Fev 2024 - 22:02 por microbit