LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: TigPT em 22 de Janeiro de 2009, 17:55

Título: [duvida] timer clock output no arduino
Enviado por: TigPT em 22 de Janeiro de 2009, 17:55
Boas.. gostava de saber se alguém me consegue ajudar.

Preciso de fazer um clock em background do código principal num pin do arduino (por acaso quer dois diferentes mas para já um) de um sinal. pode ser um pwm para facilitar mas não tem que ser, basta que seja um on off constante 1010101010 a um ritmo de x miliseconds que eu possa definir.

Não sei se consegui explicar a minha ideia... acho que terei que fazer com interruptions com o timer2 mas não tenho certeza, alguém tem outra ideia ou me pode ajudar?
Título: Re:[duvida] timer clock output no arduino
Enviado por: microbyte em 22 de Janeiro de 2009, 18:00
Podes usar um timer como o 555 (http://en.wikipedia.org/wiki/555_timer_IC) e fazer correr o código em função de cada "tick".
Título: Re:[duvida] timer clock output no arduino
Enviado por: TigPT em 22 de Janeiro de 2009, 18:02
Podes usar um timer como o 555 (http://en.wikipedia.org/wiki/555_timer_IC) e fazer correr o código em função de cada "tick".
Estes clocks vão variar durante o código pois vão controlar velocidade de motores steppers :|

Preciso de conseguir dar stepps (clocks) em background para não ficar o arduino sempre só de volta dos motores!
Título: Re:[duvida] timer clock output no arduino
Enviado por: tr3s em 22 de Janeiro de 2009, 18:52
Mesmo após aquele artigo sobre interrupts nao consegues?
Título: Re:[duvida] timer clock output no arduino
Enviado por: TigPT em 22 de Janeiro de 2009, 18:57
Mesmo após aquele artigo sobre interrupts nao consegues?

Com aquilo ainda não tentei pois não tenho tempo, altura de exames :P

Mas ei de tentar e deve de resolver, entretanto pode haver outra ideia milagrosa :D
Título: Re:[duvida] timer clock output no arduino
Enviado por: metRo_ em 22 de Janeiro de 2009, 19:55
Só para ter a certeza tu queres uma PWM com duty-cycle = 50% e depois vais querer variar a frequencia?
Título: Re:[duvida] timer clock output no arduino
Enviado por: TigPT em 22 de Janeiro de 2009, 19:57
Não precisa ser de 50% desde que de um pulso (tamanho indefinido) de x em x microsegundos em que x vou variar durante o código.
Título: Re:[duvida] timer clock output no arduino
Enviado por: metRo_ em 22 de Janeiro de 2009, 20:24
mas tu queres que o tempo que está ligado seja o mesmo que o desligado, certo? e a outra coisa que eu disse, tu quando dizes "Estes clocks vão variar durante o código pois vão controlar velocidade de motores steppers :|" é a frequencia, certo?
Título: Re:[duvida] timer clock output no arduino
Enviado por: TigPT em 22 de Janeiro de 2009, 20:38
o tempo de on e off não precisa de ser igual, só preciso que o pulos (subir e descer) ocorra de x em x milisegundos (sim a frequencia), em que x pode ser uma variável do código ou então que eu altere este valor com algum método durante a execução do programa.
Título: Re:[duvida] timer clock output no arduino
Enviado por: metRo_ em 22 de Janeiro de 2009, 21:05
Tive a ler aquele artigo e vai-te ajudar, alias um dos exemplos que ele dá é fazer o "TOGGLE", não sei como traduzir, talvez inverter o valor de um pin, em que podes defenir a frequência a que ele faz isto.
Título: Re:[duvida] timer clock output no arduino
Enviado por: TigPT em 22 de Janeiro de 2009, 21:17
Tive a ler aquele artigo e vai-te ajudar, alias um dos exemplos que ele dá é fazer o "TOGGLE", não sei como traduzir, talvez inverter o valor de um pin, em que podes defenir a frequência a que ele faz isto.
ok, obrigado, depois knd tiver tempo tento fazer com aquilo ;)
Título: Re:[duvida] timer clock output no arduino
Enviado por: metRo_ em 25 de Janeiro de 2009, 15:48
Olha talvez tenha encontrado uma solução:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010486 (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010486)

Citar
The TC9400/TC9401/TC9402 are low-cost voltage-to-frequency (V/F)converters utilizing low power CMOS technology. The converters accept a variable analog input signal and generate an output pulse train whose frequency is linearly proportional to the input voltage. The devices can also be used as highly-accurate frequency-to-voltage (F/V)converters,accepting virtually any input frequency waveform and providing a linearly-proportional voltage output. A complete V/F or F/V system only requires the addition of two capacitors,three resistors,and reference voltage.
Título: Re:[duvida] timer clock output no arduino
Enviado por: TigPT em 25 de Janeiro de 2009, 16:18
Olha talvez tenha encontrado uma solução:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010486 (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010486)

Citar
The TC9400/TC9401/TC9402 are low-cost voltage-to-frequency (V/F)converters utilizing low power CMOS technology. The converters accept a variable analog input signal and generate an output pulse train whose frequency is linearly proportional to the input voltage. The devices can also be used as highly-accurate frequency-to-voltage (F/V)converters,accepting virtually any input frequency waveform and providing a linearly-proportional voltage output. A complete V/F or F/V system only requires the addition of two capacitors,three resistors,and reference voltage.
Muito interessante, também acredito que sirva, vou ter que testar assim que acabar os exames... ;)

Obrigado.
Título: Re:[duvida] timer clock output no arduino
Enviado por: metRo_ em 25 de Janeiro de 2009, 16:23
Estás como eu... A primeira fase acaba quarta, altura em que espero que o meu arduino chegue a casa :)  ;D  :P
Título: Re: [duvida] timer clock output no arduino
Enviado por: bragajam em 03 de Abril de 2011, 18:14
Boa tarde, n sei se será o sitio mais adequado mas pesquisei o fórum e pareceu-me o mais aproximado do que pretendo saber(era aqui ou criar novo topico). Que é o seguinte:

http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM (http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM) descreve como alterar a frequencia do PWM do arduino, mas eu queria que alguem me explicasse quais as implicações disto na pratica, e se é uma solução aconselhada ou não( tipo a nivel da estabilidade dos progrmas) pois pelo k li aletra o tempo que as instruções demoram a ser executadas.

Também gostaria de saber de alguem mais experiente que eu se não haverá maneira mais alto nivel de fazer o mesmo.

Atentamente,
Paulo J. M.
Título: Re: [duvida] timer clock output no arduino
Enviado por: senso em 03 de Abril de 2011, 22:38
A unica coisa que altera o tempo de execução de cada instrução é o cristal de 16Mhz, se alterares os tempos do pwm a unica coisa que muda é a frequência do pwm que no Arduino anda na casa dos 500Hz para os timers de 8 bits e 1Khz no timer de 16 bits, ACHO eu.
Se alterares o timer de 16 bits as funções micros e milis ficam descalibradas.

Mas queres alterar a frequência dos timers porque?
Título: Re: [duvida] timer clock output no arduino
Enviado por: bragajam em 03 de Abril de 2011, 23:42
Obrigado pela resposta,

Nao sei se vou precisar de alterar, mas preciso de controlar um servo motor DC e mais tarde umservo motor trifásico AC e anteriormente fiz uns testes com um picaxe e com determinadas frequências o comportamento era  melhor que com outras (não cheguei a perceber na totalidade o pq). Neste momento ainda não tenho os motores que vou usar, e tb já não vou usar o picaxe, mas sim o arduino ou mais tarde uma ngw100 ou semelhante e queria apenas testar com varias frequências, de preferência com uma só instrução como no picaxe em vez de ter que por aquele código todo que ainda por cima não é muito fácil decorar  as suas variantes.

Apenas mais uma questão:

Citar
Se alterares o timer de 16 bits as funções micros e milis ficam descalibradas.

Quer isto dizer que se precisar de fazer tipo delay  n saberei se o tempo real estará correcto?
Ainda sou novo no arduino, estou mesmo a começar.

Cumprimentos,
Paulo J. M.
Título: Re: [duvida] timer clock output no arduino
Enviado por: senso em 03 de Abril de 2011, 23:46
Podes usar as funções de delay calibradas, mas se é para usar servos então o melhor é usar a biblioteca servo, é só 2 ou 3 linhas de código e está feito.
Título: Re: [duvida] timer clock output no arduino
Enviado por: bragajam em 03 de Abril de 2011, 23:54
Ok vou estudar essa livraria.

Quando digo servos não me refiro a servos rc, mas aqueles tipo industriais muito usados por exemplo em maquinas de CNC.

Essa biblioteca tb serve para esses?e já tem funções para ler o encoder ...

Não qeuro abusar mas e PID existe alguma coisa?

De qualquer maneira vou estuda-la e ver o que dá pa fazer.

Obrigado.
Título: Re: [duvida] timer clock output no arduino
Enviado por: senso em 04 de Abril de 2011, 00:02
Não, só funciona para servos que recebam, sinais PPM, e não lê encoders, tem de ser á parte.

Ler encoders, mais que 2 é abusar muito, e mesmo um se for rápido vai ocupar grande parte do tempo de processamento que o Arduino tem para dar.

Esses servos industriais são baseados em motores sincronos ou em steppers?
É que se forem motores sincronos de 3 fases, é preciso mandar o Arduino dar uma curva e programar em Assembly ou C muito limpinho para gerar as 3 fases.
Título: Re: [duvida] timer clock output no arduino
Enviado por: bragajam em 04 de Abril de 2011, 00:10
O Servo ac é um fanuc trifásico 90V e por isso já tinha desconfiado que não ia conseguir gerar as ondas com o arduino e usá-lo para o resto, mas ainda tinha esperança...Os DC que já testei são motores pittman de 24V que ao mais fracos que os que terei de usar(ainda não tive acesso a elesnem tirei as caracteristicas, apenas sei que são sevos DC, nem sei quantos pulsos tem o encoder). Se fossem steppers penso que teria o trabalho muito mais simplificado.