Controlando a frequência das portas PWM do arduino

Como faço para modificar a frequência das portas PWM do arduino.

Exibições: 867

Responder esta

Respostas a este tópico

Para você alterar estes parâmetros, você terá que interagir no nível mais abaixo do Arduino em termos de linguagem, você terá que intervir diretamente nos registros interno do microcontrolador da sua placa, poderá usar comandos do GCC AVR que é a base do compilador do Arduino.

Procure no Google a função PWM usando o GCC, você terá os comandos necessários para isso, mas não se esqueça de estudar bastante o hardware do seu microcontroladora para isto.

No mais, bons projetos!

Cara eu quero conseguir manipular esta frequência para aplicar em vários equipamentos, pois eles não possuem a mesma frequência, sempre vem com frequência pré-estabelecida de fabricante.

Poderia citar quais frequências deseja?

A frequência que eu quero aqui são 300 Hz, mais quero manipular para depois poder adaptar este sinal a outros tipos de equipamentos com frequências diferente, motores e etc.

Encontrei isso:

http://www.embedded.arch.ethz.ch/Examples/PWMTimer231kHz

PWM_Timer2_31kHz

set Timer2 Frequency to 31kHz
/**************************************************************************************************
*
* PWM_Timer2_31kHz_00
*
* Version: 00 - Mai 2010
* Author: Tom Pawlofsky www.caad.arch.ethz.ch tom-DOT-pawlofsky-AT-arch-DOT-ethz-DOT-ch
*
* Desc: change prescaler of Timer 2 to have 31kHz Frequency at pin 3 and 11
*
***************************************************************************************************/


int pinA = 3; // pin 3 and 11 are PWM output controled by Timer2
int pinB = 11; // connect pinA/B to H-Bridge

void setup(){
//__________________________________TIMER2_for_Motor_PWM_________________________________
// set TIMER2 for PWM 32 Hz
//
// clear all prescaler bits in TCCR2B = the last 3 Bits
// leave other bits as set by arduino init() in wiring.c
byte mask = B11111000;
TCCR2B &= mask; // TCCR2B is now xxxxx000
//
// set CS22:20 in TCCR2B see p 156 of datasheet
TCCR2B |= (0CS22) | (0CS21) | (1CS20); // same as TCCR2B |= B00000001; TCCR2B is now xxxxx001

//__pinmode
pinMode(pinA,OUTPUT);
pinMode(pinB,OUTPUT);

//
analogWrite(pinA,128); // 50% Duty
analogWrite(pinB,32); //12.5 % Duty
}

void loop(){
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço