Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Daniela123

Potenciômetro digital parametrizavel com saida de tensão e decorrente

Recommended Posts

Ola à todos. Estou tentando fazer um potenciometro digital parametrizavel com saida em tensão e em corrente, para meu tcc. Ele deve ter 3 botões, um up, um down, e um select. O up e o down incrementam e decrementam, claro, e o select tem que selecionar, as funções que são senha, velocidade de subida, velocidade de descida, rampa de aceleração, tensão ao ligar, modo de operação e altera senha. Deve tb ser controlado remotamente (ou usa-se a botoeira ou comando remoto). A alimentação é de +ou-15Vcc, e a saida tem que ser selecionavel, pelo modo de operação ente 0 e 10 ou -10 e 0 Vcc. Ja montei no proteus o circuito de chaveamento pra selecionar o modo de operação. Mas estou tendo dificuldade na programação do pic, estou usando o 16f877. Logo que ligo o equipamento ele deve mostrar no display o modo de operação e o valor que ficou setado ao ligar, se aperto o select ele deve pedir a senha pra poder seguir com a parametrizacao. comecei o codigo ele ta incrementando o valor na saida, e esta indo para a senha mas n ta incrementando/ decremtnando a senha. n sei programar bem ainda e so tem 3 meses que to estudando o pic. Fico muito grata se puderem me ajudar.

//            *** Inclusão das bibliotecas ***
#include <16F877.h>
#include <regs_16f87x.h>
//-----------------------------------------------------------------------------------
// *** Configurações do Projeto ***
#use delay(clock=4000000) //informa ao sistema o frequência
//de clock, para temporização
#fuses NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP, NOCPD,NOWRT //palavras de config.
//-----------------------------------------------------------------------------------
// *** Definições do LCD ***
#define lcd_enable pin_e1
//#define lcd_rw pin_e2
#define lcd_rs pin_e0
#define lcd_d4 pin_d4
#define lcd_d5 pin_d5
#define lcd_d6 pin_d6
#define lcd_d7 pin_d7
#include <mod_lcd.c>
//-----------------------------------------------------------------------------
// *** Variáveis globais ***
unsigned int saida; //por ser global a variável pode ser acessada dentro de qualquer função
unsigned int vsenha;
//-----------------------------------------------------------------------------------
// *** Funções ***
void up(void){
// while (!input(PIN_a0)) ; //debounce da chave
if(saida != 0) { // se saida é zero já está no maior passo e pula rotina
saida--; //diminui saída, aumentando o passo
output_b(saida); //saida de bit de controle do pot
}
}
void down(void){
// while(!input(PIN_a1)); //debounce da chave
if(saida != 0xff) { //se saída = 255 ( ff ) já está no menor passo e pula rotina
saida++; //aumenta saída, diminuindo o passo
output_b(saida); //saida de bit de controle do pot
}
}
//-----------------------------------------------------------------------------
void up_senha(void) {
if(vsenha!=0){
vsenha--;
}}
void down_senha(void){
if(vsenha!=0xff){
vsenha++;
}
}
//-----------------------------------------------------------------------------------
// *** Função principal ***
void main(void){
saida=0xff; //pot tem seu valor inicial mínimo
vsenha=0xff;

lcd_ini();

while(1)
{
lcd_escreve('\f'); //apaga display

if(!input(PIN_a0))
{
while (!input(PIN_a0))
{
up(); //chama a função para subir valor se acionada sw1
}
}
if(!input(PIN_a1)) {
while (!input(PIN_a1))
{
down(); //chama a função para subir valor se acionada sw2
}
}
output_b(saida); //saida de bit de controle do pot
printf(lcd_escreve," 0V %u 10V ",saida);

if(!input(pin_a2))
{
lcd_escreve('\f');
lcd_escreve(" Digite a senha ");
printf(lcd_escreve, " %u ",vsenha);
while (input(pin_a2))
{
if(!input(pin_a0))
{
while (!input(pin_a0))
{
up_senha();
}
}
if (!input(pin_a1))
{
while(input(pin_a1))
{
down_senha();
}
}
output_c(vsenha);
// printf(lcd_escreve, " Digite a senha ");
//printf(lcd_escreve, " %u ",vsenha);
delay_ms(3500);
}
}
}
}

Editado por Bcpetronzio
Inserir code

Compartilhar este post


Link para o post
Compartilhar em outros sites

A coisa ai nao é estão simples.Primeiro q pra gerar uma saida de tensão do jeito que quer,poderia optar em usar uma rede r/2r,ou um conversor digital para analogico.A questao da senha você precisa criar a rotina para verificar a senha,e tbem para receber a senha.Prentende usar teclado?

Estamos ai pra ajudar no que precisar.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • oh, Jorge, muito obrigada pela resposta. meu orientador me ajudou no circuito para selecionar o modo de operação para obter os +ou-10V nan saida, mas ainda n fiz a rotina que ira selecionar o modo de operação se é a escala de 0 a 10 ou de 0 a -10, porque o modo de operação deve vir depois da senha. Estou pensando em usar 3 botões push button. um pra up outro pro dwn e outro pra selecionar as funções. gostaria de mostrar o circuito que ja tenho sabe me dizer como? to usando o proteus.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se vai usar apenas estes tres botões,tera q fazer a senha por meio de incrementar ou decrementar as variaveis q compoe a senha e depois verificar.Para uma senha de 4 digitos teria que ter 4 variaveis:var1,var2,var3,var4,cada uma vai de 0a 9, então pode incrementar ou decrementar.Com o botao select você seleciona o numero desejado e automaticamente ele pula para proximo numero,faça um contador q a cada vez q é incrementado muda a seleçao tipo:


    while(contador==1){
    "Entre com senha"
    0_ _ _
    while (contador==2){
    0 0 _ _

    ,ao final dos 4 numeros escolhidos você ira comparar,ficaria tipo assim se usar o if:

     if var1==senha1 e var2==senha2 e var3==senha3 e var4==senha4 
    "Senha correta"
    senao
    "senha incorreta"

    Editado por jorgeletronico

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Gostaria de fazer da seguinte forma: logo que ligar o equipamento o display estara assim: 0V 50% 10V. Indicando que ele estara operando de 0 a 10V e os 50% indica que esta em 5V. Se eu pressionar o up ele incrementa 51% se up de novo 52% e assim por diante, se der down ele decrementa. se der select ele vai para senha e exibe no display: Digite a senha e espera a senha deve ser um numero de 0 a 255 então o usuario pressiona up ou down e chega ate o numero da senha que deve ser comparado com a senha que esta na memoria e se for igual passa para a proxima função. Ate o Digite a senha esta dando certo mas quandpo pressiono o up e down ele n conta a senha entende? e tb ainda n sei guardar na memoria. encontrei umas funçoes write eeprom e read eeeprom não sei se serve ainda. help me!!!:wacko:

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Entendi, para comparar pode fazer assim:

    vamos supor q a senha é o numero 50 e você incrementou a variavel ate chegar nos 50 então fica:


    if(senha==50){
    printf("\f senha correta")
    delay_ms(100);
    }
    if(senha!=50){
    printf("\f Senha incorreta\n redigite")
    delay_ms(100);
    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Ola pessoal. Ainda to na luta no tcc e to termimando o programa eu acho.

    To fazendo uns ajustes, mas ta pegando nessa parte.

    O negocio é o seguinte: enquanto o botão a2 não for pressionado o programa

    fica dentro do laço while então se for pressionado o botão a0: incrementa

    se for pressionado o a1: decrementa e se não for pressinado nem um nem outro por um tempo, volta ao inicio que é L2, e é nesse trecho que ta pegando

    Programei como abaixo so que ele ta preso no último if e ta voltando pro inicio do programa que é L2. Ja percebi isso que ele fica contando o delay_ms(2000) e se tento incrementar ou decremntar não da certo. que faço?

    esse é o trecho que to querendo programar

    while(input(PIN_a2))

    {

    if (!input(pin_a0))vdes++;

    if (!input(pin_a1))vdes--;

    vdes1=(((float)vdes*100)/255);

    vdes2=(int)vdes1;

    Printf (lcd_escreve,"\f Veloc. de descida\n %d%%",vdes2);

    delay_ms(70);

    write_eeprom(3,vdes);

    if ((input(pin_a0))||(input(pin_a1))) {delay_ms(2000); goto L2;}

    }

    me ajude, please

    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






    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

    ×