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

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

Tópicos Especiais em Sistemas Digitais I

Apresentações semelhantes


Apresentação em tema: "Tópicos Especiais em Sistemas Digitais I"— 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; 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/ térmico sensor Paralela Porta 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 Select 1 Power Up Down Ground Select 2 Rigth Left 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’. 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 6 14 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 Joystick Function DB9 Pinos DB25 Pinos Cores Tipo em relação ao joystick Up 1 12 Branco In Down 2 15 Azul Left 3 10 Cinza Rigth 4 11 Laranja Power 5 3 a 9 Vermelho Button1 6 13 Marron Select 7 Amarelo Out Ground 8 18 a 19 Preto Button 2 9 Roxo

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 ( ), 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. Bits da palavra enviada para o Braço Mec. Comando Função 8 7 6 5 4 3 2 1 1L Move Base p/ Esquerda 1R Move Base p/ Direita 2L Move Braço p/ Baixo 2R Move Braço p/ Cima 3L Abre a mão 3R Fecha a mão 4L Acende a Luz 4R

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); case .... } 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': .... case ‘....’: } 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 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 Temperature Register I/O Control Interface SCL Configuration Register Tlow Register SDA Thigh Register

33 Interface com o Sensor Térmico
Registradores (1): Pointer Register P1 P0 Register Temperature Register (r) Configuration Register (rw) Tlow (rw) Thigh (rw) P7 P5 P6 P4 P3 P1 Register Bits P2 P0 Temperature Register 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 D1 D2 D0

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

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 R1 R0 Resolution Conversion Time 9 bits (0.5) 10 bits (0.25) 11 bits (0.125) 12 bits (0.0625) 40 ns 80 ns 160 ns 320 ns T1 T0 Consecutive Faults 1 2 4 6 SD Consecutive Faults 1 2 4 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 1 2 7 8 9 1 2 3-8 9 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.


Carregar ppt "Tópicos Especiais em Sistemas Digitais I"

Apresentações semelhantes


Anúncios Google