Большие и маленькие полезные приспособления.

Якщо бажаєш зробити щось добре, - зроби це сам!

Модератор: oberig

Аватар користувача
Сулейман
Rescue Ranger
Rescue Ranger
Сообщений: 8018
З нами з: 25 листопада 2012, 12:22
Звідки: 48°16'N 26°00'E
Дякував (ла): 169 разів
Подякували: 239 разів
Контактна інформація:

Re: Большие и маленькие полезные приспособления.

Повідомлення Сулейман » 27 травня 2019, 00:42

Делитель частоты инкрементального энкодера.

Понадобилось мне согласовать контроллер DVP20SX211 с частотником 45P5GSL
IMG_20190406_095222.jpg
Как оказалось производитель китай. Вышел прямо на производителя, но засада то, документации на него даже у самого производителя не оказалось )))
Мол модель старая (2013г.) , максимум чем могут помочь, это продать новый )))

Немного всеже пролили свет, скинув мануал от похожих частотников.

Дальнейшее изучение выявило отсутствие возможности командовать частотником по модбасу.

Но благо на разьеме есть выход энкодера обратной связи, с максимальной частотой на выходе 20кГц.

Контроллер DVP20SX211 такую частоту не способен считать.
Пришлось немного химичить.

Вышел такой вот делитель выхода энкодера по одному из каналов, в данном случае А.
IMG_20190526_225103.jpg
IMG_20190526_225052.jpg
Что на входе и выходе:

IMG_000.jpg
IMG_000.jpg (38.87 Кіб) Переглянуто 393 разів
Плата собрана на attiny13 , с написанием пары строк
.DSEG ; Сегмент ОЗУ
.CSEG
.org 0 ;Задание нулевого адреса старта программы
rjmp reset ;Безусловный переход к метке reset
.org 1
rjmp 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

sbi DDRB, 4
sbi PORTB, 1
ldi r16,3
out MCUCR,r16 ;
ldi r16,(1<<INT0);
out GIMSK, r16 ;
ldi r16,(1<<6)
out GIFR,r16
sei
main:




rjmp main
Prer:
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1

inc r16 ; Увеличить на 1 r16
cpi r16,10 ; Делитель времени
brlo Prer1

clr r16 ; Очистить r18

sbis PINB,4
rjmp Prer2
cbi PORTB,4 ; Очистить бит в i/o
rjmp Prer1
Prer2:
sbi PORTB,4 ; Установить бит i/o


Prer1:
reti
Дальше сигнал улетает в DVP20SX211 и уже от туда задается скорость частотника аналоговым уровнем.

Аватар користувача
TAZIT
Експерт
Сообщений: 7474
З нами з: 27 листопада 2012, 23:42
Звідки: CV.UA
Дякував (ла): 1886 разів
Подякували: 365 разів
Контактна інформація:

Re: Большие и маленькие полезные приспособления.

Повідомлення TAZIT » 28 травня 2019, 07:56

Сулейман писав:
27 травня 2019, 00:42
Делитель частоты инкрементального энкодера.
Понадобилось мне согласовать контроллер DVP20SX211 с частотником 45P5GSL
IMG_20190406_095222.jpg
Как оказалось производитель китай. Вышел прямо на производителя, но засада то, документации на него даже у самого производителя не оказалось )))
Мол модель старая (2013г.) , максимум чем могут помочь, это продать новый )))
Немного всеже пролили свет, скинув мануал от похожих частотников.
Дальнейшее изучение выявило отсутствие возможности командовать частотником по модбасу.
Но благо на разьеме есть выход энкодера обратной связи, с максимальной частотой на выходе 20кГц.
Контроллер DVP20SX211 такую частоту не способен считать.
Пришлось немного химичить.
Вышел такой вот делитель выхода энкодера по одному из каналов, в данном случае А.
IMG_20190526_225103.jpg
IMG_20190526_225052.jpg
Что на входе и выходе:
IMG_000.jpg
Плата собрана на attiny13 , с написанием пары строк
.DSEG ; Сегмент ОЗУ
.CSEG
.org 0 ;Задание нулевого адреса старта программы
rjmp reset ;Безусловный переход к метке reset
.org 1
rjmp 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

sbi DDRB, 4
sbi PORTB, 1
ldi r16,3
out MCUCR,r16 ;
ldi r16,(1<<INT0);
out GIMSK, r16 ;
ldi r16,(1<<6)
out GIFR,r16
sei
main:




rjmp main
Prer:
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1
sbis PINB,1
rjmp Prer1

inc r16 ; Увеличить на 1 r16
cpi r16,10 ; Делитель времени
brlo Prer1

clr r16 ; Очистить r18

sbis PINB,4
rjmp Prer2
cbi PORTB,4 ; Очистить бит в i/o
rjmp Prer1
Prer2:
sbi PORTB,4 ; Установить бит i/o


Prer1:
reti
Дальше сигнал улетает в DVP20SX211 и уже от туда задается скорость частотника аналоговым уровнем.

Для лучшей корректности лучше инвертировать выходной сигнал либо сделать счёт от фронта , а не по спаду ... .
Хотя я подозреваю что сам сигнал используется чисто для индикации , а не в петле регулирования ... и это может быть не столь важно ... .
================== Условия успеха : -- 10% -- знания ; -- 40% -- стратегия мышления ; -- 50% -- окружение . ================== Так багато людей заздрять державним корупціонерам ... що вже аж 40 з них хотять стати президентами цієї країни !!!

Аватар користувача
Сулейман
Rescue Ranger
Rescue Ranger
Сообщений: 8018
З нами з: 25 листопада 2012, 12:22
Звідки: 48°16'N 26°00'E
Дякував (ла): 169 разів
Подякували: 239 разів
Контактна інформація:

Re: Большие и маленькие полезные приспособления.

Повідомлення Сулейман » 28 травня 2019, 08:56

В схеме подтяжка к +5В, посему на спад.

Инвертировать для чего?

Сам сигнал для корректировки оборотов.

Аватар користувача
Rassel
Експерт
Сообщений: 7755
З нами з: 25 листопада 2012, 11:49
Дякував (ла): 137 разів
Подякували: 200 разів

Re: Большие и маленькие полезные приспособления.

Повідомлення Rassel » 22 червня 2019, 22:49

В жизни нет понятия совпадение, во всем есть причина

Hunter
Новачок
Сообщений: 28
З нами з: 23 березня 2018, 08:37
Дякував (ла): 1 раз
Подякували: 3 рази

Re: Большие и маленькие полезные приспособления.

Повідомлення Hunter » 06 липня 2019, 13:05

Скриншот 06-07-2019 130414.jpg

Відповісти

Повернутись до “Зроби сам”