Индикатор завышенной/заниженной частоты на двух светодиодах
Модератор: boogyman
Индикатор завышенной/заниженной частоты на двух светодиодах
Предлагаю рассмотреть варианты кода, который отображает двумя светодиодами об уходе частоты за допустимые рамки.
Например:
при частоте меньше 20 Гц горит один светодиод,
при частоте более 40 Гц горит другой светодиод,
в диапазоне 20-40 Гц не горят.
Предварительно для Atmega8
Например:
при частоте меньше 20 Гц горит один светодиод,
при частоте более 40 Гц горит другой светодиод,
в диапазоне 20-40 Гц не горят.
Предварительно для Atmega8
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Индикатор завышенной/заниженной частоты на двух светодио
Держи мой проект, пиши если что не так
Re: Индикатор завышенной/заниженной частоты на двух светодио
Все заработало!!!
Спасибо за помощь и за высланные файлики.
У меня частота на МК стояла 1 МГц, поменял на 8 МГц (как у Вас) и все заработало нормально.
Просто в описании статьи увидел 1MHz, а то что на схеме кварц 8MHz значения не предал.
Значит частора 8MHz, предделитель 8 и получаем 1MHz
Спасибо за помощь и за высланные файлики.
У меня частота на МК стояла 1 МГц, поменял на 8 МГц (как у Вас) и все заработало нормально.
Просто в описании статьи увидел 1MHz, а то что на схеме кварц 8MHz значения не предал.
Значит частора 8MHz, предделитель 8 и получаем 1MHz
Re: Индикатор завышенной/заниженной частоты на двух светодио
Продолжу тему, с целью усложнить программу.
Задача в принципе та же, только вместо светодиодов хочу поставить шаговый двигатель (вращение вперед/назад). Простой коллекторный моторчик ставил - работает, а вот с шаговиком пока не получается.
Все по отдельности работает: шаговик по урокам и по этой ссылке работает http://radioparty.ru/forums/viewtopic.php?f=2&t=776 ;
Слежка за частотой по архиву в начале темы работает и со светодиодами и на моторчике (переписал немного)
А вот соединить две программы ни как не могу.
Нужно два таймера в этом случае настраивать или можно обойтись одним? Пробовал и с одним и с двумя, но протеус молчит))
Задача в принципе та же, только вместо светодиодов хочу поставить шаговый двигатель (вращение вперед/назад). Простой коллекторный моторчик ставил - работает, а вот с шаговиком пока не получается.
Все по отдельности работает: шаговик по урокам и по этой ссылке работает http://radioparty.ru/forums/viewtopic.php?f=2&t=776 ;
Слежка за частотой по архиву в начале темы работает и со светодиодами и на моторчике (переписал немного)
А вот соединить две программы ни как не могу.
Нужно два таймера в этом случае настраивать или можно обойтись одним? Пробовал и с одним и с двумя, но протеус молчит))
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Индикатор завышенной/заниженной частоты на двух светодио
Как я понял надо сделать так:
при частоте меньше 20 Гц шаговый вращается по часовой,
при частоте более 40 Гц шаговый вращается против часовой,
в диапазоне 20-40 Гц шаговый не работает.
при частоте меньше 20 Гц шаговый вращается по часовой,
при частоте более 40 Гц шаговый вращается против часовой,
в диапазоне 20-40 Гц шаговый не работает.
Re: Индикатор завышенной/заниженной частоты на двух светодио
Здравствуйте. Да именно так.
Я вник в суть кодов, соединял их в один и с одним таймером и с двумя, но как-то без результата.
Я вник в суть кодов, соединял их в один и с одним таймером и с двумя, но как-то без результата.
Re: Индикатор завышенной/заниженной частоты на двух светодио
Код написал (слепил из двух). Сделал два таймера TIMER0 и TIMER2. Первый для шаговика, второй для подсчета внешних импульсов. А когда прописывал TIMER1 - даже первоначальный код не работал.
Могу скинуть, чтоб услышать коментарии.
Могу скинуть, чтоб услышать коментарии.
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Индикатор завышенной/заниженной частоты на двух светодио
Выкладывай код, посмотрим
Re: Индикатор завышенной/заниженной частоты на двух светодио
Выкладываю архив для комментариев. Код в WinAVR, но это не суть важно и схема в протеус.
Сделал для двух моторчиков: коллекторного и шагового биполярного. На практике посмотрю какой будет лучше справляться с задачей.
Сделал для двух моторчиков: коллекторного и шагового биполярного. На практике посмотрю какой будет лучше справляться с задачей.
- Вложения
-
- Shag ot Oborot.rar
- (54.65 КБ) 773 скачивания
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Индикатор завышенной/заниженной частоты на двух светодио
Я сделал бы так:
Код: Выделить всё
while(1)
{
ADCSRA |= (1 << ADSC); // Начинаем преобразование
while (ADCSRA & (1 << ADSC)); // Ждем пока завершится преобразование
ovftimes = ADCW; // Значение временной задержки
if(counter == 4000)
{
if(edgecounter < 20) // Если частота меньше 20
{
status = 1;
PORTC |= (1 << PC1); // Включаем зеленый светодиод
TIMSK |= (1 << TOIE0); // Разрешаем прерывания от таймера
}
if(edgecounter > 40) // Если частота больше 40
{
status = 0;
PORTC |= (1 << PC2); // Включаем красный светодиод
TIMSK |= (1 << TOIE0); // Разрешаем прерывания от таймера
}
if((edgecounter < 40) && (edgecounter > 20))
{
PORTC &= ~(1 << PC2); // Включаем красный светодиод
PORTC &= ~(1 << PC1); // Выключаем зеленый светодиод
TIMSK &= ~(1 << TOIE0); // Запрещаем прерывания от таймера
}
counter = 0;
edgecounter = 0;
}
}
Re: Индикатор завышенной/заниженной частоты на двух светодио
Спасибо!
Я как раз думал о таком, но не знал как правильно написать эту строчку : if((edgecounter < 40) && (edgecounter > 20))
Я как раз думал о таком, но не знал как правильно написать эту строчку : if((edgecounter < 40) && (edgecounter > 20))