roboforum.ru

Технический форум по робототехнике.

Bed Auto Leveling - не работает серва

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Bed Auto Leveling - не работает серва

Сообщение andy_111 » 30 авг 2014, 18:36

Всем привет! В наличии MendelMax, Sanguinololu 1.3 (1284p), прошивка Marlin - скачал самую последнюю. Решил сделать автовыравнивание оси Z. По инструкции выставил :
Код: Выделить всёРазвернуть
#define NUM_SERVOS 1
#define SERVO0_PIN 31
#define ENABLE_AUTO_BED_LEVELING
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles

В общем, все как полагается. Использую Arduino 0023. Серва запитана и включена в нужный сигнальный пин. Комплирую, заливаю прошивку. Даю в пронтерфейсе команду M280 P0 S90 - (повернуть серву 0 на какой-то угол) - реакции нет. Даю команду с другим углом - тоже никакой реакции. Подключаю осциллограф - сигнала нет.

Чтобы проверить серву, делаю тестовую программу, двигающую серву. Заливаю программу - серва двигается. Делаю вывод что все подключено правильно.

Начинаю разбираться с прошивкой. В файле marlin_main.cpp нахожу ветку, отвечающую за код M280. Убеждаюсь, что все нужные переменные определены и команда servos[servo_index].write(servo_position); должна выполняться. Для пробы делаю следующее - в месте, где дается команда на поворот вставляю свой код типа
Код: Выделить всёРазвернуть
Servo s;s.attach(31);s.write(180);s.detach();SERIAL_PROTOCOL("Test servo moving");
, компилирую и даю в пронтерфейсе команду M280 P0 S90. Текст "Test servo moving" выводится - это говорит о том, что ветка отрабатывает и мой тестовый код выполняется. Но серва не двигается.
В общем, вопрос понятен - куда смотреть? В комплекте прошивки marlin идут свои файлы servo.cpp/servo.h, они отличаются от аналогичных файлов для arduino 0023. Заменить прошивочные файлы ардуиновскими не получилось - ругается на что-то там. Куда смотреть, подскажите? В общем варианта 2 - либо мой порт 31 используется чем-то еще - но я пробовал несколько портов, результата нет. Либо тайминги для сервы выставлены неправильно в марлиновской прошивке. Серва TowerPro MicroServo SG90.
Printer : MendelMax 1.5, Prusa i3 Steel
Firmware : Marlin
Slicer: Slic3r
Filament : PLA 3 mm, PLA 1.75 mm
Nozzle : 0.35 mm
Electronics: RepRap Sanguinololu 1.3b
Языки: C++ (Borland Builder 6.0), VBA, VBScript, Arduino IDE, T-SQL
andy_111
 
Сообщения: 46
Зарегистрирован: 29 окт 2012, 14:12

Re: Bed Auto Leveling - не работает серва

Сообщение Andrew S » 30 авг 2014, 19:25

Советуют прошивать Arduino 1.0.5
Аватара пользователя
Andrew S
 
Сообщения: 431
Зарегистрирован: 20 янв 2014, 22:44
Откуда: 21RU
прог. языки: Assembler, Basic, Arduino IDE, PHP и др.
ФИО: Андрей С

Re: Bed Auto Leveling - не работает серва

Сообщение andy_111 » 30 авг 2014, 22:12

Ээээ, простите, а кто и где советует? Максимум что я видел - 1.0.1.

Добавлено спустя 2 минуты 2 секунды:
И каким 1.0.5? На официальном сайте после 1.0.4 идет 1.5 бета с кучей подверсий - все тоже бета. Но конечно же хотелось бы ознакомиться с источником рекомендации.

Добавлено спустя 1 минуту 33 секунды:
Нашел 1.0.5. Пробую, отпишусь.
Printer : MendelMax 1.5, Prusa i3 Steel
Firmware : Marlin
Slicer: Slic3r
Filament : PLA 3 mm, PLA 1.75 mm
Nozzle : 0.35 mm
Electronics: RepRap Sanguinololu 1.3b
Языки: C++ (Borland Builder 6.0), VBA, VBScript, Arduino IDE, T-SQL
andy_111
 
Сообщения: 46
Зарегистрирован: 29 окт 2012, 14:12

Re: Bed Auto Leveling - не работает серва

Сообщение Andrew S » 30 авг 2014, 22:41

Аватара пользователя
Andrew S
 
Сообщения: 431
Зарегистрирован: 20 янв 2014, 22:44
Откуда: 21RU
прог. языки: Assembler, Basic, Arduino IDE, PHP и др.
ФИО: Андрей С

Re: Bed Auto Leveling - не работает серва

Сообщение andy_111 » 31 авг 2014, 12:03

Скомпилировал в 1.0.5. То же самое. Что еще смотреть - ума не приложу.

Добавлено спустя 1 час 5 минут 18 секунд:
Причина найдена - видно голова моя шла крУгом после двух дней возни с прошивкой. В файле pins.h не в том месте выставил номер пина.
Printer : MendelMax 1.5, Prusa i3 Steel
Firmware : Marlin
Slicer: Slic3r
Filament : PLA 3 mm, PLA 1.75 mm
Nozzle : 0.35 mm
Electronics: RepRap Sanguinololu 1.3b
Языки: C++ (Borland Builder 6.0), VBA, VBScript, Arduino IDE, T-SQL
andy_111
 
Сообщения: 46
Зарегистрирован: 29 окт 2012, 14:12


Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 17