_SharkBoy_
Membro Júnior-
Posts
9 -
Cadastrado em
-
Última visita
Reputação
0-
Termômetro com pic16f628a e ds18b20 p/ sistema de resfriamento
_SharkBoy_ respondeu ao tópico de _SharkBoy_ em Microcontroladores
Atualizando: Troquei #include <16F877A.h> Por #include <16F628A.h> Agora o Proteus não acusa erro; Mas o projeto não acusa nada quando a temperatura ultrapassa a temp. limite... Voltei a por o LCD e independente da temperatura no ds18b20, é mostrado "-0,5 C" apenas... Qual o erro? -
Termômetro com pic16f628a e ds18b20 p/ sistema de resfriamento
_SharkBoy_ respondeu ao tópico de _SharkBoy_ em Microcontroladores
Calma amigo(a), não fique exaltado, vim numa boa pedir ajuda. Fiquei esse tempo com o projeto parado, agora voltei com tempo livre e ao invés de criar um novo tópico, decidi ressuscitar esse. Enfim... Achei este esquema na net, retirei a parte do LCD e não fiz mais nenhuma modificação para o projeto real. Fui simular no Proteus e: Códigos: main.c #include <16F877A.h> #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NODEBUG //No Debug mode for ICD #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES RESERVED //Used to set the reserved FUSE bits #use delay(clock=20000000) #include <1wire.c> #include <ds1820.c> void alarma(); void main(){ float temperatura; float minimo; float maximo; minimo=26; maximo=28; while (1){ temperatura = ds1820_read(); if (temperatura<=minimo){ output_high(PIN_A1);} if (temperatura>=maximo){ output_low(PIN_A1); alarma();} if (temperatura==minimo){ output_low(PIN_A1);}} } void alarma(){ output_high(PIN_B3); delay_ms(100); output_low(PIN_B3); delay_ms(100);} ds1820.c float ds1820_read() { int8 busy=0, temp1, temp2; signed int16 temp3; float result; onewire_reset(); onewire_write(0xCC); onewire_write(0x44); while (busy == 0) busy = onewire_read(); onewire_reset(); onewire_write(0xCC); onewire_write(0xBE); temp1 = onewire_read(); temp2 = onewire_read(); temp3 = make16(temp2, temp1); result = (float) temp3 / 2.0; //Calculation for DS18S20 with 0.5 deg C resolution // result = (float) temp3 / 16.0; //Calculation for DS18B20 with 0.1 deg C resolution delay_ms(200); return(result); } 1wire.c // (C) copyright 2003 j.d.sandoz / jds-pic !at! losdos.dyndns.org // released under the GNU GENERAL PUBLIC LICENSE (GPL) // refer to http://www.gnu.org/licenses/gpl.txt // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA /***********************1Wire Class***********************/ /*Description: This class handles all communication */ /* between the processor and the 1wire */ /* sensors. /*********************************************************/ /*-------1-wire definitions-------*/ #define ONE_WIRE_PIN PIN_A0 /*******************1-wire communication functions********************/ /************onewire_reset*************************************************/ /*This function initiates the 1wire bus */ /* */ /*PARAMETERS: */ /*RETURNS: */ /*********************************************************************/ void onewire_reset() // OK if just using a single permanently connected device { output_low(ONE_WIRE_PIN); delay_us( 500 ); // pull 1-wire low for reset pulse output_float(ONE_WIRE_PIN); // float 1-wire high delay_us( 500 ); // wait-out remaining initialisation window. output_float(ONE_WIRE_PIN); } /*********************** onewire_write() ********************************/ /*This function writes a byte to the sensor.*/ /* */ /*Parameters: byte - the byte to be written to the 1-wire */ /*Returns: */ /*********************************************************************/ void onewire_write(int data) { int count; for (count=0; count<8; ++count) { output_low(ONE_WIRE_PIN); delay_us( 2 ); // pull 1-wire low to initiate write time-slot. output_bit(ONE_WIRE_PIN, shift_right(&data,1,0)); // set output bit on 1-wire delay_us( 60 ); // wait until end of write slot. output_float(ONE_WIRE_PIN); // set 1-wire high again, delay_us( 2 ); // for more than 1us minimum. } } /*********************** read1wire() *********************************/ /*This function reads the 8 -bit data via the 1-wire sensor. */ /* */ /*Parameters: */ /*Returns: 8-bit (1-byte) data from sensor */ /*********************************************************************/ int onewire_read() { int count, data; for (count=0; count<8; ++count) { output_low(ONE_WIRE_PIN); delay_us( 2 ); // pull 1-wire low to initiate read time-slot. output_float(ONE_WIRE_PIN); // now let 1-wire float high, delay_us( 8 ); // let device state stabilise, shift_right(&data,1,input(ONE_WIRE_PIN)); // and load result. delay_us( 120 ); // wait until end of read slot. } return( data ); } -Esquema em anexo- -Códigos compilados usando PICC, sem erros acusados- Sei que pode ser erro besta, mas reafirmo que sou iniciante na eletrônica. Alguém poderia dar uma luz? -
Olá pessoal! Tenho experiência com Pascal e Php, mas sou pouco experiente com a linguagem C (ainda mais orientado à eletrônica ), e peço a ajuda de vocês para o seguinte projeto: Necessito de fazer uma "interface" do sensor com o Pic para ativar um sistema de resfriamento com um motor DC após a temperatura >= X graus Celsius. Ativar o motor eu já consegui fazer usando o Pic, o meu problema é justamente tratar os dados vindos do sensor pra depois fazer a verificação de temperatura... Procurei por projetos para tentar me orientar, mas todos que encontrei são para outras finalidades (usando lcd, coisa que eu não preciso), daí fico perdido devido à mistura das funções no código... Alguém poderia me ajudar/orientar? (Obs: Estou usando MikroC) Valeu!
-
Opa! Cheguei a simular no proteus, funcionou com os botões ligados ao GND
-
Pessoal! Justamente por conta do risco de ligar os transistores errados, acho que vou usar o CI L293D! Achei o esquema anexado num site... Peço que me digam se vai dar certo com este esquema Ah! e antes que eu me esqueça... precisa realmente usar 12V naquela entrada do L293D? Ou pode ser 5V tambem?
-
Olá! Obrigado aos dois por respondem Mais Enfim, eu tinha lido algo sobre o L298, e já tinha estudado o fato de queimar os transístores acionasse os dois sentidos Então no meu caso, ficaria melhor usar a ponte, ou o L298? Como ficaria a ligação? Obrigado
-
Então bastará ligar o vcc 5v na ponte no vcc do ht ; E conectar os resistores 10k na base dos emissores? Desculpa incomodar, é que sou iniciante e quero ter certeza doq estou fazendo
-
Opa! Primeiramente, obrigado por me responderem Mas sou meio iniciante kk Bom, pelo que eu entendi, então basta usar a mesma fonte de energia nas pontes e no módulo receptor? É que eu tô meio na dúvida rs Se puderem dar mais exemplos ou me passarem o esquema (sou folgado Kkk) eu agradeço E mais uma vez, obrigadão!
-
Olá galera! Bom, estou querendo fazer um controle remoto simples de 4 canais, usando os famosos HT12E e HT12D como enconder/decoder. Vou usar para controlar um carrinho de controle remoto (ou seja, 2 motores DC), para obter as funções: Frente, Trás, Esquerda, Direita. O que eu estava pensando é fazer duas pontes H com transistores do tipo BC para fazer a função do motor trocar de sentido de giro quando apertado solicitado, tendo em vista, esse esquema: No controle: Botão 1 - Frente Botão 2 - Trás Botão 3 - Esquerda Botão 4 - Direita No receptor: Saídas 1, 2, 3, 4 ligadas nas pontes H Pra vocês entenderem melhor, é mais ou menos o que tá no esquema anexado. (Desculpa ae pelo amadorismo, tava sem tempo fiz no paint ) Bom, alguem me dá uma luz! Daria certo?
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