ШИМ 8 Гц

fuso
Offline
Зарегистрирован: 14.02.2016

нужем ШИМ с частатой 8Гц

поиск ни к чему не привел, минимум только 30 Гц увидел.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

всем нужен

fuso
Offline
Зарегистрирован: 14.02.2016

а по делу?

как опустить до 8 Гц ардуиновские 490Гц

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

Если ровно 8, то только программно. Если хочется аппаратно, нужно смотреть список прескалеров для таймера 1. Около 16 там точно есть, возможно, есть и около 8.

fuso
Offline
Зарегистрирован: 14.02.2016

хочется на втором таймере

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Максимальный прескалер таймеров 1024. Отсюда, простым расчетом имеем: 16Мгц / 1024 / 256 / 2 = 30Гц для 8-и битного таймера и типового режима ШИМ. Для 16-и битного получаем 16Мгц / 1024 / 65536 / 2 = 0,12Гц. Берете любой 16-и битный таймер (у мега2560 их 4шт) и программируете его в требуемом режиме. Запас - есть. Если надо только 8-битный, то снижаете общую частоту камня примерно в 4 раза .. до 4Мгц.

8гц - очень низкая частота, её вполне можно эмулировать программно по 0-у таймеру на любой ноге.

fuso
Offline
Зарегистрирован: 14.02.2016

Arhat109-2 пишет:

Максимальный прескалер таймеров 1024. Отсюда, простым расчетом имеем: 16Мгц / 1024 / 256 / 2 = 30Гц для 8-и битного таймера и типового режима ШИМ. Для 16-и битного получаем 16Мгц / 1024 / 65536 / 2 = 0,12Гц. Берете любой 16-и битный таймер (у мега2560 их 4шт) и программируете его в требуемом режиме. Запас - есть. Если надо только 8-битный, то снижаете общую частоту камня примерно в 4 раза .. до 4Мгц.

8гц - очень низкая частота, её вполне можно эмулировать программно по 0-у таймеру на любой ноге.

с кварцем получилось, а где посмотреть как на меге 2560 сделать на 16 битном таймере?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В даташите на Atmega2560.

fuso
Offline
Зарегистрирован: 14.02.2016

Jeka_M пишет:
В даташите на Atmega2560.

если не можете расписать подробно как в этой теме, можно форум и не засорять

http://arduino.ru/forum/obshchii/shim-ili-kak-vzorvat-mosfet

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Он прав. Все что нужно есть в даташитах. Если Вы их не читаете, то что Вы тут делаете?

satelit 2
Offline
Зарегистрирован: 04.12.2016

вообще то это смертельно опасная частота. прочтиайте выписку:

Дело в том, что резонансные частоты, характерные для большинства систем организма, лежат в инфразвуковом диапазоне: резонанс сердца – 4-6 Гц; резонанс мозга – 4-45 Гц (полудрема – гиперактивность); резонанс желудка – 2-3 Гц; резонанс почек – 6-8 Гц и т.д. Продолжительное совпадение частот колебаний внутренних органов и инфразвука высокой (!) интенсивности неизбежно приводит к драматическому результату.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

fuso пишет:
нужем ШИМ с частатой 8Гц

unsigned long timestampPWM;
byte nPWM=0,qPWM=0;
void setup(){
  timestampPWM=millis();
  DDRB|=B00100000;                               // pinMode 13 output
}
void loop(){
  if(millis()-timestampPWM>=125){
    if((nPWM<=qPWM) && qPWM) PORTB|=B00100000;   // digitalWrite 13 high
     else PORTB&=B11011111;                      // low
    if(nPWM<255) nPWM++; else nPWM=0;            // duty cycle counter
    timestampPWM=millis();
  }
  // (...code...)
  // qPWM=xxx;
  // (...code...)
}

Прямую запись в порт на иные выводы кроме D13 смотреть в тексте библиотеки CyberLib. qPWM (строка 15) - это количество ШИМа. nPWM, цифру 125, строки 1, 2, 4, 12 - не трогать.

200 рублей, яндекс 410011919696337.

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

satelit 2 пишет:

вообще то это смертельно опасная частота. прочтиайте выписку:

Дело в том, что резонансные частоты, характерные для большинства систем организма, лежат в инфразвуковом диапазоне: резонанс сердца – 4-6 Гц; резонанс мозга – 4-45 Гц (полудрема – гиперактивность); резонанс желудка – 2-3 Гц; резонанс почек – 6-8 Гц и т.д. Продолжительное совпадение частот колебаний внутренних органов и инфразвука высокой (!) интенсивности неизбежно приводит к драматическому результату.

Так то оно так, только излучатель на единицы Герц - вещь нетривиальная. А щелчки с такой частотой (т.е. только звуковая составляющая без инфразвука) еще никому не навредили.

satelit 2
Offline
Зарегистрирован: 04.12.2016

а фунция tone не может такую частту выдать?

negavoid
Offline
Зарегистрирован: 09.07.2016

satelit 2 пишет:

а фунция tone не может такую частту выдать?

От 31 Герца https://www.arduino.cc/en/Reference/Tone

Pyotr
Offline
Зарегистрирован: 12.03.2014

Arhat109-2 пишет:

Максимальный прескалер таймеров 1024. Отсюда, простым расчетом имеем: 16Мгц / 1024 / 256 / 2 = 30Гц для 8-и битного таймера и типового режима ШИМ. Для 16-и битного получаем 16Мгц / 1024 / 65536 / 2 = 0,12Гц. Берете любой 16-и битный таймер (у мега2560 их 4шт) и программируете его в требуемом режиме. Запас - есть. Если надо только 8-битный, то снижаете общую частоту камня примерно в 4 раза .. до 4Мгц.

8гц - очень низкая частота, её вполне можно эмулировать программно по 0-у таймеру на любой ноге.

ШИМ на Т/С1 только 8, 9 и 10-ти битный. 16МГц/1024/1024 = 15.26 Гц. Ниже частоту ШИМ не получить - если только тактировать Т/С1 от внешнего сигнала. Подаем на ОС0В (D5) ШИМ от Т/С0. Этот пин является входом Т/С1 (настроить на внешнее тактирование). 976Гц/1024/1024 = 0.00093 Гц. Вот это минимальная частота 10-ти битного ШИМ Т/С1 с кварцем 16 МГц. И чуть меньше 1 Гц с предделителем =1.

Причем, ШИМ на D5 через функцию analogWrite(5, xxx) можно пользоваться для своих нужд, только избегать значений 0 и 255, иначе импульсы пропадут и Т/С1 остановится.

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Где Вы такую ерунду прочли? 16-и битный таймер вполне способен пахать на всех 16 битах. С прескалером 1:1024 получите то, что написано мною выше. Только "толку" никакого для целей "генерации звуковой волны". andriano уже это отметил.

satelit 2
Offline
Зарегистрирован: 04.12.2016

может на выход ардуино поставить 555 таймер настроенный на 8 гц

 

Pyotr
Offline
Зарегистрирован: 12.03.2014

Arhat109-2 пишет:

Где Вы такую ерунду прочли? 16-и битный таймер вполне способен пахать на всех 16 битах. С прескалером 1:1024 получите то, что написано мною выше. Только "толку" никакого для целей "генерации звуковой волны". andriano уже это отметил.

Это от поверхностно-обрывочного чтения даташита:(. Сам работал с быстрой ШИМ 10 бит. Мне больше разрешение не нужно было, а там верхний предел 0х03FF. Короче, надо внимательней мне поработать с таимерами. Сложная всеж это штука. Спасибо.

Pyotr
Offline
Зарегистрирован: 12.03.2014

Я, например, использую низкочастотную ШИМ для управления ДПТ в "шаговом" режиме или импульсном режиме.
При значительной нагрузке на валу ДПТ, снижая К заполнения ШИМ до определенного значения (50-70%), уменьшаем частоту вращения вала ДПТ. При дальнейшем снижении К заполнения вал ДПТ просто останавливается - крутящего момента не хватает.
Чтоб заставить вращаться вал с маленькой скоростью, изменяю частоту ШИМ с 1кГц до 1Гц и вал начинает вращаться рывками\маленькими шагами.
Такой способ применил для управления перистальтикой в своем проекте​​​​​​​

fuso
Offline
Зарегистрирован: 14.02.2016

чего спрашивать: чем, лучше напишите как?

тойота управляет помпой двигателя на этой частоте.

 

Alchimy91
Offline
Зарегистрирован: 28.07.2018

Voodoo Doll пишет:

fuso пишет:
нужем ШИМ с частатой 8Гц

unsigned long timestampPWM;
byte nPWM=0,qPWM=0;
void setup(){
  timestampPWM=millis();
  DDRB|=B00100000;                               // pinMode 13 output
}
void loop(){
  if(millis()-timestampPWM>=125){
    if((nPWM<=qPWM) && qPWM) PORTB|=B00100000;   // digitalWrite 13 high
     else PORTB&=B11011111;                      // low
    if(nPWM<255) nPWM++; else nPWM=0;            // duty cycle counter
    timestampPWM=millis();
  }
  // (...code...)
  // qPWM=xxx;
  // (...code...)
}

Прямую запись в порт на иные выводы кроме D13 смотреть в тексте библиотеки CyberLib. qPWM (строка 15) - это количество ШИМа. nPWM, цифру 125, строки 1, 2, 4, 12 - не трогать.

200 рублей, яндекс 410011919696337.


Добрый день можете мне помочь дописать в код моей элеткронной нагрузки функцию постоянного сопротивления, функцию  ограничение разряда аккамуляторов по заданом напряжении
Пофторил проект с сайта  http://www.kerrywong.com/2013/10/24/building-a-constant-currentconstant-power-electronic-load/

bwn
Offline
Зарегистрирован: 25.08.2014

Alchimy91 пишет:

функцию  ограничение разряда аккамуляторов по заданом напряжении
Пофторил проект с сайта  http://www.kerrywong.com/2013/10/24/building-a-constant-currentconstant-power-electronic-load/

А у вас ток нулевой при нулевых уставках? У меня ~50мА паразитного и чистый коротыш при "горячем" подключении. Проверьте, для автомобильного акка не страшно, а литий реально угробить.
И чем в том скетче изменять, проще новый написать.
В целом, при достижении vLoad < уставки, надо передать в функцию setDacOutput нулевое значение и запретить ее вызовы из других мест, а их там несколько с разными аргументами.

Radiokrot
Offline
Зарегистрирован: 30.12.2019

Вот библиотека PWM. https://yadi.sk/d/K_hBK_Xii3cMn

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Чем программный ШИМ на аппаратном таймере не устраивает ?
Хоть 0.00001Гц хоть 9Гц, ему пофигу.
Точность высокая будет .
В зависимости от кривизны кода джиттер от 4мкс и выше.