servo biblioteca de blocos para simulink arduino alvo
Post on 10-Feb-2018
228 Views
Preview:
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.
top related