A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tópicos Especiais em Sistemas Digitais I Projeto Braço Mecânico Lucas Eduardo Waechter Lucas Rosa Cruz Reginato.

Apresentações semelhantes


Apresentação em tema: "Tópicos Especiais em Sistemas Digitais I Projeto Braço Mecânico Lucas Eduardo Waechter Lucas Rosa Cruz Reginato."— Transcrição da apresentação:

1 Tópicos Especiais em Sistemas Digitais I Projeto Braço Mecânico Lucas Eduardo Waechter Lucas Rosa Cruz Reginato

2 Sumário Visão geral do projeto Interface com a Porta Paralela Dados do joystick; Dados do joystick; Bloco VHDL; Bloco VHDL; Interface com a Porta Serial Especificação do Braço Mecânico; Especificação do Braço Mecânico; Protocolo de Comunicação; Protocolo de Comunicação; Limitações; Limitações; Interface com o Sensor Térmico Especificação do Sensor Térmico; Especificação do Sensor Térmico; Protocolo I2C; Protocolo I2C;

3 Visão Geral do Projeto FPGA Joystick Porta Paralela Porta Serial (CPLD) Braço Mecânico Display Interface com a paralela Gerência das Interfaces Interface com a serial Interface c/ sensor térmico Sensor Térmico

4 Interface com a Porta Paralela Joystick usado : MegaDrive da Sega Por que usar a porta paralela : Conector do joystick é do tipo DB9 usado em interfaces seriais. Usamos um conector DB25 para adaptar o joystick para o porta paralela. Assim é possivel prototipar os dois módulos na mesma plataforma de prototipação visto que esta possui apenas uma interface serial e uma interface paralela.

5 Interface com a Porta Paralela Conector tipo DB25 Para conexão com o joystick Para conexão com a porta pararela

6 Interface com a Porta Paralela Pinos do Joystick do MegaDrive Select 1 Power Up Down Ground Select 2 Rigth Left Power Motivação do uso deste Joystick: Cada pino do joystick representa um botão. Quando um botão é pressionado é lido o nível lógico 1. Caso o botão não é acionado é lido o nivel lógico 0. Pino Select seleciona se será apertado os botões A e B ou C e Start. Conector Fêmea do joystick

7 Interface com a Porta Paralela Mapeamento dos pinos DB9 para DB Porta serial do Joystick Porta paralela da FPGA

8 Interface com a Porta Paralela Pinos do Joystick do MegaDrive usados Tabela de Mapeamento da porta serial do joystick para a porta paralela do FPGA Joystick Function DB9 Pinos DB25 Pinos Cores Tipo em relação ao joystick Up112BrancoIn Down215AzulIn Left310CinzaIn Rigth411LaranjaIn Power5 3 a 9 VermelhoIn Button1613MarronIn Select72AmareloOut Ground8 18 a 19 PretoOut Button 2 91RoxoIn

9 Interface com a Porta Paralela Caracteristicas da Porta Paralela Quando um pino se encontra no nível lógico 1, este possui 5V de tensão, e um pino em nível lógico 0 possui tensão inferior a 0,5V. Caracteristicas do Joystick Para alimentar o pino Power do Joystick com os 5V necessários conectamos os pinos 3 a 9 da porta paralela com diodos, para certificar que não ocorresse uma inversão acidental da corrente elétrica. Código C para leitura da da porta paralela Aplicação desenvolvida em ambiente Linux, compilado com o GNU Compiler, certifica se os pinos foram corretamente conectados.

10 Interface com a Porta Paralela Código C para leitura do Joystick (1) Código C para leitura do Joystick (1) # includes #define LPT1_DATA 0x378+0 #define LPT1_CTRL 0x378+1 void *monitor(); pthread_t monitor_id; int main(int argc, char* argv[]) { /* Chama alguns métodos de inicialização */ /* Verifica permissao para trabalhar com a porta desejada */ if (ioperm(LPT1_DATA, 3, 1)) { perror("Cannot obtain access to write on port LPT1"); exit(1); } pthread_create(&monitor_id, NULL, (void *)monitor, NULL); pthread_join(monitor_id, NULL); exit(0); }

11 Interface com a Porta Paralela Código C para leitura do Joystick (2) Código C para leitura do Joystick (2) void *monitor() { /*Porta que estamos trabalhando */ unsigned char data; while(1) { /*Seta em '1' o sinal select */ write_data(0xFF); data = inb(LPT1_CTRL); /* Se o pino 10 (esquerda) */ if((data & 0x40) == 0) draw_arrow('L'); else clear_arrow('L'); /* Se o pino 11 (direita) */ if((data & 0x80) == 0) draw_arrow('R'); else clear_arrow('R');... refresh(); usleep(1); }

12 Interface com a Porta Paralela Bloco VHDL criado para esta tarefa Interface com a paralela Dados recebidos da porta paralela ACK Send Arm Hand Base LR

13 Interface com a Porta Paralela Máquina de estados do Bloco VHDL PollingRead Write Recebendo sinais Decodificação dos sinais Enviando sinais para o bloco serial

14 Interface com a Porta Serial Especificação do Braço Mecânico Criado pela Fischer Technik ( ), empresahttp://www.fischertechnik.de/ alemã, na década de 90. Basicamente, é um lego. Possui 3 motores para comandar o braço mecânico Possui sensores que indicam que um determinado comando não pode mais executar, caso contrário o braço mecânico pode se desmontar. Possui uma interface ( placa ) que interpreta os movimentos do braço. Esta placa possui um processador 8051 a ser detalhado mais adiante.

15 Interface com a Porta Serial Figura do Braco Mecânico Motor que gira a base Motor que gira o braço Motor que gira a mão

16 Interface com a Porta Serial Protocolo de comunicação do Braço Mec. Bits da palavra enviada para o Braço Mec. ComandoFunção L Move Base p/ Esquerda R Move Base p/ Direita L Move Braço p/ Baixo R Move Braço p/ Cima L Abre a mão R Fecha a mão L Acende a Luz R

17 Interface com a Porta Serial Código C++ para controlar o Braço Mec. (1) #includes class Robo{ char Motorword;/* Palavra a ser enviada p/ o robo */ char serial[4]; /* O Nome da porta serial aberta */ /* Abre a serial COM"ser" para o envio e recepção de Comandos do Robo*/ int abreSerial(int ser) { const char *com1="COM1",*com2="COM2",*com3="COM3",*com4="COM4"; switch(ser){ case 1: strcpy(serial,com1); break; case 2: strcpy(serial,com2); break; case.... break; } Fischer_install(); return 1; }

18 Interface com a Porta Serial Código C++ para controlar o Braço Mec. (2) /* Seta parametros para a porta serial e abre a conexão com a mesma */ void Fischer_install(){.... int hCom = CreateFile( serial,/* nome da COM */ GENERIC_READ | GENERIC_WRITE,/* acesso de RW */ 0,/* não usado */ NULL,/* não usado */ OPEN_EXISTING,/* requerido */ 0,/* não usado */ NULL);/* não usado */.... fSuccess = GetCommState(hCom, &dcb);.... dcb.BaudRate = 9600;// 9600 Baud dcb.ByteSize = 8;// 8 Bits dcb.Parity = NOPARITY;// no parity dcb.StopBits = ONESTOPBIT;// 1 stopbit fSuccess = SetCommState(hCom, &dcb);.... motors_off(); }

19 Interface com a Porta Serial Código C++ para controlar o Braço Mec. (3) /* Define o comando a ser executado */ void motor(int num, char dir){ char Result; switch (dir){ case 'L': Motorword = clearBit(Motorword, (num * 2));// seta bit em 1 Motorword = setBit(Motorword, (num * 2 - 1));// seta bit em 0 break; case 'R':.... break; case....:.... break; } Result = input_word();// escreve o comando para a interface Motorword = '0x00';// zera-se o comando para o próximo comando } // Demais métodos

20 Interface com a Porta Serial Bloco VHDL para decodificação dos comandos Braço Mecânico (Serial) ACK Send Arm Hand Base LR word

21 Interface com a Porta Serial Máquina de estados do Blobo VHDL WaitRead Write Recebendo sinais Decodificação dos sinais Enviando sinais para a porta serial

22 Interface com a Porta Serial Bloco VHDL para comunicação com a serial Interface Serial tx_data (8 bits) word (8 bits) Onde : tx_data representa os dados a serem enviados para a serial tx_av indica que existe dado disponível em tx_data tx_av (1 bit)

23 Interface com a Porta Serial Máquina de estados do Bloco VHDL ReadWrite Recebendo sinais Enviando sinais

24 Interface com a Porta Serial Bloco VHDL completo Braço Mecânico (Serial) ACK Send Arm Hand Base LR Interface Serial word (8 bits) tx_data (8 bits) tx_av (1 bit)

25 Interface com o Sensor Térmico Digital Temperature Sensor with I2C Interface Modelo TMP101 – 2 fios, saída serial Não requer nenhum componente externo para funcionamento Resolução máxima de °C. Comunicação pelas interfaces SMBus e I2C Comporta até 8 sensores no mesmo barramento. O TMP101 oferece função SMBus de alerta com até 3 sensores por barramento

26 Interface com o Sensor Térmico Características: Opera entre –55°C a +125°C. Saída digital: I2C Serial 2-vias. Resolução: 9 a 12-Bits, selecionável. Margem de Erro: ±2.0°C em –25°C a +85°C (max) e ±3.0°C de -55°C a +125°C (max) Fornecimento: 2.7V a 5.5V. TINY SOT23-6 PACKAGE.

27 Interface com o Sensor Térmico Aplicações: Monitoração de fontes de energia Proteção contra superaquecimento de periféricos em computadores Notebooks Telefones Celulares Controle de baterias Máquinas de escritório Controles termostáticos Monitoramento de ambientes Controle de temperatura de componentes eletro-mecânicos

28 Interface com o Sensor Térmico Esquemático do Sensor Térmico

29 Interface com o Sensor Térmico Características Elétricas

30 Interface com o Sensor Térmico Características Típicas (1)

31 Interface com o Sensor Térmico Características Típicas (2)

32 Interface com o Sensor Térmico Estrutura de registros Pointer Register I/O Control Interface Thigh Register Tlow Register Configuration Register Temperature Register SCL SDA

33 Interface com o Sensor Térmico P7 0 P5 0 P6 0 P4 0 P3 0 P1 Register Bits P2 0 P0P1P0Register Temperature Register (r) Configuration Register (rw) Tlow (rw) Thigh (rw) D7 T11 D5 T9 D6 T10 D4 T8 D3 T7 D1 T5 D2 T6 D0 T4 D7 T3 D5 T1 D6 T2 D4 T0 D3 0 D1 0 D2 0 D0 0 Registradores (1): Pointer Register Temperature Register

34 Interface com o Sensor Térmico Registradores (2): D7 Alert D5 R0 D6 R1 D4 F1 D3 F0 D1 TM D2 POL D0 SD D7 H11 D5 H9 D6 H10 D4 H8 D3 H7 D1 H5 D2 H6 D0 H4 D7 L3 D5 L1 D6 L2 D4 L0 D3 0 D1 0 D2 0 D0 0 D7 L11 D5 L9 D6 L10 D4 L8 D3 L7 D1 L5 D2 L6 D0 L4 D7 H3 D5 H1 D6 H2 D4 H0 D3 0 D1 0 D2 0 D0 0 Tlow e Thigh Registers Tlow e Thigh Registers Configuration Register Configuration Register

35 Interface com o Sensor Térmico Registrador de Configurações (1) D7 Alert D5 R0 D6 R1 D4 F1 D3 F0 D1 TM D2 POL D0 SD Shutdown mode Thermostat mode Polarity Fault Queue Resolution R1R0Resolution Conversion Time bits (0.5) 10 bits (0.25) 11 bits (0.125) 12 bits (0.0625) 40 ns 80 ns 160 ns 320 ns T1T0 Consecutive Faults SD Consecutive Faults

36 Interface com o Sensor Térmico Registrador de Configurações (2) Controle de Alertas Controle de Alertas

37 Interface com o Sensor Térmico Protocolo I2C (1) Introdução: O custo de comunicação entre componentes tem que ser sempre o mínimo possível A eficiência geral depende dos componentes e da estrutura de interconexão Para satisfazer essa necessidade, uma conexão serial é a melhor escolha Por que? Menos fios e menos pinos de conexão

38 Interface com o Sensor Térmico Protocolo I2C (2) O I2C comporta ICs NMOS, CMOS, I2L, entre outros 2 fios (2 wires concept), Serial Data (SDA) e Clock Serial (SCL), Carry Information entre os ICs conectados ao mesmo barramento Cada IC tem um endereço único no barramento

39 Interface com o Sensor Térmico Protocolo I2C (3) Cada IC pode operar como transmissor ou receptor, não importando se é um keyboard, um LCD, Sensor, Memória ou qualquer outra coisa Conceito de Master/Slave Multi-Masters em um barramento

40 Interface com o Sensor Térmico Protocolo I2C (4) SDA SCL LCD Driver RAM Estática ou EEPROM Micro computador B Micro computador A Sensor Térmico I2C BUS

41 Interface com o Sensor Térmico Protocolo I2C (5) Transmissor: o I2C que manda dados para o barramento Receptor: o I2C que recebe dados do barramento Master: inicia a transmissão, gera o clock e acaba a transmissão Slave: IC endereçado pelo Master Multi-Master: mais que um Master pode tentar controlar o barramento sem corromper as mensagens Arbritration: Procedimento que garante que se mais de um Master tentar simultaneamente ganhar o controle do barramento, somente um é permitido o fazer e não corromper as mensagens de ambos Sincronização: sincroniza clocks de 2 ou mais Ics

42 Interface com o Sensor Térmico Protocolo I2C (6) StartEnd Ack signal from receiver Byte complete. Interrupt within receiver Clock line held low while interrupts are serviced Ack Ack from Receiver Transferência de dados no barramento I2C SDA SCL MSB Ack

43 Interface com o Sensor Térmico Acoplagem do Sensor a um FPGA Braço Mecânico FPGA Pinos ST

44 Conclusão O braço mecânico é incapaz de efetuar uma rotação de 360 graus na base e na mão. Possui pouco mobilidade em seu braço, ou seja, não podemos levantar ou baixar demais o braço mecânico. Esperamos que este trabalho sirva de incentivo para trabalhos futuros. Esperamos ter uma maior mobilidade do braço mecânico. Código portável para qualquer placa FPGA. Limitações e Futuras implementações


Carregar ppt "Tópicos Especiais em Sistemas Digitais I Projeto Braço Mecânico Lucas Eduardo Waechter Lucas Rosa Cruz Reginato."

Apresentações semelhantes


Anúncios Google