
Обявления |
---|
Для полноценной работы рекомендуется пройти регистрацию. Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я. |
valmaks писал(а):Что изменить,добавить,что-бы регулировка была до 6v.
hardlock писал(а):yura-gn,
стартовать с минимального значения и через промежутки времени добавлять значение ШИМа. Постараюсь найти исходник.
hardlock писал(а):yura-gn,
стартовать с минимального значения и через промежутки времени добавлять значение ШИМа. Постараюсь найти исходник.
yura-gn писал(а): нашли?
вместо
pwm = 110 + read_adc(2) / 7;
эти строчки
pwm = read_adc(2);
pwm = pwm >> 2 ;
pwm = 0 + read_adc(2) / 6;
yura-gn писал(а):Я методом тыка зделал вот так:
pwm = read_adc(2) / 4;
pwm = read_adc(2);
pwm = pwm >> 2 ;
pwm = read_adc(2) >> 2 ;
pwm = read_adc(2);
pwm = pwm >> 2 ;
pwm = read_adc(2) >> 2 ;
TCCR0A=0x83;
TCCR0B=0x01;
yura-gn писал(а):TCCR0A=0x83;
TCCR0B=0x01;
hardlock писал(а):fantom писал(а):Блин мне надо чтобы маторчик крутился на малых оборотах без писка как это сделать.
Блин, а мне надо машину отремонтировать!
Разберитесь немного в коде - там ничего нет сложного... Подсказка - копать в эту сторону:
- Код: Выделить всё
TCCR0A=0x83;
TCCR0B=0x02;
Сделать так:
- Код: Выделить всё
TCCR0A=0x83;
TCCR0B=0x01;
Только это уже не подсказка, а решение... Будет вместо 18,75 кГц - 37,5кГц
yura-gn писал(а):скажите пожалуйста, можно выбрать что-нибудь среднее между 18,75 кГц и 37,5кГц, так как 18,75 кГц мало, а 37,5кГц много?
hardlock писал(а):yura-gn писал(а):скажите пожалуйста, можно выбрать что-нибудь среднее между 18,75 кГц и 37,5кГц, так как 18,75 кГц мало, а 37,5кГц много?
надо поднимать частоту генератора, не меняя настроек (что невозможно), или опускать, меняя (TCCR0B), что тоже невозможно, т.к. ноги для кварца заняты.
yura-gn писал(а):а что там с поиском исходника плавного пуска, еще не искали?
yura-gn писал(а):hardlock, ну как там дела с поиском?
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
if (++c > 500)
{
c = 0;
pwm = 110 + read_adc(2) / 7;
if (pwm > 255) pwm = 255;
if (!PINB.3)
{
switch (Working)
{
case 0: //старт на минимальных оборотах
OCR0A = 110;
Working = 1;
break;
case 1: //плавно наращиваем до установленного значения
if (OCR0A < (pwm - 20))
{
OCR0A += 20;
}
else
{
OCR0A = pwm;
Working = 2;
}
break;
case 2: //работаем на установленном значении
OCR0A = pwm;
break;
};
}
else
{
OCR0A = 0;
Working = 0;
}
}
}
unsigned char Working;
Working = 0;
Сейчас этот форум просматривают: Google [Bot] и гости: 4