Activity
ОГО! Спасибо большое за советы! Можно поподробнее насчет функции getBTN()?
Продолжаю тему сам с собой 😁
В качестве контроллера выбрал Arduino Mega 2560 R3 (продавали в моем городе, не хотелось долго ждать с Али).
В качестве драйвера двигателя взята плата L298, спасибо за совет leons.
драйвер пока не пришел с алика, так что пока все тестирую в протеусе.
Схема которую собрал в протеусе (во вложении).
Далее код который написал:
// ----------------------------------------------------------------управления приводом
int motorPin1 = 24; // мотор подключен к цифровому выводу 10
int motorPin2 = 25; // мотор подключен к цифровому выводу 11 (реверс)
int motorPin3 = 10; // мотор подключен к цифровому выводу 10 (PWM)
int analogPin = A0; // потенциометр подключен к аналоговому выходу А0
int buttom1Pin = 22; // АЦЦ
int buttom2Pin = 23; // кнопка подключен к входу 23
int val = 0; // переменная для хранения считанного значения с потенциометра
int openn = 0; // переменная для хранения открытия по кнопке
int opennacc = 0; // переменная для хранения открытия по АССint led1 = 51;
int led2 = 52;
int led3 = 53;unsigned long currentTime;
unsigned long loopTime;//------------------------------------------------------------------------------------------------------
void setup() {
// ----------------------------------------------------------------управления приводом
pinMode(motorPin1, OUTPUT); // переключение вывода в режим “выход”
pinMode(motorPin2, OUTPUT); // переключение вывода в режим “выход”
pinMode(motorPin3, OUTPUT); // переключение вывода в режим “выход”
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);currentTime = millis(); // считываем время, прошедшее с момента запуска программы
loopTime = currentTime;//------------------------------------------------------------------------------------------------------
}
void loop() { // этот цикл выполняется бесконечное количество раз
// ----------------------------------------------------------------управления приводом
val = analogRead(analogPin);
currentTime = millis();if (digitalRead(buttom1Pin) == HIGH && opennacc == 0 && currentTime >= (loopTime + 10000)) {
opennacc = 1;
loopTime = currentTime;
}if (digitalRead(buttom1Pin) == LOW && currentTime >= (loopTime + 10000)) {
opennacc = 0;
loopTime = currentTime;
}if (digitalRead(buttom2Pin) == HIGH && val < 500 && openn == 0 && opennacc == 2) {
openn = 1;
}if (digitalRead(buttom2Pin) == HIGH && val > 500 && openn == 0 && opennacc == 2) {
openn = 2;
}if (opennacc == 1) { // открытия привода по АСС
if (val < 700) {
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
analogWrite(motorPin3, 255); // если переменная меньше 250 включаем ШИМ на полную
}
if (val >= 700 && val <= 1000) {
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
analogWrite(motorPin3, 150); // если переменная меньше от 250 до 1000 убавляем ШИМ на некоторое значение
}
if (val > 1000) {
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
analogWrite(motorPin3, 0); // если переменная меньше больше 1000 отрубаем ШИМ
opennacc = 2; // открыт по АСС
}
}if (opennacc == 0) { // Закрытие привода по АСС
if (val > 300) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
analogWrite(motorPin3, 255); // если переменная меньше 500 включаем ШИМ на полную
}
if (val >= 20 && val <= 300) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
analogWrite(motorPin3, 150); // если переменная от 100 до 500 убавляем ШИМ на некоторое значение
}
if (val < 20) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(motorPin3, 0); // если переменная меньше больше 100 отрубаем ШИМ
opennacc = 0;
}
}if (openn == 1 && opennacc == 2) { //Открытие привода по кнопке
if (val < 700) {
digitalWrite(motorPin1, HIGH);
analogWrite(motorPin3, 255); // если переменная меньше 250 включаем ШИМ на полную
}
if (val >= 700 && val <= 1000) {
digitalWrite(motorPin1, HIGH);
analogWrite(motorPin3, 150); // если переменная меньше от 250 до 1000 убавляем ШИМ на некоторое значение
}
if (val > 1000) {
digitalWrite(motorPin1, LOW);
analogWrite(motorPin3, 0); // если переменная меньше больше 1000 отрубаем ШИМ
openn = 0;
}
}if (openn == 2) { // Закрытие привода по кнопке
if (val > 300) {
digitalWrite(motorPin2, HIGH);
analogWrite(motorPin3, 255); // если переменная больше 500 включаем ШИМ на полную
}
if (val >= 20 && val <= 300) {
digitalWrite(motorPin2, HIGH);
analogWrite(motorPin3, 150); // если переменная от 100 до 500 убавляем ШИМ на некоторое значение
}
if (val < 20) {
digitalWrite(motorPin2, LOW);
analogWrite(motorPin3, 0); // если переменная меньше меньше 100 отрубаем ШИМ
openn = 0;
}
}//-------------------------индикация переменной opennacc временно
if (opennacc == 0){
digitalWrite(led1, HIGH);
}else {digitalWrite(led1, LOW);
}if (opennacc == 1){
digitalWrite(led2, HIGH);
}else {digitalWrite(led2, LOW);
}if (opennacc == 2){
digitalWrite(led3, HIGH);
}else {digitalWrite(led3, LOW);
}
}
//------------------------------------------------------------------------------------------------------
Вроде все работает… Если не сложно, оцените пожалуйста, может чего лишнего понаписал…
Не знаю, смотрит кто нибудь эту тему или нет…
Переделал предыдущий скетч теперь все работает.
int motorPin1 = 10; // мотор подключен к цифровому выводу 10
int motorPin2 = 11; // мотор подключен к цифровому выводу 11 (реверс)
int analogPin = A0; // потенциометр подключен к аналоговому выходу А0
int buttom1Pin = 22; // АЦЦ
int buttom2Pin = 23; // кнопка подключен к входу 22
int val = 0; // переменная для хранения считанного значения с потенциометра
int openn = 0; // переменная фиг знает для чегоvoid setup() {
pinMode(motorPin1, OUTPUT); // переключение вывода в режим “выход”
pinMode(motorPin2, OUTPUT); // переключение вывода в режим “выход”}
void loop() { // этот цикл выполняется бесконечное количество раз
val = analogRead(analogPin);
if (digitalRead(buttom2Pin)==HIGH && val<500 && openn == 0) {
openn = 1;
}
if (digitalRead(buttom2Pin)==HIGH && val>500 && openn == 0) {
openn = 2;
}if (openn == 1) {
if (val < 250) {
analogWrite(motorPin1, 255); // если переменная меньше 700 включаем ШИМ на полную
}
if (val>250 && val < 1000) {
analogWrite(motorPin1, 150); // если переменная меньше от 700 до 1000 убавляем ШИМ на некоторое значение
}
if (val > 1000) {
analogWrite(motorPin1, 0); // если переменная меньше больше 1000 отрубаем ШИМ
openn = 0;
}
}if (openn == 2) {
if (val > 500) {
analogWrite(motorPin2, 255); // если переменная меньше 700 включаем ШИМ на полную
}
if (val > 100 && val < 500) {
analogWrite(motorPin2, 150); // если переменная меньше от 700 до 1000 убавляем ШИМ на некоторое значение
}
if (val < 100) {
analogWrite(motorPin2, 0); // если переменная меньше больше 1000 отрубаем ШИМ
openn = 0;
}
}
}
Но теперь появились другие проблемы и новые исходные данные. Но это уже совсем другая история 😁
И снова здравствуйте, и снова нужна ваша помощь.
к предыдущему скетчу пытаюсь добавить кнопку:
int motorPin = 10; // мотор подключен к цифровому выводу 10
int analogPin = A0; // потенциометр подключен к аналоговому выходу А0
int buttom1Pin = 22; // кнопка подключен к входу 22
int val = 0; // переменная для хранения считанного значения с потенциометра
int openn = 0; // переменная для хранения считанного значения с потенциометраvoid setup() {
pinMode(motorPin, OUTPUT); // переключение вывода в режим “выход”
}
void loop() { // этот цикл выполняется бесконечное количество раз
val = analogRead(analogPin); // записываем в переменную показания с потенциометра
if (digitalRead(buttom1Pin) == HIGH) {
do {
if (val<500) {
analogWrite(motorPin, 255); // если переменная меньше 700 включаем ШИМ на полную
}
if (val>500&&val<1000) {
analogWrite(motorPin, 150); // если переменная меньше от 700 до 1000 убавляем ШИМ на некоторое значение
}
if (val>1000) {
analogWrite(motorPin, 0); // если переменная меньше больше 1000 отрубаем ШИМ
}
}while (val>1000);
}
}
Но, при симуляции в протеусе происходит следующее:
- начальные параметры, кнопка не нажата, переменник в нуле, мотор не крутится;
- при нажатии кнопки начинает вращатся мотор с максимальной скоростью;
- начинаю “крутить” переменник, скорость мотора изменяется согласно алгоритма скетча;
- при достижении переменника 100%, мотор останавливается.
Вроде все хорошо, но…
Если я правильно понимаю свой скетч, то после всех этих действий, изменении положения резистора и повторного нажатия кнопки цикл (do-while) должен запустится заново, и мотор снова должен вращатся по алгоритму, но этого почему-то не происходит…
В чем проблема?
И снова обращаюсь к Вам за помощью, нужно проверить код… Двигаюсь конечно потихоньку, времени мало свободного, но все же двигаюсь…
Итак, решил начать с малого. Так сказать без всяких кнопок и прочего. Оставляю только мотор и потенциометр (так сказать код открытия):
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 отрубаем ШИМ
}
}
Я в правильном направлении двигаюсь?
Что это? С одной стороны напоминает человеческий скелет… С другой - концептуальную вешалку
Все, стоп. Забыли про концевики и кулачковые механизмы… Это не наш метод, и не интересно… Пока электриком работал на них насмотрелся.
Буду делать на Ардуино. Сижу изучаю…
Всем спасибо за советы, особенно Вам Дмитрий. Про Ардуино даже и не думал… Попробую на нем сделать.
Согласен, на концевиках проще всего, но моторчик в данном редукторе имеет хорошую инерцию, и после пары применений на схеме с концевиками, я этот редуктор скорей всего выкину.
Резистор вроде в ТЗ присутствовал всегда, см. вложение.
И не надо говорить, что я переобуваюсь… Хотя да, скорей всего я буду переобуваться, т.к. сам до конца не знаю что в итоге хочу получить, и я не только про привод…
Сам руковожу проектным отделом, самого бесят заказчики, которые дают невнятное ТЗ, а потом переобуваются в самый последний момент.
Мда… Думал микроконтроллеры проще освоить… Скачал 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);
}
}
}
Но вот с подключением резистора и написание кода под него вообще не поддается.
Кто готов помочь?
В том то и дело что не фабричная сборка. Сборка на макетке, и без отладки…
Решил кстати узнать, сколько будет стоить разработка данного устройства, создал тему на форуме радиокот, все описал… и маленько обомлел!!!
За разработку ПО просят 2000р.
За разработку схемы 5000р.!!!
Это реальные цены? или я чего-то не понимаю…
Все спасибо за помощь, пока сижу и разбираюсь.
Изначально конечно хотел вытряхнуть потроха из сервомашинки, и подключить все это дело через сервотестер… Но мне кажется нелогично несколько раз кодировать и разкодировать сигнал…
Сейчас смотрю в сторону проекта OpenServo но пока не разобрался в нем…
Доброго времени суток. Имеется привод (см. вложение), необходима схема управления приводом с трёх кнопок, желательно на avr. Принцип работы следующий:
1 кнопка - ведёт привод в крайнее верхнее положение (открыть);
2 кнопка - ведёт привод в крайнее нижнее положение (закрыть);
3 кнопка - в открытом положении плавно закрывает привод, пока нажата кнопка;
Подскажите пожалуйста в какую сторону смотреть, может есть уже готовые похожие решения.
Заранее спасибо!
Здравствуйте, а есть у кого-нибудь чертежи лодки изготовление которой описывает denis karelskiy?
Извините что лезу в тему, но может кому надо DT750, пропы, AIOP, GPS…
Большое спасибо zSIDz (Алексей Иваницкий), обмен автомоделями состоялся успешно, хорошо упаковал, все честно рассказал.
Спасибо Victor 28 ! Честный продавец!!!
Поддерживаю.
Вот тут есть фотки с нужных ракурсов www.rcdrift.ru/forum/showthread.php?t=30175&highli… (не реклама)… Можно срисовать, ну а дальше доделать под себя… А так вроде когда то выкладывали чертежи подобного стенда, но что-то сейчас не смог найти…
Еще вопросик придумал) Дифы разбирали? шестерни прямые или косозубые? сталь хорошая?
Ну фоток мало не бывает… Так что фоткайте все узлы, что показалось слабым, может что-то уже сломали, доработки и прочее…)
ну и к вопросам…
- реальный (максимальный) дорожный просвет и чем он регулируется.
- пробовали ставить другие колеса (пошире, и с большим диаметром). может корку другую примеряли…
- качество стокового пластика (гнется или сразу ломается).
- толщина рычагов подвески.
- передние привода мипы или кости (в стоке)?
- родная электроника (мотор, рег) сильно греются на 4 банках?
пока вопросов больше нет… Заранее спасибо за ответы)
Мало информации)
День добрый.
Можно ли всё чертежи по данной яхте.
Присоединяюсь) И желательно в автокаде)
Зачастую это зависит от вас! Почитайте как правильно управлять/ прыгать :
rc-auto.ru/articles_models/id/810/
rc-auto.ru/articles_models/id/216/
rc-auto.ru/articles_models/id/207/
rc-auto.ru/articles_models/id/209/
А если покопать/почитать по форуму, то найдете много нового и интересного. УЧТИТЕ! Для машины 1/1 люди учат правила, учатся водить, ЗДЕСЬ ТАК ЖЕ! Надо учиться, надо читать, ни кто не вложит в вас свои знания и за пять минут не обучит!И учтите. Что вариант объясните мне/ ответьте на мой вопрос не конают, ели вы сами не хотите ни чего делать!
Так я и не прошу учить, а эти статьи я уже давно читал, года два, или три назад… Просто спрашиваю какая из этих моделей прочнее, а на форумах много мнений, для кого-то и “китай” самый лучший… Была бы возможность купил бы все эти модели и сам уже сравнивал)
Исходя из вашего сообщения, вы уже определились.
Так что смысл вас переубеждать.
Еще не определилься, просто сказал, что мне она больше нравится, но главный критерий это прочность…
rc-auto.ru/forum/index.php?showtopic=19997
Здесь сравнение моделей E-MTA и MT4 G3
Как раз после этой статьи и задал вопрос сюда)
Хм… Ну да, пластиковый, все закрыто (много деталюшек, для меня это +, т.к. люблю поковыряться в моделях)… Насчет акков собирался использовать только 2х2S так что не критично для меня… Центральный диф… А зачем он вообще? Может на соревнованиях что-то и даст, а для простых покатушек и без него можно…
А e-MTA вообще не рассматривать? как-то по копмпоновке больше нравится…
В общем я совсем запутался в своих мыслях и «хотелках»…
Сейчас на руках имеется traxxas rustler, в целом машина устраивает (на мой взгляд не убиваемая), но зимой на заднем приводе кататься невозможно (у меня не получается)…
Хотел найти полноприводную траггу в 10 масштабе, но так ничего серьезного и не нашел…
Машина нужна для покатушек «во дворе» с некоторыми элементами башинга…
Присмотрелся к моделям:
- e-revo 1/8
- Thunder Tiger MT-4 G3 (вроде и не трагги, но… похожа)
- Thunder Tiger e-MTA (то-же не трагги, но то-же похожа)
- Team Associated RC8T
Какая из этих моделей самая крепкая, какая подойдет «новичку» (не всегда получается приземлятся на 4 колеса…)?
Может еще что посоветуете?
Планировал брать шасси, без электроники (чем дешевле, тем лучше)
То-же самое RC004124155MY…
У меня с 25 марта на экспорте висит RC004124155MY (уже больше 20 дней).
Хотя другая посылка RC002430440MY экспорт 16.03.2014, импорт 29.03.2014…
Странно все как-то…
А у кого-нибудь посылки с треком типа RC MY есть? сколько примерно по времени экспорт-импорт? У меня в январе этого года за 3 дня импортунась… А в этом месяце уже 10 дней не может импортнутся…
Здравствуйте, мне 25 годиков.
Опыт в автомоделизме есть, сейчас в наличии traxxas rustler (с китайской б/к), в целом модель устраивает (очень прочная, еще ни одной поломки), но у нее задний привод и зимой нереально гонять…
Теперь задумался о покупке к зиме что-то полноприводное, и возможно в 8 масштабе…
Китайское с хоббика не хочу брать, как-то не особо доверяю.
Нужна электро трагги для дворовых покатушек, с небольшими элементами башинга.
Присмотрелся к некоторым моделям:
- HPI-RACING TROPHY TRUGGY FLUX
- Losi 8IGHT-T
- Asso RC8Te
Что скажете, может еще что посоветуете?
Маленькая моделька… Я думал она побольше…
Ну мне как-то рева приглянулась… Другие модели особо не рассматривал… Но хотелось-бы именно трагги. За фотки спасибо.
Здравствуйте, а кто-нибудь может сфоткать реву1/16 с какой-нибудь моделью 1/10? Хочется визуально сравнить размеры. Есть растлер он заднеприводный, а хочется полный, но “большую” реву финансово не потяну… И вообще хотелось-бы услышать ваше мнение, стоит ли менять растлера на реву?
Здравствуйте, есть у кого нибудь файлы модели logo 400 для симулятора Reflex? Если не сложно скиньте на мыло egor-mav@майл.ru.
Раньше вроде на rc-sim.de (не реклама) можно было скачать, а сейчас что-то нету возможности…
Здравствуйте, есть у кого нибудь файлы модели logo 400 для данного симулятора? Если не сложно скиньте на мыло egor-mav@майл.ru.
Раньше вроде на rc-sim.de (не реклама) можно было скачать, а сейчас что-то нету возможности…
Есть, я только одного знаю…
Стенки как раз 3 мм. У родных вроде 2,5 мм…
Может кому пригодится… Нашел мотораму для DT750 Запасная моторама для Durafly Monocoupe 1100мм (не реклама) 100% подходит, даже лучше чем родная (толщина стенки больше).