Изменение частоты генерации ШИМ.

Ilya3Run13
Offline
Зарегистрирован: 23.10.2013

Доброго времени суток! Такой вопрос:
Собрался собирать вот такую приблуду http://www.muffu.fi/controlling-a-hella-vnt-actuator-with-pwm/

Там частота генерации шим примерно 300 гц, как пишет сам автор.
Мне же необходимо менять частоту в диапазоне 140 - 300 гц.
Как это реализовать с представленным кодом? Что менять? Ибо я не совсем понимаю, как он достигает этой частоты. Заранее спасибо за ответ!

/*
* Simple sweep for testing a Hella VNT-actuator @ 300Hz.
 * Uses digital pin 13 for PWM.
 */
 
 
void setup() {
  pinMode(13, OUTPUT);
}
 
void loop() {
 
// SLOW SWEEP UP
    for (int sweep = 0 ; sweep <=3333 ; sweep += 6) {
  digitalWrite(13, HIGH);
  delayMicroseconds(sweep); 
  digitalWrite(13, LOW);
  delayMicroseconds(3333 - sweep);
    }
 
// SLOW SWEEP DOWN
    for (int sweep = 3000 ; sweep >=166 ; sweep -= 6) {
  digitalWrite(13, HIGH);
  delayMicroseconds(sweep);
  digitalWrite(13, LOW);
  delayMicroseconds(3333 - sweep);
    }
 
 
// FAST SWEEP UP
        for (int sweep = 0 ; sweep <=3333 ; sweep += 33) {
  digitalWrite(13, HIGH);
  delayMicroseconds(sweep); 
  digitalWrite(13, LOW);
  delayMicroseconds(3333 - sweep);
    }
 
// FAST SWEEP DOWN
    for (int sweep = 3000 ; sweep >=166 ; sweep -= 33) {
  digitalWrite(13, HIGH);
  delayMicroseconds(sweep); 
  digitalWrite(13, LOW);
  delayMicroseconds(3333 - sweep);
    }
 
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ilya3Run13 пишет:
Что менять?
Значения внутри скобок после delayMicroseconds

Ilya3Run13
Offline
Зарегистрирован: 23.10.2013

Это более чем логично, однако я не могу найти строгую карреляцию, типа в миллисекундах 300 гц это есть 3.33 миллисекунды, что похоже на значение sweep 3333 и все, дальше просто не понимаю

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, не знаю, Вы не понимаете как посчитать задержки, чтобы получить нужную частоту? так что ли?

b707
Offline
Зарегистрирован: 26.05.2017

Ilya3Run13 пишет:

Это более чем логично, однако я не могу найти строгую карреляцию, типа в миллисекундах 300 гц это есть 3.33 миллисекунды, что похоже на значение sweep 3333 и все, дальше просто не понимаю

и что вы не понимаете? Вы же сумели догадаться. что 3333 - это 300 Гц? - ну так теперь возьмите, например, 200 Гц и посчитайте, какое число должно быть в скобках вместо 3333

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ilya3Run13 пишет:

Это более чем логично, однако я не могу найти строгую карреляцию, типа в миллисекундах 300 гц это есть 3.33 миллисекунды, что похоже на значение sweep 3333 и все, дальше просто не понимаю

Ilya3Run13, попытайтесь угадать, сколько микросекунд в миллисекунде:

1. 3.62,

2. 4.12,

3. 3.14,

4. 7.40,

5. 10,

6. 100,

7. 1000,

8. 1000000,

9. 1000000000,

10. дофига.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Вы хотите переменным резистором менять частоту?

uint16_t freq  = 6666; // это надо изменять (сейчас около 150 гц)

// FAST SWEEP UP
        for (int sweep = 0 ; sweep <=freq ; sweep += 33) {
  digitalWrite(13, HIGH);
  delayMicroseconds(sweep); 
  digitalWrite(13, LOW);
  delayMicroseconds(freq - sweep);
    }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

Ilya3Run13, попытайтесь угадать, сколько микросекунд в миллисекунде:

Чё за троллинг? Почему нет правильного ответа?

11. 100500

wuku4
Offline
Зарегистрирован: 05.08.2021

Получилось сделать ?

b707
Offline
Зарегистрирован: 26.05.2017

wuku4 пишет:

Получилось сделать ?

что, тоже в ступоре от вопроса, сколько секунд в миллисекунде? :)

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:

wuku4 пишет:

Получилось сделать ?

что, тоже в ступоре от вопроса, сколько секунд в миллисекунде? :)

1024, каждый дурак знает)

-NMi-
Offline
Зарегистрирован: 20.08.2018

Чойта 1024 то?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Верно. Это в килограмме 1024 грамма. Секунды тут ни при чем 

-NMi-
Offline
Зарегистрирован: 20.08.2018

Тада в литре тоже 1024 мл.? Дет по 128 мл. начисляет? )))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Литры тоже можно мерять граммами, так что да, тоже ))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

v258 пишет:

Литры тоже можно мерять граммами, так что да, тоже ))

молоко тоже уже как бензин оптом отпускают?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

ua6em пишет:

v258 пишет:

Литры тоже можно мерять граммами, так что да, тоже ))

молоко тоже уже как бензин оптом отпускают?