Ви не увійшли.
Сторінки 1
check_sum_1 = (N^ID^CMD^data[0]^data[1]^...^data[N-8]) & 0xFE - (N XOR ID XOR CMD XOR data[0] XOR data[1] XOR ... XOR data[N-8]) И 0xFE
сheck_sum_2 = (~check_sum_1) & 0xFE - (~check_sum_1) И 0xFE
Я правильно понял, все через логическое XOR и в конце, через И ?
А він точно з керуванням по послідовному протоколу?
На сайті виробника по назві DM0900 знаходиться два серво:
DM0900 10.5KG Digital Metal Gear Servo
Digital Metal Gear Servo DM0900
Обидва з PWM-керуванням. У маркетологів PWM також вважається "digital"
Може в описі товару тупо переплутали, написавши про послідовну шину. Таке буває.
PWM так же пробовал, результа 0
MG996R - работает норм по ШИМ
https://youtube.com/shorts/umBPXf9SeYQ
Так, програма у вас видає Dynamixel Protocol 1.0.
Ще є Protocol 2.0. А на сторінці товару посилання на даташит для A1-16, де протокол схожий, але несумісний ні з Dynamixel 1.0, ні з 2.0. Кожен виробник модифікує протокол як хоче, аби було несумісно з продукцією конкурентів.
Протоколы все перепробовал, качал еще пару альтернативных программ
Так же, что нашел по примерам ардуино, все глухо.
Теоретично, якщо зі сторони серво відкритий колектор з підтяжкою
Нет подтяжки.
На плате сервопривода, два резистора 1кОм припаяны вместе, отводы распаяны на разные входы микросхемы.
9.6 МГц і фʼюз CKDIV8
9.6 , делитель снят, тоесть на полной скорости
Не та версія протокола?
Родной бы документ от него, или хотя бы рабочий проект, там бы возможно разобрался бы по командам
Документ, что прилагается не от него, от похожего
https://www.pololu.com/file/0J1212/A1-16_datasheet_20151229.pdf
// Attiny в ролі буфера з відкритим колектором - це сильно
Готового решения сразу не нашел )
Хотя ранее были https://arduino.ua/ru/prod3963-ttlusb-adapter-dlya-ypravleniya-servoprivodom-sovmestima-s-arduino
Ну и на соседних есть, как оказалось https://electroradiogroup.com.ua/ua/p2008450927-adapter-ttlusb-dlya.html
Покажіть cхему підключення
Прошивка переходника на Attiny13A
.DSEG ; Сегмент ОЗУ
.CSEG
.org 0 ;Задание нулевого адреса старта программы
rjmp reset ;Безусловный переход к метке reset
.org 1
reti ;Prer
.org 2
reti ;Pin Change Interrupt0
.org 3
reti ;timer0_ovf
.org 4
reti ;EEPROM write complete
.org 5
reti ;Analog Comparator Interrupt
.org 6
reti ;timerA;Timer_Counter0A; Compare Match A
.org 7
reti ;Timer_Counter0B; Compare Match B
.org 8
reti ;Watchdog Timeout
.org 9
reti ;conversion;ADC Conversion Complete Handle
reset:
wdr; Reset Watchdog Timer
;ldi r16,24
;out WDTCR, r16;
;ldi r16,12
;out WDTCR, r16;
LDI ZL,Low(SRAM_START) ; Адрес начала ОЗУ в индекс
LDI ZH,High(SRAM_START)
CLR R16 ; Очищаем R16
Flush: ST Z+,R16 ; Сохраняем 0 в ячейку памяти
CPI ZH,High(RAMEND+1) ; Достигли конца оперативки?
BRNE Flush ; Нет? Крутимся дальше!
CPI ZL,Low(RAMEND+1) ; А младший байт достиг конца?
BRNE Flush
CLR ZL ; Очищаем индекс
CLR ZH
LDI ZL, 30 ; Адрес самого старшего регистра
CLR ZH ; А тут у нас будет ноль
DEC ZL ; Уменьшая адрес
ST Z, ZH ; Записываем в регистр 0
BRNE PC-2 ; Пока не перебрали все не успокоились
ldi r16, RAMEND ;Загрузка в регистр r16 адреса верхней границы ОЗУ
out SPL, r16
cbi DDRB, 0
cbi PORTB, 0
cbi DDRB, 1
cbi PORTB, 1
cbi DDRB, 2
cbi PORTB, 2
cbi DDRB, 3
cbi PORTB, 3
cbi DDRB, 4
sbi PORTB, 4
ldi r16,0
main:
sbic PINB,1 ;пропустить если бит в регистре очищен
rjmp t_in_test
sbi DDRB, 0 ; установить
cbi DDRB, 2 ;out очистить
cbr r16, 1 ; очистить бит 0 в r16
rjmp main
t_in_test:
sbrc r16, 0 ; Пропустить если бит 0 в r16 очищен
rjmp rxrid
cbi DDRB, 0 ; очистить
sbr r16, 1 ; Установить бит 0 в r16
nop
nop
nop
nop
rjmp main
rxrid:
sbic PINB,0 ;пропустить если бит в регистре очищен
rjmp rx_test
sbi DDRB, 2 ; установить
cbr r16, 2 ; очистить бит 1 в r16
rjmp main
rx_test:
sbrc r16, 1 ; Пропустить если бит 1 в r16 очищен
rjmp main
cbi DDRB, 2 ; очистить
sbr r16, 2 ; Установить бит 1 в r16
nop
nop
nop
nop
rjmp main
Аналог схемы
https://arduino.ua/files/1_USB-TTL_sch.pdf
Режим сканера, на разных скоростях
https://www.youtube.com/watch?v=S0tb3jnfdw4&t=1s тут прекрасно все описано если непонятно и не заработает отпешитесь
На видео сервопривод управляется по ШИМ, а этот по TTL
Приветствую.
Неделю не могу подружить сервопривод с компом.
Уже и ардуино пробовал, ни как.
Хотя на видео красиво работает
https://youtu.be/_syxCwIINN8?si=Rms5gVFGZDeGqiBT
Есть у кого готовое решение, или хоть наработки ?
Сторінки 1