Для того, чтобы сделать робота вам не нужны Arduino, PIC или другие микроконтроллеры, поскольку свой проект вы можете подсоединить к USB-порту компьютера или ноутбука через адаптер «USB-последовательный порт». Можно и напрямую, если компьютер оснащен последовательным портом. Это позволит управлять шасси непосредственно с ноутбука, не используя дополнительных плат вроде Arduino.

Адаптер можно приобрести за небольшие деньги, поэтому он может стать хорошей альтернативой платам с микроконтроллерами.
Что потребуется:
- Адаптер последовательного порта
- Драйвер двигателя (TA7291P или подобный)
- Один или два коллекторных двигателя (в этом проекте используются 3-вольтовые движки)
- Два резистора 1 КОм
- Ноутбук. Не знаете какой выбрать ноутбук? В данном случае подойдет самый обычный, лишь бы был хотя бы один порт USB.
Если у вас не 5-вольтовый двигатель, то также понадобится либо резистор 5 Ом 2 Вт, либо 100 или 50-омные резисторы 0,25 Вт.
Шаг 1: разбираемся с разъемом последовательного порта
Стандартный разъем порта RS-232 имеет 9 выводов, но нам нужны только три. В общем случае последовательный порт посылает 5-вольтовые сигналы, сообщающие о готовности передачи сообщения, и эти самые сообщения. Вместо отправки сообщений мы просто воспользуемся 5-вольтовым логическим уровнем. Вывод передачи данных TD можно использовать, но это потребует микросхемы-декодера (например, регистра сдвига) или транзистора для усиления слабого тока. При этом логическим нулем будет высокий уровень напряжения, а логической единицей – низкий.

Если не использовать TD (вывод передачи данных), то, в принципе, нам потребуются выводы DTR, RTS и GND (земля).
Шаг 2: схема
Теперь нам нужно «обвязать» драйвер двигателя. Если у вас 3-вольтовые двигатели, то есть одна проблема – TA7291P для работы нужно 4.5 В. Можно взять другие двигатели или задействовать резистор для ограничения тока. Резистор должен быть номиналом от 2 до 5 В и мощностью 2 Вт. Можно также соединить параллельно резисторы 0,25 Вт (20 резисторов 100 Ом или 10 резисторов 50 Ом). В итоге всё нужно соединить так, как показано на схеме (первая для двух двигателей, вторая для одного).


Шаг 3: базовая (проверочная) программа
Теперь осталось написать только программу. В данном случае используется Python, но ее можно написать на любом удобном для вас языке. Проследите за тем, чтобы название порта совпадало с используемым портом (в данном случае COM6).
import time
import serial
###инициализация последовательного порта
#для windows (измените COM6 на ваш вариант)
#ser = serial.Serial("COM6", 2400)
#для linux (измените /dev/ttyUSB0 на ваш вариант)
ser = serial.Serial("/dev/ttyUSB0", 2400)
ser.open() #открываем соединение
#пока RTS и DTR сбрасываем
ser.setRTS(False)
ser.setDTR(False)
print("initialization finished")
###основной цикл
c = 1
while c:
ser.setRTS(False)
ser.setDTR(True)
time.sleep(2)
ser.setRTS(True)
ser.setDTR(False)
time.sleep(2)
Шаг 4: простая программа
Если к одному мосту вы подключили два двигателя, то с помощью приведенной ниже программы вы сможете вращать их в определенном направлении.
import time
import serial
###инициализация последовательного порта
#для windows (измените COM6 на ваш вариант)
#ser = serial.Serial("COM6", 2400)
#для linux (измените /dev/ttyUSB0 на ваш вариант)
ser = serial.Serial("/dev/ttyUSB0", 2400)
ser.open() #открываем соединение
#пока RTS и DTR сбрасываем
ser.setRTS(False)
ser.setDTR(False)
print("initialization finished")
### функция для вращения вперед (для одного моста с двумя моторами)
def move_forward(times):
while times > 0:
ser.setRTS(True)
ser.setDTR(False)
time.sleep(0.2)
ser.setRTS(False)
ser.setDTR(True)
time.sleep(0.2)
times -= 1
###основной цикл
c = 1
while c:
move_forward(6)
time.sleep(2)
© digitrode.ru