Académique Documents
Professionnel Documents
Culture Documents
PWM
Modulao de Largura de pulso, ou PWM, uma tcnica para obter sinais analgicos utilizando sinais digitais. Um conversor Digital-Analgico barato; O controle digital usado para criar uma onda retangular, formado por um sinal alternado entre ligado e desligado. Este padro on-off pode simular tenses analgicas entre 5 Volts e 0 volts, alterando a poro de tempo que o sinal esteja alto em comparao com o tempo em que o sinal esteja baixo. A durao do "tempo" chamado de largura de impulso. Para obter diferentes valores analgicos, muda-se a largura de pulso. Se repetir este padro on-off com rapidez suficiente, com um LED por exemplo, o resultado obter o controle da luminosidade do LED; Esta durao do tempo ou perodo o inverso da frequncia de PWM.
2/59
PWM
A tcnica de PWM consiste em manipularmos a razo cclica de um sinal, o duty cycle, afim de transportar informao ou controlar a potncia de algum outro circuito. Com isso, teremos um sinal digital que oscila entre 0v e 5v com determinada frequncia (o Arduino trabalha com um padro prximo a 500Hz). O duty cycle a razo do tempo em que o sinal permanece em 5v sobre o tempo total de oscilao, como est ilustrado abaixo:
3/59
Com PWM pode-se obter uma tenso analgica a partir de um sinal digital (DAC), com utilizao de filtros na sada;
4 /59
PWM
A tenso mdia ser:
para para
0<= t tp < t
PWM
Para se obter um conversor digital analgico a partir de um pino digital, basta implementar um sinal PWM e adicionar em sua sada um filtro passa baixa com frequncia de corte menor que a prpria frequncia do PWM.
Supor um filtro RC, onde fcorte = 1 / (2*pi*R*C); Neste caso, deve-se adotar sempre o seguinte:
Quando no necessria obter uma tenso mdia contnua, a implementao do filtro descartada; No caso de resistores de aquecimento ou motores DC o filtro dispensvel, uma vez que estes componentes j atuam como filtros, desde que a frequncia do PWM no seja muito baixa.
6 /59
PWM - DAC
7 /59
Etapas:
Duty = 10%
Veja alguns exemplos em: http://ww1.microchip.com/downloads/en/AppNotes/00655a.pdf http://aquaticus.info/pwm-sine-wave http://www.wpi.edu/Pubs/E-project/Available/E-project-042711190851/unrestricted/PWM_Techniques_final.pdf
Duty = 70%
9 /59
Veja o resultado da simulao com um sinal PWM aplicado em utilizando um filtro RC com 2 estgios, para gerao de um sinal senoidal.
10 /59
Veja o resultado da simulao com um sinal PWM aplicado em utilizando um filtro LC com 2 estgios, para gerao de um sinal senoidal. Em no havendo necessidade de obter tenso mdia contnua, utilizase o PWM sem filtros (aquecimento e acionamento de motores), desde que a frequncia do PWM no seja muito baixa. 11 /59
BAT1
12V
M1
R1
1k X1 8
+88.8
Volts
R3
1k
Q1
BD136
rpm
D2
1N4148
D3
1N4148
VCC
Q DC
3 7
C3
100n
X2
SW1
SW -DPDT HH duplo
RV1
42%
CV
U1
555 GND 6
47k
D1
1N4148
TR
TH
x1
A B C
C2
0.1u
X2
C1
0.01u
Nota:
Usar conectores KRE para ligaes da PCI aos componentes fora da PCI (chassis)
12/59
Esta tcnica tem a vantagem de que se pode usar qualquer pino de sada digital. Alm disso, tem-se o controle completo do ciclo de trabalho e da frequncia. Uma grande desvantagem que quaisquer interrupes ir afetar o tempo, o que pode causar instabilidade considervel a menos que voc se desabilite todas as interrupes. Nesta fonte de PWM difcil determinar as constantes apropriadas para um ciclo de trabalho particular e frequncia, a menos que voc queira contar os ciclos cuidadosamente, enquanto observa no osciloscpio.
13/59
14/59
if (val != val2) // se houver mudancas { analogWrite(ledPin, val1); // gerar PWM em ledPin Serial.print("ADC = "); Serial.print(val, DEC); Serial.print(" duty = "); Serial.print(100*val1/256, DEC); Serial.println("% "); } val2 = val; } // val varia de 0 a 1023 // val1 varia de 0 a 255
PWM no arduno fcil de utilizar, com a funo: analogWrite(pin, dutyCycle), onde dutyCycle is um valor de 0 a 255, e o pin uma das sadas analgicas (pinos 3, 5, 6, 9, 10, ou 11). A funo analogWrite fornece uma interface simples, mas no fornece qualquer controle sobre frequncia. (Note-se que, apesar do nome da funo, a sada um sinal digital, muitas vezes referenciada como uma onda quadrada.) Provavelmente 59% dos leitores pode parar aqui, e usar apenas analogWrite para PWM, mas h outras opes que oferecem mais flexibilidade.
15/59
16/59
bits
8 8 16 16 8 8 16 16 16 16 16 16 16 16 16
Canal
A B A B A B A B C A B C A B C
Pino no MEGA
13 4 11 12 10 9 5 2 3 6 7 8 44 45 46 17/59
No reset, o bootloader do Arduno configura os timers para uso em PWM pela funo analogWrite (); Os timers so configurados para o modo phasecorrect 8-bit e com o relgio preescaleado por 64. No entanto, o timer0 configurado para o modo fast PWM, para uso das funes millis() / micros().
Timer output
OC0A OC0B OC1A OC1B OC2A OC2B
Arduino output
6 5 9 10 11 3
Chip pin
12 11 15 16 17 5
Pin name
PD6 PD5 PB1 PB2 PB3 PD3 18/59
20/59
Ftimer (Hz) = (Fclock ) / prescaler Valor_registrador = (16 MHz) / (prescaler * tempo) ) 1 Exemplo: tempo=1s / prescaler = 1024 => valor_do registrador = 15624 => (apenas o timer1)
22/59
Timers no Arduino
Diagrama de blocos dos TImers
O bit flag TOVn setado de acordo com o modo de operao em WGMn2:0, podendo ser usado para gerar uma interrupo.
Modos de Operao: Os bits WGM (Waveform Generation Mode) controlam os vrios modos de funcionamento dos timers.
count Incrementa e decrement TCNTn por 1; direction Seleciona incremento ou decremento; clear limpa TCNTn; clkTn clock do timer top indica que TCNTn atingiu valor mximo; bottom indica que TCNTn atingiu valor mnimo (0)
23/42
Timers no Arduino
Waveform Generation Mode bits (WGM) Timer0 (8 bits)
Modos:
Normal PWM - Phase Correct PWM Fast CTC Desligado
24/42
Timers no Arduino
Waveform Generation Mode bits (WGM) Timer1 (16 bits)
Modos: Normal PWM fase Correta PWM fase Correta 8bits PWM fase Correta 9bits PWM fase Correta 10bits PWM fase e frequncia Correta PWM Fast PWM Fast, 8 bits PWM Fast, 9 bits PWM Fast, 10 bits CTC Desligado
25/42
Timers no Arduino
Waveform Generation Mode bits (WGM) Timer2 (8 bits)
26/42
Timers no Arduino
Timer/Counter Prescaler Timer1
27/42
Timers no Arduino
Timer/Counter Prescaler Timer2
28/42
Timers no Arduino
8-bit Timer/Counter2 with PWM and Asynchronous Operation
O ATMEGA328 tem 3 timers e 6 sadas PWM; O Arduino usa o Timer0, 8bits, internamente para as funes millis() e delay(); Portanto, mudando os registradores deste timer, pode afetar o uso destas funes; A biblioteca de PWM usa estas funes internamente: Timer0 => Pinos de sada: PD6 (6) e PD5(5) Timer1 => Pinos de sada: PB1(9) e PB2(10) Timer2 => Pinos de sada: PB3(11) e PD3(3)
)elcyc_ytud ,nip(etirWgolana
29/42
Timers no Arduino
Cada temporizador tem 2 registradores para comparar os valores de contagem com o valor limite ou programado (0xFF ou OCRnA), e controlar a largura PWM; Quando o registrador de contagem chega no valor programado, a CPU avisada atravs de um bit flag, que pode causar uma interrupo, se previamente programada. O Temporizador/Contador pode ser sincronizado internamente, atravs do prescaler (AS2=0, default), ou de forma assncrona com clock nos pinos TOSC (TOSC1 e TOSC2 / AS2=1, neste caso). A operao assncrona (externa/Tn) controlada pelo Estado Assynchronous Register (RAEE).
30/42
Timers no Arduino
Cada um dos timers tem um contador que incrementado ou decrementado a cada pulso de clock; A interrupo do timer ocorre quando o contador atingir 0xFF ou chegar a um valor especificado previamente no registrador de comparao do timer (OCR2A Output Compare Register A ou OCR2B Output Compare Register B); Neste momento o valor do contador zerado e inicia novamente a nova contagem; A frequncia PWM gerada pode ser controlado de 2 modos: (b) frequncia de PWM, usando o prescaler; (b) limite superior do contador (0xFF ou OCRnA); Ao escolher o valor para a comparao, junto com o valor da frequncia de clock (usando o prescaler), que sincroniza o incremento no contador, pode-se controlar a frequncia de interrupes do timer, quando habilitada, bem como, a gerao do PWM.
31/42
Timers no Arduino
Timer1 - Output Unit (16 bits)
O contador de 16-bit formado por dois registradores de 8-bit: TCNT1H e TCNT1L. O Registro TCNT1H s pode ser acessada indiretamente pela CPU; Quando a CPU precisa acessar TCNT1H I, usa o registro temporrio (TEMP). O registo temporrio atualizado com o valor TCNT1H quando o TCNT1L lido, e TCNT1H com o valor do registrador temporrio, quando escreve em TCNT1L. Isso permite a CPU a ler ou escrever todo o valor de 16 bits dentro um ciclo de clock atravs do barramento de dados de 8 bits. Dependendo do modo de operao utilizado, o contador limpo, incrementado ou decrementado a cada relgio temporizador (clkT1). O sinal clkT1 pode ser gerada a partir de uma fonte de relgio externo ou interno, selecionado pelos bits Relgio Select (CS12: 0). Quando no h fonte de clock selecionado (CS12: 0 = 0) e o cronmetro parado. No entanto, o valor TCNT1 pode ser acessada pela CPU, independentemente de clkT1 est presente ou no.
32/42
Timers no Arduino
Timer2 - Output Compare Unit (8 bits)
O comparador de 8 bits que compara continuamente TCNT2 com a sada do Registrador (OCR2A ou OCR2B). Sempre que TCNT2 for igual a OCR2A ou OCR2B, o comparador seta o flag correspondente (OCF2A ou OCF2B) para avisar o timer e reiniciar a contagem; Se a interrupo correspondente estiver ativada, acionada a rotina de atendimento a interrupo, onde o flag automaticamente limpo; Como alternativa, o flag pode ser limpo por software, escrevendo 1 diretamente no registrador correspondente; O PWM gerado utiliza o flag para gerar uma sada OC2A ou OC2B, de acordo com o modo de funcionamento definido por WGM22:0 e COM2x1:0.
Timers no Arduino
Modos de operao do Timer2 (8 bits)
Modo Normal
O timer conta normalmente at o MAX, 0xFF, quando reinicia a contagem, setando flag de interrupo (TOP = MAX); No gera PWM automtico, podendo ser gerado na rotina de interrupo; O timer conta normalmente at atingir o limite o TOP de contagem:OCR2A ou OCR2B, quando reinicia a contagem, setando flag de interrupo; No gera PWM automtico, podendo ser gerado na rotina de interrupo; Um modo de gerao automtica de PWM nos pinos 11 e/ou 3, onde ocorre o incremento do MIN ao TOP (neste caso, MIN=0); Um modo de gerao automtica de PWM nos pinos 3 e/ou 11, onde o contador incrementa de MIN at o TOP e, em seguida, decrementa at o valor mnimo (0). Melhor opo para acionamento de certas cargas, como motores.
34/42
Timers no Arduino
35/42
Timers no Arduino
36/42
Timers no Arduino
Timer2 Modos de Operao Fast PWM Mode (WGM22:0 = 3 ou 7)
Usado para gerar frequencias maiores para o PWM; No modo de PWM rpido, o contador incrementado at que o valor do contador atingir ao valor TOP, a o contador ento limpo no ciclo seguinte do relgio temporizador. O valor TCNT2 e o diagrama de temporizao esto ilustrads na figura a seguir; O diagrama inclui sadas PWM no invertida e invertida; As pequenas marcas vistas na linha horizontal na TCNT2 representam a comparao entre OCR2x e TCNT2; No modo de PWM rpido, a unidade de comparao permite a gerao de formas de onda PWM no pino OC2x; Definindo os bits COM2x1:0 para 2 ser produzido um PWM no invertida e uma sada PWM invertido; Definindo a COM2x1:0 para 3, TOP definido como 0xFF quando WGM2:0 = 3, e quando MGM2:0 = 7 em OCR2A ; O valor OC2x real s ser visvel no pino da porta se a direo de dados para o pino da porta for definido como sada. A forma de onda PWM gerada ajustando-se o Registrador OC2x equando entre OCR2x for igual a TCNT2; A frequncia de sada de PWM pode ser calculada pela seguinte equao:
N = prescaler = (1, 8, 32, 64, 128, 256, ou 1024)
37/42
Timers no Arduino
Timer2 Modos de Operao Fast PWM Mode (WGM22:0 = 3 ou 7)
O flag de estouro do timer, TOV2, setado a cada estouro de contagem (TOP). Se a interrupo estiver ativada, a rotina de tratamento de interrupo pode ser utilizada para atualizar o valor de comparao, permitindo gerar o PWM no pino OC2x; Definindo os bits COM2x1:0 = 2 ir produzir um PWM no invertido, e uma sada PWM invertido pode ser gerado, definindo a COM2x1:0 = 3; O TOP definido como 0xFF, quando WGM2:0 = 3, e quando em OCR2A, MGM2: 0 = 7; O valor OC2x somente estar visvel no pino da porta se a direo de dados para o pino da porta estiver definida como sada. A forma de onda PWM gerada no registrador OC2x (1 ou 0), durante a comparao entre OCR2x e TCNT2, e na transio lgica de durante os pulsos de alto para baixo;; A frequncia de PWM da sada pode ser calculada pela seguinte equao:
Neste modo o timer conta de 0 a 255. A sada liga quando o timer 0, e desliga quando o valor do timer corresponder ao valor do registrador OCR2A. Quanto maior o valor da sada de comparao, maior o ciclo de servio (duty). Os valores extremos para o Registrador OCR2A representam casos especiais ao gerar um PWM de sada neste modo. Se o OCR2A = BOTTOM, a sada ser um pico estreito para cada ciclo de clock (MAX+1). Se OCR2A=MAX+1, resultar numa sada constante, alto ou baixo, dependendo da polaridade da sada definido nos bits COM2A1: 0.
N = prescale =
38/42
Timers no Arduino
Timer2 Modos de Operao Clear Timer on Compare (WGM22:0 = 2) Match (CTC) Mode
Neste modo, o registrador OCR2A usado para configurar a resoluo do timer; No modo CTC o contador zerado quando o timer atingir o valor do contador (TCNT2) for igual ao valor no registrador OCR2A; O OCR2A define o topo da contagem, portanto, a resoluo do timer; Este modo permite maior controle na comparao e no frequncia do sinal de sada; Este modo simplifica a operao com evento externo;
1. Para gerar uma de forma de onda na sada no CTC modo, a sada OC2A pode ser definido para alternar o nvel lgico em cada partida comparao definindo a comparar bits de modo de sada para alternar o modo de (COM2A1: 0 = 1). 2. A frequncia da forma de onda definido pela seguinte equao:
Timers no Arduino
Timer2 Modos de Operao Phase-Correct PWM (WGM22:0 = 1 ou 5)
Neste modo, o timer conta de 0 a 255 e, em seguida, de volta para 0. Este modo baseia-se numa operao de dupla inclinao;
O TOP definido como 0xFF quando WGM2:0 = 3, e quando em OCR2A, MGM2:0 = 7; A sada da comparao (OC2x) zerada enquanto o timer estiver com valores acima do TOP de comparao e setado para valores abaixo, execeto na primeiro ciclo, que inicia setada; A operao de inclinao dupla tem menor freqncia de operao que a de inclinao nica. No entanto, devido caracterstica simtrica dos modos de dupla inclinao PWM, estes modos so preferidos para aplicaes de controle do motores; Neste modo o timer incrementado at o TOP e, ento, muda a direo de contagem. O valor de TCNT2 ser igual ao TOP uma vez no ciclo do timer; O flag TOV2 setado toda vez que o timer igualar ao valor BOTTOM (mais baixo); Neste modo gerado um sinal PWM no pino OC2x, fazendo-se COM2x1:0=2, produz o PWM invertido; Um PWM invertido pode ser gerado fazendo-se COM2x1:0=3; O TOP definido como 0xFF quando WGM2:0 = 3, e em OCR2A, MGM2:0 = 7;
40/42
Timers no Arduino
Timer2 Modos de Operao Phase-Correct PWM (WGM22:0 = 1 ou 5)
O valor OC2x somente ficar visvel no pino da porta se a direo de dados para o pino da porta for definida como sada; A frequncia de PWM na sada pode ser calculada pela seguinte equao:
N = prescale ={1, 8, 32, 64, 128, 256, ou 1024}
41/42
Timers no Arduino
Registradores para TIMER2:
TCCR2A Timer/Counter Control Register A TCCR2B Timer/Counter Control Register B TCNT2 Timer/Counter Register OCR2A Output Compare Register A OCR2B Output Compare Register B
42/42
Timers no Arduino
Registradores para TIMER2:
TIMSK2 Timer/Counter2 Interrupt Mask Register
GTCCRGeneral Timer/Counter
Control Register
43/42
Timers no Arduino
Detalhes dos registradores para TIMER2: TCCR2A
44/42
Timers no Arduino
Detalhes dos registradores para TIMER2:
TCCR2A Timer/Counter Control Register A TCCR2B Timer/Counter Control Register B Bit 7 de TCCR2B FOC2A: Force Output Compare A Ativo somente quando WGM configurar modo de no PWM / no gera interrupo / Sempre lido como 0; Bit 6 de TCCR2B FOC2B: Force Output Compare A Ativo somente quando WGM configurar modo de no PWM / no gera interrupo / Sempre lido como 0; TCNT2 Timer/Counter Register Contador do timer2 de 8 bits / Usado para comparar valores com o registrador OCR2x; OCR2A Output Compare Register A Registrador 8 bits com valor para comparar com TCNT2. O resultado pode gerar interrupo e gerar sinal no pino OC2A; OCR2B Output Compare Register B Registrador 8 bits com valor para comparar com TCNT2. O resultado pode gerar interrupo e gerar sinal no pino OC2B; TIMSK2 Timer/Counter2 Interrupt Mask Register
Bit 2 OCIE2B: Timer/Counter2 Output Compare Match B Interrupt Enable Se 1, habilita interrupo quando TCNT2 = OCR2B levando o flag OCF2B= 1, em TIFR2, e desviando o programa p/ atender a interrupo; Bit 1 OCIE2A: Timer/Counter2 Output Compare Match A Interrupt Enable Se 1, habilita interrupo quando TCNT2 = OCR2A levando o flag OCF2A= 1, em TIFR2, e desviando o programa p/ atender a interrupo; Bit 0 TOIE2: Timer/Counter2 Overflow Interrupt Enable Se 1, habilita interrupo quando ocorrer overflow no timer2 levando o flag TOV2=1, em TIFR2, e desviando o programa p/ atender a interrupo; Bit 2 OCF2B: Output Compare Flag 2 B Se 1, indica houve uma interrupo decorrente de quando TCNT2 = OCR2B; Bit 1 OCF2A: Output Compare Flag 2 A Se 1, indica houve uma interrupo decorrente de quando TCNT2 = OCR2A; Bit 0 TOV2: Timer/Counter2 Overflow Flag Se 1, indica que houve uma interrupo decorrente do estouro de timer2;
45/42
Timers no Arduino
Detalhes dos registradores para TIMER2:
Os mecanismos para a leitura TCNT2, OCR2A, OCR2B, TCCR2A e TCCR2B so diferentes. Ao ler TCNT2, o valor atual lido. Ao ler OCR2A, OCR2B, CCR2A e TCCR2B o valor no registrador lido. GTCCR General Timer/Counter Control Register
Bit 1 PSRASY: Prescaler Reset Timer/Counter2 Se 1, o prescaler resetado. No pode ser zerado por hardware, se TSM=1.
46/42
} ISR(TIMER2_OVF_vect) { static unsigned int led_state = 0; // LED state led_state = !led_state; // toggles the LED state
Serial.println("IFPB - Prof. Ilton"); Serial.println("PWM com Timer2 Normal"); Serial.println("Plataforma Arduino "); Serial.println("Jan / 2013"); Serial.println(" "); delay(2000); } };
digitalWrite(TOGGLE_PIN, led_state); //TCNT2 = 130; // 8mS TCNT2 = ler3; TIFR2 = 0x00; // timer2 int flag reg: clear overflow flag
Neste exemplo temos o uso do estouro de timer2, para gerar um pwm de duty de 50%
47/59
Gerao do PWM descrito no exemplo anterior, onde observa-se que mesmo mudando o valor do estouro de contagem, o duty fica em 50%
48/59
49/59
Controla 2 motores DC de forma independente; Para cada motor possvel controlar o sentido de rotao e a velocidade com um sinal de PWM; Limitado a at 1,2 A / 12V por motor DC.
Fonte: http://www.societyofrobots.com/member_tutorials/node/164
51/59
http://www.sparkfun.com/datasheets/IC/SN754410.pdf
52/59
Caractersticas: Controlam at 2 motores DC ou servos Para cada motor: (a) controle de sentido de rotao; (b) Controle de velocidade; (c ) Alimentao independente;
53/59
//
54/59
Para controlar os motores, utiliza-se os pinos 2 e 7 para motor 1 e os pinos 10 e 15 para motor 2. Os pinos de ligao aos motores so os pinos 3 e 6 para um dos motores e 11 e 14 para o outro. Os aterramentos so os pinos 4 e 13 e 5 e 12 para os motores 1 e 2; Os pinos 1 e 9 habilitam os canais; para utilizar 1 motor sinalize 1 ou 9. Para utilizar 2 motores, sinalize ambos. Para tal, basta liga-los 5v; O pino 16 a alimentao do circuito lgico, onde que deve ser conectada a 5v; O pino 8 a entrada de energia para alimentao dos motores. Essa entrada suporta at 36v, ou seja, podemos tranquilamente alimentar 2 motores de impressora; 55/59
switch(inv) { case 0: // esquerda digitalWrite (L293_ENA2, LOW); digitalWrite (L293_INP4, LOW); digitalWrite (L293_INP3, HIGH); digitalWrite (L293_ENA2, HIGH); break; case 1: // direita digitalWrite (L293_ENA2, LOW); digitalWrite (L293_INP4, HIGH); digitalWrite (L293_INP3, LOW); digitalWrite (L293_ENA2, HIGH); break; case 2: // parado digitalWrite (L293_ENA2, LOW); digitalWrite (L293_INP3, LOW); digitalWrite (L293_INP4, LOW); digitalWrite (L293_ENA2, LOW); break; } if (ss) { Serial.print(" INV= "); Serial.println(inv, DEC); } inv++; if (inv >= 3) inv=0;
57/59
PWM no ARDUINO
Fontes de Consulta:
http://arduino.cc/en/Tutorial/PWM http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM http://www.eletronica.org/arq_apostilas/apostila_pwm.pdf http://jaktek.com/wp-content/uploads/2011/12/HC-SR04.pdf http://www.instructables.com/id/Easy-ultrasonic-4-pin-sensor-monitoring-hc-sr04/ http://playground.arduino.cc/Main/PWMallPins http://www.fiz-ix.com/2012/01/how-to-configure-arduino-timer-2-registers-to-drive-an-ultrasonic-transducerwith-a-square-wave/ http://blipbox.org/blog/2011/05/23/arduino-squarewave-generation/ https://sites.google.com/site/qeewiki/books/avr-guide/pwm-on-the-atmega328 http://lusorobotica.com/index.php?topic=2838.120 http://www.mythic-beasts.com/~markt/ATmega-timers.html http://www.societyofrobots.com/member_tutorials/book/export/html/228 http://electronics.stackexchange.com/questions/26363/how-do-i-create-a-timer-interrupt-with-arduino http://bluepichu.wordpress.com/2012/07/16/fast-pwm-with-arduino-fast/ http://www.cursodearduino.com.br/apostila/apostila-rev4.pdf http://www.societyofrobots.com/member_tutorials/node/159 http://labdegaragem.com/profiles/blogs/tutorial-motor-de-passo-parte-3-circuitos-de-acionamento http://itp.nyu.edu/physcomp/Labs/DCMotorControl http://web.ics.purdue.edu/~fwinkler/616/sn754410_Arduino.pdf http://www.tigoe.net/pcomp/code/circuits/motors/stepper-motors/
58/59
Obrigado
iltonlb@gmail.com