Programa pra MOTOR_DC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Programa pra MOTOR_DC

Mensagempor antonio » 24 Abr 2011 16:46

Pessoal estoh fazendo aqui uns testes com um MOTOR_DC de 5V e não sei que estou fazendo errado que não funciona não!! Dah aí uma olhada pra ver onde esta dando pau!! estoh programando em C CCS e proteus
Desde jah agradeço
O codigo
Código: Selecionar todos
#include <16f873A.h>
#use delay(clock=4000000)
#fuses xt,put,nowdt,protect,nobrownout,NOCPD

#use STANDARD_IO(a)
#use STANDARD_IO(c)


#define forward  PIN_A5
#define reverse  PIN_A4
#define brake    PIN_A2
#define PinA     PIN_C5
#define PinB     PIN_C4
#define PinC     PIN_C3
#define PinD     PIN_C2

void Delay(void)
{
delay_ms(300);
}
void main()
{

   output_c(0x00);
   set_tris_a(0b00111100);
   set_tris_c(0x00);
 
 
do{
 
   if (!forward)
     {
     delay();
     //output_c(0x00);
     //delay();
     output_low(PinA);
     output_high(PinB);
     output_high(PinD);
     };
       if(!reverse)
       {
       delay();
       //output_c(0x00);
       //delay();
       output_high(PinA);
       output_low(PinB);
       output_high(PinD);
       };
         if(!brake)
         {
         delay();
         output_c(0x00);
         };
     }while(1);
}


o circuito no proteus

Imagem
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor andre_luis » 24 Abr 2011 17:48

Antonio

Ajudaria se voce postasse exatamente o que está ou não acontecendo.
Outra coisa : Esse uC possui PWM interno mas mesmo assim voce está o implementando por handshake ?

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor antonio » 24 Abr 2011 18:28

andre_teprom escreveu:Antonio

Ajudaria se voce postasse exatamente o que está ou não acontecendo.
Outra coisa : Esse uC possui PWM interno mas mesmo assim voce está o implementando por handshake ?

+++


andre o que se passa eh simplesmente não funciona, ou seja a ideia eh klicando numa tecla o motor roda num sentido klicando em outra o motor roda em sentido contrario e a tecla era de padada do motor!

RA5-> forward
RA4_> reverse
RA2_>brake

Sim eu sei que este PIC tem PWM ,mas como não mango o PWM por enquanto,vou fazendo uns teste por software
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor MOR_AL » 24 Abr 2011 18:31

Algumas dicas:
1 - Na prática não se deve usar a ponte nessa configuração, com dois PNPs na parte de cima, junto a fonte de tensão. Porque? Porque o nível lógico '1', dependendo da carga, pode não ir até Vcc ou Vcc - 0,6V. Isso não vai cortar o transistor, mesmo que o pino seja jogado para '1'.

2 - Mesmo que funcione, o seu pulso vai levar algum tempo para ir de '0' para '1'. Durante esse tempo o transistor estará conduzindo. Tem que esperar um pouco até que corte, para fazer o outro ramo conduzir.

3 - Você está alterando um pino de cada vez. Isso pode dar problema. Se alterar um segundo pino na mesma porta, logo após a alteração do anterior, o pino anterior pode não ser alterado. É melhor primeiro cortar o ramo que você deseja em um byte de memória e depois jogar este byte para a porta. Aguarde um tempo até o corte ser efetivado. Depois faça o mesmo se quizer conduzir outro ramo.

4 - Também se costuma colocar resistor entre a base e o emissor, para que o corte seja mais rápido. Caso contrário os transistores podem aquecer muito e queimar.

5 - Os BC547 e 557 são para pequenas correntes. Tente usar BC337 e BC327. São do mesmo tamanho e suportam mais corrente. Meça antes a corrente com o eixo do motor travado. Mas seja rápido, pois se bobear pode queimá-lo. Essa corrente é a maior que vai aparecer no motor. Veja no manual, se os transistores suportam essa corrente. Já queimei muita ponte porque achava que o eixo do motor nunca travaria.

Procure entender o que eu postei, que vai te ajudar quando o programa funcionar e você for testar na prática.

No mais é ... Boa sorte.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor EvandrPic » 24 Abr 2011 19:24

Monte em protoboard a parte do motor e acionamento e teste na prática. Não confie no Proteus pois pode ser um bug do programa, do firmware que você fez ou da parte elétrica.
Acho que você não precisa de 4 pinos do microcontrolador para fazer o que está pretendendo.
Ligue as bases dos transístores envolvidos na rotação num sentido e no outro, respectivamente.

Talvez esses esquemas sirvam pra dar uma clareada:
Imagem

Outro esquema...
Imagem
O circuito acima possui duas chaves, quando se fecha o contato de uma delas, o motor gira em
um sentido, quando se fecha a outra, o motor gira no outro sentido. Caso as duas chaves sejam acionadas,
o motor irá parar.

...
http://www.vabsco.com/bardhp/proj/ponteh/main.html
EvandrPic
Dword
 
Mensagens: 2116
Registrado em: 31 Mar 2010 15:05

Re: Programa pra MOTOR_DC

Mensagempor andre_luis » 24 Abr 2011 19:48

Antonio

Porque voce aciona somente 3 pinos se na ponte tem 4 transistores manipulados separadamente ?
Pode ser que aí esteja o problema.

Código: Selecionar todos
   if (!forward)
     {
     delay();
     output_low(PinA);
     output_high(PinB);
     output_high(PinD);
     };
       if(!reverse)
       {
       delay();
       output_high(PinA);
       output_low(PinB);
       output_high(PinD);
       };


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor _blackmore_ » 24 Abr 2011 20:05

para quê usar uma ponte H e mais um microcontrolador para acionar os transistores se nao precisa dele (microcontrolador)?
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor andre_luis » 24 Abr 2011 20:29

_blackmore_ escreveu:para quê usar uma ponte H e mais um microcontrolador para acionar os transistores se nao precisa dele (microcontrolador)?


E como faria ?

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor _blackmore_ » 24 Abr 2011 21:04

andre_teprom

está ali .. certinho e explicado no segundo esquema do EvandrPic
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor Andre_Cruz » 25 Abr 2011 08:02

Blackmore,

O antonio esta usando o controlador neste caso para aprender a usa-lo ! Da um desconto !

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor antonio » 25 Abr 2011 08:02

Pessoal grato pelo suporte aqui do colegas!

Depois de tanta modificação continua dando pau fiz diversos testes com o que o pessoal aqui descreveu mas não funciona,como eu alterou o codigo dah uma olhada !!
Pessoal os teste que tenho feito eh só no proteus,, eu não testei fisicamente ,porque neste momento não tenho protoboard livre,loge que tenha um protoboard livre faço os teste fisicamente

codigo modificado!
Código: Selecionar todos
#include <16f873A.h>
#use delay(clock=4000000)
#fuses xt,put,nowdt,protect,nobrownout,NOCPD

#use STANDARD_IO(a)
#use STANDARD_IO(c)


#define forward  PIN_A5
#define reverse  PIN_A4
#define brake    PIN_A2

void Delay(void)
{
delay_ms(300);
}
void main()
{

   //output_c(0x00);
   //set_tris_a(0b00111100);
   //set_tris_c(0x00);
 
 
for(;;){
 
   if (!forward)
     {
     output_c(0x00);
     delay();
     output_c(0b00010000);

     };
       if(!reverse)
       {
       output_c(0x00);
       delay();
       output_c(0b00100000);
       };
         if(!brake)
         {
         delay();
         output_c(0x00);
         };
     }
}


o circuito no proteus modificado
Imagem
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor EvandrPic » 25 Abr 2011 09:49

Há muito tempo eu cheguei a usar o Proteus para testes e me lembro que tinha um exemplo com motor. Era algo parecido com o que você quer.
Já olhou se nessa versão que você está usando tem esse exemplo com motor e ponte H?
EvandrPic
Dword
 
Mensagens: 2116
Registrado em: 31 Mar 2010 15:05

Mensagempor MOR_AL » 25 Abr 2011 10:19

Antonio.
Tente essa ponte que eu fiz e funcionou.
Imagem

A_Hor (Anti-Horário) -.....H (Horário) - .....Situação

A.................0.......................0...........- Motor parado
B.................0.......................1...........- Motor girando no sentido horário.
C.................1.......................0...........- Motor girando no sentido anti-horário
D.................1.......................1...........- TRANSISTORES QUEIMANDO!!!
Obs:
1 - Nunca use a condição D.
2 - Entre a condição B e C, ou C e B, SEMPRE passe pela condição A.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor _blackmore_ » 25 Abr 2011 12:16

Andre_Cruz

O antonio esta usando o controlador neste caso para aprender a usa-lo !


respondido ...
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor antonio » 25 Abr 2011 13:17

Pessoal os testes continuam!!

Depois de tanto teste feito, acho que o problema bem do codigo mesmo !!

Quando se pressiona a tecla RA5 deveria mudar no PIN_RC4 o seu estado¨!
Isto foi um teste que eu fiz desligando a ponte H do PIC, e vi que o estado do PIN_RC4 não mudava, porque o PORTC começa a zero "output_c(0x00); " no proteus o PORTC fica a azul ,estado (0),depois de pressionada a tecla "forward" o PIN_RC4 deve mudar para vermelho estado logico (1), e isso não faz!? o mesmo para as outras teclas!

O circuito com a tecla pressionada!
Imagem
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x