Автор Тема: Ардуино контроллер поворотки  (Прочитано 365231 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн R8MM Евгений

  • Ветеран
  • *****
  • Сообщений: 1027
  • Репутация: +125/-70
  • УКВ комитет Омского РО СРР.
  • QRA: mo75gb
Re: Ардуино контроллер поворотки
« Ответ #1215 : 28 Январь 2019, 10:41:53 »
Если поможет, пример кода:
https://robu.in/product/incremental-optical-rotary-encoder-6002400-pulse-600-ppr/

Arduino CodeArduino

//these pins can not be changed 2/3 are special pins
int encoderPin1 = 2;
int encoderPin2 = 3;
 
volatile int lastEncoded = 0;
volatile long encoderValue = 0;
 
long lastencoderValue = 0;
 
int lastMSB = 0;
int lastLSB = 0;
 
void setup() {
  Serial.begin (9600);
 
  pinMode(encoderPin1, INPUT);
  pinMode(encoderPin2, INPUT);
 
  digitalWrite(encoderPin1, HIGH); //turn pullup resistor on
  digitalWrite(encoderPin2, HIGH); //turn pullup resistor on
 
  //call updateEncoder() when any high/low changed seen
  //on interrupt 0 (pin 2), or interrupt 1 (pin 3)
  attachInterrupt(0, updateEncoder, CHANGE);
  attachInterrupt(1, updateEncoder, CHANGE);
 
}
 
void loop(){
  //Do stuff here
 
  Serial.println(encoderValue);
  delay(1000); //just here to slow down the output, and show it will work  even during a delay
}
 
 
void updateEncoder(){
  int MSB = digitalRead(encoderPin1); //MSB = most significant bit
  int LSB = digitalRead(encoderPin2); //LSB = least significant bit
 
  int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
  int sum  = (lastEncoded << 2) | encoded; //adding it to the previous encoded value
 
  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;
 
  lastEncoded = encoded; //store this value for next time
}
73! Евгений  team RT9M

Оффлайн R8MM Евгений

  • Ветеран
  • *****
  • Сообщений: 1027
  • Репутация: +125/-70
  • УКВ комитет Омского РО СРР.
  • QRA: mo75gb
Re: Ардуино контроллер поворотки
« Ответ #1216 : 28 Январь 2019, 10:50:28 »
Еще один интересный документ по аналогичным энкодерам
http://irtfweb.ifa.hawaii.edu/~tcs3/tcs3/0306_conceptual_design/Docs/05_Encoders/encoder_primer.pdf
73! Евгений  team RT9M

Оффлайн r3ez

  • Очный чемпионат
  • Постоялец
  • *****
  • Сообщений: 55
  • Репутация: +37/-1
Re: Ардуино контроллер поворотки
« Ответ #1217 : 28 Январь 2019, 20:51:01 »
Прошу ответить тех, кто использовал индикацию overlap.
Ситуация следующая. Имеется YAESU G-450A и две поворотки Emotator, которые хочу использовать для управления только по азимуту от встроенного потенциометра через интерфейс GS-232. Все вроде получается, но остается один вопрос. G-450A вращает стационарную RR-33, а Emotator для выезда в поле на УКВ. Крайнее левое положение  для G-450A соответствует азимуту порядка 110 градусов. Это "лечится" после калибровки командой \Ixxx. Для Emotator нужный азимут определяется только после подъема антенны на позиции и установка его тоже не вызывает проблем.  Если G-450A имеет собственный индикатор overlap, то  для него наличие индикации не очень актуально. Все равно GS-232 не имеет возможности напрямую передавать данные об overlap.  Отслеживанием этого момента может заниматься управляющая программа на компьютере, если умеет. Для Emotator же можно ввести такой индикатор.
А вот теперь самое интересное. При тестировании индикации overlap на контроллере для G-450A (пока на макете, чтобы не гонять зря ротатор)  обнаружилось, что индикатор начинает мигать всегда после перехода за 360 градусов. То есть задавая разные значения начального азимута командой \Ixxx индикатор начинает мигать при разных положениях потенциометра. Чем ближе это значение к 360 градусам, тем раньше включится индикация.  Можно ли это устранить?
Нужно, чтобы после калибровки по O и F и предустановки Az по \Ixxx  значения для индикации overlap оставались такими, какими они были бы при значениях Az=0 в точке CCW и Az=360 (450) в точке CW. Emotator имеет запас по overlap порядка 10 градусов.
     И еще заметил одну интересную вещь. Имеется два Arduino UNO. Скорее всего от разных продавцов. Один ардуино установлен в пульте управления Emotator, а другой просто используется на столе для отладки и макетирования. При подключении одним и тем же кабелем к ноутбуку в среде Arduino IDE 1.8.5 первый определяется как COM9, а второй как  COM4. Почему так, интересно бы узнать.

Оффлайн ua9olb Дима

  • Ветеран
  • *****
  • Сообщений: 1281
  • Репутация: +220/-37
  • Подпись находится в стадии разработки
  • QRA: NO15KI
Re: Ардуино контроллер поворотки
« Ответ #1218 : 28 Январь 2019, 21:11:11 »
ервый определяется как COM9, а второй как  COM4.

Скорее всего стоят разные микросхемы в преобразователе USB-UART
ex: ua9-145-1000

Оффлайн RX3DR Александр

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4997
  • Репутация: +504/-91
  • команда UF3D
  • QRA: KO85XM
Re: Ардуино контроллер поворотки
« Ответ #1219 : 28 Январь 2019, 21:54:25 »
А происходит и с другими ардуино ....  Я подключал одинаковые Меги и они давали разные СОМ при подключении в первый раз. Потом эти порты за ними закреплялись.
ex RX3DUR-UV3DUR

Оффлайн R4FCX ex ub4fbc

  • Постоялец
  • ***
  • Сообщений: 70
  • Репутация: +4/-3
  • QRA: LO13Md
Re: Ардуино контроллер поворотки
« Ответ #1220 : 29 Январь 2019, 20:37:02 »
Здравствуйте!
Помогите разобраться с со скетчем!!! Какой день подряд пытаюсь запустить часы на RTC DS1307... При проверке выдаёт ошибки:
Arduino: 1.6.7 (Windows 7), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\РЅРѕСѓС‚\Documents\Arduino\k3ng_rotator_controller-master1\k3ng_rotator_controller\k3ng_rotator_controller.ino: In function 'void output_debug()':

k3ng_rotator_controller:5416: error: 'clock_status_string' was not declared in this scope

C:\Users\РЅРѕСѓС‚\Documents\Arduino\k3ng_rotator_controller-master1\k3ng_rotator_controller\k3ng_rotator_controller.ino: In function 'void service_rtc()':

k3ng_rotator_controller:10989: error: 'clock_year_set' was not declared in this scope

k3ng_rotator_controller:10990: error: 'clock_month_set' was not declared in this scope

k3ng_rotator_controller:10991: error: 'clock_day_set' was not declared in this scope

k3ng_rotator_controller:10992: error: 'clock_hour_set' was not declared in this scope

k3ng_rotator_controller:10993: error: 'clock_min_set' was not declared in this scope

k3ng_rotator_controller:10994: error: 'clock_sec_set' was not declared in this scope

k3ng_rotator_controller:10995: error: 'millis_at_last_calibration' was not declared in this scope

k3ng_rotator_controller:10996: error: 'update_time' was not declared in this scope


Порядок потребен лишь глупцу, гений властвует над хаосом.
—  Альберт Эйнштейн

Оффлайн ua9olb Дима

  • Ветеран
  • *****
  • Сообщений: 1281
  • Репутация: +220/-37
  • Подпись находится в стадии разработки
  • QRA: NO15KI
Re: Ардуино контроллер поворотки
« Ответ #1221 : 30 Январь 2019, 20:51:14 »
Помогите разобраться с со скетчем!!!

У меня без ошибок компилируется в Arduino: 1.8.5 и 1.8.8 попробуйте.
ex: ua9-145-1000

Оффлайн R4FCX ex ub4fbc

  • Постоялец
  • ***
  • Сообщений: 70
  • Репутация: +4/-3
  • QRA: LO13Md
Re: Ардуино контроллер поворотки
« Ответ #1222 : 30 Январь 2019, 23:23:32 »
Дмитрий спасибо большое!!! Всё компилируется!!!  HB2U
PS: Все датчики подключил ( ADXL 345 & HMC5883L). Передача данных по 4-м проводам, с помощью P82B715P. cqshf
Порядок потребен лишь глупцу, гений властвует над хаосом.
—  Альберт Эйнштейн

Оффлайн r3ez

  • Очный чемпионат
  • Постоялец
  • *****
  • Сообщений: 55
  • Репутация: +37/-1
Re: Ардуино контроллер поворотки
« Ответ #1223 : 04 Февраль 2019, 11:50:57 »
Подскажите, можно ли регулировать задержку включения вращения после включения  тормоза? Сторока #define AZ_BRAKE_DELAY  работает только на выключение, а необходимо в обоих случаях, по принципу секвенсора. У меня сигналы включения двигателя и тормоза появляются одновременно.

Оффлайн linux-lvz

  • Пользователь
  • **
  • Сообщений: 39
  • Репутация: +0/-2
  • Подпись находится в стадии разработки
  • QRA: LO16bf
Re: Ардуино контроллер поворотки
« Ответ #1224 : 11 Февраль 2019, 20:51:57 »
Всем добрый вечер. Подскажите, а кто нибудь применял такие датчики вместо переменных резисторов https://ru.aliexpress.com/item/Full-Circle-No-Dead-Angle-12-Bit-Holzer-Angle-Sensor-0-360-Degree-0-5V-Output/32422949989.html?spm=a2g0v.10010108.1000014.24.4a1d2efc7WELcA&pvid=b3aa5816-c7f9-4912-8c41-1414bf28e36b&gps-id=pcDetailBottomMoreOtherSeller&scm=1007.13338.115306.0&scm-url=1007.13338.115306.0&scm_id=1007.13338.115306.0

Оффлайн ua9olb Дима

  • Ветеран
  • *****
  • Сообщений: 1281
  • Репутация: +220/-37
  • Подпись находится в стадии разработки
  • QRA: NO15KI
Re: Ардуино контроллер поворотки
« Ответ #1225 : 12 Февраль 2019, 07:16:46 »
вместо переменных резисторов

Такой то точно работать будет как обычный импульсный датчик.
ex: ua9-145-1000

Оффлайн ua4fkd Сергей

  • Ветеран
  • *****
  • Сообщений: 2811
  • Репутация: +231/-67
  • QRA: LO13HL
Re: Ардуино контроллер поворотки
« Ответ #1226 : 12 Февраль 2019, 08:27:52 »
как обычный импульсный датчик
скорее, как стабильный источник напряжения  0-360*  =  1-5в
https://disk.yandex.ru/d/tStqJhi7p4ubVg   досье на меня

https://www.instagram.com/ua4fkd  ЗАБЛОКИРОВАН НЕЗАКОННЫМИ ДЕЙСТВИЯМИ  США

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 640
  • Репутация: +194/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1227 : 12 Февраль 2019, 08:34:12 »
Я такой поставил в поворотку, но поворотка пока еще под столом ждет своего часа.
На выходе напряжение, причем верхняя граница зависит от напряжения питания.
Я ставил дополнительный стабилизатор для питания датчика.
Best regards and 73!
Gleb RM5P

Оффлайн ua9olb Дима

  • Ветеран
  • *****
  • Сообщений: 1281
  • Репутация: +220/-37
  • Подпись находится в стадии разработки
  • QRA: NO15KI
Re: Ардуино контроллер поворотки
« Ответ #1228 : 12 Февраль 2019, 08:55:46 »
как стабильный источник напряжения 

Точно ) не туда посмотрел(
ex: ua9-145-1000

Оффлайн ua4fkd Сергей

  • Ветеран
  • *****
  • Сообщений: 2811
  • Репутация: +231/-67
  • QRA: LO13HL
Re: Ардуино контроллер поворотки
« Ответ #1229 : 12 Февраль 2019, 09:19:00 »
На выходе напряжение, причем верхняя граница зависит от напряжения питания.
если там AS50xx  то должно быть всё стабильно от 0в до 5в по аналоговому выходу а в принципе можно и цифру задействовать , ua9olb Дима
знает как.

 
https://disk.yandex.ru/d/tStqJhi7p4ubVg   досье на меня

https://www.instagram.com/ua4fkd  ЗАБЛОКИРОВАН НЕЗАКОННЫМИ ДЕЙСТВИЯМИ  США