роботы робототехника микроконтроллеры


 Страниц (3): « 1 [2] 3 »   

> Без описания
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Artem пишет:
за код

Кстати вам надо было сказать мне с какой погрешностью вы хотите измерять напряжение.Мой код работает с погрешностью приблизительно 0,1 вольта.
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Если будете подключать батарейку, то не забудьте соединить все земли между собой.И еще не удивляйтесь если вы подключите батарейку, а диод не загорится.Дело в том, что вольтметр работает с погрешностью 0,1 вольта, так что если напряжение будет 3,2 вольта, то диод не загорится.Какая погрешность нужна вам?
Прикреплено изображение
untitled.GIF

(Отредактировано автором: 12 Сентября, 2012 - 17:32:20)

 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



anar пишет:
Какая погрешность нужна вам

на начальном этапе погрешность может быть и 05 вольта Улыбка
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Artem пишет:
05 вольта

CODE:



$regfile = "m8def.dat"
$crystal = 8000000
Dim I As Integer
Config Portb = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Do

Start Adc
I = Getadc(0)
If I > 550 And I < 650 Then
Portb = 0
Waitms 1
Portb.0 = 1
End If
If I > 350 And I < 450 Then
Portb = 0
Waitms 1
Portb.4 = 1
End If
If I > 150 And I < 250 Then
Portb = 0
Waitms 1
Portb.7 = 1
End If
Loop
End




(Отредактировано автором: 14 Сентября, 2012 - 18:05:58)

 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



Да, с кодом я уже понял, но вот можно ли подключить светодиоды к другим вывода, а то почти все выводы порта В заняты в программировании, я думаю можно.
И ещё вот эта строка:
Portb = 0 это я так понимаю что это мы обнуляем порт В
Waitms 1 задержка
Portb.0 = 1 а вот это установить 1 выходе 0 порта В вот только я не понял эти строки аналогичны вот этим:
Reset PORTB
Waitms 1
Set PORTB.0
или нет?
И почему нельзя просто написать после Then
Set PORTB.0
Else
Reset PORTB.0
End if
или так нельзя делать?
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



скорость распространения эм-волн конечна, может и коротнуть если задержку не поставить. (это меня самого бесит...)
В данном случае можно и тамк, но когда н-мост и токи по десятку ампер...
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Artem пишет:
И ещё вот эта строка:
Portb = 0 это я так понимаю что это мы обнуляем порт В
Waitms 1 задержка
Portb.0 = 1 а вот это установить 1 выходе 0 порта В вот только я не понял эти строки аналогичны вот этим:
Reset PORTB
Waitms 1
Set PORTB.0
или нет?

Да.

CODE:
Portb = 0
Waitms 1
- Если не будет этой части кода, то старые значения смешаются с новыми, одним словом будет каша.Дело в том, что после каждого измерения зажигается диод, так вот после 2 -3 измерений уже ничего не будет понятно.Поэтому я и добавил эту часть кода.

Artem пишет:
Да, с кодом я уже понял, но вот можно ли подключить светодиоды к другим вывода, а то почти все выводы порта В заняты в программировании, я думаю можно.

Да можно.

(Отредактировано автором: 15 Сентября, 2012 - 09:25:08)

 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



так а задержка то зачем?
(Добавление)
или это хитрая часть таймера?
Не более понятно чем на асме. и не понятнее и не короче
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Ну принципи задержку можно убрать .
 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



спасибо вам anar за ответ, к сожалению пока не опробовал код, ну тут возник другой вопрос я решил сделать ик бампер на мк и хочу что бы модуляция производилась микроконтроллером вот код:
$regfile = "m8def.dat"
$crystal = 1000000
Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 8
Config Portb = Output
Config Portd = Input
Config Portc = Output
Set Portc.1
Waitms 500
Reset Portc.1' эти строки не имеют смысла, они нужны просто для того что бы светодиод мигнув пару раз показал работает ли микроконтроллер или нет, к стати это пригодилось
Waitms 500
Set Portc.1
Waitms 500
Reset Portc.1
Do
Pwm1a = 1500' опытном путём было выяснено что именно это значение нужно для того что бы ТСОП понимал микроконтроллер
Loop
End
Схему включения ТСОПа я взял вот от сюда: http://myrobot.ru/wiki/index.php...rojects.MyLINKER
но модулятор сделал на мк просто подключив светодиод, пытаясь сделать ик бампер я расположил ТСОП и ик светодиод рядом друг с другом и проверил реагирует ли система на препятствия, оказалось всё работает чему я очень удивился. Дальность была небольшая 13-15 см но есть ещё проблема: я подключил к тсопу на первое время обычный светодиод что бы он загорался когда перед бампером есть препятствие, так вот когда расстояние до препятствия рано 14-15 см светодиод на тсопе начинает мигать, я подумал это помехи и попытался изменить значение pwm1a но ничего не вышло, я не понимаю в чем проблема, может быть вы знаете как с этим справиться?
Заранее спасибо Улыбка
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Artem пишет:
Pwm1a = 1500'

Ого Жуть, Вы присвоили Pwm значение 9(внизу):
Artem пишет:
Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 8

а это означает, что максимальное значение шим равно 2^9 то есть 512.
Код, который вы представили в начале темы я думаю вы взяли отсюда http://robozone.su/mrc28/19-modu...ve-tsop2136.html но он у вас немного изменен сделайте все, как указано в статье.А я пока попытаюсь понять, как работает этот код

(Отредактировано автором: 17 Сентября, 2012 - 18:05:36)

 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



anar пишет:
Вы присвоили Pwm значение 9:

ой, ошибся надо было присвоить 10, хотя даже в этом случае значение 1500 будет больше
anar пишет:
Код, который вы представили в начале темы я думаю вы взяли отсюда http://robozone.su/mrc28/19-modu...ve-tsop2136.html но он у вас немного изменен сделайте все, как указано в статье.

Абсолютно верно код взят именно отсюда, но я уже загружал его в мк, он не работает, и ведь вы же сами сказали что этот код только подсчитывает импульсы на входе таймера или я вас не так понял:
anar пишет:
Ваш таймер сконфигурирован, как счетчик, то есть он считает импульсы.Если надо формировать импульсы через равные промежутки времени таймер надо сконфигурировать, так, чтобы он на выходе формировал шим сигнал.

я сделал так как вы сказали, сформировал на выходе таймера шим или что нужно было сделать не так
(Добавление)
Я попробовал ещё раз загрузить тот код, но бузуспешно рёв в три ручья
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Artem пишет:
Абсолютно верно код взят именно отсюда, но я уже загружал его в мк, он не работает, и ведь вы же сами сказали что этот код только подсчитывает импульсы на входе таймера или я вас не так понял:

Дело в том, что я не могу понять, как этот код работает, но раз автор говорит, что он работает значит так и есть.
Artem пишет:
но я уже загружал его в мк, он не работает

Вот код, который привели вы:
CODE:

$regfile = "m8def.dat"
$crystal = 1000000
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle
Compare1a = 222
Config Portb.1 = Output
Start Timer1
Do
Loop
End

А вот код, который опубликован на сайте:
CODE:


$regfile = "m8def.dat" 'используем Mega8
$crystal = 16000000 'частота кварцевого резонатора 16mHz

'Генерация частоты 36kHz
'Настраиваем Timer1

Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle

' Расчитываем Compare1a
' тактовая частота (kHz) / частота TSOPa (kHz) / 2 = Compare
' 16000 / 36 / 2 = 222

Compare1a = 222

'PortB.1 - выход сигнала
'PinC.0 - считываем состояние TSOPa
'Portd.0 - сигнальный светодиод

Config Pinb.1 = Output
Config Portd.0 = Output
Config Pinc.0 = Input

Start Timer1
Do
If Pinc.0 = 0 Then
Portd.0 = 1
Else
Portd.0 = 0
End If
Loop

End



У вас тактовая частота 1 мгц, а на сайте 16.
(Добавление)
Короче сделайте все так,как написано там.
(Добавление)
Вот хороший форум с большим количеством знатоков bascom:http://radiokot.ru/forum/viewtop...8&start=2880 .

(Отредактировано автором: 17 Сентября, 2012 - 18:23:54)

 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



Я просто убрал всё ненужное, по крайней мере то что не влияло на выполнение программы "вырабатывания" импульсов. Попробовал высчитать новое значение, но ничего не вышло.
Ладно, посмотрим что можно сделать Грустный
 
 Top
anar Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  



Artem пишет:
Я просто убрал всё ненужное

Не знаю ик датчик должен работать не один же вы его собирали.

(Отредактировано автором: 17 Сентября, 2012 - 20:02:36)

 
 Top
Страниц (3): « 1 [2] 3 »
« Обо всем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru