• Nenhum resultado encontrado

Implementação de PWM e Controlo de Motor Servo

N/A
N/A
Protected

Academic year: 2021

Share "Implementação de PWM e Controlo de Motor Servo"

Copied!
9
0
0

Texto

(1)

Implementação de PWM e Controlo de Motor Servo

com PSoC

Objectivo:

Projectar PWM (“Pulse Width Modulation”, isto é, Modulação por Largura do Impulsos) num PSoC e controlar um motor servo, por variação do ciclo de trabalho (“duty cycle).

Material Necessário:

Placa de desenvolvimento EasyPSoC4 da Mikroelektronica, servo motor de rotação contínua (por exemplo, Parallax continuation rotation servo) e LCD 2x16 (este último dispositivo é incluído com a placa EasyPSoC4).

Pré-Requisitos:

É necessário saber programar em linguagem “C” e ter noções básicas sobre PSoCs, nomeadamante sobre o integrado CY8C27643 da Cypress. O software gratuito “PSoC Designer” da Cypress deverá estar instalado no PC, com a opção do software de programação em “C” da Imagecraft, escolhido como padrão (que pode ser utilizado gratuitamente por um período de 45 dias).

Montagem do Circuito:

Na placa EasyPSoC4 (que inclui como padrão o PSoC DIL CY8C27643 da Cypress), montar o display LCD 2x16 e o motor servo de rotação contínua. Assegurar que o display GLCD não esteja montado na placa EasyPSoC4, por este causar conflitos, quando montado em simultâneo com o LCD 2x16.

(2)

Implementação de PWM e Controlo de Motor Servo com PSoC Tayeb Habib

Fig 2: Diagrama do circuito com ligações do display LCD 2x16 e do

servo motor de rotação contínua. A porta P0.7 encontra-se nos

terminais no extremo direito da placa EasyPSoC4 indicado pela seta.

Experiência:

Projecto de controlo por variação do ciclo de funcionamento

(“duty cycle”)

Introdução

A Fig. 3 mostra 3 diferentes “duty cycle”, isto é, ciclos de funcionamento. A primeira imagem mostra uma saída PWM com um ciclo de funcionamento de 75%, isto é, o sinal está ON durante 75% do período, e OFF os outros 25%. As segundas e terceiras imagens mostram saídas de PWM de 50% e 25% respectivamente.

(3)

Fig. 3. Sinais PWM com diferentes ciclos de funcionamento

Programação

a)

Iniciar novo projecto no PSoC Designer, dando-lhe um nome, como por exemplo “pwm_servo”. O software perguntará se se quer criar um novo directório, e a resposta deverá ser SIM premindo no botão respectivo. Na janela seguinte escolhe-se “C”, premindo-se depois o botão Concluir.

b)

No PSoC Designer escolhe-se LCD que se encontra dentro de Misc Digital do módulo User Module Selection, premindo duas vezes sobre o ícone do LCD. A seguir escolhe-se PWM_16 que se encontra dentro de PWMs do módulo User Module Selection, premindo-se duas vezes sobre o ícone PWM_16.

c)

Selected User Modules deverá ficar com os ícones, como se pode vêr a seguir:

d)

Premir a seguir o botão (Interconnect View) para se poderem configurar as ligações no PSoC.

(4)

Implementação de PWM e Controlo de Motor Servo com PSoC Tayeb Habib

Cálculos Preliminares:

VC2 = VC1/3 VC1 = SysClk/8 VC2 = SysClk/(8x3) = 24MHz/24 = 1MHz VC3 = 8 x Baudrate = 8 x 9600 = 76,8K VC3 = VC1/n n = 3000/76,8 = 39,0625 Assim : VC3 Divider = 39

Fig. 4. Recursos Globais

Para Parâmetros de Módulos de Utilizador fazem-se as seguintes configurações:

Fig. 5 Configurações PWM16_1, LCD_1 e Portas do PSoC

e)

A janela final de ligações no PSoC deverá ficar configurada como se vê na imagem seguinte:

(5)

Fig. 5 Janela de configuração das ligações

Acontece que a ligação de Row_0_Output não estará implementada e que a janela estará com o seguinte aspecto:

Fig. 6

Janela actual sem a ligação

Row_0_Output

Como se deve constatar, faltará implementar a ligação dentro do eclipse a vermelho, como se pode vêr na figura seguinte:

(6)

Implementação de PWM e Controlo de Motor Servo com PSoC Tayeb Habib

Fig. 7

Falta implementar a ligação dentro do círculo a vermelho

Esta ligação é feita manualmente, premindo duas vezes sobre a terminação da extremidade do lado direito da linha com a côr vermelha, que se vê na Fig. 8, e com a frase “Row_0_Output_3”:

Fig. 8

Linha de implementação da ligação em falta

Premindo duas vezes sobre o terminal no extremo direito da linha vermelha abre-se a seguinte janela:

(7)

Escolhe-se o segundo amplificador. Premindo sobre ele aparecerá a seguinte janela:

Fig. 10

Implementação da ligação em falta

Na janela de escolha da Fig. 10, aceita-se “GlobalOutEven_7 (que é de facto P0.7 da ligação do servo). Fecha-se a seguir a janela premindo sonre Close. O resultado final será o da Fig. 5.

Estamos agora aptos para continuar:

f)

A seguir, premir no botão (Generate Application). O PSoC Designer gerará as aplicações.

g)

Agora, premir no botão (Application Editor), e dentro de pasta pwm_servo files e a sub-pasta Source files, abrir o ficheiro main.c e escrever o seguinte código, substituindo o croquit que é gerado automáticamente:

//--- // Linhas principais em "C"

// Implementação de PWM e Controlo de Motor Servo

// Autor: Tayeb Habib – Aliatron email: tayeb.habib@aliatron.pt // Código adaptado de http://narong.engr.tu.ac.th/microlab/doc // 2 de Agosto de 2009

//--- #include <m8c.h> //Especificação de constantes e macros #include "PSoCAPI.h" //Definições de API PSoC para todos //os Módulos #include <stdlib.h> #include <lcd_1.h> void main() { DWORD i; char TextBuff[10];

(8)

Implementação de PWM e Controlo de Motor Servo com PSoC Tayeb Habib LCD_1_Start(); //Inicaliza LCD PWM16_1_Start(); //Inicializa PWM PWM16_1_WritePeriod(2000); LCD_1_Position(0,0); LCD_1_PrCString("Teste Servo"); i=1000;

PWM16_1_WritePulseWidth(i); //Ajusta largura do impulso while(1)

{

if(i>1999) {i=20;}

if(PRT0DR & 0x10) //Testa Porta 0_4 {

i++;

LCD_1_Position(1,0);

LCD_1_PrCString("Duty cicle ");

itoa(TextBuff,(i*100)/2000,10); //Converte integral para string base 10 //de Duty Cycle

LCD_1_PrString(TextBuff); LCD_1_PrCString(" % "); PWM16_1_WritePulseWidth(i); } } }

h)

Premir no botão (Compile/Assemble). O resultado poderá ser visto na janela Build da parte inferior de PSoC Designer, e que será:

Compiling...

creating project.mk ./main.c

main.o - 0 error(s) 0 warning(s) 19:11:27

i)

Finalmente premir no botão (Build). O resultado poderá ser visto na janela Build da parte inferior de PSoC Designer, e que será:

creating project.mk -- no changes lib/lcd_1.asm lib/psocconfig.asm lib/psocconfigtbl.asm lib/pwm16_1.asm lib/pwm16_1int.asm ./boot.asm ./main.c Linking..

!W warning: area 'pwm_servo_RAM' not defined in startup file './obj/boot.o' and does not have an link time address.

Area 'pwm_servo_RAM' follows area 'data'. Starting address 0xa. ROM 11% full. 1843 bytes used (does not include absolute areas). RAM 3% full. 10 bytes used (does not include stack usage).

(9)

Nota: O aviso de alocação de memória RAM é típico para o compilador da Imagecraft. O boot.asm prevê tal aviso que não aparece nos outros compiladores. O compilador de Imagecraft acaba por alocar a memória RAM quando compila.

j)

O ficheiro pwm_servo.hex será gerado, e que ficará dentro da pasta Output do directório criado no início da programação, o qual pode agora ser utilizado para programar o PSoC da placa EasyPSoC4. Quando o PSoC estiver programado com o hex, o display LCD 2x16 mostrará na primeira linha “Teste Servo” e na segunda linha o actual Duty Cycle gerado. O Duty Cycle pode ser alterado premindo primeiro o botão de Reset do EasyPSoC4, e depois premindo o botão de pressão P0.4. Se o servo estiver já accionado, pode ser travado, premindo o botão de pressão P0.7 em simultâneo com o P0.4, permitindo assim que se altere o Duty Cycle.

Conclusões:

Os PSoCs oferecem ciclos rápidos de desenvolvimento, traduzindo-se em completos sistemas embebidos, com componentes activos analógicos e digitais incluídos neles, sendo assim necessários poucos componentes externos. Estes dispositivos fabricados pela Cypress, têm-se provado ser extremamente extensíveis, sendo usados, por exemplo, em coisas tão simples como as escovas de dentes da marca “Sonicare” e sapatilhas da marca “Adidas”. Uma característica de solução chamada “CapSense”, da Cypress, controla no écrã do Apple iPod o scroll sensível ao toque.

Referências

Documentos relacionados

Implementar um plano de intervenção com vistas à redução da incidência da Diabetes mellitus descompensada na Unidade Básica de Saúde Vilas Reunidas tem uma grande

Os roedores (Rattus norvergicus, Rattus rattus e Mus musculus) são os principais responsáveis pela contaminação do ambiente por leptospiras, pois são portadores

Este texto é uma reflexão em torno da necropolítica, a partir de Achille Mbembe, e das esculturas de Niemeyer, de como estas obras artísticas representam a enunciação e

O candidato e seu responsável legalmente investido (no caso de candidato menor de 18 (dezoito) anos não emancipado), são os ÚNICOS responsáveis pelo correto

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

Por esta razão, objetivamos analisar a política de expansão da Igreja Católica na Bahia, na década de 1950, e sua correlação com a criação do Primeiro Bispado em Vitória

Entrando para a segunda me- tade do encontro com outra di- nâmica, a equipa de Eugénio Bartolomeu mostrou-se mais consistente nas saídas para o contra-ataque, fazendo alguns golos

As abraçadeiras tipo TUCHO SIMPLES INOX , foram desenvolvidas para aplicações que necessitam alto torque de aperto e condições severas de temperatura, permitin- do assim,