Использование atmega16 для уменьшения скорости двигателя постоянного тока с драйвером двигателя cytron md10c

Итак, у меня есть этот двигатель постоянного тока, который я хочу снизить его скорость до 25%, поэтому, очевидно, что я использовал фазосинхронизированное ШИМ для этого через драйвер мотора, я смог сделать это через таймер1, но мой доцент хочет, чтобы я делал это с помощью 8-битный таймер0, поэтому я написал код, и он запустился, но в полном объеме, поэтому мой вопрос: есть какие-то вычисления, которые необходимо выполнить перед написанием кода, и, если они есть, каковы эти вычисления?

Примечание: частота двигателя 100-250 Гц. Я работаю с внутренней частотой 1 МГц и прескалер 1024.

 #define F_CPU 1000000UL

 #include <avr/io.h>

 #include <util/delay.h>

int main(void)
{

DDRB  = DDRB | (1<<PB3); //set OC0 as output pin --> pin where the PWM signal is generated from MC

/*set CS02:0 to 101 to work with 1024 prescaler
set WGM0[1:0] to 01 to work with phase correct,pwm
set COM01:0 to 11 to Set OC0 on compare match when up-counting. Clear OC0 on compare match
when downcounting*/

    TCCR0 = 0b00111101;
   OCR0 = 64; // 25% DUTY CYCLE
    while (1)
{
    ;
}
      }

1 ответ

Ваш вопрос на самом деле заставляет нас немного догадаться - вы не рассказываете достаточно фактов, чтобы действительно помочь вам. Итак, я предполагаю, что вы используете быстрый ШИМ, и предположите, что вы управляете скоростью двигателя с помощью рабочего цикла ШИМ.

Частота двигателя и значения предварительного масштабирования на самом деле не так интересны - если вы хотите снизить скорость, вы, вероятно, хотите изменить рабочий цикл.

Рабочий цикл в 25% от 16-битного таймера составляет $10000/4 = $4000 (я полагаю, это то, что вы установили в регистр сравнения вывода вашего 16-битного таймера)

Очевидно, что в 8-битном таймере коэффициент заполнения 25% составляет 100/4 = 40 долларов.

Также обратите внимание, что то, что вам нужно записать в TCCR0, чтобы добиться того же самого от таймера 0, полностью отличается от того, что вы пишете в TCCR1 для почти того же действия - позиции битов на 100% отличаются. Обратитесь к спецификации, я думаю, вы ошиблись.

Другие вопросы по тегам