Ir ao conteúdo
  • Cadastre-se

Usar (provavelmente) ECCP


hegaja

Posts recomendados

Olá,

Estou com problemas para arrumar uma solução para a seguinte pergunta:

De acordo com o valor do potenciômetro, acender o LED7 de acordo com um ciclo de trabalho que varia de um período mínimo a um período máximo de acendimento e, que ao lê a tensão como sendo de 2,5 V, o tempo de acendimento corresponda a um ciclo de trabalho de 50% (no qual o tempo aceso é o mesmo do tempo apagado).

Estou utilizando o PICKIT3 e programo com o CCS. Nunca fiz algo semelhante e minhas buscas estão sendo em vão. Sei fazer os LEDs aumentarem sua velocidade de oscilação do 0 até o 7 ou fazer eles irem acendendo em sequência (igual ao volume da TV) ou mudar a velocidade em que eles piscam tudo em função do potenciômetro.

Porém eu realmente não tenho noção de como fazer o que está sendo pedido. Se alguém puder indicar assuntos ou passar algum exemplo que faça algo semelhante ficarei muito grato! Visualizar algum código disso ajudaria imensamente.

PS: Sim, não botei nenhum código pois não tenho código feito para esse problema... :(

Link para o comentário
Compartilhar em outros sites

O exercício quer que você mude o brilho do LED de acordo com a posição do potenciometro.

Sabe o que seria o PWM? Não?

Veja: O que é o PWM?

O programa que você deseja fazer é bem simples.

Você precisa ler a tensão no pino central de um potenciometro e transferir esse valor lido a uma variável que controla o ciclo de trabalho do PWM qua alimenta o LED.

Você precisa saber sobre o PWM antes!!!

Quando você souber do PWM, entenderá perfeitamento o enunciado do exercício.

Tenho aqui um programa pronto que faz exatamente o que você deseja.

mas vou deixar você estudar primeiro e ir postantando as dúvidas. Aí vou respondendo.

Dica: Você irá utilizar somente o canal AD do PIC e o módulo CCP.

Falou

Link para o comentário
Compartilhar em outros sites

Olá,

Dei uma lida no material (que é uma ótima fonte) e percebi do que se trata a questão. Eu tinha entendido que quando o potenciômetro está no máximo o LED fica muito tempo aceso e pouco tempo apagado, quando ele vai sendo abaixado ate ficar na metade o LED fica piscando em tempos iguais (apagado e aceso) e quando vai para o mínimo ele fica muito tempo apagado e acende bem rápido. Infelizmente a questão foi mal elaborada, dá um certo trabalho de entender. Após ler o material ficou mais claro que ele está se referindo à frequência do PWM resultando no controle do brilho do LED. Com isso em mente farei o código.

Link para o comentário
Compartilhar em outros sites

... ate ficar na metade o LED fica piscando em tempos iguais (apagado e aceso)

Isso mesmo. Esse ponto aí seria os 50% do enunciado.

Após ler o material ficou mais claro que ele está se referindo à frequência do PWM resultando no controle do brilho do LED. Com isso em mente farei o código.

você entendeu perfeitamente como funciona o PWM. Só essa última frase sua que você confundiu (parte que está em negrito acima).

Na verdade a frequencia fica fixa. O que muda é o tempo ON e OFF. A relação (divisão) entre o TEMPO ON e o tempo total (ON + OFF) é chamada de ciclo de trabalho.

você divide os dois e multiplica por 100. Aí você tem a potencia média na carga.

Como eu disse, você compreender certo o funcionamento do PWM, só não se esqueça que o acender e apagar acontece muito rápido. Dessa forma, você não vê isso. Apenas sabe como funciona.

Tem um tópico que ajudei um membro a um tempo atrás: http://forum.clubedohardware.com.br/motor-pwm-pic/857314

Lá tem alguns trechos de código.

Qualquer dúvida, só perguntar.

Falou

Link para o comentário
Compartilhar em outros sites

Olá,

Eis que surge uma dúvida selvagem (talvez simples).

A pinagem de saída está para o C1 e C2 que são o CCP2 e CCP1 respectivamente (no meu PIC), quero saber como fazer pra em vez de ser nessa porta esse PWM ir para alguma outra saída, acredito que seja possível essa mudança via código.

Link para o comentário
Compartilhar em outros sites

Então, quando eu comentei que dá para fazer via software, não seria apenas mudar o pino de saída do C1 para o D7.

Ao invés de usar o hardware próprio do PIC para gerar o PWM ( que é mais fácil e mais robusto), teríamos que criar um PWM totalmente via software utilizando uma interrupção. Seria um código totalmente diferente.

Mas se você realmente precisa que seja no D7, dá pra fazer. Mas dessa forma, o módulo CCP não será usado.

Falou

Link para o comentário
Compartilhar em outros sites

tem como fazer com amplificadores operacionais de forma, que funcione como comparador. tipo o potenciômetro em paralelos com os resistores tipo 7 volts coloca sete resistores e na saída faz uma tabela verdade com as saida. pois eu fiz isso mas com nível de água de uma. é mais ou menos isso...

Link para o comentário
Compartilhar em outros sites

O pino RD7 é a saida ECCP1 canal D.

Leia o Datasheet,principalmente a página 131.

Na primeira atividade eu ainda olhava o datasheet porém deixei de lado depois e apenas olhava o esquemático do PICKIT (que oculta essa informação).

Por ser o PICKIT3,voce não deveria estar programando em C18,que é mais aconselhável ?

Rapaz, ai eu já não sei te dizer. Eu aprendi com CCS há um bom tempo e o prof também utiliza essa linguagem, então vou me manter nela :D

Use o módulo avançado ECCP.

É o que eu estou tentando descobrir agora :)

tem como fazer com amplificadores operacionais de forma, que funcione como comparador. tipo o potenciômetro em paralelos com os resistores tipo 7 volts coloca sete resistores e na saída faz uma tabela verdade com as saida. pois eu fiz isso mas com nível de água de uma. é mais ou menos isso...

WTF??

Link para o comentário
Compartilhar em outros sites

É o que eu estou tentando descobrir agora

Poderia estar sem essa dúvida.

A Microchip fornece para essa placa todos os Frameworks e rotinas compiladas e códigos para compilar,voce ja estaria aprendendo de uma vez so a usar todos os módulos corretamente.

O pacote se chama Microchip solutions,caso futuramente queira se aprofundar.

Existem muitos cursos que usam CCS pois tanto o professor quanto o aluno ja saem compilando códigos facilmente,mas desde que sejam rotinas comuns.

quando começa a se aprofundar,voce tem que programar suas prórprias rotinas mas como ja acostumou a usar as libs do CCS,fica perdido ,como no seu caso.

Provavelmente seu professor ja tem um código.

Link para o comentário
Compartilhar em outros sites

Vou te dar um código para habilitar o PWM no pino D7. Tente adaptá-lo ao seu projeto.

#include <18F45K20.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

#use delay (clock=4000000)

void main ()
{
setup_timer_2(T2_DIV_BY_16,200,1);
setup_ccp1(CCP_PWM|CCP_PULSE_STEERING_D);

output_drive(PIN_D7);

set_pwm1_duty(100);

while (true);
}

Falou

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!