1 / 44

Tópicos Especiais em Sistemas Digitais I

Tópicos Especiais em Sistemas Digitais I. Projeto Braço Mecânico Lucas Eduardo Waechter Lucas Rosa Cruz Reginato. Sumário. Visão geral do projeto Interface com a Porta Paralela Dados do joystick; Bloco VHDL; Interface com a Porta Serial Especificação do Braço Mecânico;

nariko
Download Presentation

Tópicos Especiais em Sistemas Digitais I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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; • Bloco VHDL; • Interface com a Porta Serial • Especificação do Braço Mecânico; • Protocolo de Comunicação; • Limitações; • Interface com o Sensor Térmico • Especificação do Sensor Térmico; • Protocolo I2C;

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

  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 a porta pararela Para conexão com o joystick

  6. Interface com a Porta Paralela • Pinos do Joystick do MegaDrive • 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’. Select 1 Power Up Down Ground Select 2 Rigth Left Power 5 1 6 9 Conector Fêmea do joystick

  7. Interface com a Porta Paralela • Mapeamento dos pinos DB9 para DB25 5 1 13 1 14 6 9 25 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

  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) # 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) 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 ACK Send Arm Hand Base LR . . . . Dados recebidos da porta paralela

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

  14. Interface com a Porta Serial • Especificação do Braço Mecânico • Criado pela Fischer Technik ( http://www.fischertechnik.de/ ), empresa • 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 mão Motor que gira o braço Motor que gira a base

  16. Interface com a Porta Serial • Protocolo de comunicação do Braço Mec.

  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 Wait Read Recebendo sinais Decodificação dos sinais Enviando sinais para a porta serial Write

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

  23. Interface com a Porta Serial • Máquina de estados do Bloco VHDL Recebendo sinais Read Write Enviando sinais

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

  25. Interface com o Sensor Térmico • Digital Temperature Sensorwith I2C Interface • Modelo TMP101 – 2 fios, saída serial • Não requer nenhum componente externo para funcionamento • Resolução máxima de 0.0625°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 PointerRegister TemperatureRegister I/O ControlInterface SCL ConfigurationRegister TlowRegister SDA ThighRegister

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

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

  35. D7 D6 D5 D4 D3 D2 D1 D0 Alert R1 R0 F1 F0 POL TM SD R1 R0 Resolution ConversionTime T1 T0 ConsecutiveFaults 0011 0101 9 bits (0.5)10 bits (0.25)11 bits (0.125)12 bits (0.0625) 40 ns80 ns160 ns320 ns 0011 0101 124 6 Interface com o Sensor Térmico • Registrador de Configurações (1) Shutdown mode Thermostat mode Polarity Fault Queue Resolution SD ConsecutiveFaults 0011 124 6

  36. Interface com o Sensor Térmico • Registrador de Configurações (2) • 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) Micro computador A SDA Micro computador B SCL LCD Driver I2C BUS Sensor Térmico RAM Estática ou EEPROM

  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 Transferência de dados no barramento I2C • Protocolo I2C (6) Ack signal from receiver Ack from Receiver SDA MSB SCL 3-8 9 1 2 7 8 9 1 2 Ack Ack Byte complete. Interrupt within receiver Start Clock line held low while interrupts are serviced End

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

  44. Conclusão • Limitações e Futuras implementações • 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.

More Related