роботы робототехника микроконтроллеры


 Страниц (3): « 1 [2] 3 »   

> Без описания
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



[quote=Петр Киселев][/quote] В том-то и дело, что моё устройство будет делать когда дверь закроется? А она (дверь) закроется. Программа то работает некоторое время и после закрытия двери. Придётся городить одновибратор с перезапуском, а это лишняя" логика".
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Billi пишет:
Петр Киселев пишет:
В том-то и дело, что моё устройство будет делать когда дверь закроется? А она (дверь) закроется. Программа то работает некоторое время и после закрытия двери. Придётся городить одновибратор с перезапуском, а это лишняя" логика".



Петр дело говорит, у микроконтроллера есть "ресет" вот его и нажимайте а программа помигает и закончится и бесконечный цикл тогда не нужен программа кончилась до следующего рестарта (тут можно и в спячку уйти кстати).
 
 Top
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



Как вариант, с Reset. Ну а для будущего развития для меня(это не последняя же разработка) какие строчки надо добавить в код программы для опроса ноги порта, какие библиотеки добавить.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Billi пишет:
Как вариант, с Reset. Ну а для будущего развития для меня(это не последняя же разработка) какие строчки надо добавить в код программы для опроса ноги порта, какие библиотеки добавить.


Вам сюда http://easyelectronics.ru/avr-uc...-si-chast-1.html

и пока не стало поздно переходите с CodeVisionAVR на AVR студию

(Отредактировано автором: 06 Января, 2016 - 16:10:44)

 
 Top
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



Охотно приму во внимание совет по переходу. Но сейчас, уже 90% девайса готово, помогите с таким "не удобным" компилятором. Написание новой программы в новом компиляторе отодвинет финал еще на месяц.
 
 Top
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



Идея с Reset вдохновила: на время работы программы PORTC.3 поддерживает ресет в единице. Даже если дверка закрывается. С помощью диодов- резисторов схема"или". Конечно хотелось изящней но и так вроде работает. Пока на бумаге, завтра проверю.
 
 Top
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



Работает. Поскольку форум не для новичков гибридную схему не выкладываю. Мне гордиться нечем.

(Отредактировано автором: 09 Января, 2016 - 19:55:46)

 
 Top
Antenna88 Post Id



Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2016  



НЕ СТАНУ СОЗДАВАТЬ НОВУЮ ТЕМУ. Один вопросик плиз. Имеется три вещи - макет.плата, 2 серво, Атмега8 (DIP28). И еще скачал готовую программу (приведена чуть ниже)
Нужно чтоб все это заработало. Атмегу8 прошил. Вопрос - 1) куда подключать белый(оранжевый) провода обоих сервоприводов (название ножки МК) ?? (в схемах которые нахожу в сети не могу разобраться . Замешательство Ламер )
2) правильно ли догадываюсь для питания нужны же два отдельных источника - один для МК другой для серво ?? И в частности нужно ли куда нибудь подключать ножку RESET ??
Кроме этого скудного набора штучек (МК, серво и батарейка) нужно ли еще что либо (в обязательном порядке) (резисторы и т.п.) ?? Не хотелось бы сжечь МК и серво.
Благодарен.

Вот программа :

#include <avr/io.h>
#include <avr/interrupt.h> //подгружаем прерывание
volatile unsigned int Danie_1Servo = 0,Danie_2Servo = 0,Sot = 0;
ISR (TIMER1_COMPA_vect) //формируем угол здвига 1 сервопривода
{
PORTA &=~(1<<0); // завершаем импульса для 1 сервопривода
OCR1A = Danie_1Servo;
}
ISR (TIMER1_COMPB_vect) // формируем угол здвига 2 сервопривода
{
PORTA &=~(1<<1); // завершаем импульса для 2 сервопривода
OCR1B = Danie_2Servo;
}
ISR(TIMER1_OVF_vect) //формеруем 20мс. 50гц
{
PORTA |=(1<<0); //начяло импульса для 1 сервопривода
PORTA |=(1<<1); //начяло импульса для 2 сервопривода
Sot++;
}
//*******************//
//*******************//
int main(void)
{
DDRA |=(1<<0)|(1<<1);
ICR1 = 5000; //формеруем 20мс. для 16Мгц.
OCR1A = 150;
OCR1B = 150;
TCCR1B |= (1 << ICES1)|(1<<CS10)|(1<<CS11)|(1<<WGM12)|(1<<WGM13); //пределитель 64,старший бит режим FastPWM (сброс при совпадении)
TCCR1A |=(1<<WGM11); // младшие бит режим FastPWM
TIMSK |=(1<<TOIE1)|(1<<OCIE1A)|(1<<OCIE1B); // разрешаем работу прерываниям

asm( sei );
//===========//
while(1)
{
if ( Sot == 100)
{
Danie_1Servo = 500; // данные для 1 сервопривода
}
if ( Sot == 200)
{
Danie_1Servo = 150; // данные для 1 сервопривода
Sot = 0;
}
asm( nop );

(Отредактировано автором: 22 Мая, 2016 - 02:41:38)

 
 Top
Петр Киселев Post Id



Гуру


Сообщений всего: 2397
Дата рег-ции: Окт. 2012  



Antenna88, хочу поделиться своим небольшим опытом в работе с сервами. Если они в работе постоянно, то через некоторое время начинают греться. Питание для них лучше делать отдельное, например, 3 батарейки по 1,5 В или 4 акка по 1,2 В. Если серв 3 и более, то только так. Отдельный источник потребовался у нас и при работе с блютузом.
По "резет" и коду, лучше дождаться комментариев наших мэтров -killgur и Роботова. Я сто лет тому назад пробовал поставить к "резет" R/C цепочку, но ничего не получилось.
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



Antenna88:
1.
Antenna88 пишет:
правильно ли догадываюсь для питания нужны же два отдельных источника - один для МК другой для серво ??
Желательно, но не обязательно. Причем для МК желательно стабилизированное питание.
2.
Antenna88 пишет:
И в частности нужно ли куда нибудь подключать ножку RESET ??
Не обязательно. Но можно подтянуть к питанию резистором 5-10 кОм. Хуже не будет.
3.
Antenna88 пишет:
Кроме этого скудного набора штучек (МК, серво и батарейка) нужно ли еще что либо (в обязательном порядке) (резисторы и т.п.) ??

По питанию емкости надо ставить. Электролит и керамику. Если питание МК не превысит 5,5 В, то не сгорит (если ножки не коротить).
Серву сжечь легко, достаточно на долгое время оставить неподвижно под большой нагрузкой.
 
 Top
Antenna88 Post Id



Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2016  



Ну а самый главный вопрос - куда подключать желтые провода обоих сервомоторов ??
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



Antenna88 пишет:
Ну а самый главный вопрос - куда подключать желтые провода обоих сервомоторов ??

Если не ошибаюсь к выводам PB1 и PB2
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



soob пишет:
Если не ошибаюсь к выводам PB1 и PB2

... или РА0 и РА1
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



Если речь идёт о ATMega8, то у него ведь нет порта A.
По коду задействованы OCR1A и OCR1B.
На обычном DIP корпусе это 15 и 16 ножки

Поправьте если не прав Улыбка
Прикреплено изображение
atmega8_p1.gif

 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



soob пишет:
Если речь идёт о ATMega8, то у него ведь нет порта A.
По коду задействованы OCR1A и OCR1B.
На обычном DIP корпусе это 15 и 16 ножки

Поправьте если не прав Улыбка



PAO PA1

потому что программа для меги 16 с кварцем на 16МГц и зачем то дергают ногами на порте А генерируя импульсы для управления сервомашинкой.

Порт B не задействован в программе сигналы таймера наружу не выходят

можно порт А заменить на порт С просто изменением буквы если очень надо запустить на меге8

(Отредактировано автором: 24 Мая, 2016 - 18:10:57)

 
 Top
Страниц (3): « 1 [2] 3 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru