Современное состояние робототехники. Может ли робот полностью заменить человека. Аналогия органов чувств робота и человека?
Ро́бот (чеш. robot, от robota — «подневольный труд») — автоматическое устройство, предназначенное для осуществления различного рода механических операций, которое действует по заранее заложенной программе
R.U.R. (сокращение от чеш. Rossumovi univerzální roboti, «Россумские универсальные роботы») — научно-фантастическаяпьеса, написанная Карелом Чапеком в 1920 году. Премьерный показ пьесы состоялся в 25 января 1921 году в Праге.
• Хронология
• Типы роботов
• Промышленные роботы
• Медицинские роботы
• Бытовые роботы
• Роботы для обеспечения безопасности
• Боевые роботы
• Технологии
• Система передвижения
• Система распознавания образов
• Двигатели
• Искусственный интеллект (AI)
• Навигация
Контрольные вопросы
17. Что такое робот?
18. Главное отличие робота от человека?
19. Состояние современной робототехники?
20. Аналогия органов чувств человека и робота?
31.08.2018
Система управления роботом. Полная функция управления. Схемы управления
Управление – процесс постановки цели, определение способа её достижения (концепции) и практическая реализация концепции управления для достижения избранной цели. Управление – правильная воля. Власть – реализованная на практике способность к управлению.
• субъект управления (тот, кто управляет):
• объект управления (то, чем управляют);
• прямые связи (от субъекта к объекту);
• обратные связи (от объекта к субъекту)
• внешняя среда (совокупность всех внешних факторов, оказывающих воздействие на процесс управления).
Манипуляция – движение рук при выполнении какой-либо работы.
Локомо́ция (фр. locomotion «передвижение» от лат. locō mōtiō «движение с места») — перемещение животных (в том числе человека) в пространстве (в водной среде, воздушной среде, по твёрдой поверхности, в плотной среде), обусловленное их активными действиями. Локомоция играет важную роль в жизни животных: в отличие от большинства растений, они могут передвигаться для поиска пищи или для спасения от хищников
Контрольные вопросы
1. системы управления роботом
2. полная функция управления
3. схема управления
4. манипуляция
5. локомация
07.09.2018
14.09.2018
Обзор рынка основных средств осуществления обратной связи при управлении роботом. Датчики измерения электрических параметров. Датчики измерения физических параметров.
Датчик тока
Датчик тока трансформаторный до 100А (SCT013)
28.09.2018
Аналого-цифровое преобразование. Основное предназначение и практическое применение при проектировании робота. Считывание импульсов.
Аналого-цифровой преобразователь (АЦП, англ. Analog-to-digital converter, ADC) — устройство, преобразующее входной аналоговый сигнал в дискретный код (цифровой сигнал)
· Диапазон входных значений = от 0 до 10 вольт
· Разрядность двоичного АЦП 12 бит: 212 = 4096 уровней квантования
· Разрешение двоичного АЦП по напряжению: (10-0)/4096 = 0,00244 вольт = 2,44 мВ
Архитектура АЦП прямого преобразования
Device = 16 F 873 A
Xtal = 4
'--------------------------Настройки АЦП--------------------------
Declare Adin _ Res 10 'Разрядность результата преобразования АЦП
Declare Adin _ Tad FRC 'Источник тактирования АЦП
Declare Adin _ Stime 50
'--------------Настройки подключения ЖКИ--------------------------
Declare LCD _ Type ALPHA 'Тип ЖКИ - буквенно -цифровой
Declare LCD_DTPin PORTB.4 'Порт данных ЖКИ
Declare LCD_ENPin PORTB.3 'Управление линией E
Declare LCD_RSPin PORTB.2 'правление линией RS
Declare LCD_Interface 4 'Разрядность шины данных
Declare LCD _ CommandUs 2000 'Задержка перед посылкой команды
Declare LCD _ DataUs 50 'Задержка перед посылкой данных
Declare LCD _ Lines 2 'Количество строк ЖКИ
'--------------------------Настройки портов--------------------------
Declare PortB _ Pullups = OFF ' Выключить подтягивающие резисторы на PORTB
Declare All _ Digital = OFF 'Каждый порт выполняет свою функцию по умолчанию
TRISA = %00000001 ' Сделать канал (вывод) AN 0 ( PORTA .0) входом
ADCON1 = %10000000 ' Установить все выводы PORTA в режим АЦП
'--------------------------Объявления переменных---------------------
Dim VAR1 As Word ' Объявить переменную VAR 1 размером WORD
'--------------------------Главная программа--------------------------
Again:
VAR1 = ADIn 0 ' Произвести АЦП в 0-ем канале и результат записать в переменную VAR 1
Print At 1, 1, "VAR1= " , Dec 4 VAR1 ' Вывести в первой строке ЖКИ десятичное значение VAR 1
Print At 2, 1, "VAR1= " , Bin 10 VAR1 ' Вывести во второй строке ЖКИ двоичное значение VAR 1
GoTo Again ' Вновь осуществить операцию АЦП
Применение АЦП при проектировании зарядного блока для электромобиля
Device = 18 F 2550 'для зарядных блоков мобильного типа, первая печатная плата с али эксперсс
Xtal = 16 '
Config_Start
PLLDIV = 5 ' Divide by 5 (20 MHz oscillator input)
CPUDIV = OSC4_PLL6 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
USBDIV = 2 ' USB clock source comes from the 96 MHz PLL divided by 2
FOSC = HSPLL_HS ' HS oscillator, PLL enabled, HS used by USB
FCMEN = OFF ' Fail-Safe Clock Monitor disabled
IESO = OFF ' Oscillator Switchover mode disabled
PWRT = On ' PWRT disabled
BOR = On ' Brown-out Reset enabled in hardware only (SBOREN is disabled)
BORV = 2 ' 0 - 4.5, 1 - 4.2 v , 2- 2.7 volt , 3 - 2 v , попробовать 25-2,5 v
VREGEN = On ' USB voltage regulator enabled
WDT = OFF ' HW Disabled - SW Controlled
WDTPS = 32768 ' 1:32768
MCLRE = On ' MCLR pin enabled; RE3 input pin disabled
LPT1OSC = OFF ' Timer1 configured for higher power operation
PBADEN = OFF ' PORTB<4:0> pins are configured as digital I/O on Reset
CCP2MX = On ' CCP2 input/output is multiplexed with RC1
STVREN = On ' Stack full/underflow will cause Reset
LVP = OFF ' Single-Supply ICSP disabled
''''''''''' ICPRT = OFF ' ICPORT disabled
XINST = OFF ' Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
Debug = OFF ' Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
Cp0 = On ' Block 0 (000800-001FFFh) not code-protected
CP1 = On ' Block 1 (002000-003FFFh) not code-protected
CP2 = On ' Block 2 (004000-005FFFh) not code-protected
CP3 = On ' Block 3 (006000-007FFFh) not code-protected
CPB = On ' Boot block (000000-0007FFh) code-protected 'On
CPD = On ' Data EEPROM not code - protected Включить защиту EEPROM памяти данных от несанкционированного считывания
WRT0 = OFF ' Block 0 (000800-001FFFh) not write-protected
WRT1 = OFF ' Block 1 (002000-003FFFh) not write-protected
WRT2 = OFF ' Block 2 (004000-005FFFh) not write-protected
WRT3 = OFF ' Block 3 (006000-007FFFh) not write-protected
WRTB = OFF ' Boot block (000000-0007FFh) not write-protected
WRTC = OFF ' Configuration registers (300000-3000FFh) not write-protected
WRTD = OFF ' Data EEPROM not write-protected
EBTR0 = OFF ' Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
EBTR1 = OFF ' Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
EBTR2 = OFF ' Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
EBTR3 = OFF ' Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
EBTRB = OFF ' Boot block (000000-0007FFh) not protected from table reads executed in other blocks
Config_End
Declare PROTON_START_ADDRESS = $1000
PortB _ Pullups = off ' Выключить подтягивающие резисторы на PORTB
Declare All _ Digital = off ' Каждый порт выполняет свою функцию по умолчанию
' настройка АЦП
Declare Adin _ Res 10 'Разрядность результата преобразования АЦП
Declare Adin _ Tad FRC 'Источник тактирования АЦП
Declare Adin _ Stime 50 ' может быть от 50 до 100 максимум(чтобы работал без ошибок)
TRISA.0=1 ' ацп считывание перепада напряж на пилоте
TRISA.2=0 ' резерв
TRISA.3=0 ' резерв
TRISA.4=0 ' резерв
TRISA.5=0 ' резерв
TRISC.0=0 ' резерв
TRISC.1=0 ' вых на тест датчика утеч тока, отправляет на кольцо шим
TRISC.2=0 ' вых ШИМ для пилота
TRISC.6=0 'резерв
TRISC.7=0 'резерв
TRISB.0=1 ' вх датчика утеч тока
TRISB.1=0 ' резерв
TRISB.2=1 ' резерв
TRISB.3=0 ' резерв
TRISB.4=0 ' резерв
TRISB.5=0 ' резерв
TRISB.6=0 ' резерв
TRISB.7=0 ' резерв
CMCON=%00000111
CCP1CON.0=0: CCP1CON.1=0: CCP1CON.2=0: CCP1CON.3=0: PORTC.2=1
ADCON1 = %00001110
ADCON0 = %00000001 ' Make PORTA.0 analogue
ADCON2 = %10000011
Dim ADC_Result As Word 'конечный результат измерения напряжения на Pilot
Dim ADC_Total As Dword
Dim ADC_Loops As Word
Dim Temp As Byte
Dim pwm_val As Byte ' скважность ШИМ
Dim adr As Byte ' адрес памяти где храниться значение скважности ШИМ
Dim cnt As Byte
Dim t1 As Byte
Dim i As Byte
Symbol test_gfci = PORTB.0
Symbol relay = PORTA.5 ' силовые реле
Symbol btn = PORTB.2 ' кнопка программирования уровня тока зарядки
Dim flag_btn As Bit
Symbol red = PORTA.4
Symbol green = PORTA.3
Symbol blue = PORTA.2
Dim blink As Byte ' светодиод
Dim cnt1 As Byte ' счетчик светодиода
ADC_Loops = 140
relay=0 'выключаем выход на реле
flag_btn = 0
t1 = 0
cnt = 0
adr = 1
red=0
green=0
blue=0
cnt1=0
' test _ cnt =0
i=0
'начало гл прогр
main:
GoSub ADC_Average ' Для увеличения точности выполняем усреднение
If ADC_Result<900 And ADC_Result>800 Then CCP1CON.0=1: CCP1CON.1=1: CCP1CON.2=1: CCP1CON.3=1:HPWM 1, 66, 1000: DelayMS 10: GoTo hpwm_sub '10 ампер - это 44 , 12А-51 '939 '746 841 631 6
If ADC_Result<800 And ADC_Result>700 Then CCP1CON.0=1: CCP1CON.1=1: CCP1CON.2=1: CCP1CON.3=1:HPWM 1, 66, 1000: DelayMS 10: GoTo hpwm_sub
If ADC_Result>1000 Then GoTo fault
If ADC_Result<700 Then GoTo fault
CCP1CON.0=0: CCP1CON.1=0: CCP1CON.2=0: CCP1CON.3=0: PORTC.2=1 :relay=0
GoTo main
hpwm_sub:
GoSub ADC_Average ' Для увеличения точности выполняем усреднение
If ADC_Result<800 And ADC_Result>700 Then relay=1: DelayMS 5: GoTo hpwm_sub_1
If ADC_Result>900 Then GoTo main
If ADC_Result>1000 Then GoTo fault
If ADC_Result<700 Then GoTo fault
DelayMS 5 '50
GoTo hpwm_sub
hpwm_sub_1:
GoSub ADC_Average ' Для увеличения точности выполняем усреднение
If ADC_Result>800 And ADC_Result<900 Then relay=0: DelayMS 5: GoTo hpwm_sub
If ADC_Result>900 Then GoTo main
If ADC_Result>1000 Then GoTo fault
If ADC_Result<700 Then GoTo fault
GoTo hpwm_sub_1
'из fault никто не выйдет пока не перегрузят контроллер или диапазон не нормализуется
'причиной входа в faul может быть превышение диапазона напряжений на пилоте - больше 1000 или меньше 700
fault:
GoSub ADC_Average ' Для увеличения точности выполняем усреднение
If ADC_Result>700 And ADC_Result<1000 Then GoTo main
CCP1CON.0=0: CCP1CON.1=0: CCP1CON.2=0: CCP1CON.3=0: PORTC.2=1
CCP2CON.0=0: CCP2CON.1=0: CCP2CON.2=0: CCP2CON.3=0: PORTC.1=0
DelayMS 100
GoTo fault
'***********************************************************
ADC_Average: ' Выполним усреднение для увеличения точности
ADC_Total = 0 ' Очистим суммирующий регистр
' Зациклим на выполнении усреднения определенное количество раз
For Temp = 1 To ADC_Loops
ADC_Result = ADIn 0 ' Получим новое значение
ADC_Total = ADC_Total + ADC_Result ' Складываем в суммирующий регистр
DelayMS 2 ' Время на разряд внутреннего конденсатора
Next
' Определим среднее значение полученной величины
ADC_Result = ADC_Total / ADC_Loops
'DelayMS 100
Return
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
05.10.2018
Else
x=2
CCP2_Pin = PORTC.1
CCP1CON=%00000000
EndIf
If PORTB.2=0 Then ' проверка кнопки стоп
pwm_out=0
CCP1CON=%00000000
CCP2CON=%00000000
PORTC.1=0
PORTC.2=0
GoTo main
EndIf
If PORTB.0=0 And PORTB.1=1 Then ' проверка кнопки больше и меньше
pwm_out = pwm_out + 1
If pwm_out>254 Then
pwm_out=254
EndIf
EndIf
If PORTB.1=0 And PORTB.0=1 And pwm_out>1 Then ' проверка кнопки больше и меньше
pwm_out=pwm_out-1
If pwm_out<2 Then
pwm_out=1
EndIf
EndIf
' установка скорости привода
HPWM x,pwm_out,1000
DelayMS 20
GoTo main
19.10.2018
Пример
Листинг программы on_interrupt1.bas
' Светодиод подключенный к PORTB.0 будет мигать c большей частотой, чем светодиод, подключенный к PORTB.1
Device 16F876A ' Произвести программный код для микроконтроллера 16F876A
Xtal 4 ' Установить частоту кварцевого генератора равной 4 МГц
On_Interrupt Goto Flash ' Включить обработку аппаратных прерываний и при их возникновении перейти к метке ‘ Flash:
'-------------------------------- Назначение псевдонимов для обработки прерываний--------------------------------
Symbol LED PORTB.1 ' LED - символ cветодиода подключенного к PORTB.1
Symbol TOIE INTCON.5 ' TOIE - cимвол бита разрешение прерывания по переполнению таймера TMRO
Symbol TOIF INTCON.2 ' TOIF - cимвол флага прерывания по переполнению таймера TMRO
Symbol GIE INTCON.7 ' GIE - cимвол бита глобального разрешения прерываний
Symbol PSO OPTION_REG.0 ' PSO - символ bit-0 коэффициента предделителя
Symbol PS1 OPTION_REG.1 ' PS1 - символ bit-1 коэффициента предделителя
Symbol PS2 OPTION_REG.2 ' PS2 - символ bit-2 коэффициента предделителя
Symbol PSA OPTION_REG.3 ' PSA - Символ бита подключения предварительного делителя
' (PSA = 1 - предделитель включен на входе сторожевого таймера WDT)
' (PSA = 0 - предделитель включен на входе таймера TMR0)
Symbol TOCS OPTION_REG.5 ' TOCS - cимвол бита выбора источника тактового сигнала для TMR0
' (TOCS = 0 - содержимое таймера инкрементируется от импульсов
' кварцевого (внутреннего) тактового генератора с частотой Fкв.ген/4)
' (TOCS = 1 - содержимое таймера инкрементируется от внешних импульсов
' на входе PORTA.4 RA4/TOСKI)
GoTo Over_interrupt ' Перешагнуть через подпрограмму прерывания и перейти к метке
' Over_interrupt:
'---------------------------------------- Подпрограмма обработки прерываний ----------------------------------------
Flash: ' Метка начала подпрограммы обработки прерываний
PORTB = PORTB ^ 1 ' При возникновении прерывания от таймера выполнить операцию
' ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым регистра порта PORTB и значением 1
' поразрядно над каждым битом регистра порта PORTB, а результат
' записать в регистр порта PORTB. В результате, если до прерывания
' логическая единица была на выходе PORTB.0, то после прерывания она
' будет на выходе PORTB.1 и наоборот.
TOIF = 0 ' Cбросить флаг прерываний TOIF регистра TMRO
Context Restore ' Восстановить регистры и выйти из обработки прерываний
Over_interrupt: ' Метка Over_interrupt
TRISB = %00000000 ' Cконфигурировать выводы PORTB как выходы
PORTB = 0 ' Очистить регистр порта PORTB
'----------------------------------------------- Инициирование прерываний ----------------------------------------------
GIE = 0 ' Запретить все прерывания
PSA = 0 ' Включить предварительный делитель на входе таймера TMR0
PSO = 1: PS1 = 1: PS2 = 1
' Установить коэффициент деления для предделителя на входе таймера
' TMR0 равным 256
TOCS = 0
' Разрешить инкрементирование таймера TMR0 от импульсов с внутренней
' тактовой частотой, равной частоте кварц. генератора, деленной на 4.
TMR0 = 0 ' Очистить таймер TMRO
TOIE = 1 ' Разрешить прерывания по переполнению таймера TMRO
GIE = 1 ' Разрешить все немаскированные прерывания
'-------------------------------------------------- Основная программа --------------------------------------------------
main: ' Метка начала основной программы
Low LED ' Погасить светодиод подлюченный к PORTB.1
DelayMS 500 ' Пауза 0,5 сек
High LED ' Включить светодиод подлюченный к PORTB.1
DelayMS 500 ' Пауза 0,5 сек
GoTo main ' Повторить основную программу
End ' Конец программы
Применение аппаратного прерывания на плате Arduino nano при проектировании системы управления подъемником «Барс»
Пример на С
26.10.2018
02.11.2018
Современное состояние робототехники. Может ли робот полностью заменить человека. Аналогия органов чувств робота и человека?
Ро́бот (чеш. robot, от robota — «подневольный труд») — автоматическое устройство, предназначенное для осуществления различного рода механических операций, которое действует по заранее заложенной программе
R.U.R. (сокращение от чеш. Rossumovi univerzální roboti, «Россумские универсальные роботы») — научно-фантастическаяпьеса, написанная Карелом Чапеком в 1920 году. Премьерный показ пьесы состоялся в 25 января 1921 году в Праге.
• Хронология
• Типы роботов
• Промышленные роботы
• Медицинские роботы
• Бытовые роботы
• Роботы для обеспечения безопасности
• Боевые роботы
• Технологии
• Система передвижения
• Система распознавания образов
• Двигатели
• Искусственный интеллект (AI)
• Навигация
Контрольные вопросы
17. Что такое робот?
18. Главное отличие робота от человека?
19. Состояние современной робототехники?
20. Аналогия органов чувств человека и робота?
31.08.2018
Дата: 2019-02-02, просмотров: 279.