Quatro servos futaba em um Atmega8 e capturando sinal de pwm

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Quatro servos futaba em um Atmega8 e capturando sinal de pwm

Mensagempor ronaldo_verardo » 11 Fev 2009 14:52

Bom dia amigos !!!

Gostaria de saber como pederia ler um pulso PWM que varia de 1ms a 2ms e gerar 4 PWMs individuais com seus duty-cicle variável individualmente gerando pulsos que varião de 0.8ms a 2.2ms cada e para piorar isso tudo ou parte disso por software sem perder processamento ?

Todas as dicas e ajudas são bem vindas !!!!!!
Abraços. :?:
ronaldo_verardo
Bit
 
Mensagens: 11
Registrado em: 07 Mar 2007 17:07
Localização: Brasil

Mensagempor EDSONCAN » 11 Fev 2009 15:19

Não entendi muito bem, voce vai ser a saida PWM de 1ms a 2ms e gerar um sinal PWM de 0,8 a 2,2ms.
Suponha que o PWM esteja em 2ms e voce gere um sinal de 2,2mseg, como não da para voltar no tempo, voce estara com 0,2 mseg de diferença.
Coisa de doido
Edson
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor ronaldo_verardo » 11 Fev 2009 16:05

Vou explicar melhor !!!


Vou ler um sinal de 1 a 2ms vindo de outro dispositivo.
Lendo esse valor, vou atuar sobre 4 pinos de saída gerando pwms de 0.8 a 2.2ms, pois assim posso fazer ajustes finos para cada saída no centro do pwm que seria variar os 1.5ms no início do pwm que seria variar o 1ms e no final do pwm que seria variar o 2ms lido da entrada para atuar em cada umas das respectivas 4 saídas !!!!!
ronaldo_verardo
Bit
 
Mensagens: 11
Registrado em: 07 Mar 2007 17:07
Localização: Brasil

Mensagempor Djalma Toledo Rodrigues » 21 Fev 2009 13:04

Esta um pouco confuso. Será que o que você pretende é alta resolução ?
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor gafar » 28 Abr 2009 13:31

Amigo,
Se não estiver errado vc esta querendo mover os servos acima de 180° , caso seja isto, alguns servos aceitam, mas os mais indicados são os digitais, tipo MG995
Existem varios meios de controlar servos, dá uma olhada nos links abaixo.
http://letsmakerobots.com/node/3829
http://www.seattlerobotics.org/encoder/ ... csscnt.htm

Se digitar no googlee "control servo using avr" vai sair uma porrada
No momento estou querendo para 8 servos.
A rotina abaixo controla um servo através de 2 chave, roda no proteus 7.2 sp 6 com o modelo de servo. Com 323 vc pode usar dois servos e se não estiver enganado, com o atmega128 controla direto 4 servos, apenas usando 4 canais PWM

Código: Selecionar todos
*****************************************************
Project : Servo Motor Controller
Author  : Gafar                   
Company : home                         
Chip type           : ATmega323l
Clock frequency     : 8.000000 MHz
*****************************************************/

#include <mega32.h>
#include <stdio.h>
#include <delay.h>
// #define xtal 16000000



#define sobe     PINA.0           //  DIREITA                  
#define desce    PINA.1      // ESQUERDA
// A SAIDA DO SERVO É NO PD.5




void main(void)
{

PORTD=0x00;
DDRD=0x20;
DDRA=0;
//PORTA=0xff;


// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 2000.000 kHz
// Mode: Ph. & fr. cor. PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge

TCCR1A=0x80;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x4E;
ICR1L=0x20;
OCR1A=1500/2;  // VALOR CENTRAL DO SERVO

while (1)

    {
       if ((!sobe)&&(OCR1A<=2000/2))
            OCR1A++;
               
        if ((!desce)&&(OCR1A>=1000/2))
             OCR1A--;
             PORTD.6=PORTD.5;       
              delay_ms(5); 
                   
    }     
   
}

Avatar do usuário
gafar
Bit
 
Mensagens: 26
Registrado em: 23 Out 2006 08:07
Localização: São Paulo SP


Voltar para AVR

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x