Управление приводом

egor-mav

Решил кстати узнать, сколько будет стоить разработка данного устройства, создал тему на форуме радиокот, все описал… и маленько обомлел!!!
За разработку ПО просят 2000р.
За разработку схемы 5000р.!!!

Это реальные цены? или я чего-то не понимаю…

Dinotron

Ну если фабричная реализация, со всеми отлаживаниями прошивок, многослойными заказными платами, то возможно. А так я могу вам прям тут скетч для ардуины навалять из пары строк. Но за результат не ручаюсь. 😃

egor-mav

В том то и дело что не фабричная сборка. Сборка на макетке, и без отладки…

leons

тоже набросал ,для так поигратса ,написано на базе VarSpeedServo эта библиотека должна быть в IDE

Цибульский_Андрей

Решение очень простое. Нужно взять электронику от мощной рулевой машинки и встроить в редуктор. Если диапазон работы вашего редуктора с резистором обратной связи будет не в “рамках”, то необходимо будет добавить резисторы (методом подбора) с двух сторон вашего встроенного резистора.

leons
egor-mav:

Решил кстати узнать, сколько будет стоить разработка данного устройства, создал тему на форуме радиокот

интересно что там написали, иногда страшно что-то спрашивать у этих сумошедших программистов

7 days later
egor-mav

Мда… Думал микроконтроллеры проще освоить… Скачал Atmel Studio 7.0, смотрел уроки… Но пока только примерно понял как ШИМ генерировать на attiny2313…

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.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 = 240;
DDRB |= (1<<PB4);
}
else
{
TCCR1A = (1<<COM1B1) | (1<<WGM10);
TCCR1B = (1<<WGM12) | (1<<CS10);
OCR1B = 10;
DDRB |= (1<<PB4);
}
}
}

Но вот с подключением резистора и написание кода под него вообще не поддается.
Кто готов помочь?

Dinotron
egor-mav:

Но вот с подключением резистора и написание кода под него вообще не поддается. Кто готов помочь?

Мда. Так правильней. extremeelectronics.co.in/…/servo-motor-control-by-… Ну там с азов надо начинать, да и у 2313 нету ADC. Можно, но надо заморочиться. Может всё-таки так проще

doc.arduino.ua/ru/prog/AnalogWrite Под ваш привод точно пойдёт. Пару строк дописать 😃
P. S. Из нужного вам вооружения на борту 2313 только компаратор. Может только сравнивать 2 напряжения и говорить выше или ниже. Либо ваяйте каким-нибудь ШИМом на резистор пилу и теми же таймерами мерить время, или транзистор с конденсатором и… тоже.

V_Alex

Любая задача должна начинаться с техзадания. Оно как-бы было озвучено в первом пункте:

egor-mav:

Имеется привод (см. вложение), необходима схема управления приводом с трёх кнопок, желательно на avr. Принцип работы следующий…

Там было три кнопки, сейчас в схеме откуда-то появился переменный резистор. Еще в ТЗ не отображено, как должен вести себя мотор-редуктор при не нажатых кнопках - просто обесточиваться или удерживать текущее положение. Если первый вариант, то никакого контроллера там не нужно, можно оттолкнуться от этой схемы: rcopen.com/forum/f68/topic138133/36242 В вашем случае нарисованный на схеме регулятор не нужен, все подключается прямо к источнику питания. Концевики шунтируются управляющими кнопками крест-накрест, третья кнопка для медленного хода должна подключаться параллельно одной их первых двух, но последовательно со своим балластным резистором.

Dinotron
V_Alex:

Любая задача должна начинаться с техзадания.

Полностью согласен. Видимо тем и отличаются любители, что любят переобуваться по нескольку раз. 😃

V_Alex:

Концевики шунтируются управляющими кнопками крест-накрест, третья кнопка для медленного хода должна подключаться параллельно одной их первых двух, но последовательно со своим балластным резистором.

И никаких процессоров нафинг !

leons
V_Alex:

сейчас в схеме откуда-то появился переменный резистор

а как кнопка и резистор вчесте работать должны , я пробовал у них тупо конфликт , я так понял нужно две переменные к кнопке и к переменнику

V_Alex

Щас практически на каждом китайском сервотестере стоит переменник и батарея кнопок. В общем случае там организован цикл с частотой 50 Гц. Первыми опрашиваются кнопки и от них серва либо уходит в заданное крайнее положение, либо начинает елозить из края в край. Опрос канала АЦП на время нажатия кнопки должен блокироваться. Когда кнопки отпущены, доходит очередь до переменника. Для резвого и вменяемого распределения ресурсов такие вещи лучше писать на ассемблере. Для задачи автора темы достаточно чего-то совсем мелкого, типа тини13а.

Игорь555
egor-mav:

Управление приводом

Егор вот посмотри здесь ,правда там для сервы ,но может что то интересное для себя найдете там с права оглавление,есть и написанные программы под Пик контролер.
alex-exe.ru/radio/robotics/servo-pic/

egor-mav

Всем спасибо за советы, особенно Вам Дмитрий. Про Ардуино даже и не думал… Попробую на нем сделать.
Согласен, на концевиках проще всего, но моторчик в данном редукторе имеет хорошую инерцию, и после пары применений на схеме с концевиками, я этот редуктор скорей всего выкину.
Резистор вроде в ТЗ присутствовал всегда, см. вложение.
И не надо говорить, что я переобуваюсь… Хотя да, скорей всего я буду переобуваться, т.к. сам до конца не знаю что в итоге хочу получить, и я не только про привод…
Сам руковожу проектным отделом, самого бесят заказчики, которые дают невнятное ТЗ, а потом переобуваются в самый последний момент.

V_Alex
egor-mav:

Согласен, на концевиках проще всего, но моторчик в данном редукторе имеет хорошую инерцию, и после пары применений на схеме с концевиками, я этот редуктор скорей всего выкину.

Погуглите фразу “кулачок механизм”.

egor-mav

Все, стоп. Забыли про концевики и кулачковые механизмы… Это не наш метод, и не интересно… Пока электриком работал на них насмотрелся.
Буду делать на Ардуино. Сижу изучаю…

leons
egor-mav:

Все, стоп. Забыли про концевики и кулачковые механизмы… Это не наш метод, и не интересно… Пока электриком работал на них насмотрелся.
Буду делать на Ардуино. Сижу изучаю…

Вы только не исчезайте , всётаки будет интересен результат

Dinotron
egor-mav:

Буду делать на Ардуино. Сижу изучаю…

Хотите вместе поизвращаемся. 😃 Та китайская мандула с фото всё ещё в работе. И да. Больше чем ардуинку я к ней, видимо, не подключу.
P. S. У меня случай тяжелее. Она вот к чему прикручена. Сразу не бейте. Каждый сходит с ума по-своему. 😃 Там ещё и ROS распределённый а ардуинка нодой. Надо было его на помойку отпереть. Теперь жалко.

egor-mav

Что это? С одной стороны напоминает человеческий скелет… С другой - концептуальную вешалку

Dinotron

И то и другое верно. 😃 И вопрос хороший. Это нечто упрощённо подделывающее человеческую анатомию, из всякого мусора, но с компьютерами в башке и в заднице. Оно пластмассовое и гнётся. Ну бред короче, но забористый оказался. 😃

egor-mav

И снова обращаюсь к Вам за помощью, нужно проверить код… Двигаюсь конечно потихоньку, времени мало свободного, но все же двигаюсь…

Итак, решил начать с малого. Так сказать без всяких кнопок и прочего. Оставляю только мотор и потенциометр (так сказать код открытия):

int motorPin = 10; // мотор подключен к цифровому выводу 10
int analogPin = A0; // потенциометр подключен к аналоговому выходу А0
int val = 0; // переменная для хранения считанного значения с потенциометра

void setup() {

pinMode(motorPin, OUTPUT); // переключение вывода в режим “выход”

}

void loop() { // этот цикл выполняется бесконечное количество раз

val = analogRead(analogPin); // записываем в переменную показания с потенциометра

if (val<700) {
analogWrite(motorPin, 255); // если переменная меньше 700 включаем ШИМ на полную
}
if (val>700&&val<1000) {
analogWrite(motorPin, 150); // если переменная меньше от 700 до 1000 убавляем ШИМ на некоторое значение
}
if (val>1000) {
analogWrite(motorPin, 0); // если переменная меньше больше 1000 отрубаем ШИМ
}
}

Я в правильном направлении двигаюсь?