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.
tcc

Fazer Motor girar 3 vezes ao dia e pic 16F877A

Recommended Posts

Boa noite. preciso fazer um motor girar 3 vezes por dia (8 em 8 horas).

creio que usarei um motor de passo ou servo, correto?

preciso fazer um programa em C++ porém sou novato na programação...

e muito difícil fazer isso? se nao, podem me ajudar?

obrigado.

Editado por Bcpetronzio
Colocar letra maiúscula no inicio do título

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica difícil assim amigo,qrer fazer uma coisa ,sem compreender ela,mais tamos ae pra ajudar.Bom.... comoo assim girar cara,diz ficar funcionando de 8 em 8?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom antes de mais nada nao pensem que eu quero que vocês façam o trabalho por mim, muito pelo contrario EU quero aprender. porém sou novato... eu apenas fiz um led piscar e ainda usando assembler "/ quero aprender c++, estou seguindo umas apostilas ai e to aprendendo varias coisas. porém eu ainda nao tenho ideia de como fazer um motor girar.

tenho um certo conhecimento em eletronica esou cursando 3ºsemestre de eletrotecnica.

A minha ideia é de um alimentador de aquario. ele ira alimentar 3 vezes por dia, ou seja de 8 em 8 horas.eu preciso que o motor de 1 volta completa , porque com o dispositivo que eu montei sera o suficiente para cair o alimento para os peixes.

qualquer dica e tipo de ajuda sera bem vinda. = ]

obrigado abraço

Editado por tcc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que seria possivel usar um motor DC simples, mas não sei como projectaste o alimentador. Pôr o motor de passo a funcionar com PIC é fácil o difícil é encontrar a sequência correcta dos 4 fios das bobinas, visite o site ROGERCOM. Quanto à programação necesseitas criar um sequenciador (registrador) de 4 bits, se conseguiste acender um led então podes acender 4 em sequencia um à um. Depois substitui o os leds pelo motor e testa quantas sequencias são necessarias para completar uma volta. A velocidade da sequencia define a velocidade do motor e não pode se inferior a 10ms.

Não programo em C, mas em assembly seria assim:

START

BSF PORTB,0
CALL DELAY
BCF PORTB,0
BSF PORTB,1
CALL DELAY
BCF PORTB,1
BSF PORTB,2
CALL DELAY
BCF PORTB,2
BSF PORTB,3
CALL DELAY
BCF PORTB,3

DECFSZ VEZES
GOTO START
RETURN

Crie um relogio no mesmo programa e a cada 8h entra na rotina "START" que deve ser repitida varias vezes (definida pela variavel "VEZES") até completar uma volta completa.

Editado por LEOPUENA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado, mas se alguem puder me mostrar a base de um programa em C seria melhor...em relaçao ao motor também acredito que um DC daria certo,gostaria de um auxilio em qual kit comprar pois eu usei o do meu professor, que era um kit microgenios com pic 16f877a custa em torno de uns 70 reais. se puderem dar uma dica de qual comprar e aonde comprar (mais barato possivel) eu agradeço.

Eu vou estar treinando mais aqui com as apostilas de C++ ate ficar bom para desenvolver o programa.Ainda terei muitas duvidas e conto com vocês = ]

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Muito obrigado, mas se alguem puder me mostrar a base de um programa em C seria melhor...em relaçao ao motor também acredito que um DC daria certo,gostaria de um auxilio em qual kit comprar pois eu usei o do meu professor, que era um kit microgenios com pic 16f877a custa em torno de uns 70 reais. se puderem dar uma dica de qual comprar e aonde comprar (mais barato possivel) eu agradeço.

Eu vou estar treinando mais aqui com as apostilas de C++ ate ficar bom para desenvolver o programa.Ainda terei muitas duvidas e conto com vocês = ]

Abraço!

eita, o pic nao custa 70 reais nao velho.. eu comprei um ontem... e ele estava 28, comprei em Londrina, na sonkey, acho que eles fazem entrega tambem, mas ainda acho que você acha por ai mais barato velho.

então, quanto ao motor, da pra usar sim, um motor dc comum, só que você precisa de um controlador, e esse controlador tem que ser ligado conforme o comando C.

vou dar uma pesquisada aqui, aí assim que eu conseguir me aprofundar mais eu te passo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

então amigo mas esse pic ai que voce ta falando é so o pic né? porque o que eu to falando é uma plaquinha da microgenios com os leds com botões um pequeno display e a sainda usb...Confirma isso pra mim...

Obrigado abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha sugestão é que tu use algum tipo de chave fim de curso que identifique uma volta completa de um motor DC comum ou utilize algum timer do pic se você souber o tempo que ele demora para dar uma volta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o mais fácil é ver o tempo que o motor demora e fazer a contagem de tempo no programa mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me corrijam se eu estiver errado, mas para 8 horas acho que seria nescessario um real time clock

Compartilhar este post


Link para o post
Compartilhar em outros sites
Me corrijam se eu estiver errado, mas para 8 horas acho que seria nescessario um real time clock

se for pra ativar em horários específicos sim, é preciso um RTC, mas se for só pra alimentar de 8 em 8 horas não acho que seria necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei como é o sistema de alimentação que você fez, mas mas com base em alguns que existem no mercado, se o motor não for muito preciso após um determinado número de alimentações, o alimentador passará a alimentar em horários errados, e talvez até trancar com comida.

Acho que o melhor é utilizar um motor de passos.

Podes por exemplo utilizar um clock de 1Hz, e faça uma contagem. Quando a contagem chegar em 28800 (8*3600), reinicie a contagem e dê uma volta completa no motor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar um drive de CDROM velho e fazer um atuador para empurar a comida, o que disse do RTC é que não sei Timer do PIC da para configurar um intervalo de tempo grande como 8 horas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

rafael.luc

Talvez eu esteja cometendo algum engano, mas até onde sei não se consegue um intervalo muito grande não.

Por exemplo, com o PIC18F4620 que tenho usado, configurando o oscilador interno para 125KHz, o TIMER0 para 16 bits e utilizando o prescaler 1:256, e utilizando interrupções, o maior tempo que se consegue é 536,86272 segundos (pouco menos de 9 minutos). Para conseguir tempos maiores pode ser feito um contador, conta n vezes ate 536,86272.

Lógico, que quanto maior o tempo, menor será a precisão da contagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é galera agora realmente nao sei como vou fazer... mas como eu ainda estou no começo( nem comprei as coisas ) quando eu chegar nesse parte agente volta a discutir isso.se alguem tiver um programa parecido em C e puder me enviar eu agradeço

Abraço!

Editado por tcc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo, antes de você fazer o programa, você precisa saber como teu circuito vai operar. Tua aplicação é muito específica. Você precisa decidir em primeiro lugar, qual é o motor que tu vai utilizar. Teu projeto é baseado nisso, em controlar o motor. Vários colegas aqui deram dicas de motores. Eu particularmente acho que motores de passo mais complicados pra essa tua aplicação, pois requer um circuito mais elaborado (diodos pra evitar que a carga das bobinas se descarregue no circuito por exemplo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum...fariamos um relogio usando timer 1,ele é bem preciso ,uso um relogio assim feito com ele ,teriamos um laço deste tipo:

se hora1 >q x e < q y

ativa motor x segundo para

se hora >y e <Z....... pegou a logica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você ter uma base, primeiramente leia e entenda este artigo sobre motores de passos:

http://www.rogercom.com/pparalela/IntroMotorPasso.htm

Considere os pinos D0, D1, D2 e D3 da porta paralela. Associe-os a 4 pinos de saída do seu PIC.

Por exemplo, D0=RB0, D1=RB1, D2=RB2 e D3= RB3

Para o motor utilizado no rogercom, é preciso 48 passos para uma volta

O código em C:

Não sei que compilador vais utilizar, eu utilizo o C18 da própria Microchip, e a maioria do pessoal que vejo aqui no fórum utiliza o CCS.

Pelo que ja entendi do CCS, eu faria algo assim:

//////////////////

#include<16f877a.h>

#include<stdio.h>

#use delay(clock=4000000)

#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOMCLR,NOLVP

int posicao=0;

main()

{

for ( ; ; )

{

delay_ms(28800000);

for (passos=0; passos==48; passos++)

{

switch (posicao)

{

case 1: output_high(PIN_B0); output_low(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); posicao=2; break;

case 2: output_low(PIN_B0); output_high(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); posicao=3; break;

case 3: output_low(PIN_B0); output_low(PIN_B1); output_high(PIN_B2); output_low(PIN_B3); posicao=4; break;

case 4: output_low(PIN_B0); output_low(PIN_B1); output_low(PIN_B2); output_high(PIN_B3); posicao=1; break;

}

delay_ms(10);

}

}

}

Como já disse não uso o CCS, e pelo C18 é mais complicado ao meu ver, então fiz apenas uma base. Acredito ter erros nas configurações e/ou código. Não sei se essa função delay_ms é precisa.

Acredito que entendendo o funcionamento dos motores de passos, a logica utilizada no programa, e alguma pesquisa sobre PIC para entender melhor como funcionam, consiga fazer seu próprio programa. E talvez utilizando Timer e interrupções.

Acredito ser um dos jeitos mais simples para se fazer isto, mas não posso dizer se é muito confiável.

Espero que alguem que utilize o CCS corrija algum erro.

espero que ajude e nao ter postado nada muito errado.

Editado por rafael_kl

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pode usar um drive de CDROM velho e fazer um atuador para empurar a comida

Como tens pouca experiencia nisso o ideal seria usar um motor de efeito pistão, assim não terias que te preocupar com rotação, tempo para 360º ou sensores de fim de curso. Usando um pistão seria mais simples porque podes adaptar varios tipos de motores para isso, por exemplo o drive que o rafael falou, pode ser encontrado em qualquer leitor de dvd ou vcd ou qualquer outra drive com laiser na parte de baixo. egas a parte que desloca o laiser ao longo do disco para empurrar a comida.

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

×