UNIVERSIDADE DA MADEIRA Departamento de Matemática e Engenharias Licenciatura em Engenharia de Sistemas e Computadores (LESC) Laboratórios III (Microprocessadores) 2º Trabalho prático Controlo de um motor passo-a-passo Não preencher Classificação: Peso na avaliação: 10% Data da realização: 07/04/2003 Data de entrega: 28/04/2003 Penalização: Recebido: Visto: Dionísio Barros Ano lectivo 2002/2003
1. Objectivos Os objectivos do de laboratórios III são os seguintes: Utilizar a ferramenta de desenvolvimento da Keil para escrever, simular e assemblar um programa para o 80C51; Programar o microcontrolador AT89C51 da Atmel através do programador universal; Desenvolver um programa em assembley para controlar a velocidade de um motor passo-a-passo; Usar obrigatoriamente as interrupções e o temporizador/contador do microcontrolador. 2. Introdução Motor passo-a-passo Esta experiência mostra a capacidade e flexibilidade do microcontrolador em controlar um motor passo-a-passo. Muitas das características necessárias para um movimento controlado - como a direcção, a sequência de passos, a velocidade, aceleração e posição pode ser feito em software, diminuindo os componentes electrónicos e os custos. Os motores passo-a-passo são usados em aplicações onde é necessário definir com precisão o controlo de posição. Impressoras, discos rígidos e em robôs, são aplicações típicas onde os motores deste tipo são utilizados. O Motor passo-a-passo é constituído por um íman permanente o rotor e duas bobinas exteriores o stator. O rotor alinha-se com o stator quando é alimentada, assim o rotor coloca-se na posição das bobinas que estão ligadas no stator. O microcontrolador pode facilmente comutar as correntes das bobinas e assim controlar a posição do rotor. Além disso, o microcontrolador é capaz de controlar o tempo em que as bobinas são magnetizadas e consequentemente a velocidade do motor de uma forma precisa. O circuito da Figura 1 mostra o esquema de ligações usado para comutar a corrente nas quatros bobinas do motor passo-a-passo. O motor é alimentado por uma tensão de 5 V, designada de V CC. O controlo do motor é feito de forma unipolar. A resistência das bobinas do motor passo-a-passo é de aproximadamente 35 Ω. A alimentação das bobinas é feito recorrendo a transístores na configuração de par darlington os transístores Q 1 a Q 8 para amplificar consideravelmente a corrente do microcontrolador. Nesta configuração são ligados os fios vermelhos a V CC (5 V) o fio preto a Q 5, castanho a Q 6, laranja a Q 7 e amarelo a Q 8. As bases dos transístores Q 1 a Q 4 estão ligados aos pinos P1.0 a P1.3, respectivamente. Os díodos D 1 a D 4 são díodos de roda livre (fly back diodes) e são usados para proteger os transístores da polarização inversa. A carga dos transístores são os enrolamentos do motor. As bobinas são elementos que transformam a corrente eléctrica em energia magnética. Quando a corrente é cortada aos terminais de uma bobina, a energia magnética é transformada em corrente. Essa corrente tende a fluir através do transístor, polarizado inversamente. O díodo e/ou a resistência de (entre a base e o colector) garantem sempre a continuidade da corrente sem passar pelo transístor polarizado inversamente. Note que os díodos estão polarizados inversamente quando os transístores estão a conduzir e podem estar polarizados directamente quando os transístores estão desligados. UMa - DB - 2002/2003 TP2-2
Amarelo Laranja Castanho V CC 5 V V CC 5 V V CC 5 V V CC 5 V Preto Motor Q 4 Q 3 Q 2 Q 1 Q 8 D 4 Q 7 D 3 Q 6 D 2 Q 5 D 1 P1.3 P1.2 P1.1 P1.0 Figura 1. Ligações do motor passo-a-passo ao microcontrolador. A Tabela 1 mostra os estados dos transístores Q 1 a Q 4 correspondente à sequência de impulsos que têm de ser aplicados ao motor passo-a-passo para rodar no sentido dos ponteiros do relógio. A rotação no sentido contrário ao dos ponteiros do relógio corresponde a percorrer a tabela no sentido contrário. Cada passo movimenta o rotor do motor com um ângulo de 7.5 º. Tabela 1. Sequência de impulsos a aplicar ao motor passo-a-passo para rodar no sentido dos ponteiros do relógio. Passo Q 1 Q 2 Q 3 Q 4 Valor P1 P1.0, Preto P1.1 Castanho P1.2 Laranja P1.3 Amarelo 1 OFF ON OFF ON 10 2 ON OFF OFF ON 9 3 ON OFF ON OFF 5 4 OFF ON ON OFF 6 1 OFF ON OFF ON 10 Na Tabela 1, ON indica que o transístor está na condução, isto é, a tensão na base do transístor tem de estar no nível alto. Analogamente, OFF indica que a base do transístor está no nível baixo. Assim, colocando o sinal lógico 1 na porta liga o transístor, deixando passar corrente na bobina do motor e colocando o sinal lógico 0 na porta desliga o transístor, cortando a corrente na bobina. 3. Lista de material Equipamento Multímetro Fonte de tensão Osciloscópio Ferramenta de desenvolvimento DS-750 da CEIBO Programador Universal Chip Master 3000 UMa - DB - 2002/2003 TP2-3
Software RCHPSIM CEIBO DS750D Keil Acessórios Condutores Placa de montagem Componentes Condensadores de 33 pf e 10 µf Díodos 1N4005 Descodificador BCD - Display de sete segmentos 74LS47 Display de 7 segmentos HPHDSP-7501 Motor passo-a-passo Resistências Transístores 2N2222 e BD139 Cristal de quartzo de 12 MHz Microcontrolador AT89C51 4. Enunciado Neste segundo trabalho prático é pretendido programar o microcontrolador AT89C51, através do programador universal, com um programa feito em linguagem assembly usando a ferramenta de desenvolvimento Keil [2], [3] e [4]. O programa a desenvolver é para comandar e controlar o motor passo-a-passo da Figura 1 com os seguinte requisitos: 1. As portas P1.0 a P1.3 são usadas para comandar a posição do rotor conforme está representado na Figura 1. 2. O pino P2.0 quando no nível lógico 0 indica que o movimento do motor é no sentido dos ponteiros do relógio e quando no nível lógico 1 no sentido contrário. 3. A velocidade do motor tem de ser controlada por um Temporizador/Contador e os impulsos de contagem têm de vir de um sinal exterior com frequência de 1 khz. 4. Os estados de funcionamento do motor são os seguintes: Estado Posição Velocidade Sentido Porta P 2 Int Externa 0 Indefinida 0 rot/s Indefinido Indefinida Activa 1 Andamento 0.1 rot/s Ponteiros 11111100 Desactiva 2 Andamento 0.1 rot/s Oposto 11111101 Desactiva 3 Andamento 0.5 rot/s Ponteiros 11111010 Desactiva 4 Andamento 0.5 rot/s Oposto 11111011 Desactiva 5 Andamento 1 rot/s Ponteiros 11110110 Desactiva 6 Andamento 1 rot/s Oposto 11110111 Desactiva UMa - DB - 2002/2003 TP2-4
5. Os pinos disponíveis na porta 1 devem ser usados para indicar no display de sete segmentos o estado de funcionamento do motor. O estado tem de estar constantemente a piscar, com intervalo de duração de 1 s. 6. O estado 0 é activada pela interrupção externa e tem prioridade máxima. 7. Quando a porta P 2 estiver num estado não definido então o motor deve estar parado. No final do trabalho prático, cada grupo deve apresentar um relatório com os seguintes elementos de avaliação: 1. Fluxograma do programa (30%); 2. Listagem do programa em assembly feito na ferramenta de desenvolvimento Keil. (50%); 3. Esquema eléctrico do circuito final (20%). 5. Bibliografia [1] Sencer Yeralan, Ashutosh Ahluwalia, Programming and Interfacing the 8051 Microcontroller, Addison Wesley, 1995. [2] Universidade do Porto, Faculdade de Engenharia, Microprocessadores, Apoio às aulas práticas, Primeiros Passos na Programação em Linguagem Assembly, 1ª Edição, 2002. [3] Universidade do Porto, Faculdade de Engenharia, Microprocessadores, Apoio às aulas práticas, Programação em Linguagem Assembly Saltos e Subrotinas, 1ª Edição, 2002. [4] Universidade do Porto, Faculdade de Engenharia, Microprocessadores, Apoio às aulas práticas, Programação Modular em Linguagem Assembly, 1ª Edição, 2002. Bom Trabalho. UMa - DB - 2002/2003 TP2-5