Столкнулся с трудноcтями при управлении сервой, серва futaba s3003. В даташите на нее http://www.servocity.com/html/s3003_servo_standard.html (ну эт очень громко - даташит) указаны длительности импульса от 1520 до 1900 На практике оказалось около 100 - 700, эта неточность порождает проблему: не могу выставить длительность импульса для среднего положения - робот уходит в сторону. Есть там еще строчка угол 45 град. - 400 мкс, но эт не совсем середина.
Мож из-за того, что я тактовый генератор внутренний использую, а он не есть точный?
Добавлено спустя 6 минут 3 секунды: 2-= Александр =-
В принципе такого робота можно сделать только на TL494 и паре операционников. Обратную связь от двух фото-транзисторов заводим на + и - операционника, а его втыкаем в TL494. Получается что если у нас робот съехал в одну сторону - 494 снижает скважность ШИМа и серва крутит в одну сторону. Если наоборот - то в другую! Ну, там коэф. усиления подстроить чтоб не олтало его сильно и все дела! А главное питание там от 5 до 15 спокойно, никакого программирования и все просто как топор!
Сей способ точно соотвествует моему принципу: более простое - более надежное. ))) Тем более микрушка сия есть в наличии и рассыпуха для нее.
Токо мне легче в цифре разобраться, чем в аналоге. ((( Эт как запасной-паралельный вариант оставлю.
Новая проблема: Скорость маршевого двигателя очень большая. ((( Обрезал ШИМом до четырех вольт - всеравно очень быстро. Обрезал до трех - не стартует. Кратковременно до 4 вольт для старта, а потом до трех - поехал, но, понятно, всеравно очень быстро. ((( Движков в гамазине меньше 14000 обротов 3-6 вольт нету. ((( Надо редуктор переделывать, добавлять еще одну шестерню. ((( А там такая конструкция.... каждая деталь продумана, грех переделывать. (((
Вопрос! Ктонить развлекался перемоткой движков. И вообще, имеет ли это смысл?
Проще наверно купить движок с редуктором от стеклоподъемника или дворников жигулей. Стоит копейки, а скорость и крутящий момент - самое то.
Размер большой. Хотя я кадато с ураловских подъемников движки видел (вроде японские) дык те маленького размера.
Нашел Тамиевский планетарный редутор. Передаточное число от 1 к 5 до 1 к 100. Двигатель правда маломощный, но, думаю, при 1 к 25 тяги хватит. Правда выходной вал очень толстый, шестерня не налазит... придеться на станке стачивать. Но эт мелочи. )))
Переделал редуктор. На валу и шестерене нарезал резьбу - пулучилось достаточно надежно. Так как планетарка+двигун более длинные чем родимый двигун, пришлось заменить серву на другую с таким же тяговым усилием, но меньшего размера.
Пришла мысль, где взять импульсный понижающий ДЦ-ДЦ преобразователь: автозарядка для мобилки вход до 24 вольт, выход -5,5 вольта, что доктор прописал.
Дабы понизить напряжение до 5,6 МК и серву подключил на первое время через диоды. Четыре глаза TCRT5000 через компаратор к МК.
Так и не решил проблемму большого радиуса разворота. Как минимум три корпуса. Тоесть линию пришлось рисовать с плавными поворотами. Отличное ездит по часовой и съежает када против . Спасает то, что нормально линию находит.
Счас бъюсь над усовершенствонием проги и поиском оптимальных углов датчиков.
Код на БАСКОМАВР, критика приветствуется, так как чувствую - шото не то нахомутал... '----------------------------------------------------------------------------------------- 'name : not_good_follow.bas 'copyright : (c) Overlocker 'purpose : test file for M16 support 'micro : Mega16 'suited for demo : yes '-----------------------------------------------------------------------------------------
$regfile = "m16def.dat" ' Подключаем спецификацию $crystal = 1000000 ' Частота кристала $baud = 19200 $hwstack = 32 ' Стек аппаратный $swstack = 10 ' Стек программный $framesize = 40 ' default use 40 for the frame space
Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up ' Включаем ШИМ Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Pind.4 = Output 'PD6 - выход, маршевый двигатель Config Pind.5 = Output 'PD6 - выход, маршевый двигатель
Config Pinc.4 = Output 'PB4 - выход, серва
Config Pina.1 = Input 'PA1 - выход, крайний левый датчик Config Pina.3 = Input 'PA3 - выход, левый Config Pina.5 = Input 'PA5 - выход, правый Config Pina.7 = Input 'PA7 - выход, крайний правый
Dim A As Long 'Угол поворота A = 340 'Угол 0 град
1: 'Основной цикл программы Do
Compare1b = 210 'ШИМ на 210 (около 2,5 вольт на движке)
If A < 200 Then A = 200 Else End If
If A > 500 Then A = 500 Else End If
If Pina.1 = 0 And Pina.3 = 0 And Pina.5 = 0 And Pina.7 = 0 Then 'Когда на всех черный - прямо A = 340 : Pulseout Portc , 4 , A Waitms 20 Else End If
If Pina.1 = 0 And Pina.3 = 0 And Pina.5 = 0 And Pina.7 = 0 And A < 340 Then 'Когда на всех черный - немного вправо A = 360 : Pulseout Portc , 4 , A Waitms 20 Else End If
If Pina.1 = 0 And Pina.3 = 0 And Pina.5 = 0 And Pina.7 = 0 And A > 340 Then ''Когда на всех черный - немного влево A = 320 : Pulseout Portc , 4 , A Waitms 20 Else End If
If Pina.1 = 1 And Pina.3 = 0 And Pina.5 = 0 And Pina.7 = 0 And A < 340 Then 'Когда черный на двух справа - вправ + A = A - 5 : Pulseout Portc , 4 , A Waitms 20 Else End If
If Pina.1 = 0 And Pina.3 = 0 And Pina.5 = 0 And Pina.7 = 1 And A > 340 Then 'Когда черный на двух слева - влево - A = A + 5 : Pulseout Portc , 4 , A Waitms 20 Else End If
If Pina.3 = 0 And Pina.5 = 0 And A < 340 Then 'Наверное не надо... A = A - 1 : Pulseout Portc , 4 , A Waitms 20 Else End If
If Pina.3 = 0 And Pina.5 = 0 And A > 340 Then 'Наверное не надо... A = A + 1 : Pulseout Portc , 4 , A Waitms 20 Else End If
Gosub Left_d 'Подпрограмма, датчик справа Gosub Right_d 'Подпрограмма, датчик слева
Loop 'Лупим End 'Конец программы
Left_d: If Pina.1 = 0 And Pina.5 = 1 Then A = A - 10 : Pulseout Portc , 4 , A Waitms 10 End If Return
Right_d: If Pina.7 = 0 And Pina.3 = 1 Then A = A + 10 : Pulseout Portc , 4 , A Waitms 10 End If Return[/color]
SELECT CASE variable_name CASE 1 'code for variable_name=1 here CASE 2 'code for variable_name=2 here CASE ELSE 'code for other variable_name END SELECT
Если мне память не изменяет оно вот так. Но под АВР на васике не программировал никогда, поэтому если там синтаксис отличается от "обычного васика", то сорьки
2EdGull Ооо, а у тебю примеров програмок для АВР с кейсами нету, проэкт таки у вас продвинутый, может уже и библиотека текстов уже есть. В тематическом форуме уже сидел. У тя на сайте тоже. (;