Управлять то получилось?
Управлять то получилось?
Не совсем подправил окно со скетчем по последним изменениям, ну вот собственно и описание эксперемента:
Повторюсь что бы было понятно как работает сигнал с RC приемника. После включения ДУ пульта на выходе сигнал 1,5 мс (150 тактов таймера по 10мкс) При нажатии рычага в право сигнал плавно увеличивается от 1,5мс до 2мс... При возврате рычага в нейтральное положение естественно возвращается на 1,5мс... При нажатии рычага в лево сигнал плавно уменьшается с 1,5мс до 1мс.
Вот что у меня получилось: цепляю Н-Мост на 5 или 6 пин (L,R) мотор начинает крутить сразу после включения пульта. Думаю что идет запись в оба порта L и R сигнала 1,5мс при нейтральном положении. Нажимая рычаг в лево обороты двигателя возрастают. Перекидываю провод с пина 5 "L" на пин 6 "R" мотор крутится, но при нажатии рычага в право обороты двигателя снежаются. Следовотельно вывод: При нейтральном сигнале идет запись в оба порта L и R допустим от 0-128 при уменьшении сигнала в порт L записывается 0-255 а при увиличении в порт R записывается 255-0.
Мои знания иссякли. Просмотрел все проекты на форуме, совсем запутался. Но мысль такая что надо замерять от 100 до 200 тактов для обоих каналов а потом как то методом сравнения назначать на этот сигнал запись в порты...
Эдуард подскажи плиз как мне это органезовать... я иссяк, мой словарный запас программирования израсходован
зы: связь с компом используется только для просмотра приходящих данных.
хороший модем должен качать пиво!
Мой проект
Давай начнем с Н-моста.
Для плавной регулировки оборотов например влево нужно:
На вход А моста подать логический 0, а на вход В подавать ШИМ сигнал от 0 до 255.
Для плавной регулировки оборотов например вправо нужно:
На вход В моста подать логический 0, а на вход А подавать ШИМ сигнал от 0 до 255.
Для остановки двигателя нужно на входы А и В подать логический 0.
Теперь вопрос какие пределы регулировки нужны?
Правильно ли я понимаю что изменение сигнала с пульта 1,5мс до 2мс это у тебя должно вызывать измениение ШИМ от 0-255?
Последний раз редактировалось Chip; 20.10.2011 в 11:38.
Извини что не могу ответить развернуто , все никак не дают сосредоточится вникнуть, вечером все проверю
Да нет проблем. Спасибо что вообще нашел время.
хороший модем должен качать пиво!
Мой проект
Проверить мне не начем , так что пробуй и отпишись по результатам.
PHP код:
#include <TimerOne.h>
#define BTNPIN 2 // Вход сигнала
#define L 5 // Выход на H-Мост вращение в лево
#define R 6 // Выход на H-Мост вращение в право
volatile uint16_t lengthImpuls, timerCount;
void setup()
{
/* LOW — вызов прерывания всякий раз,
когда на порту низкий уровень напряжения;
CHANGE – прерывание вызывается при изменении
значения на входе;
RISING – вызов прерывания при изменении уровня
напряжения с низкого (LOW) на высокое(HIGH)
FALLING – вызов прерывания при изменении уровня
напряжения с высокого (HIGH) на низкое (LOW)*/
lengthImpuls=0;
pinMode (BTNPIN, INPUT);
pinMode (L, OUTPUT);
pinMode (R, OUTPUT);
analogWrite (L, 0);
analogWrite (R, 0);
Timer1.initialize(2);
Timer1.attachInterrupt(callback);
attachInterrupt(0, fireUp, RISING);
}
void callback() { timerCount++; }
void loop()
{
uint16_t li = lengthImpuls;
if (li > 499 && li < 1001)
{
if (li >= 750) {analogWrite (R, 255-(1000-li)); analogWrite (L, 0);}
if (li < 750) {analogWrite (L, 750-li); analogWrite (R, 0);}
lengthImpuls=0;
}
}
// Функция обработки прерывания на подъем
void fireUp()
{
timerCount=0;
detachInterrupt(0);
attachInterrupt(0, fireDown, FALLING);
}
// Функция обработки прерывания на падение
void fireDown()
{
lengthImpuls = timerCount;
detachInterrupt(0);
attachInterrupt(0, fireUp, RISING);
}
Последний раз редактировалось Chip; 20.10.2011 в 21:29.
При выключенном пульте начинает прирывисто крутить, включаю пульт останавливается. нажимаю в лево пин L начинает с высоких оборотов крутится, и к малым оборотам снижается. при нажатии в право на порт L тоже немного выдает (медленно крутится) пин 6 R совсем молчит.
Может укоротить импулс с 750 до 730 примерно, чтоб лишнего не захватывал? щас попробую с настройками поиграть.
Последний раз редактировалось XsanderS; 20.10.2011 в 20:15.
хороший модем должен качать пиво!
Мой проект
При выключенном пульте начинает прирывисто крутить, включаю пульт останавливается. нажимаю в лево пин L начинает с высоких оборотов крутится, и к малым оборотам снижается. при нажатии в право на порт L тоже немного выдает (медленно крутится) пин 6 R совсем молчит.
Может укоротить импулс с 750 до 730 примерно, чтоб лишнего не захватывал? щас попробую с настройками поиграть.
Вот с такими установками в комп риходит чистый сигнал и нет посылок в период когда положение в середине и при выключенном пульте.PHP код:
void loop()
{
if (lengthImpuls > 0)
{
uint16_t li = lengthImpuls;
lengthImpuls=0;
if (li > 100 && li < 150) // замер сигнала для вращения в лево
// analogWrite (L, 23 - li)
Serial.print (li,DEC);
if (li > 155 && li < 200) // замер сигнала для вращения в право
// analogWrite (R, 23 - li);
Serial.print (li,DEC);
}
}
Последний раз редактировалось XsanderS; 20.10.2011 в 20:36.
хороший модем должен качать пиво!
Мой проект
Последний раз редактировалось Chip; 20.10.2011 в 20:49.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)