T picos especiais em sistemas digitais i
This presentation is the property of its rightful owner.
Sponsored Links
1 / 44

Tópicos Especiais em Sistemas Digitais I PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

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;

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

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;


Vis o geral do projeto

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


Interface com a porta paralela

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.


Interface com a porta paralela1

Interface com a Porta Paralela

  • Conector tipo DB25

Para conexão

com a porta

pararela

Para conexão

com o joystick


Interface com a porta paralela2

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


Interface com a porta paralela3

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


Interface com a porta paralela4

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


Interface com a porta paralela5

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.


Interface com a porta paralela6

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);

}


Interface com a porta paralela7

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);

}

}


Interface com a porta paralela8

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


Interface com a porta paralela9

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


Interface com a porta serial

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.


Interface com a porta serial1

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


Interface com a porta serial2

Interface com a Porta Serial

  • Protocolo de comunicação do Braço Mec.


Interface com a porta serial3

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;

}


Interface com a porta serial4

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();

}


Interface com a porta serial5

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..........


Interface com a porta serial6

Interface com a Porta Serial

  • Bloco VHDL para decodificação dos comandos

Braço

Mecânico

(Serial)

ACK

Send

Arm

Hand

Base

LR

word


Interface com a porta serial7

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


Interface com a porta serial8

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


Interface com a porta serial9

Interface com a Porta Serial

  • Máquina de estados do Bloco VHDL

Recebendo

sinais

Read

Write

Enviando

sinais


Interface com a porta serial10

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)


Interface com o sensor t rmico

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


Interface com o sensor t rmico1

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.


Interface com o sensor t rmico2

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


Interface com o sensor t rmico3

Interface com o Sensor Térmico

  • Esquemático do Sensor Térmico


Interface com o sensor t rmico4

Interface com o Sensor Térmico

  • Características Elétricas


Interface com o sensor t rmico5

Interface com o Sensor Térmico

  • Características Típicas (1)


Interface com o sensor t rmico6

Interface com o Sensor Térmico

  • Características Típicas (2)


Interface com o sensor t rmico7

Interface com o Sensor Térmico

  • Estrutura de registros

PointerRegister

TemperatureRegister

I/O ControlInterface

SCL

ConfigurationRegister

TlowRegister

SDA

ThighRegister


Interface com o sensor t rmico8

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


Interface com o sensor t rmico9

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


Interface com o sensor t rmico10

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


Interface com o sensor t rmico11

Interface com o Sensor Térmico

  • Registrador de Configurações (2)

  • Controle de Alertas


Interface com o sensor t rmico12

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


Interface com o sensor t rmico13

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


Interface com o sensor t rmico14

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


Interface com o sensor t rmico15

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


Interface com o sensor t rmico16

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


Interface com o sensor t rmico17

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


Interface com o sensor t rmico18

Interface com o Sensor Térmico

  • Acoplagem do Sensor a um FPGA

Braço

Mecânico

ST

FPGA

Pinos


Conclus o

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.


  • Login