GeloMik

Робот-светофил, нужна помощь.

24 сообщения в этой теме

GeloMik    0

 

Я новичок в программировании AVR контроллеров, хотя знаю +/- C++.

Проблема заключается в том, что я не могу написать прошивку к своему маленькому проекту. Используемый мною контроллер - ATTiny45. У него на борту имеется 1 АЦП с выходом на 4 ноги. Нужно, чтобы фактически одновременно брался замер с 3, 4 и 5 порта по АЦП, и при появлении на одном из них МК должен подать 5В на 1 или 2 порты. Источник АЦП AREF. 

Сюда прикреплю схему самого робота, если кого не затруднит помочь написать прошивку, буду очень благодарен :rolleyes:

Безымянный.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KRAB    4 997

Учись САМ ... и не жди!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
GeloMik    0
Только что, KRAB сказал:

Учись САМ ... и не жди!

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Впервые на русском языке! Работаем с микроконтроллерами STM32F7(на основе STM32F7 Online Training)

Цикл материалов на основе STM32F7 Online Training от компании STMicroelectronics. Описаны функциональные блоки и инструменты разработки для семейства микроконтроллеров STM32F7, охватывающие тематику системной периферии, памяти, безопасности, аналоговой периферии, цифровой периферии, таймеров, экосистемы.

Подробнее>>

Dr. West    3 639

Если АЦП один, то это невозможно по определению. Читать все равно придется по очереди каждую ногу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
zeconir    116

@GeloMik Ну, во-первых я не вижу вашей прошивки, пусть и не совсем рабочей. А раз ее нет, то тема должна быть в разделе "Работа". Но черт с ним.

По тексту вопроса:

Вы сами же написали что

23 минуты назад, GeloMik сказал:

У него на борту имеется 1 АЦП с выходом на 4 ноги

А потом хотите

23 минуты назад, GeloMik сказал:

Нужно, чтобы фактически одновременно брался замер с 3, 4 и 5 порта по АЦП

Чукча в логику не мочь?

25 минут назад, GeloMik сказал:

Источник АЦП AREF

Не источник, а опорное напряжение. Подробно гугл знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
GeloMik    0
1 минуту назад, Dr. West сказал:

Если АЦП один, то это невозможно по определению. Читать все равно придется по очереди каждую ногу.

Я в курсе, но мне нужно сделать так, чтобы delay между измерениями был маленьким.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    3 639

Ну так сделай, насколько это возможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 481

Ну то есть почитать даташит и посчитать минимальный интервал между опросами АЦП при нужной тактовой частоте - в лом? Здесь очень не любят помогать ленивым студентам. Вот будут самостоятельные телодвижения (прикидочный вариант программы хотя бы), тогда и начнём помогать.

В микроконтроллерной технике одновременности не бывает, МК всё делает последовательно. Точно так же, как и одноядерный процессор в вашем домашнем компьютере. А иллюзия одновременности решения кучи задач - всего лишь из-за того, что они очень быстро переключаются. Тысячи (а бывает - и миллионы) раз в секунду, для человека это кажется одновременным.
Задача включения движка при наличии света прекрасно решается аналоговыми методами, причём одновременность там истинная. ИМХО использовать для подобных задач микроконтроллер - всё равно, что забивать гвозди микроскопом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
AlexLir    0
54 минуты назад, GeloMik сказал:

при появлении на одном из них

Что в данном случае является единицей? АЦП 10bit в результате после считывания будет 0 до 1023. А так считывайте один канал, сохраняйте его значение, потом второй, а затем третий и на основе их делайте вывод.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KRAB    4 997
3 часа назад, GeloMik сказал:

если бы время не поджимало. Эта тема выпала мне как задание

значит ЕДИНСТВЕННЫЙ ПУТЬ РЕШЕНИЯ - раздел РАБОТА и платить баППло :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 450
4 часа назад, GeloMik сказал:

Нужно, чтобы фактически одновременно брался замер с 3, 4 и 5 порта по АЦП, и при появлении на одном из них

дружише хочется спросить у тебя с логическим мышлением все нормально? какой на...  "появлении 1" для АЦП ????

тебе задали реализовать элементарный шифратор три входа и два выхода на МК , накой ты сюда приплел АЦП???? шо ты им измерять собрался логический 0 или 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    383

А я добавлю, что диоды зенера параллельно моторам включены как-то странно - в прямом включении. Пробьет их вместе с транзисторами сразу после открытия оных. Туда ставят обычный диод и не так.

Изменено пользователем KomSoft
Описятки
  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
6 часов назад, GeloMik сказал:

брался замер с 3, 4 и 5 порта по АЦП

Почему надо чтобы брался по АЦП??? Это задание такое или ты сам придумал???

Гораздо проще просто прочитать значение с PINB и на основании значения 3-х битов делать что тебе нужно!

Как раз будет "одновременно"!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    383
57 minutes ago, ruhi said:

Почему надо чтобы брался по АЦП???

Нижний резистор 220 Ом. Фоторезистор обычно килоомы. Там до "1" не дотянет ну никак. Задача поставлена верно - брать с АЦП, а вот  ТС называет это единицей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 450
59 минут назад, KomSoft сказал:

Задача поставлена верно - брать с АЦП

ага, и вместо того чтобы тупо пересчитать делитель, следующей темой будет как/чем посмотреть значения АЦП :i-m_so_happy:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    383

Смотря на кого учится - на программиста или электроника

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 450

где-то я это уже видел... сначала дуринщик долго отправлял ацп на комп, щоб узнать шо он там насчитал и все это для зажечь светодиод при затемнении ФР

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
colorad    458

Одновременно значения можно измерять сделав устройство выборки хранения . 

Чтоб задержка была маленькая между измерениями,  надо тактовую частоту побольше,  а разрядность ацепирования поменьше .

Но здесь этого не надо . Энерция движения робота намного больше, чем энерция измерений при вменяемой тактовой частоте . 

Под 1 вероятно подразумевается некоторый уровень освещенности,  когда надо двигаться .

ТС вероятно учится на нанотехнолога и робототехника . 

Больше мыслей нет .

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    3 639

В схеме вообще куча ошибок. Самое основное - надо увеличить номиналы R5-R7 на два порядка, чтобы не вылавливать милливольты, а работать в полном диапазоне АЦП. (о чём уже писали выше).

Помимо диодов, ещё и С3 неправильно подключен. Если будет собираться рабочая модель, земли силовые и сигнальные полезно развести отдельно и указать это на схеме.

  • Одобряю 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
В 22.06.2018 в 16:15, KomSoft сказал:

Там до "1" не дотянет ну никак

Вот ведь, проблема, до единицы дотянуть ...

Все равно, насколько я вижу все схемотехнику обсуждают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Геннадий    1 039

Не 1 там нужна, а уровень максимальной освещенности, чтобы робот нашел источник света. Так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
30 минут назад, Геннадий сказал:

Не 1 там нужна, а уровень максимальной освещенности,

Вон оно как ...

Страшное дело :) !

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    383
1 hour ago, ruhi said:

все схемотехнику обсуждают.

Так название сайта и намекает больше на электронику, чем программирование. А если вылетят силовые транзисторы, то программа не поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
2 часа назад, KomSoft сказал:

А если вылетят силовые транзисторы, то программа не поможет.

У нас есть такие программы ...

Но мы вам о них не расскажем :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: mazzi
      Повторил схему опубликованную на сайте паяльник. http://forum.cxem.net/index.php?/blogs/entry/548-повторил-схему-клона-avr-jtag-ice/&do=getLastComment
      Схема заработала, но так и не смог её заставить работать из под CVAVR, заводится только из под Atmel Studio 4.
      Может быть кому ни будь удалось это сделать? Если да, то подскажите, как этого достичь?
       
    • Автор: LettonDarkCat
      Купил USBASP программатор с aliexpress. На нем стояла старая прошивка, т.к в khazama при прошивке выдавало ошибки но микроконтроллер прошивался и память считывалась (короче просто старая прошивка на нем). Потом решил перепрошить программатор через arduino. Прошивка успешно закачалась, но теперь программатор вообще отказывается работать. Кто сталкивался, помогите.
    • Автор: Andrey Gressikov
      Я начинающий программист, пытаюсь программировать микроконтроллеры в среде АВР.
      У меня возник вопрос, вот например у нас есть двоичная система исчисления где 3 мы можем записать так:
      00000011, однако чтобы подать логическую 1 на третий порт микроконтроллера мы должны сделать следующую запись
      PORTC=00000100, т е существует некая разница между названиями портов и системами исчисления, в таком случае как мне используя 16 ричную систему исчисления подать напряжение на какую либо ногу порта.Я знаю что данная запись 0х01 подает логическую 1 на 0 ногу, а данная запись 0х10 на 4 ногу ,ну а как быть дальше?
      Как подать напряжение на 5 ногу порта? Если я в чем то заблуждаюсь - поправьте, если чего то незнаю расскажите.
      Заранее благодарю.