Ir ao conteúdo
  • Cadastre-se

Ajuda Programação Chocadeira (PIC 12F675)


Posts recomendados

Bom dia, gostaria de pedir a ajuda do pessoal do forum para a programação do PIC 12F675 neste projeto ( http://www.sabereletronica.com.br/artigos-2/2458-chocadeira-10), ja montei o circuito mas não sei nada de programação do PIC, gostaria de pedir para alguem desenvolver pra mim esta programação, e se não for pedir muito, me dar algumas dicas de como "gravar" isto no PIC. O circuito ja esta montado e testado (entradas e saidas). No link enviado tem toda a descrição do circuito, mas resumidamente ele liga e desliga uma resistencia para manter a temperatura pre-estabelicida no potenciometro e tambem aciona o motor (de microndas) de hora em hora para virar os ovos. Pesquisei no forum mas não achei nada sobre chocadeira com o PIC 12F675, apenas com outro PIC, mas o circuito ja esta montado. Desde já agradeço a quem puder me dar uma ajudinha.

post-731290-0-90552600-1421065011_thumb.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

projetinho bacana. Ppode ser falha no meu browser ou proxy bloqueando, mas estranho..  o autor não disponibilizou o .hex pra gravar? e nem fotos ou desenhos mecânicos e etc? Vá entender (não li o artigo todo. só procurei por botões para baixar). Como sugestão, linka o que achou dos "outros pics", caso tenha os fontes, de repente facilita alguém converter pro 675. O que te impediu de usar os "outros pics" mesmo? Gosta de novos desafios? (na verdade, desafiar os outros.. kk)

 

Gravar no pic tem milhões de circuitos na net. Escolha o mais simples. Se seu pc ainda tiver serial, este JDM...

jdmprog.gif

...já usei com o icprog com sucesso no início deste milênio

De fato há mais simples. make your choice

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

projetinho bacana. Ppode ser falha no meu browser ou proxy bloqueando, mas estranho..  o autor não disponibilizou o .hex pra gravar? e nem fotos ou desenhos mecânicos e etc? Vá entender (não li o artigo todo. só procurei por botões para baixar). Como sugestão, linka o que achou dos "outros pics", caso tenha os fontes, de repente facilita alguém converter pro 675. O que te impediu de usar os "outros pics" mesmo? Gosta de novos desafios? (na verdade, desafiar os outros.. kk)

 

Gravar no pic tem milhões de circuitos na net. Escolha o mais simples. Se seu pc ainda tiver serial, este JDM...

jdmprog.gif

...já usei com o icprog com sucesso no início deste milênio

De fato há mais simples. make your choice

 

Bom dia Isadora, realmente o autor não disponibilizou os arquivos, infelizmente só depois que montei e fui pesquisar que descobri que precisava deles rsss. Quanto aos outros projetos que achei , não tenho nem ideia de como começar para poder modificá-los. O que me impede de usar os outros PIC é que o meu circuito ja esta montado, só poderia ser outro PIC se for a mesma pinagem ... na realidade não é arrumar desafios para os outros kkkkk é um pedido de alguem desesperado kkkkk pois não sei nem como começar .... você não teria "as manha" de escrever o codigo  .hex pra mim ? rsss Gosta de desafios? rsss ... mas desde já agradeço pela atenção .

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

aff que burro. dá zero pra ele e pra você kk. Bem, apesar de supostamente ser simples, infelizmente não lhe posso dar atenção total devido às prioridades, sácuméquié... Mas não desanime. Breve alguém vai te contatar. Dependendo de quanto vai te custar, creio que você tem a opção de usar um timer qualquer

TimerMec-g.jpg

e um controlador de temperatura

INV-1713-IMAGEM.jpg

 

Ou algo assim

 

Vou pensar se compensa pensar em pensar no seu caso kk

 

Sucessos

Link para o comentário
Compartilhar em outros sites

aff que burro. dá zero pra ele e pra você kk. Bem, apesar de supostamente ser simples, infelizmente não lhe posso dar atenção total devido às prioridades, sácuméquié... Mas não desanime. Breve alguém vai te contatar. Dependendo de quanto vai te custar, creio que você tem a opção de usar um timer qualquer

TimerMec-g.jpg

e um controlador de temperatura

INV-1713-IMAGEM.jpg

 

Ou algo assim

 

Vou pensar se compensa pensar em pensar no seu caso kk

 

Sucessos

Ok obrigado ... mas se tiver um tempinho ..... rsss

Link para o comentário
Compartilhar em outros sites

Bom..é questão de repensar o projeto. ou gastar uma bela grana na programação do PIC. Estamos falando ai 10,00 miseras dilmas por linha

 

Um controlador PID ai, fora de terras tupiniquim, vai pagar uma bagatela de até 60 dilmas, ou se estiver disposto, batalhar uma controlador em bom estado de uso e se der sorte com os "shield" um contador ou SSR que seja. 

 

Boa sorte. www.dx.com

Link para o comentário
Compartilhar em outros sites

Bom..é questão de repensar o projeto. ou gastar uma bela grana na programação do PIC. Estamos falando ai 10,00 miseras dilmas por linha

 

Um controlador PID ai, fora de terras tupiniquim, vai pagar uma bagatela de até 60 dilmas, ou se estiver disposto, batalhar uma controlador em bom estado de uso e se der sorte com os "shield" um contador ou SSR que seja. 

 

Boa sorte. www.dx.com

Obrigado por responder Pinhed, eu não entendo nada de programação PIC ... é tão complicado assim? Será q eu não vou conseguir nenhuma "alma caridosa" que consiga fazer isso ou pelo menos tentar me ensinar a fazer ? rsss O projeto ja esta montado ... falta só programar o PIC ...

Link para o comentário
Compartilhar em outros sites

Na verdade é um pouco demorado fazer a programação, isso no meu caso, mas tem uma galera ai que faz com o pé nas costas.

 

Esse controlador que a Isadora postou, o digital, deve ter duas ou mais saídas para comando de relé de estado solido (SSR), entrada configurável, ON/OFF a Zona Neutra, PID de ação simples e PID direto e reverso ( dupla ação ), Autotune e Self Tune, tudo o que precisa no PIC. 

 

Minha sugestão é pegar o sketch, desses outros PIC que você conseguiu e alterar a programação para seu PIC. 

Link para o comentário
Compartilhar em outros sites

Na verdade é um pouco demorado fazer a programação, isso no meu caso, mas tem uma galera ai que faz com o pé nas costas.

 

Esse controlador que a Isadora postou, o digital, deve ter duas ou mais saídas para comando de relé de estado solido (SSR), entrada configurável, ON/OFF a Zona Neutra, PID de ação simples e PID direto e reverso ( dupla ação ), Autotune e Self Tune, tudo o que precisa no PIC. 

 

Minha sugestão é pegar o sketch, desses outros PIC que você conseguiu e alterar a programação para seu PIC. 

OK Pinhed Obrigado, ja estou tentando pesquisar aqui sobre programação de PIC, pra ver se consigo modificar .... porque não estendi nadinha dos arquivos de programação que eu vi ... obrigado

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

de fato considero que seria obrigação tornar disponível o arquivo ou no mínimo avisar que ele era imprescindível. Ocorreu o que jamais poderia ter ocorrido: você montou sem sabê-lo. Na minha neutra opinião, falha extremamente infantil, não sua, mas do autor do artigo. Talvez ele queira te vender o arquivo. Talvez valha a pena pagar mas que leve um baita puxão de orelha

 

Mas se você está se autopropondo a programá-lo, bacana! Sugiro que aprenda programação C. Vais fazer muito mais do que uma chocadeira. Vamos começar com ela? Veja como é simples (só pra você ter uma ideia, digito ao vivo em em preto e branco, sem interrupt, timer nem nada, portanto...tá maizomeno):

//incluir cabeçários... #include//definir alguma coisa #defines#define aquecimento_ventilacao GPIO0#define motor GPIO1//definir variáveis globaisunsigned char temperatura;unsigned int segundo=0;void main(void)// primeiro: acertar o hw do picfor(; //eternamente{ //iníciotemperatura=adc_read(0)/64;//1º- controle de temperatura (valor chutado)if (temperatura>38) aquecimento_ventilacao=0;//desliga resistênciaif (temperatura<35) aquecimento_ventilacao=1;//ligadelayms(1000);//um segundosegundo++;if (segundo>3600) motor=1;//de hora em horaif (segundo>3610) {motor=0; segundo=0;}//gira motor por 10 segundos} //volta pro início}

claro, valores chutados e não é pid nem nada, é só on-off simples. Se você tem alguma noção de inglês talvez atém consiga ver o trem funcionando. difícil? Mas não impossível

 

De acordo com a cotação do amigo @Pinhed , aí em cima temos mais de 100,00 em linhas.. paga eu .. kk - I. Bom, acho melhor fazer em asm e aí você pagaria uns ... 5000,00 kk - II. E neguinho levaria um tempo bem maior do que digitar online kk- III. E você teria um pouco mais de dificuldade de entender de imediato kk - IV . Acho que nem tentaria kk - nada a V.

 

Sucessos!

Link para o comentário
Compartilhar em outros sites

de fato considero que seria obrigação tornar disponível o arquivo ou no mínimo avisar que ele era imprescindível. Ocorreu o que jamais poderia ter ocorrido: você montou sem sabê-lo. Na minha neutra opinião, falha extremamente infantil, não sua, mas do autor do artigo. Talvez ele queira te vender o arquivo. Talvez valha a pena pagar mas que leve um baita puxão de orelha

 

Mas se você está se autopropondo a programá-lo, bacana! Sugiro que aprenda programação C. Vais fazer muito mais do que uma chocadeira. Vamos começar com ela? Veja como é simples (só pra você ter uma ideia, digito ao vivo em em preto e branco, sem interrupt, timer nem nada, portanto...tá maizomeno):

//incluir cabeçários... #include//definir alguma coisa #defines#define aquecimento_ventilacao GPIO0#define motor GPIO1//definir variáveis globaisunsigned char temperatura;unsigned int segundo=0;void main(void)// primeiro: acertar o hw do picfor(; //eternamente{ //iníciotemperatura=adc_read(0)/64;//1º- controle de temperatura (valor chutado)if (temperatura>38) aquecimento_ventilacao=0;//desliga resistênciaif (temperatura<35) aquecimento_ventilacao=1;//ligadelayms(1000);//um segundosegundo++;if (segundo>3600) motor=1;//de hora em horaif (segundo>3610) {motor=0; segundo=0;}//gira motor por 10 segundos} //volta pro início}

claro, valores chutados e não é pid nem nada, é só on-off simples. Se você tem alguma noção de inglês talvez atém consiga ver o trem funcionando. difícil? Mas não impossível

 

De acordo com a cotação do amigo @Pinhed , aí em cima temos mais de 100,00 em linhas.. paga eu .. kk - I. Bom, acho melhor fazer em asm e aí você pagaria uns ... 5000,00 kk - II. E neguinho levaria um tempo bem maior do que digitar online kk- III. E você teria um pouco mais de dificuldade de entender de imediato kk - IV . Acho que nem tentaria kk - nada a V.

 

Sucessos!

Obrigado Isadora ... vou tentar aprender a programar, mas aproveitando que q você conhece muito disso e eu nada, poderia me esclarecer algumas coisas: pelo q pesquisei a maior parte dos aquivos esta em .HEx (pelo q entendi é uma arquivo de saida convertido pra 0 ou 1) então para programar teriamos o codigo C e ASM ... que são no formato de texto e pelo DataSheet do PIC eu acharia um exemplo de como seria as linhas de comando ... seria mais ou menos isso ? mais alguma informação pra me dar um norte (ou todos os pontos cardeais rsss)? Obrigado

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

maizomeno...
O datasheet vai te mostrar como o mc funciona em termos de circuitos (você vai ter que entender de circuitos principalmente os lógicos) e pode até ter alguns exemplos de acesso aos circuitos em c mas essa não é a proposta dele. O código C vai fazer o circuito funcionar de acordo com suas ideias (no seu caso, a da galinha). O .hex é uma saída oriunda do texto C que um compilador gera. É como o .exe do windows. Portanto são no mínimo 2 conhecimentos que deve adquirir: eletronica e programação e acoplar harmoniosamente os dois.

A não ser que seu prazo não seja muito apertado (tipo uma vida) acho melhor você pagar pra alguem fazer mesmo. Mas insista com os cara lá véy. Pega mal eles não te darem o hex ou no mínimo vender. Compre e publique kk.

 

De fato o exemplo que lhe dei acima está 99.9% quase atendendo o que você quer. Caso sobre tempo nas madrugadas...

Link para o comentário
Compartilhar em outros sites

maizomeno...

O datasheet vai te mostrar como o mc funciona em termos de circuitos (você vai ter que entender de circuitos principalmente os lógicos) e pode até ter alguns exemplos de acesso aos circuitos em c mas essa não é a proposta dele. O código C vai fazer o circuito funcionar de acordo com suas ideias (no seu caso, a da galinha). O .hex é uma saída oriunda do texto C que um compilador gera. É como o .exe do windows. Portanto são no mínimo 2 conhecimentos que deve adquirir: eletronica e programação e acoplar harmoniosamente os dois.

A não ser que seu prazo não seja muito apertado (tipo uma vida) acho melhor você pagar pra alguem fazer mesmo. Mas insista com os cara lá véy. Pega mal eles não te darem o hex ou no mínimo vender. Compre e publique kk.

 

De fato o exemplo que lhe dei acima está 99.9% quase atendendo o que você quer. Caso sobre tempo nas madrugadas..

Estou tentando pesquisar mais sobre programação, pra tentar mexer ... por acaso você não teria algum material (aula, dicas, tutoriais, etc) pra um completamente leigo em programação ? rsss ... a parte de eletronica eu entendo pouco, mas da pra tentar alguma coisa, mas a programação tenho q começar do zero ... 

Quando eu conseguir fazer a programação e gravar o arquivo hex no PIC, se não der certo eu posso "gravar" outro por cima ... ou ja era o PIC ? Pelo que pesquisei tem programa que da pra simular o circuito como se o PIC estive com a programação feita, teria algum pra indicar? Vi falando do Proteus ...

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

não tenho mas sei quem tem: o google kk . Ao digitar curso pic ou curso c pra pic você não faz ideia do número de respostas. Infelizmente não lhe posso indicar nenhum...

Neste pic sim você pode gravar de novo mas cuidado tem limite de gravação. Acho que é só dez milhões de vezes. Se você gravar 1000x por dia, daqui a 30 anos não consegue gravar mais hein!

 

Sim o proteus é trilegal. Não posso te indicar o "alternativo" mas tem (tinha) versão do capeta (demo) que você faz coisa placar alho. Também indico o mikroc (não uso) que tem (tinha) versão satã cujo limite é (era) 2k (seu pic é 1k) e é muitíssimo mais do que suficiente pra você fazer altos pisca leds e até mesmo muito mais do que sua chocadeira. Tem também o sdcc 100% gratuito que compila pra pic e pode (podia) ser integrado ao mplab (este você baixa no site microchip.com) cujos recursos tendem a infinito e além.

99,999999999999% do planeta usa o enjessante ccs. Se gosta de nadar a favor da corrente é uma não totalmente boa opção no meu . de vista.

 

Aqui cabe uma derradeira dica filosófica de fundo de quintal: aprender é como nadar contra a corrente. Se parar ela te leva pra trás.

 

sucessos!

Link para o comentário
Compartilhar em outros sites

Estou tentando desenvolver o programa, mas deve ter muitos erros de sintaxe entre outros, alguem poderia dar uma olhada pra mim:

 

#include <12F675.H>
#device adc=8
#use delay(clock=4000000)
#fuses noprotect,nowdt,NOLVP,BROWNOUT,PUT

#define aquecimento PIN_GP5
#define motor PIN_GP4
#define ref PIN_AN2
 
unsigned char temperatura;                                // 0 a 255
unsigned pot_ref  temperatura;                            // 0 a 255
unsigned long int segundo=0;                              // 0 a 65535     

void main()
{

While (true){                                              //eternamente

setup_adc( ADC_CLOCK_INTERNAL );
set_adc_channel( 0 );
temperatura=adc_read(0);
delayms(10);                                              //aguarda 10 mili segundo


switch ( temperatura)
  {
     case (temperatura<=18,30&>=18,40)&&(pot_ref>=0&<=31,87) {aquecimento=1; break:}             //temperatuta entre 35,9º e 36,1º e potenciometro para 36º
     case (temperatura<=18,56&>=18,66)&&(pot_ref>=31,88&<=95,62) {aquecimento=1; break:}         //temperatuta entre 36,4º e 36,6º e potenciometro para 36,5º
     case (temperatura<=18,82&>=18,92)&&(pot_ref>=95,63&<=159,36) {aquecimento=1; break:}        //temperatuta entre 36,9º e 37,1º e potenciometro para 37º
     case (temperatura<=19,07&>=19,17)&&(pot_ref>=159,37&<=223,12) {aquecimento=1; break:}       //temperatuta entre 37,4º e 37,6º e potenciometro para 37,5º
     case (temperatura<=19,32&>=19,42)&&(pot_ref>=223,13&<=255) {aquecimento=1; break:}          //temperatuta entre 37,9º e 38,1º e potenciometro para 38º
     default :  aquecimento=0;
  }

delayms(1000);                                             //um segundo
segundo++;

if (segundo>3600&&pot_ref>=25,5 & <=229,5) motor=1;         //de hora em hora se o potenciometro estiver ente 10 e 90%
if (segundo>3610) {motor=0; segundo=0;}                     //gira motor por 10 segundos
}                                                           // fecha o Void main
}                                                           //fecha o while true                                                    
 

 

 

 

 

No circuito original usa um trimpot como tensão de referencia para ajuste fino no pino GP1/AN1, ainda não consegui descobrir como usá-lo no programa, se alguem puder me dar algumas dicas ...

 

 

 

Tentei compilar, mas deu 17 erros e não sei consertá-los ... se algum puder ajudar ...

 

post-731290-0-65177600-1421434300_thumb.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

você deve informar ao compilador onde estão os arquivos que ele não achou adcread() e delayms(). É pra isso que serve o #include. Provavelmente está dentro do 12f675.h mas com outro nome
Realmente tem muitos erros e um acerto: você está tentando. No seu caso o switch case (cuja sintaxe está errada, pra variar) não fica bom. Basta uma comparação simples com if
... vejamos...
Vamos tentar aprimorar o que postei com controle de temperatura pelo potenciometro. Basta fazer a leitura de um e de outro e fazer a comparação.
 

temperatura=adc_read(SENSOR);ajuste=adc_read(AJUSTE);if (temperatura>ajuste) aquecimento_ventilacao=0;//desliga resistênciaelse aquecimento_ventilacao=1;//liga ... tem certeza?? mesmo com este CALOR QUE ESTÁ FAZENDO? rs

Como está usando triac não precisa se preocupar com histerese e tal. (não entendi "se potenciometro estiver ente 10 e 90%")

Aqui mais completo...

//incluir cabeçários... #include//definir alguma coisa#define SENSOR 0#define AJUSTE 1#define aquecimento_ventilacao GPIO3#define motor GPIO4//#define HISTERESE 2//definir variáveis globaisunsigned int temperatura,ajuste;unsigned int segundo=0;void main(void)// primeiro: acertar o hw do picfor(; //eternamente{ //iníciotemperatura=adc_read(SENSOR);ajuste=adc_read(AJUSTE);if (temperatura>ajuste) aquecimento_ventilacao=0;//desliga resistênciaelse aquecimento_ventilacao=1;//liga ... tem certeza?? mesmo com este CALOR QUE ESTÁ FAZENDO? rsdelayms(1000);//um segundosegundo++;if (segundo>3600) motor=1;//de hora em horaif (segundo>3610) {motor=0; segundo=0;}//gira motor por 10 segundos} //volta pro início}

Note que não temos o valor em ºC. Apenas o resultado do adcread. É mais do que suficiente pois você não vai mostrar nada em display. Pra verificar o funcionamento, você vai precisar do termômetro.
Poderá haver uma inércia térmica que faz a temperatura passar um pouco do ajustado. Uma função pid (mais complexa) resolveria isso. Mas não é seu momento.
Como vê é triultramegahipersuper simples
Como lhe disse ccs não róla. Se insistir nele, aguarde que alguma boa alma se sinta motivada a lhe fazer a tradução ou quiçá a compilação por que não
abç

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

você deve informar ao compilador onde estão os arquivos que ele não achou adcread() e delayms(). É pra isso que serve o #include. Provavelmente está dentro do 12f675.h mas com outro nome

Realmente tem muitos erros e um acerto: você está tentando. No seu caso o switch case (cuja sintaxe está errada, pra variar) não fica bom. Basta uma comparação simples com if

... vejamos...

Vamos tentar aprimorar o que postei com controle de temperatura pelo potenciometro. Basta fazer a leitura de um e de outro e fazer a comparação.

 

temperatura=adc_read(SENSOR);ajuste=adc_read(AJUSTE);if (temperatura>ajuste) aquecimento_ventilacao=0;//desliga resistênciaelse aquecimento_ventilacao=1;//liga ... tem certeza?? mesmo com este CALOR QUE ESTÁ FAZENDO? rs

Como está usando triac não precisa se preocupar com histerese e tal. (não entendi "se potenciometro estiver ente 10 e 90%")

Aqui mais completo...

//incluir cabeçários... #include//definir alguma coisa#define SENSOR 0#define AJUSTE 1#define aquecimento_ventilacao GPIO3#define motor GPIO4//#define HISTERESE 2//definir variáveis globaisunsigned int temperatura,ajuste;unsigned int segundo=0;void main(void)// primeiro: acertar o hw do picfor(; //eternamente{ //iníciotemperatura=adc_read(SENSOR);ajuste=adc_read(AJUSTE);if (temperatura>ajuste) aquecimento_ventilacao=0;//desliga resistênciaelse aquecimento_ventilacao=1;//liga ... tem certeza?? mesmo com este CALOR QUE ESTÁ FAZENDO? rsdelayms(1000);//um segundosegundo++;if (segundo>3600) motor=1;//de hora em horaif (segundo>3610) {motor=0; segundo=0;}//gira motor por 10 segundos} //volta pro início}

Note que não temos o valor em ºC. Apenas o resultado do adcread. É mais do que suficiente pois você não vai mostrar nada em display. Pra verificar o funcionamento, você vai precisar do termômetro.

Poderá haver uma inércia térmica que faz a temperatura passar um pouco do ajustado. Uma função pid (mais complexa) resolveria isso. Mas não é seu momento.

Como vê é triultramegahipersuper simples

Como lhe disse ccs não róla. Se insistir nele, aguarde que alguma boa alma se sinta motivada a lhe fazer a tradução ou quiçá a compilação por que não

abç

Boa tarde Isabela e muito obrigado por me ajudar aqui, mas eu ainda tenho alguns problemas (mas q você com certeza saberá me ajudar a resolver rsss) o sensor varia de 0 400 mV e o potenciômetro de ajuste varia de 0 a 5V, mas preciso que o circuito funcione de 36 a 38ºC, ou seja, com pot todo a esquerda ( 0V) o programa tem q ler 36ºC e todo a direita (5V) 38ºC. Tem como eu definir este limite para ele? E Sobre o potenciometro entre 10 e 90% é porque com ele todo a direita ou todo a esquerda tem q desabilitar a viragem dos ovos. Espero sua ajuda ....

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Tem sim amigo. Mas note a malha 12k 2K 100K. você poderia fazer algo do gênero. De acordo com a matemática dela, o pot varia de 520 a 610mV. To com  preguiça de pensar agora mas você pode ajustar nos resistores. você pode p.ex. alterar o 100K pra 150K o que vai dar 360 a 420mV (pensei só um pouco).

Ahh lembrei... o circuito já está montado. Sem crise. Só fazer umas continhas com o resultado do ad. O bom mesmo é você ver o resultado do ad nestas temperaturas 36 e 38 tipo num display ou debug (não é de comer).  Não dá? Vamos estimar...

 

10mV/ºC ---> 360mV @ 36º

 

ad=1023 @5V
0.36V --->ad=73
0.38V --->ad=77
Portanto você pode dividir o resultado do ad de modo que passe por estas faixas. Vamos xutar e fazer o meio do pot dar 75 (média dos dois). No meio --> ad=511 -->511÷75 = 6.8 ~7

ajuste=adc_read()/7;

esta comparação

if (temperatura>ajuste)

se torna próxima do que você quer

Note-se que mc´s (com pouca memória como o 12f675) não gostam de números quebrados (float) pois isso literalmente quebra ele

Por favor me fale que entendeu e me explique pois eu não sei se está certo e nem eu entendi nada! matemática enferrujada e cérebro derretendo!

 

(Na verdade pra varrer o pot 0...5 como 0.36...0.38 tem mais matemática envolvida. Agora não quero pensar...)

 

desabilitar viragem não estava no orçamento hein...são 2 pots. qual dos 2 é pra isso? aliás pra que serve o outro mesmo?

Tem um lance de impedância que pode zoar um pouco o barraco. Estou esperando uma resposta de um carinha de outro tópico mas melhor não contar com isso. Este momento ainda vai te chegar

Link para o comentário
Compartilhar em outros sites

Tem sim amigo. Mas note a malha 12k 2K 100K. você poderia fazer algo do gênero. De acordo com a matemática dela, o pot varia de 520 a 610mV. To com  preguiça de pensar agora mas você pode ajustar nos resistores. você pode p.ex. alterar o 100K pra 150K o que vai dar 360 a 420mV (pensei só um pouco).

Ahh lembrei... o circuito já está montado. Sem crise. Só fazer umas continhas com o resultado do ad. O bom mesmo é você ver o resultado do ad nestas temperaturas 36 e 38 tipo num display ou debug (não é de comer).  Não dá? Vamos estimar...

 

10mV/ºC ---> 360mV @ 36º

 

ad=1023 @5V

0.36V --->ad=73

0.38V --->ad=77

Portanto você pode dividir o resultado do ad de modo que passe por estas faixas. Vamos xutar e fazer o meio do pot dar 75 (média dos dois). No meio --> ad=511 -->511÷75 = 6.8 ~7

ajuste=adc_read()/7;

esta comparação

if (temperatura>ajuste)

se torna próxima do que você quer

Note-se que mc´s (com pouca memória como o 12f675) não gostam de números quebrados (float) pois isso literalmente quebra ele

Por favor me fale que entendeu e me explique pois eu não sei se está certo e nem eu entendi nada! matemática enferrujada e cérebro derretendo!

 

(Na verdade pra varrer o pot 0...5 como 0.36...0.38 tem mais matemática envolvida. Agora não quero pensar...)

 

desabilitar viragem não estava no orçamento hein...são 2 pots. qual dos 2 é pra isso? aliás pra que serve o outro mesmo?

Tem um lance de impedância que pode zoar um pouco o barraco. Estou esperando uma resposta de um carinha de outro tópico mas melhor não contar com isso. Este momento ainda vai te chegar

Eu entendi sim, mas acredito que não seja linear desse jeito ... mesmo dividindo por 7 ele ainda vai variar de 0 a 71,4º C (se dividir por 13 vai de 0ºC a 38,5ºC), não teria como eu definir o início como sendo o 0V como 36ºC e do jeito que esta ele lerá como 0ºC ....

Sobre o outro Pot ( o da malha 12K -2K_100k) ele varia de 520 a 615mV e era usado como ajuste fino (mas eu não consegui entender como inseri-lo no programa).

Se não der pra mudar o ponto zero via software, vou mudar a malha fisicamente para ter de 360 a 380mV, aí fica certinho o programa.

porém ainda falta definir o outro pot (0 a 5V) (como ele ja esta no circuito) para habilitar ou desabilitar a viragem dos ovos. Se eu usar esta sintaxe vai funcionar?

 

if (segundo >= 3600 && pot_viragem <=127) motor=1;         //de hora em hora se o potenciometro estiver ente 0 e 50%

if (segundo>=3610) {motor=0; segundo=0;}                     //gira motor por 10 segundos

 

Hoje não da pra entrar de novo na net, mas amanha olho se você respondeu e tentamos mais ... se você puder é claro ... Obrigado

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

legal. então você entendeu + que eu kk. Então você pode dividir por 256

ajuste=adc_read()/256;

pra ter 4 steps e fazer um offset 72 (p.ex.)

if (temperatura>(ajuste+72)) ...

será que eu entendi? kk

de fato, na prática e na real, a resolução vai ser de 0.5º mesmo. Pra maior resolução tipo 0.1º você deveria usar outro tipo de sensor ou ampop de precisão pra multiplicar este mesmo. Complica não pow!!

 

Quanto a viragem dá pra fazer uma 'viagem' na fórmula acima. Só que agora não posso pensar. Faça algum progresso aí depois a gente vê. Que tal .. no natal? kk

 

boa viagem!

Link para o comentário
Compartilhar em outros sites

legal. então você entendeu + que eu kk. Então você pode dividir por 256

ajuste=adc_read()/256;

pra ter 4 steps e fazer um offset 72 (p.ex.)

if (temperatura>(ajuste+72)) ...

será que eu entendi? kk

de fato, na prática e na real, a resolução vai ser de 0.5º mesmo. Pra maior resolução tipo 0.1º você deveria usar outro tipo de sensor ou ampop de precisaão pra multiplicar este mesmo. Complica não pow!!

 

Quanto a viragem dá pra fazer uma 'viagem' na fórmula acima. Só que agora não posso pensar. Faça algum progresso aí depois a gente vê. Que tal .. no natal? kk

 

boa viagem!

Entendi sim, e tentei fazer o programa final aqui, mas deu muito erro ... você tinha dito pra não insistir no CCS, mas não sei usar outro ... qual você aconselha ?  Da uma olhada pra mim aqui ...

 

#include "12F675.h"

#define SENSOR=adc_read(0)

#define AJUSTE=adc_read(2)

#define viragem=adc_read(1)

#define aquecimento_ventilacao pin_a5

#define motor pin_a4

unsigned long int SENSOR, AJUSTE, viragem, temperatura;         // de 0 a 65535

unsigned long int segundo=0                                                         // de 0 a 65535

void main()

{

   setup_adc_ports(sAN0|sAN1|sAN2|VSS_VDD);

   setup_adc(ADC_CLOCK_INTERNAL);

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

   setup_timer_1(T1_DISABLED);

   setup_comparator(NC_NC);

   setup_vref(FALSE);

temperatura=adc_read(SENSOR);

pot_viragem=adc_read(viragem);

ajuste=adc_read(AJUSTE)/250;

if (temperatura>ajuste+4718) aquecimento_ventilacao=0;             //desliga resistência - Off-set de 4718 (36º C)

else aquecimento_ventilacao=1;                                                    //liga ...

delayms(1000);                                                                        //um segundo

segundo++;

if (segundo >= 3600 && pot_viragem <=127) motor=1;          //de hora em hora se o potenciometro estiver ente 0 e 50%

if (segundo>=3610) {motor=0; segundo=0;}                             //gira motor por 10 segundos

}                                                                                               //volta pro início

}

 

 

Olha os erros:

post-731290-0-03333800-1421844942_thumb.

post-731290-0-36973700-1421844945_thumb.

post-731290-0-43817700-1421844949_thumb.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!