servo biblioteca de blocos para simulink arduino alvo

8
Servo Biblioteca de Blocos para Simulink Arduino  Alvo Conteúdo [ esconder  ] 1 Introdução 2 Instalação da Biblioteca 3 Usando Biblioteca 4 Demonstrações 5 Como funciona Introdução O objetivo da biblioteca é permitir que os usuários controlem servos nos modelos Simulink compilados para o alvo Arduino.  A biblioteca foi desenvolvida usando o Arduino Alvo localizado aqui: [   Arduino Alvo ] a versão utilizada foi atualizado 2011/11/22. Embora não seja a última versão do Arduino IDE (1,0 neste momento), a versão 0023 está sendo usado, pois é o mais alto compatível com esta versão do alvo Arduino.

Upload: vinicios-ferraz

Post on 10-Feb-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 1/8

Servo Biblioteca de Blocos para Simulink Arduino Alvo 

Conteúdo

[ esconder  ]

1 Introdução 

2 Instalação da Biblioteca 

3 Usando Biblioteca 

4 Demonstrações 

5 Como funciona 

Introdução

O objetivo da biblioteca é permitir que os usuários controlem servos nos modelos Simulink

compilados para o alvo Arduino.

 A biblioteca foi desenvolvida usando o Arduino Alvo localizado aqui: [  Arduino Alvo ] a versão

utilizada foi atualizado 2011/11/22.

Embora não seja a última versão do Arduino IDE (1,0 neste momento), a versão 0023 está sendo

usado, pois é o mais alto compatível com esta versão do alvo Arduino.

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 2/8

Supõe-se que você já tem o alvo Arduino instalado e funcionando. Se precisar de ajuda para

instalar-lo, ver o meu tutorial localizado aqui: Instalando o alvo Arduino para Simulink 

Instalação da Biblioteca

1. Baixar a biblioteca Servo aqui: ( servoLibrary.zip )

2. Extraí-lo para um fácil de localizar o diretório (C :/ servoLibrary)

3. Copie os arquivos Servo.h, Servo.cpp, io_wrappers.h, io_wrappers.cpp e servo.jpg para o

diretório que você extraiu o alvo para Arduino (C :/ arduinoTarget)

  Permitir janelas para substituir os arquivos io_wrappers. Isto irá permitir que os

invólucros estendidos necessários para a Biblioteca Servo para ser adicionado ao

processo Mathworks estoque

4. Lançamento MATLAB e navegue até File-> Set Path ...

5. Selecione "Add Folder" e selecione a pasta servoLibrary (C :/ servoLibrary)

6. Selecione "OK" eo servoLibrary deve aparecer no topo da lista caminho

7. Clique em "Salvar" e "Fechar"

8. Exit e re-aberto MATLAB

9. A Biblioteca Servo Arduino deve aparecer abaixo da meta Arduino (selecione o título

"Biblioteca Servo Arduino"

Usando Biblioteca

Os blocos de servo pode ser usado como qualquer um dos outros blocos da Meta Arduino. Clicando

duas vezes sobre o bloco ou trazer o diálogo parâmetros bloco set você pode definir o pino que o

servo está conectado.

O bloco espera uma entrada do tipo uint8

  Note-se que não há nenhuma verificação no local para garantir que o valor alimentado está

entre 0 e 180 (os mesmos requisitos que a utilização da Biblioteca Servo no Arduino IDE)

No Arduino UNO, utilizando um servo irá desativar automaticamente PWM nos pinos 9 e 10

Cada servo física deve utilizar o seu próprio bloco (ServoA-ServoH). Isto é devido ao desenho dos

blocos. Cada blocos representa uma instância de um objeto de Servo.Veja  # Como funciona mais

mais detalhes.

Um Arduino UNO pode, teoricamente, controlar 12 servos, os MEGA pode controlar 48

  Note-se que o controle de mais de 12 servos nas MEGA Arduino irá desativar PWM nos pinos

11 e 12

Manifestações

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 3/8

Este vídeo mostra 8 servos sendo controlados pelo Arduino. O valor atual que está sendo escrito

para os servos são enviados via serial para o computador host onde é representada graficamente

por Simulink. Os dois arquivos de modelo pode ser baixado após o vídeo.

O modelo de acolhimento de série é a demonstração do alvo Arduino. Ele pode ser iniciado

digitando demo_arduino_serial_communication_host se você tem o pacote instalado.

 A foto abaixo mostra a minha versão configurada. Defina a configuração de série e série recebem

blocos para usar a porta COM seu Arduino está conectado. Eu tinha o meu ligado à porta COM9

O modelo de Arduino está disponível aqui: [ Servo_Demonstration.mdl ] (Botão direito do mouse ->

Salvar como)

Eu coloquei os arquivos na pasta arduinoTarget :/ C, mas deve funcionar de colocá-los em outros

lugares também, desde que você faça essa pasta o diretório de trabalho atual.

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 4/8

 

Observe como cada servo (AH Servo) é atribuída a uma porta diferente no Arduino (apenas portas

digitais). Se você tiver concluído a configuração do destino Arduino, e ter o seu Arduino conectado,

você deve ser capaz de construir o modelo para o Arduino, pressionando CTRL + B.

 Aqui está uma imagem do modelo de lado Arduino:

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 5/8

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 6/8

Como funciona

 A base desta biblioteca é uma biblioteca Servo incluído com o IDE Arduino. Olhando para o arquivos

Servo.h e Servo.cpp nos arduino-0023 \ bibliotecas diretório \ Servo.Porque é uma biblioteca C + +,

não podemos simplesmente incluí-lo em um arquivo de TLC e utilizar suas funções. A chave pararesolver este problema é funções wrapper. Utilizando estes, o C + + funções podem ser envoltos em

uma função C, que pode então ser chamado pelo ficheiro de TLC.

Para entender o que está acontecendo nos bastidores, olhe primeiro para o bloco digitalOutput. É

uma máscara para a função S sfunar_digitalOutput e seus arquivos de origem estão localizados na

pasta C: \ arduinoTarget diretório \ blocos. Navegar para este diretório irá revelar quatro arquivos

com o nome sfunar_digitalOutput com extensões. C,. Tlc,. Mex32 e. Mex64. O arquivo C é o que

define o bloco. Nenhuma chamada para o comando digitalOutput acontecer aqui, ele só diz o nome,a função S.Para fazer com que os blocos de servo, eu mudei o nome aqui para o que eu usei para

cada bloco (digitalServo, digitalServo2, ect.)

 A próxima peça do quebra-cabeça são os arquivos de TLC. O arquivo TLC diz Simulink como

compilar o código para o Arduino e que precisa acontecer. Olhando sfunar_digitalOutput.tlc mostra

dois comandos Arduino familiares: pinMode () e digitalWrite (). p1_val é a variável que representa o

primeiro parâmetro (o número de pinos) e u1_val é a primeira entrada (o valor de escrever). Perto do

topo você pode ver um arquivo que está sendo incluído block_common_includes.tlc. Navegar para

este arquivo também localizado no diretório blocos revela que existem dois arquivos que estão

sendo incluídos WProgram.h e io_wrappers.h. WProgram.h é um arquivo do Arduino IDE que cuida

de definir as portas e também inclui as outras bibliotecas necessárias para executar as funções

básicas de I / O em Arduino, juntamente com HardwareSerial.h.

io_wrappers.h e io_wrappers.cpp é onde todo o C + + para C mágica acontece. Abrindo os arquivos

localizados no diretório blocos revela três funções que à primeira vista parece familiar: Serial_begin,

Serial_read, Serial_write. Em io_wrappers.cpp o embrulho acontece a criação de uma função C para

chamar a função C + +. Serial_begin chama Serial.begin e o mesmo para as outras duas funções.

 Aqueles que estão familiarizados com a programação vai dizer onde está o objeto de série vem que

podemos começar, ler e escrever a partir de? A resposta está no HardwareSerial.h e. Cpp localizado

no arduino-0023 \ hardware \ arduino \ núcleos \ arduino. Olhando para o final do arquivo, podemos

ver os objetos em série que está sendo criado com base na placa que foi selecionado. Este é o lugar 

onde eu decidi que será necessário pré-definir cada objeto servo que vai usar, o que levou à criação

de oito blocos servo individuais. Como um aparte eu tentei mudar a placa para a mega 2560 e

mudando o Serial.begin para Serial1.begin no arquivo io_wrappers, mas não teve sucesso. Eu acho

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 7/8

que isso pode estar relacionado à forma como o if são formuladas e quais variáveis são

manipulados pelo destino Arduino quando uma configuração de placa particular é selecionado.

Com esta nova compreensão de como os blocos de série trabalhar com o uso de arquivosio_wrappers, eu criei os blocos servo. Após a sintaxe dos blocos de série, criei 8 versões das

funções Servo_attach e Servo_write tanto na. H e arquivos. Cpp. No arquivo cpp., É necessário

incluir o arquivo Servo.cpp no topo para que possamos fazer chamadas para as funções. Outra

adição ao arquivo cpp. Está adicionando as definições dos oito objetos servo (Servo ServoA ;).

Depois de modificar os arquivos io_wrappers podemos voltar ao arquivo de TLC. Usando o arquivo

sfunar_digitalOutput como base para os blocos de Servo, tomei a configuração servo básico usado

na varredura de demonstração Arduino (no Arduino IDE em exemplos> Servo-> sweep). Há duascoisas necessárias para fazer o trabalho de servo. Primeiro precisamos para anexá-lo a uma porta

e, em seguida, é preciso escrever um valor a ela. Em vez de definir a pinMode (int pin) a partir 

io_wrappers.h Servo_attach correspondente é chamado. Na seção de saídas do arquivo TLC. Que

não precisa mais digitalWrite assim chamamos a função Servo_write correspondente (int

posição). Além disso, note que os nomes da função foram alterados para cada instância do arquivo

digitalServo.tlc.

 A peça final é criar os arquivos mex. Os arquivos mex são compilados a partir do arquivo c. E combase em se você estiver em um computador de 32 ou 64 bits ou um mex32. Mex64 arquivo. Será

concluída. Para criar o arquivo, tipo simples mex no MATLAB prompt de comando "mex

your_file.c". Isso irá gerar o arquivo mex. (Eu só criou. Mex32 arquivos desde que eu estou usando

32-bit Windows 7 e MATLAB)

Os blocos são simplesmente S-funções que foram mascarados (novamente eu baseei tudo sobre os

blocos alvo Arduino existentes)

Quanto às áreas de expansão, como mencionado no início Arduino UNO e MEGA tanto apoio de

mais de 8 servos, mas na época eu não prevejo eu precisar de mais do que 8. Não deve ser muito

difícil para um usuário deste pacote para adicionar mais servos, conforme necessário, seguindo o

padrão I seguido. As funções adicionais estão disponíveis na biblioteca de Servo, e, portanto, os

blocos podem ser criados para estes também igualmente seguindo a técnica usada na criação

destes blocos. Alguns usuários podem querer definir o seu servo max e min. É possível adicionar 

parâmetros adicionais para a função de S para max e min (e também definir padrões deve o usuário

7/22/2019 Servo Biblioteca de Blocos Para Simulink Arduino Alvo

http://slidepdf.com/reader/full/servo-biblioteca-de-blocos-para-simulink-arduino-alvo 8/8

não quiser colocá-las). O usuário teria que adicionar os parâmetros adicionais para a função

Servo_attach e também alterar a chamada para a função Servo.attach que pode aceitar um ou três

parâmetros.

O Alvo Arduino para Simulink e todos os seus arquivos são direitos autorais dos MathWorks.