Ir ao conteúdo
  • Cadastre-se
ianfreitas

12F629 + DS 1307

Recommended Posts

Gostaria que alguém me desse ajuda com o programação em C para este circuito.

 

PIC 12F629 E DS 1307

 

gostaria que uma carga fosse  ligada e desligada num horário definido já na programação, que puder me ajudar desde já agradeço.

post-570998-0-62298700-1446045991_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Neste código o PIC pega a data e o horário do DS1307 e faz nada com os valores ^_^ (se comparado com o seu esquemático eu inverti o SCL e o SDA)



#include <12F629.h>

#FUSES PUT //Power Up Timer
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES NOWDT
#FUSES INTRC_IO

#use delay(clock=4MHz)

#use I2C(master, scl=PIN_A0, sda=PIN_A1, slow)
// I2C Mestre, 100KHz (slow)

#define LED PIN_A5
#define DELAY 500

#include<DS1307.c>

void main()
{
unsigned int segundo, minuto, hora, dia, mes, ano, dia_da_semana;

while(true)
{
ds1307_set_date_time(10,9,15,7,5,46,13);
// Atualiza o DS1307 para data 10/09/2011 (domingo - 7)
// e a hora para 05:46:13
// Atualizar apenas uma vez, a bateria manterá o DS1307 contando o tempo.

ds1307_get_date(dia, mes, ano, dia_da_semana);
// Lêa o dia mês e ano do DS1307

ds1307_get_time(hora, minuto, segundo);
// Lê a hora minuto e sefgundo do DS1307

output_low(LED);
delay_ms(DELAY);
output_high(LED);
delay_ms(DELAY);
}
}


Tenho uma biblioteca pra o DS1307 mas foi feita para barramentos I2C com mais de um mestre (gasta mais memória) então resolvi usar esta aqui: https://www.ccsinfo.com/forum/viewtopic.php?t=23255

 

Download do código (CCS 5.046) e do arquivo para simulação no proteus (7.10):


 

Edit: O DS3231 possui um oscilador interno e é mais preciso, além disso ele possui 2 alarmes (se não me engano) assim o PIC poderia ficar de boa e só executaria algo quando o DS3231 gerasse o pulso de alarme... Ele também possui um sensor de temperatura  :lol:

 

Tenho um DS1307 (do ebay) que adiantou 7~8 minutos em uma semana (mesmo eu tendo retirado o circuito de recarga da bateria), sei que o problema é com o oscilador, mas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@test man*~ a culpa não é do ds e sim do cristal. Óbvio d+? @ianfreitas vá por partes. 1º aprenda a ler e escrever no ds. Sugiro simular no proteus 1º. Com este circuito você vai ter um pouco de dificuldade em programar os horários e hora. Sugiro um mc com mais portas e um display qualquer

Compartilhar este post


Link para o post
Compartilhar em outros sites
@Isadora Ferraz Sim, por isso sugeri o DS3231 pois ele possui Crystal interno com compensação de temperatura assim as chances do Crystal ser de má qualidade (igual ao que veio junto com o meu DS1307) é menor :) ...

 

Eu acho que o @ianfreitas já está bem familiarizado com o DS1307, repare este tópico:


Ele disse que não possuía a biblioteca mas talvez ele achou que ela só poderia ser usada com o PIC18F2550... A biblioteca usada naquele tópico foi retirada do mesmo lugar da que foi postada aqui. :lol:  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pelas respostas" test man " e " isadora ferraz " .

 

 test man = primeiramente mil  desculpas a biblioteca eu realmente tenho, mais tudo que faço e Ctrl+c e Ctrl+v e mudo umas linhas código de lugares uso como base o circuito de Matheus LPS. SEI MUITO POUCO QUASE NADA DA PROGRAMAÇÃO,realmente pensei que só fosse funcionar para 18F2550. Pois tentei fazer com outros Pics e não deu certo.

Só aprendi mais programação em C porque sou teimoso e curioso e tenho muita força de vontade. Se observar esse tópico foi aberto a alguns anos atras mais só agora consegui termina-lo.

Essa e uma maneira que tenho de aprender um pouco com vocês.(preguntando pois não tinha dado certo com ele 12F629)

 

isadora ferraz = a dica foi muito boa, mais a importância desse projeto é acender determinada hora e apagar em determinada hora " SIMPLICIDADE " as vezes suas respostas são tão boas alias são boas demais agora sei porque meu DS tava atrasando vou tentar mudar o cristal só não desconfiava dele, pensava que fosse programação. 

 

AGRADEÇO A VOCÊS DESDE JÁ.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

ian agradeço as gentis palavras. Se achar que deve, informe como pretende programar o horário com aquele circuito. Estou com dificuldade em visualizar isso nele como está. Está no caminho minimalista certo. Pequenos frascos, melhores perfumes...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

primeiramente mil  desculpas a biblioteca eu realmente tenho

 

Que isso cara, sem problemas =)

 

sou teimoso e curioso e tenho muita força de vontade.

 

Eu também UHauHauHauhUAHuHAuhA...  :D
 
Quebre a cabeça ai, qualquer coisa poste aqui que tentarei ajudá-lo... Se você tiver problemas com a comparação do horário para acionamento da carga tente convertê-lo para segundos, tipo:
Carga será acionada de 07:04:58 à 07:05:02 (horário fixo como você quer)07:04:58 = 25498 segundos 07:05:02 = 25502 segundos Assim: if((horario_atual_segundos >= 25498) && (horario_atual_segundos <= 25502)) {   liga_carga}    else {      desliga_carga      }
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×