sexta-feira, 6 de março de 2009

2009.1

Com o começo do novo semestre a equipe Laranja Mecânica vem com algumas novidades, entra um novo integrante Thassyo Pinto Graduando em Engenharia Mecatrônica. Nesse novo semestre firmamos uma parceria com a Equipe de Engenharia Mecânica Davinci 1, responsaveis pelo projeto da escada rolante no semestre passado. Novas parcerias formam novos projetos, por isso a equipe Laranja Mecânica apresenta juntamente com a equipe Davinci 1 o projeto LM4 - PCB PLOTTER.
ao lado dois desenhos feitos no programa Solid Works














O projeto esse semestre consiste na criação de um Plotter para confeccao de Placas de cirucuito impresso. Apesar de simples na discricao é um pouco mais complicado do q parece diante de certa complexidade, otimizamos o grupo subdividindo-o em 3 subgrupos mecanica eletronica e programacao
Programação: Confeccao de software para controle do plotter através de controle numerico computadorizado.
Mecanica: maquina para obter-se uma resolução de no max 1mm por passo. Consite de 3 eixos x,y,z, sendo o x e o y sendo movidos por motores de passo e usando parafusos sem fim, e o eixo z representado por uma mola senoide.
Eletrônica: responsavel pela integração entre e a mecanica e a programação, consiste basicamente no controle e acionamento dos motores e da valvula.

quinta-feira, 20 de novembro de 2008

Balança implementada

Após a apresentação do ARHTE sem a eletrônica estar pronta, a equipe laranja mecanica não deixa de se empenhar. Na mesma tarde fizemos a parte mecânica e a programação em PIC para um novo componente da esteira, uma balança, onde qnd tiver 200g de brita a esteira irá parar. Agora faltando só mesmo a finalização da eletrônica que está quase pronta.

Amanhã pela manhã haverá notícias da finalização da eletrônica e pela tarde teste de todos os componentes juntos funcionando. Amanhã postamos video da Esteira LM3 finalizada.

Aí segue o código para PIC 16f628a comentado:

#include

__CONFIG _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF

CBLOCK 0x20 ;ENDEREÇO INICIAL DA MEMÓRIA DE USUÁRIO
TEMPO
ENDC

#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
#DEFINE LED PORTA,1
#DEFINE MOTOR PORTA,2
#DEFINE INFRA PORTA,0
#DEFINE LEDV PORTA,3
#DEFINE BALANCA PORTA,4
ORG 0x00
GOTO INICIO

ORG 0x04
GOTO TRATA_TIMER

INICIO

CLRF PORTA
BANK1
MOVLW B'00000111' ; bit do 0 ao 2, configuração de Preescale - 111 = 1:256 Timmer0; bit 8, habilita uso de periféricos.
MOVWF OPTION_REG ; Move o byte de configuração do Work para o registrador OPTION_REG
MOVLW B'11110001'
MOVWF TRISA ; seta as portas de entrada e saida
BANK0
MOVLW b'00000111'
MOVWF CMCON ; Desabilita comparadores
MOVLW .20 ; Atribui 20 para W
MOVWF TEMPO ; Atribui valor de W para TEMPO

MAIN
BTFSS BALANCA ;Checa se o peso exedeu 200g
GOTO EXPESO ;Se execedeu va para expeso
BTFSS INFRA ;Checa se o laser foi interrompido
CALL PARA ;se foi va para subrotina PARA
BTFSC INFRA ;checa se laser nao está interrompido
CALL LIGADO ;se nao estiver va para LIGADO
GOTO MAIN

LIGADO ;Sub-Rotina Ligado
BSF LEDV ;Liga led verde
BCF LED ;Desliga led vermelho
BSF MOTOR ;Liga motor
RETURN

PARA ;Sub-Rotina PARA
BCF LEDV ;desliga led verde
BSF LED ;liga led vermelho
BCF MOTOR ;desliga motor
MOVLW .20
MOVWF TEMPO
MOVLW B'10100000' ; BIT: 7-INTERRUPÇÃO, 5-TIMMER, 2-Flag Timmer
MOVWF INTCON ; Move o byte de configuração do Work para o registrador INTCON
LOOP
GOTO LOOP
RETURN

TRATA_TIMER ; Trata a interrupção gerada pelo Timmer0
BCF INTCON, T0IF ; Desabilita flag de Timmer0
BCF INTCON, GIE ; Habilita Interrupção Geral
BTFSS INFRA
GOTO MAIN
DECFSZ TEMPO ; Decrementa Variavel TEMPO2 e testa se TEMPO2 = 0 pula a proxima linha.
GOTO TESTALED
GOTO MAIN


TESTALED ;Sub-Rotina TESTALED
BTFSC LED ;Checa se led vermelho está apagado
GOTO ASCENDE ;se estiver vai para subrotina ascende
BTFSS LED ;testa se led vermelho está aceso
GOTO APAGA ;se estiver vai para subrotina apaga

ASCENDE ;Sub-Rotina ASCENDE
BCF LED ;Apaga led vermelho
RETFIE

APAGA ;Sub-Rotina APAGA
BSF LED ;Ascende led vermelho
RETFIE

EXPESO ;Sub-Rotina EXPESO
BCF LEDV ;Apaga led verde
BSF LED ;Ascende led vermelho
BCF MOTOR ;Desliga motor
GOTO MAIN

END

segunda-feira, 17 de novembro de 2008

Algorítimo PIC aperfeiçoado

Aproveitando para estudar PIC resolví fazer um algorítimo mais rebuscado. (Código comentado em breve)

Implementações:

-Esperar 5s sempre que o sensor for interrompido para a esteira voltar ao funcionamento.

-LED vermelho piscando enquanto esteira pausa 5s.

Video:



Aí segue o novo código do PIC:

#include

__CONFIG _WDT_OFF & _INTRC_
OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF

CBLOCK 0x20 ;ENDEREÇO INICIAL DA MEMÓRIA DE USUÁRIO
TEMPO
ENDC

#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
#DEFINE LED PORTA,0
#DEFINE MOTOR PORTA,2
#DEFINE INFRA PORTA,1
#DEFINE LEDV PORTA,3
ORG 0x00
GOTO INICIO

ORG 0x04
GOTO TRATA_TIMER

INICIO

CLRF PORTA
BANK1
MOVLW B'00000111'; bit do 0 ao 2, configuração
de Preescale - 111 = 1:256 Timmer0; bit 8, habilita uso de periféricos.
MOVWF OPTION_REG ; Move o byte de configuração do Work para o registrador OPTION_REG
MOVLW B'11110010'
MOVWF TRISA
BANK0
MOVLW b'00001111'
MOVWF CMCON
MOVLW .20 ; Atribui 5 para W
MOVWF TEMPO ; Atribui valor de W
para TEMPO

MAIN
BTFSS INFRA
CALL PARA
BTFSC INFRA
CALL LIGADO
GOTO MAIN

LIGADO
BSF LEDV
BCF LED
BSF MOTOR
RETURN

PARA
BCF LEDV
BSF LED

BCF MOTOR
MOVLW .20
MOVWF TEMPO
MOVLW B'10100000'; BIT: 7-INTERRUPÇÃO, 5-TIMMER, 2-Flag Timmer
MOVWF INTCON ; Move o byte de configuração do Work para o registrador INTCON
LOOP
GOTO LOOP
RETURN

TRATA_TIMER ; Trata a interrupção gerada pelo Timmer0
BCF INTCON, T0IF ; Desabilita flag de Timmer0
BCF INTCON, GIE ; Habilita Interrupção Geral
BTFSS INFRA
GOTO MAIN
DECFSZ TEMPO ; Decrementa Variavel TEMPO2 e testa se TEMPO2 = 0 pula a proxima linha.
GOTO TESTALED
GOTO MAIN


TESTALED
BTFSC LED
GOTO ASCENDE
BTFSS LED
GOTO APAGA

ASCENDE
BCF LED
RETFIE

APAGA
BSF LED
RETFIE

END

domingo, 16 de novembro de 2008


placa de circuito, feita em uma placa padrão, o chip de cima é o PIC16F628A, e o CI uln2803 o de baixo, detalhe para os LEDs que dizem o funcionamento do motor.

sábado, 15 de novembro de 2008

Simulação Esteira - Pic no ISIS



O led azul aceso representa o Motor DC (Led motor DC)
O led vermelho aceso representa interrupção do laser e parada da esteira
O led verde aceso representa a esteira em movimento

O push button representa, quando pressionado, o laser interrompido.

quinta-feira, 13 de novembro de 2008

Programa em PIC

Segue abaixo o algoritimo para pic do sistema demonstrado no vídeo da postagem abaixo:

#include

__CONFIG _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF ;Configurações Iniciais


#DEFINE BANK0 BCF STATUS,RP0 ;Facilitando a troca de banco pro banco 0
#DEFINE BANK1 BSF STATUS,RP0 ;e banco 1.
#DEFINE LED PORTA,0
;Dando nome 'LED' ao bit 0 da PORTA.
#DEFINE MOTOR PORTA,2 ;Dando nome 'MOTOR' ao bit 2 da PORTA.
#DEFINE INFRA PORTA,1 ;Dando nome 'INFRA' ao bit 1 da PORTA.
#DEFINE LEDV PORTA,3 ;Dando nome 'LEDV' ao bit 3 da PORTA.

ORG 0x00

GOTO INICIO ;Direciona o ponteiro de execução para a sub-rotina INICIO.

INICIO ;Sub-rotina INICIO.

CLRF PORTA ;Zera todo o byte PORTA.
BANK1 ;Troca do banco atual(banco 0) para o banco 1.
MOVLW B'11110010' ;Move o valor binário 11110010 para o registrador W.
MOVWF TRISA ;Move o byte W para o TRISA(que define os bits de PORTA como entrada=1 ou saída=0).
BANK0 ;Troca do banco atual(banco 1) para o banco 0.
MOVLW b'00001111' ;Move o valor binário 00001111 para o registrador W.
MOVWF CMCON ;Move o byte W para o CMCON.

MAIN ;Sub-rotina Main.
BTFSS INFRA
CALL PARA ;Chama a função PARA.
BTFSC INFRA
CALL LIGADO ;Chama a função LIGADO.
GOTO MAIN ;Direciona o ponteiro de execução para a sub-rotina MAIN.

LIGADO ;Sub-rotina LIGADO.
BSF LEDV ;Seta o bit LEDV '1'.
BCF LED ;Seta o bit LED '0'.
BSF MOTOR ;Seta o bit MOTOR '1'.
RETURN ;Retorna o ponteiro de execução para linha seguinte a chamada da função.

PARA ;Sub-rotina PARA.
BCF LEDV ;Seta o bit LEDV '0'.
BSF LED ;Seta o bit LED '1'.
BCF MOTOR ;Seta o bit MOTOR '0'.
RETURN ;Retorna o ponteiro de execução para linha seguinte a chamada da função.
END

Funcionamento:
Quando o laser for interropido o motor DC pára, e só volta a funcionar quando o laser nao estiver mais interrompido.

Dessa forma podemos simular um ambiente fabril onde quando alguma coisa invade o espaço do processo de produção, nesse caso a esteira, essa pára automaticamente evitando assim um acidente.
teste do circuito com pic na proto board... no video o botão simula um sensor de luz que ira fazer com que o motor pare....