Ротор антенны MLA-30
Простой ротор антенны для MLA-30 или аналогичных небольших и легких антенн. Требуется всего несколько деталей, и их легко распечатать, желательно из PETG.
Крепить его можно разными способами: на штатив, с помощью настольного зажима или просто с помощью шурупов.
Над софтом еще бы немного поработать, но пока работает.
Шагового двигателя достаточно в версии на 5 В, он не требует большой мощности и может работать через USB.
Трубка просто крепится к 8-миллиметровым болтам с помощью небольшого количества ПВХ-ленты.
Механические части
5 резьбовых вставок M5
5 винтов M5, длиннее 20 мм, короче 50 мм.
2 резьбовых вставки M3
2 винта M3 длиной более 15 мм.
1 винт M8 длиной более 100 мм
2 шарикоподшипника 608zz
1 шарикоподшипник MR128ZZ
1 х круглая пластиковая трубка 12 мм
Электронные детали
1 x 28BYJ-48 Шаговый двигатель 5 Вольт
1 драйвер шагового двигателя (например, ULN2003)
1 х Ардуино
Программное обеспечение
Код Ардуино:
https://elektro.turanis.de/html/prj143/index.html и пример Arduino
#define PIN_IN1 9 // синий
#define PIN_IN2 8 // розовый
#define PIN_IN3 7 // желтый
#define PIN_IN4 6 // оранжевый
интервал входящего байта; // переменная для чтения входящих последовательных данных
беззнаковое целое число lowSpeed = 1600; // максимум: 16000
беззнаковое целое число highSpeed = 1000;
недействительная настройка()
{
Серийный.начало(9600);
pinMode (PIN_IN1, ВЫХОД);
pinMode (PIN_IN2, ВЫХОД);
pinMode (PIN_IN3, ВЫХОД);
pinMode (PIN_IN4, ВЫХОД);
}
недействительный цикл()
{
беззнаковый длинный n = миллис()/3000; // 3 секунды
если (Serial.available() > 0) {
// читаем самый старый байт в последовательном буфере:
incomingByte = Serial.read();
если (incomingByte == 'R') {
RotateRight (низкая скорость);
}
если (incomingByte == 'L') {
RotateLeft (низкая скорость);
}
если (incomingByte == 'S') {
стопМотор();
}
}еще{
стопМотор();
}
}
void RotateRight (беззнаковое целое число MotorSpeed)
{
setMotor(LOW, LOW, LOW, HIGH, MotorSpeed);
setMotor(LOW, LOW, HIGH, HIGH, MotorSpeed);
setMotor(LOW, LOW, HIGH, LOW, MotorSpeed);
setMotor(LOW, HIGH, HIGH, LOW, MotorSpeed);
setMotor(LOW, HIGH, LOW, LOW, MotorSpeed);
setMotor(ВЫСОКИЙ, ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ, скорость двигателя);
setMotor(ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ, НИЗКИЙ, скорость двигателя);
setMotor(ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ, ВЫСОКИЙ, скорость двигателя);
}
void RotateLeft (беззнаковое целое число MotorSpeed)
{
setMotor(ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ, НИЗКИЙ, скорость двигателя);
setMotor(ВЫСОКИЙ, ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ, скорость двигателя);
setMotor(LOW, HIGH, LOW, LOW, MotorSpeed);
setMotor(LOW, HIGH, HIGH, LOW, MotorSpeed);
setMotor(LOW, LOW, HIGH, LOW, MotorSpeed);
setMotor(LOW, LOW, HIGH, HIGH, MotorSpeed);
setMotor(LOW, LOW, LOW, HIGH, MotorSpeed);
setMotor(ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ, ВЫСОКИЙ, скорость двигателя);
}
недействительный стопМотор()
{
setMotor(НИЗКИЙ, НИЗКИЙ, НИЗКИЙ, НИЗКИЙ, 0);
}
void setMotor(байт in1, байт in2, байт in3, байт in4, беззнаковое целое число MotorSpeed)
{
digitalWrite(PIN_IN1, in1);
digitalWrite(PIN_IN2, in2);
digitalWrite (PIN_IN3, in3);
digitalWrite (PIN_IN4, in4);
задержкамикросекунды (скорость двигателя);
}
Код Python
#!/usr/bin/env python3
импортировать PySimpleGUI как sg
импортный серийный номер
импортировать систему
импортировать глобус
защита серийных_портов():
""" Перечисляет имена последовательных портов.
: поднимает EnvironmentError:
На неподдерживаемых или неизвестных платформах
: возвращает:
Список последовательных портов, доступных в системе.
https://stackoverflow.com/a/14224477
"""
��сли sys.platform.startswith('win'):
порты = ['COM%s' % (i + 1) для i в диапазоне (256)]
elif sys.platform.startswith('linux') или sys.platform.startswith('cygwin'):
# это исключает ваш текущий терминал "/dev/tty"
порты = glob.glob('/dev/tty[A-Za-z]*')
элиф sys.platform.startswith('дарвин'):
порты = glob.glob('/dev/cu.*')
еще:
поднять EnvironmentError («Неподдерживаемая платформа»)
результат = []
для порта в портах:
попробуйте:
s = серийный.Последовательный(порт)
с.закрыть()
result.append(порт)
кроме (OSError, Serial.SerialException):
пройти
вернуть результат





























