Использование 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% отличаются. Обратитесь к спецификации, я думаю, вы ошиблись.