реклама на сайте
подробности

 
 
> Аппаратный ШИМ на ATtiny2313, А также несколько вопросов относительно него
bfrogg
сообщение Mar 5 2011, 15:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 5-03-11
Пользователь №: 63 417



Здравствуйте. Нужно сделать аппаратный ШИМ на Attiny2313. Немного почитал разные источники и вроде сделал 8-битный Fast PWM. Проверьте все ли правильно. Если да, то как мне сделать ФНЧ для этого ШИМа.

Вообще задача состоит в том, чтобы управлять скоростью моторчиков у "робота".

Код
   #define F_CPU 8000000UL  // указываем частоту в герцах
  
   #include <avr/io.h>
   #include <util/delay.h>

int main(void) // начало основной программы
{
  
   TCCR1A = (1<<COM1B1) | (1<<WGM10);
   TCCR1B = (1<<WGM12) | (1<<CS10);
   OCR1B = 50;
   DDRB |= (1<<PB4);
  
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bfrogg
сообщение Mar 11 2011, 21:51
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 5-03-11
Пользователь №: 63 417



Код
/****************************************************************
ПРИМЕР 4 :: ПРОСТЕЙШИЙ АЛГОРИТМ СЛЕДОВАНИЯ ПО ЛИНИИ :: MYROBOT.RU
*****************************************************************/

#include <avr/io.h>

int main(void) // начало основной программы
{
  
   DDRB = 0xff; // все выводы порта B сконфигурировать как выходы
   DDRD = 0x00; // все выводы порта D сконфигурировать как входы


   PORTD = 0xff; // установить "1" на всех выводах порта D,
         // включаем подтягивающие резисторы

        while (1) {  // Бесконечный цикл

        // ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

        if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
        {
                    // ---- включаем левый мотор, останавливаем правый -----

                    TCCR1A = (1<<COM1B1) | (1<<WGM10);
                    TCCR1B = (1<<WGM12) | (1<<CS10);
                    OCR1B = 100;
                    DDRB |= (1<<PB4);
                    DDRB |= (0<<PB3);

                    // -----------------------------------------------------
        }
        else
        {
                        // ---- останавливаем левый мотор, включаем правый -----

                    TCCR1A = (1<<COM1A1) | (1<<WGM10);
                    TCCR1B = (1<<WGM12) | (1<<CS10);
                    OCR1A = 100;
                    DDRB |= (1<<PB3);
                    DDRB |= (0<<PB4);

                        // -----------------------------------------------------
        }


        } // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы


Вроде работает, однако есть 2 проблемы

1: алгоритм срабатывает, если я проводком ведущим к PD1 тыкаю на минус. Фотодатчики как то не управляют работой)
2: с момента начала робот работает нестабильно: сначала крутится одно колесо, когда условие выполняется, после того как проводком на минус тыкнул, МК как будто сходит с ума и условие работает наоборот
Go to the top of the page
 
+Quote Post
ae_
сообщение Mar 12 2011, 02:48
Сообщение #3


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(bfrogg @ Mar 12 2011, 05:51) *
...
2: с момента начала робот работает нестабильно: сначала крутится одно колесо, когда условие выполняется, после того как проводком на минус тыкнул, МК как будто сходит с ума и условие работает наоборот

Как можно узнать куда поворачивать, если сигнал с фотоэлемента только один?
Куда отклонилась машина, влево или вправо, если пропал сигнал?
Что бы следить за линией, нужно минимум 2 аналоговых фотоэлемента, один слева, другой справа.
Расположить их так, чтобы каждый видел 50% ширины линии.
Сигнал с фотоэлементов снимать аналоговый, к двигателям сигнал управления подавать пропорционально освещённости датчиков крест-накрест, т.е. чем ярче видит линию левый датчик, тем быстрее крутить правым двигателем.
Другой вариант - поставить 3 логических фотоэлемента (да/нет, есть линия/нет линии), один в центре, два по бокам от него.
Если едем ровно - сигнал есть только на центральном датчике. ушли в сторону - сигнал появится на боковом датчике и далее может совсем пропасть.
Запомнив, в какую сторону сбилась машина, управляем двигателями, что бы вернуть её на линию.
Go to the top of the page
 
+Quote Post
bfrogg
сообщение Mar 12 2011, 07:10
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 5-03-11
Пользователь №: 63 417



Цитата(ae_ @ Mar 12 2011, 05:48) *
...

http://myrobot.ru/stepbystep/el_simple_robot_for_line.php

Сообщение отредактировал IgorKossak - Mar 12 2011, 08:34
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bfrogg   Аппаратный ШИМ на ATtiny2313   Mar 5 2011, 15:31
- - kovigor   Цитата(bfrogg @ Mar 5 2011, 19:31) Здравс...   Mar 5 2011, 15:42
- - ut1wpr   Цитата(bfrogg @ Mar 5 2011, 19:31) Здравс...   Mar 5 2011, 15:42
- - bfrogg   1. Не хочется делать глупых ошибок в программной ч...   Mar 5 2011, 16:03
|- - kovigor   Цитата(bfrogg @ Mar 5 2011, 20:03) 1. Не ...   Mar 5 2011, 16:10
|- - дымок   Цитата(bfrogg @ Mar 5 2011, 21:03) Моторч...   Mar 5 2011, 16:13
|- - bfrogg   Цитата(дымок @ Mar 5 2011, 19:13) Ну дык ...   Mar 5 2011, 19:25
- - 314   Инерция движков сама по себе отличный ФНЧ.   Mar 5 2011, 19:14
|- - 777777   Цитата(314 @ Mar 5 2011, 22:14) Инерция д...   Mar 7 2011, 11:01
|- - =GM=   У товарища стоит готовый мост, даже два - L293D, ...   Mar 7 2011, 11:31
- - 314   ЦитатаНе понял насчет схемки выходного каскада. Чт...   Mar 5 2011, 19:38
|- - bfrogg   Цитата(314 @ Mar 5 2011, 22:38) В Вашем с...   Mar 5 2011, 19:45
- - 314   Не зная что Вы конкретно делали, схемы, которую Вы...   Mar 5 2011, 20:47
- - =GM=   Настройки у вас правильные, возможно, в дальнейшем...   Mar 5 2011, 21:34
|- - bfrogg   Цитата(=GM= @ Mar 6 2011, 00:34) Настройк...   Mar 6 2011, 07:37
|- - =GM=   Цитата(bfrogg @ Mar 6 2011, 07:37) Подбир...   Mar 6 2011, 14:07
- - 314   Второе зависит от того, какую Вы собрали схему, с ...   Mar 6 2011, 13:23
- - bfrogg   Код #define F_CPU 8000000UL // указываем частот...   Mar 8 2011, 14:44
|- - =GM=   Если аргумент оператора IF равен ДА, то вы включае...   Mar 8 2011, 22:51
- - 314   Лучше не выключать, а менять скорости, один двига...   Mar 9 2011, 07:10
|- - =GM=   Это уже детали, смысл моего сообщения был в том, ч...   Mar 9 2011, 09:46
|- - ae_   Цитата(bfrogg @ Mar 12 2011, 15:10) Если...   Mar 12 2011, 19:15
- - 314   Цитатаалгоритм срабатывает, если я проводком ведущ...   Mar 12 2011, 18:21
|- - demiurg_spb   Цитата(314 @ Mar 12 2011, 21:21) А разве ...   Mar 13 2011, 09:58
- - bfrogg   ae, спасибо за идею! Цитата(314 @ Mar 12...   Mar 13 2011, 06:22
- - 314   ЦитатаНет. Вот так правильно: Ну пусть так (все ра...   Mar 13 2011, 10:10
- - bfrogg   Проблема в программе. В моей схеме МК работает на ...   Mar 20 2011, 20:19
|- - kovigor   Цитата(bfrogg @ Mar 20 2011, 23:19) В схе...   Mar 20 2011, 21:35
- - nk@   Коллекторный двигатель гонит серьезную помеху по п...   Mar 21 2011, 05:22
- - bfrogg   На днях попробую раздельное питание. Осциллографа ...   Mar 21 2011, 16:41
|- - kovigor   Цитата(bfrogg @ Mar 21 2011, 19:41) Скажи...   Mar 21 2011, 17:17
- - nk@   У Вас L293 неправильно включена. Ноги 7, 10 в возд...   Mar 21 2011, 18:29
- - Disha   В общем вопрос похожий. Поэтому новую тему создава...   Dec 13 2013, 12:08
|- - kovigor   Цитата(Disha @ Dec 13 2013, 16:08) Меня х...   Dec 13 2013, 14:02
|- - Disha   Цитата(kovigor @ Dec 13 2013, 16:02) Тут,...   Dec 16 2013, 10:53
- - TSerg   Браться надо за то, что можете, а не за то, что хо...   Dec 13 2013, 12:45
|- - Disha   Цитата(TSerg @ Dec 13 2013, 14:45) Братьс...   Dec 13 2013, 12:54
- - TSerg   http://electronix.ru/forum/index.php?showforum=24   Dec 13 2013, 13:04
- - Disha   додаток Цитата(TSerg @ Dec 13 2013, 15:0...   Dec 13 2013, 13:11
- - TSerg   - тему "Предлагаю работу".   Dec 13 2013, 13:30


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 06:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016