• Welcome to LusoRobótica - Robótica em Português.
 

FiBre Clock

Started by AndréD., 16 de August de 2009, 21:40

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TigPT

Se tivesses uma ponte H, depois podias colocar um potenciómetro que iria aumentar ou reduzir o pwm injectado na ponte H, podendo assim controlar a velocidade desde 0 a 100% de rotação.

AndréD.

#16
Boas...

Já tenho a minha base nova pronta, em baixo fica o video. Está mais robusta, com maior rotação e nao sai do sitio como podem observar no video...

http://www.youtube.com/watch?v=sh_LcuSIsSA

Outra coisa, para por uma ponte H tenho de ter algo que a controle... Para isso tenho de programar o meu outro Picaxe para que seja este a controla-la.

Até aqui tudo bem, nao estou a ver e como é que queres que controle o pwm (Pulse Width Modulation ou em Tuga - Modulação por largura de pulso), não percebi essa parte...

Se me puderes explicar melhor agradecia...

Rui

Como o motor só roda numa direção nem precisas de uma ponte H, basta um transístor.
Quanto a PWM, se perceberes inglês esta página deve-te ajudar bastante: http://www.netrino.com/Embedded-Systems/How-To/PWM-Pulse-Width-Modulation
Nessa página falam em controladores separados só para PWM, mas não deve ser difícil de implementar em picaxe usando interrupções.

msaleiro

#18
Não tenho a certeza.. mas tenho ideia que também podes fazer um controlador PWM utilizando um 555. Consulta o datasheet e vê o que diz por lá. Se não me engano há uma expressão para calcular o duty cycle de acordo com os valores das resistências que usares. Colocando um reostato no lugar de uma das resistências deves conseguir fazer isso de modo a controlares o duty cycle facilmente
msaleiro - Mário Saleiro
UAlg FCT-DEI / VisLab - Instituto de Sistemas e Robótica / eLab Hackerspace
http://thebitbangtheory.com

TigPT

Podes gerar pwm com 555 perfeitamente. Vê o vídeo no 2nd post do link a baixo: http://lusorobotica.com/index.php/topic,31.0.html

AndréD.

Boas...

>:( ??? >:(

Tou a ficar variado do cerebro com esse circuito... Já montei o circuito 7 vezes e nao consigo por a trabalhar...

Testei com um led, o Led acende mas nao diminui nem aumenta a sua luminosidade....

Uma coisa, eu pus todos os componentes que estavam no circuito menos os diodos 1N34, troquei por 1N4148 que era o que tinha, será por causa disso?

Cumps
AndréD.

AndréD.

#21
Boas Pessoal...

Mais progressos.....

Já consegui finalmente por o circuito a funcionar... Mas utilizei este.

Depois liguei a uma ponte H e apliquei a maravilhosa teoria da polaridade inversa... Resultado: Magnifico (O fumo que saiu da ponte H foi maravilhoso).

Bom queimei aquilo tudo, mas por distração minha, mas tenho o circuito feito e funciona e so trocar a ponte e ta a andar depois é montar tudo e testar.

Já agora alguem tem para ai umas pontes H que me desenrasque?

Cumps
AndréD.

maurosmartins

Olá AndréD. Não precisas de ponte H para aquilo que queres fazer!!! no circuito da imagem basta ligar à saída do NE555 (pino 3) um resistência e um transístor de potencia! assim podes controlar a velocidade do motor!

A ponte H só é precisa se quiseres controlar tb a direcção e penso que para este projecto isso não seja preciso!

Cumprimentos, Mauro.


PDI

Alfredo Garcia

AndréD.

Boas Pessoal...

Depois de muito trabalho e de arranjar o material certo (Arduino), dou ete projecto como: Concluido

Agora é assim, eu fiz um video da coisa a funcionar, mas aconteceu-me um problema e dos grandes que passo a mostrar no printscreen que fiz com a wcam na configuração de audio e video do msn:



Vinha a ver o video e a subir as escadas para vir para o meu escritorio, e BOOM, telemovel pelas escadas a baixo...

Resultado: LCD partido, Camera deixou de funcionar, algumas teclas e o bluetooth funciona ate quando lhe apetece (ao passar o filme para o pc, umas vezes perde ligação aos 50%, outras aos perto dos 90% - basicamente bluethoot lixado tambem).

Assim que tiver condiçoes para colocar o video aqui estará... E podem mover para projectos concluidos se assim o entenderem...

Só mais uma coisa, este projecto pode ser alvo de mais modificações, mas por agora tá acabado...

Obrigado a todos por me ajudarem no que foi preciso...

Cumps
AndréD.

metRo_

Podias colocar no tópico mais informação, na minha opinião tens pouca informação técnica :S que possa ajudar outros utilizadores a fazer algo idêntico :S

AndréD.

#26
Boas...

Concordo contigo, tive a dar uma vista de olhos no topico e realmente quem quiser fazer um não tem muita informação.

Entao vou disponibilizar aqui tudo o que utilizei para que o pessoal possa desenvolver um "brinquedo" parecido...

Apresentação do Projecto

O projecto baseia-se no conceito POV (Persistence of Vision).
Já tinha em mente fazer um projecto destes á algum tempo mas nao sabia como, foi entao que passei pelo blog do amigo Ricardo Dias e vi o magnifico projecto dele o Round'Aclock, a partir dai comecei a desenvolver o meu proprio POV.

Vou colocar aqui algumas da estapas que sequi para que o pessoal possa seguir tambem:


1ª Etapa

Primeiramente tinha feito a base com uma caixa de cd's, depois de alguns testes conclui que a coisa podia correr mal e levar com uma breadboard pela cabeça, foi entao que decido fazer uma base bem robusta para aguentar a rotação da plataforma.

Material Para Construção da Base e plataforma Giratorio:

- Madeira 1cm
- Parafusos Para Madeira
- Aparafusadora
- Berbequim
- Brocas de 5, 6 e 7 mm
- Acrilico
- Motor 8.4V
- Bateria 8.4V (Fonte de alimentação, etc...)
- Botao ON/OFF

Esquema com o motor:



Depois da bae feita convem testa-la, ver se a plataforma gira como deve de ser, ver se está o mais centrada possivel para que a base fique estavel.



2ª Etapa

Desenvolver toda a parte Electronica.

Comecei inicialmenete por utilizar o sistema PICAXE, mas mais tarde vi que não era limitado para o que queria fazer, entao adquiri o meu Arduino Duemilenove (Grande compra).

Aqui fica o Esquema que utilizei com o arduino:



Em baixo o esquema que utilizei para o receptor e para o emissor de Infra Vermelhos. (Nota: Baseado no esquema do topico do amigo metRo_)

Receptor:




Emissor:



3ª Etapa

Esta etapa foi a de programação do arduino, antes de mais quero agradecer á fantastica ajuda que os membros desta comunidade me deram no meu (ainda) inicio em C.

O codigo que desenvolvi foi o seguinte:


/* FIRST PROGRAM IN ARDUINO 0017
BY: AndréD.
Project POV FiBre Clock */

int timer=300; // Tempo entre cada letra em MicroSegundos
int timer1=500; // Tempo entre cada letra em MicroSegundos
int x=0;
int var_sensorIR = 0;  |
int sensorIR = 0;         |-> Variaveis Correspondentes ao Sensor de Infravermelhos

void setup()   {
 Serial.begin(9600);
 pinMode (8, OUTPUT);      |
 pinMode (9, OUTPUT);      |        
 pinMode (10, OUTPUT);    |---- >   Configuração das portas para os leds
 pinMode (11, OUTPUT);    |
 pinMode (12, OUTPUT);    |
 
}

void loop()
{

 var_sensorIR = analogRead(sensorIR); \\ Leitura do valor do Sensor e escrita desse mesmo valor na variavel "val_sensorIR"

 if(var_sensorIR < 400){ \\ Condição SE o valor do sensor for menos que 400 entao começa a sequencia dos Leds.

     /* LETRA L */
       PORTB = B00000000;          \\ Escrita em varios Pinos o que permite acender os leds pretendidos.
       delayMicroseconds(timer); \\ Tempo de espera em Microsegundos
       PORTB = B00011111;
       delayMicroseconds(timer);
       PORTB = B00010000;
       delayMicroseconds(timer);
       PORTB = B00010000;
       delayMicroseconds(timer);
       PORTB = B00010000;
       delayMicroseconds(timer1);
       PORTB = B00000000;
       delayMicroseconds(timer);  
   
    /* LETRA U */
      PORTB = B00001111;
      delayMicroseconds(timer);  
      PORTB = B00010000;
      delayMicroseconds(timer);
      PORTB = B00010000;
      delayMicroseconds(timer);
      PORTB = B00010000;
      delayMicroseconds(timer);
      PORTB = B00001111;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);
     
    /* LETRA S */
      PORTB = B00010010;
      delayMicroseconds(timer);  
      PORTB = B00010101;
      delayMicroseconds(timer);
      PORTB = B00010101;
      delayMicroseconds(timer);
      PORTB = B00010101;
      delayMicroseconds(timer);
      PORTB = B00001001;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);  
 
    /* LETRA O */
      PORTB = B00001110;
      delayMicroseconds(timer);  
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00001110;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
 
 /* ESPAÇO */
 
       PORTB = B00000000;
       delayMicroseconds(timer);
       PORTB = B00000000;
       delayMicroseconds(timer);
       
    /* LETRA R */
      PORTB = B00011111;
      delayMicroseconds(timer);  
      PORTB = B00000101;
      delayMicroseconds(timer);
      PORTB = B00000101;
      delayMicroseconds(timer);
      PORTB = B00001101;
      delayMicroseconds(timer);
      PORTB = B00010010;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
   
    /* LETRA O */
      PORTB = B00001110;
      delayMicroseconds(timer);  
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00001110;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
   
    /* LETRA B */
      PORTB = B00011111;
      delayMicroseconds(timer);  
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010101;
      delayMicroseconds(timer);
      PORTB = B00010101;
      delayMicroseconds(timer);
      PORTB = B00001010;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
   
    /* LETRA O */
      PORTB = B00001110;
      delayMicroseconds(timer);  
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00001110;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
   
    /* LETRA T */
      PORTB = B00000001;
      delayMicroseconds(timer);  
      PORTB = B00000001;
      delayMicroseconds(timer);
      PORTB = B00011111;
      delayMicroseconds(timer);
      PORTB = B00000001;
      delayMicroseconds(timer);
      PORTB = B00000001;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
   
    /* LETRA I */
      PORTB = B00000000;
      delayMicroseconds(timer);  
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00011111;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
 
    /* LETRA C */
      PORTB = B00011111;
      delayMicroseconds(timer);  
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00010001;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
   
    /* LETRA A */
      PORTB = B00011110;
      delayMicroseconds(timer);  
      PORTB = B00000101;
      delayMicroseconds(timer);
      PORTB = B00000101;
      delayMicroseconds(timer);
      PORTB = B00000101;
      delayMicroseconds(timer);
      PORTB = B00011110;
      delayMicroseconds(timer);
      PORTB = B00000000;
      delayMicroseconds(timer1);            
 
   

}
}




4ª Etapa

Por fim efectuei os testes. Ligar tudo, Colocar a andar e visualizar o resultado.



Video - FiBre Clock

http://www.youtube.com/watch?v=BL7qhRUuxqA

Resta pedir desculpa pela qualidade (telemovel, mas da para ver e perceber...), outra coisa e a os fps do telemovel que como devem perceber nao conseguem apanhar as letras fixas, mas a "olho nu" esta impecavel....

Agradecimentos:

Forum LusoRobotica
Blog Ricardo Dias

Agradecimentos Pessoais (Por toda a ajuda dada neste topico):

- TigPT
- FIFAS
- metRo_
- PDI
- mauromartins
- msaleiro
- Rui

Cumps
AndréD.

ricardo-reis

no esquema do motor há um erro.. os pinos do interruptor.. akilo assim nunca liga.. de resto.. tá tudo com mt bom aspecto.. (diga-se k n olhei prós circuitos restantes..)

Rebel

Olha lá, onde está o sensor IR no esquema do Arduino???? ;)

AndréD.

Boas....

Obrigado Pelo teu reparo no circuito do motor...

E já coloquei o resto dos circuitos que me tinha esquecido, ou seja o do Receptor e do Emissor IR...

Cumps
AndréD.