Você está esquecendo de tomar seus remédios na hora certa? Esta montagem pode ajuda-lo! …
A idade chega e os remédios também! Esquecer de tomar os medicamentos na hora certa pode comprometer o tratamento. Por isto, esta montagem, com 8 alarmes que podem ser programados para as horas de tomar seu medicamento, poderá ajuda-lo. Veja o esquema abaixo:
Foi usado um PIC 16F628A para monitorar os tempos, com um programa relógio rodando em sua flash. O tempo de um segundo é gerado pela interrupção do timer 0, usando o método de acumulo de erro (Bresenhan). Para programar os horários de alarmes, usamos 2 interruptores nomeados de SW1 e SW2. A medida que apertamos estes interruptores, entramos em um menu, que passo a passo, programamos a hora, minutos e depois todos os 8 alarmes.
Segue agora, o passo a passo para entrar na função ‘MENU’ e realizar a programação:
Aperte o interruptor SW1 por mais de 1 segundo para entrar em modo de programação.
Deverá aparecer a letra “A” e a hora atual do relógio. Use o interruptor SW2 para ajustar o valor desta hora.
Apertando o interruptor SW1 irá mudar para o próximo ajuste.
Segue o que corresponde aos ajustes:
A = ajuste de horas do relógio
B = Ajuste dos minutos do relógio
C = liga/desliga todos os alarme (chave geral)
D = liga/desliga o alarme 1
E = Se o primeiro alarme estiver ligado, ajusta horas do alarme 1
F = Se o primeiro alarme estiver ligado, ajusta minutos do alarme 1
G = liga/desliga o alarme 2
H = Se o alarme 2 estiver ligado, ajusta horas do alarme 2
I = Se o alarme 2 estiver ligado, ajusta minutos do alarme 2
J = liga/desliga o alarme 3
L = Se o alarme 3 estiver ligado, ajusta horas do alarme 3
M = Se o alarme 3 estiver ligado, ajusta minutos do alarme 3
N = liga/desliga o alarme 4
O = Se o primeiro alarme estiver ligado, ajusta horas do alarme 4
P = Se o primeiro alarme estiver ligado, ajusta minutos do alarme 4
Q = liga/desliga o alarme 5
R = Se o alarme 5 estiver ligado, ajusta horas do alarme 5
S = Se o alarme 5 estiver ligado, ajusta minutos do alarme 5
U = liga/desliga o alarme 6
Z = Se o alarme 6 estiver ligado, ajusta horas do alarme 6
Y = Se o alarme 6 estiver ligado, ajusta minutos do alarme 6
A.= liga/desliga o alarme 7
B.= Se o alarme 7 estiver ligado, ajusta horas do alarme 7
C.= Se o alarme 7 estiver ligado, ajusta minutos do alarme 7
D.= liga/desliga o alarme 8
E.= Se o alarme 7 estiver ligado, ajusta horas do alarme 8
F.= Se o alarme 7 estiver ligado, ajusta minutos do alarme 8
G.= Seleciona toque do alarme por apenas um minuto (temporizado, aparece a letra “P”) ou direto (aparece a letra “d”, necessitando-se apertar qualquer um dos interruptores para parar o alarme)
Em função normal, apertando SW2 quando estiver mostrando minutos/segundos por
mais de 1 segundo irá zerar os “segundos” do relógio. Isto serve para sincronizar os segundos com um relógio padrão, ao acertar as horas e minutos.
Dicas:
1) Para usar display comum e obter o efeito de 2 pontos comum aos relógios, monte o display K1 de ponta cabeça, trocando os seguimentos:
‘a’ por ‘d’, ‘b’ por ‘e’ e ‘c’ por ‘f’, mantendo ‘g’ e ‘p’.
2) Procure usar um xtal de baixa tolerância na frequência, se possível abaixo de 30 ppm e desvio por temperatura menores que 50 ppm para obter uma precisão razoável no tempo. Excelente precisão somente é conseguida com o uso dos TCXO (Oscilador de cristal compensado em temperatura). Caso disponha apenas de cristais de 4 Mhz comuns, experimente vários até que encontre um que não atrase ou adiante muito.
O circuito poderá ser alimentado por uma fonte chaveada de 5 volts, destas usadas em carregador de celular USB de 5 Volts de saída. Poderá também ser feita com fonte com transformador (9+9, 110/220), com retificadores, capacitores de filtro, regulador 7805. Ou ainda usar 4 pilhas AA de 1,5 Volts em série com um diodo 1N4007 para obter 5,3 Volts.
Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Breadboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.
Segue pasta zipada com os arquivos da montagem:
Adicionalmente, em 20/04/2017 foi postada esta pasta com versão que permite escolher o tipo de display (cátodo ou ânodo comum):
Manuais:
PIC16f628a
Curiosidades:
Coleta da água da chuva — métodos antigos e modernos
Cerveja — a história da bebida dourada
Gramíneas — plantas de primeira necessidade
Blini russo — mais do que uma simples panqueca
Al-Khwarizmi
A reconstrução da Biblioteca de Alexandria
Outros assuntos:
Como cuidar de um parente com uma doença terminal
O que aprendemos da menor letra hebraica?
Por que as pessoas morrem?
Um paraíso na terra — sonho ou realidade?
Vídeos:
Como ganhar mais liberdade?
Você Pode Ter uma Família Feliz!
Como enfrentar o bullying sem partir para a briga
Quem é o Autor da Bíblia?
Será que é amor ou paixão?
Tenha mais paciência
Fale a verdade
Eu me cansei das religiões
Até o próximo artigo!
Olá Cláudio! Muito boa essa montagem do despertador, vou montar em breve.
Mas venho aqui te perguntar uma coisa:
Já montei vários projetos seus usando os controles remotos, tanto os Infras, quanto os de RF e funcionam muito bem. Mas minha dúvida agora é com este projeto:
http://picsource.com.br/archives/5087/
No caso aí estou usando a versão que eu mesmo modifiquei para usar os controles com padrão NEC (não tenho nenhum Sony aqui), funciona muito bem.
Só que quero fazer uma modificação:
No PIC tem 5 pinos sobrando, e nesses pinos eu pretendo colocar botões (push-botton) para ativar as saídas no modo retenção. Vou usar apenas 5 saídas em modo retenção, as outras 3 não serão usadas.
Então funcionará assim: posso ligar ou desligar a carga tanto pelo controle quanto pelo botão.
Eu estava tentando modificar o código, mas não entendi qual linha devo chamar usando por exemplo:
if (!input (botao1)) {linha a qual chamo para ativar/desativar uma saída}
O nome botao1 foi configurado lá em cima junto as outras entradas como:
#define botao1 pin_a1 //por exemplo
Isso dá certo? Ou teria que fazer um segundo código só para rodar essas entradas no modo retenção?
Imagino que elas nem precisam da programação do controle, já que vão atuar diretamente nas saídas.
Olá Renato2301!
O programa original é um pouco complicado porque tem as opções de programação para retenção e pulso. Existem vários flags que devem ser ora setados ora resetados para funcionar corretamente, além das operações da eeprom. Não sei como foi feita a sua modificação, se houve alguma simplificação, portanto não saberia informar quanto as mudanças. Mas, poderia mudar os tris das atuais saídas para entrada, e tentar fazer da forma que disse colocando no código algo como:
if (!input (botao1)) { s1=!s1;}
………….
if (!input (botao5)) { s5=!s5;}
e testar para ver o que acontece. Talvez possa acontecer algum conflito com a operação do IR, com alguma flag de trava ou talvez não.
As modificações são por sua conta e risco.
Cláudio
Olá (de novo!)
Testei essa linha que você mencionou e funcionou perfeitamente.
Tanto faz eu ligar pelo controle, desligar pelo botão e vice versa que funciona sem conflitos.
O meu código é para controle NEC é o mesmo que você usou no artigo que usa PIC12F675 e contém 4 canais, o que eu fiz foi ampliar para 8 e alterar alguns valores para que funcionasse no PIC16F628A.
Olá Renato 2301!
Que bom que deu certo! Parabéns pela sua persistência!
Boas montagens!
Cláudio
Olá Claudio montei este relogio e ele esta funcionando a contento ,o que me deu trabalho foi achar um xtal de 4mhz que fizesse o relogio trabalhar legal ,aprimeira vez me montei usei um xtal de 3pinos daqueles que tem capacitor embutido ,porem o relogio adiantou cinco minutos de um dia para o outro .Achei muito estranho adiantar tanto assim ai então resolvi experimentar um xtal diferente e usei um xtal de metal de dois pinos com capacitor externo ,usei o mais proximo de 30pf conforme indicado no seu esquema ,e após feitas estas mudanças o relogio esta funcionando muito bem ele esta alguns segundos atrasado comparando com o relogio do celular .