Логическое И на биполярных транзисторах или как быть когда нужно много UARTов

Как быть когда нужно много UARTов (или любой другой штуки)

Зачастую аппаратных UARTов можно сделать не так уж и много. А иногда и вовсе один. Например, на Raspberry Pi. Что же делать если у вас есть 2 устройства с которыми нужно общаться именно по этому протоколу?

Необходимо сделать схемку коммутации сигналов.

По сути все просто, на вход приходит сигнальная линия и несколько коммутационных. Каждому такому входу соответствует свой выход в который направится сигнал при запихивании лог единички в соответствующий вход.

Соответсвующая логическая схема чисто на логических И.

Теперь как же это должно выглядеть в железе.

Логическое И на биполярных транзисторах

Смотрим в следующую статью: http://www.schoolinfo1.narod.ru/elements2.htm. Там пишут что для лог. И нужно 2! транзистора. Жируют=) В общем я подумал и решил что можно сделать на одном:

Вот и все.

Полезные статьи:
https://ru.wikipedia.org/wiki/

http://electrik.info/main/praktika/751-shemy-vklyucheniya-bipolyarnyh-tranzistorov.html

Raspberry Pi 2 Web Server

Все что нужно чтобы запустить свой веб сервер на малинке описано в этой статье. Джентельменский набор так сказать.

Подразумеваю что на Малине стоит Raspberian и есть доступ к консоли (через удаленный доступ или напрямую)

Автоподключение Raspberry Pi 2 к Wi-Fi

Если вы хотите чтобы малинка автоматически конектилась к вашему файфаю то нужно сделать следующее. Перевод с (http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/)

Насраиваем файл с соединениями:

$ sudo nano /etc/network/interfaces

нужно поменять строчку:

auto wlan0

и добавить строчки в конце:

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Далее нажимаем Ctrl+X затем Y.

Теперь надо отредактировать файл на который мы ссылаемся.

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Там нужно записать параметры сети к которой подключаемся:

network={
ssid="НАЗВАНИЕ_СЕТИ"
psk="ПАРОЛЬ"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

Все готово.

Проверить просто:

$ sudo reboot

После перезагрузки

ping google.com

Статический IP

Если вам надо статический IP то нужно заменить dhcp на static и дописать в интерфейс:

iface wlan0 inet static
address 192.168.1.155 #Адрес который хочешь получить
netmask 255.255.255.0 
gateway 192.168.1.1 #Адрес роутера

Установка Apache и PHP на Raspberry Pi 2

Установка Apache2 и PHP позволит этому устройству отображать веб странички. Перевод с  https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md.

Установить Apache:

sudo apt-get install apache2 -y

Чтобы протестить можете в браузере на самой малине написать localhost или если вы подключены к сетке то с другого устройства зайти по IP. Чтобы узнать IP Raspberry Pi нужно написать

hostname -I

Если какая-то страничка загрузится, то все ок. Едем дальше.

Ставим PHP:

sudo apt-get install php5 libapache2-mod-php5 -y

После установки в папке /var/www/html/index.html можно заменить на index.php с содержимым:

<?php echo date('Y-m-d H:i:s'); ?>

При обновлении браузера будет отображаться время.

Установка MySQL на Raspberry Pi 2

Ставим MySQL. Оригинал: http://raspipress.com/2014/06/tutorial-install-mysql-server-on-raspbian/

Пробиваем прошивку:

sudo uname -a

Если ниже 3.12.20 то нужно обновить:

sudo rpi-update f6eef32dd6388c3b04dbf462bd324d93281bf397

И перезагрузиться:

sudo reboot

Ставим:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mysql-server --fix-missing

Во время установки он будет просить пароль для рута.

Чтобы из PHP можно было работать с БД нужно поставить следующий пакет:

sudo apt-get install mysql-client php5-mysql

Заполнять БД из командной строки я считаю кощунством так что поставим PHPMyAdmin.

Установка PHPMyAdmin на Raspberry Pi 2

Ставим PHPMyAdmin

http://raspipress.com/2012/09/tutorial-install-phpmyadmin-on-your-raspberry-pi/

Все просто:

apt-get install phpmyadmin

Добавляем в конфиг апача:

$ sudo nano /etc/apache2/apache2.conf

В последней строке дописываем:

Include /etc/phpmyadmin/apache.conf

Перезагружаем Apache:

/etc/init.d/apache2 restart

Все. теперь можно работать с базой данных:

http://localhost/phpmyadmin/

 

 Танцы с бубном вокруг /etc/network/interfaces

 

Структурная схема нашего CanSat

Любой проект начинается с обсуждения, определения целей и задач. Так и начался наш проект, обсудив многое, разложив всё по полочкам мы пришли к общему мнению и начали разработку аппарата. Наша разработка началась с составления структурной схемы всего проекта и аппарата в частности, о ней и пойдёт сейчас речь.
Принципиальная схема аппарата
А теперь подробнее о составляющих схемы:

  • ATmega128

ATmega128
В нашем проекте мы взяли за основу микроконтроллер от Atmel ATmega128. Этот 8-ми битный микроконтроллер работает на частоте 16 МГц. ATmega128 имеет 64 ноги и 7 полноценных цифровых орта (A-G), 4 полноценных ADC (аналого цифровых преобразователя), 2 UART (Универсальный асинхронный приёмопередатчик), 4 таймера, SPI и I2C. В общем чего только нет.

  • DS18B20

DS18B20
Для базовой миссии соревнования CanSat требуется измерять температуру воздуха, организаторы рекомендуют делать это с помощью DS18B20.
DS18B20 это цифровой термометр, работающий про протоколу 1-wire (для передачи данных используется всего 1 провод). DS18B20 не плохое решение для подобных задач, так как на шине может быть далеко не 1 датчик, да и точность может не плохую выдавать, до 0,0625°С правда погрешность у него ±0,5°С.

  • MPX5100

MPX5100
MPX5100 аналоговый датчик давления, простой как пень: подал 5в, получил Хв, пересчитал Хв в паскали или в бары и доволен.

  • AltIMU-10

AltIMU-10
Pololu AltIMU-10 цифровой датчик объединяющий в себе 3 датчика:
L3GD20(гироскоп),
LSM303DLHC(акселерометр и магнитометр в одном) и
LPS331AP(барометр и термометр).
Все датчики работают по протоколу I2C, что и определяет возможность их размещения на одной маленькой платке.

  • LS20031

LS20031
GPS модуль со встроенной антенной. Работает по цифровому протоколу UART. Работает автономно, раз в секунду отсылает пакет содержащий данные о координатах (долгота, широта, высота), времени и так далее.

  • RXQ2

rxq2
RXQ2 радио приёмопередатчик, предложенный организаторами, имеет настраиваемую частоту от 433,1 MHz до 868.2 MHz. Данные на сам RXQ2 предаются по UART, настраивается по тоже по нему, путём изменения уровня на config-ноге.

  • microSD

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

Проект на CanSat

 

Существует такое соревнование по запуску спутников. называется CanSat. Вот сайт http://roscansat.com/ организаторов.

Что нужно для участия?

  • Желание
  • 2-3 пары рук (конструктор, программист, электроник)
  • Подать заявку в сенятбре
  • 10 к рублей

Вся подробная информация по подаче заявки написана здесь http://roscansat.com/kak-stat-uchastnikom/polozhenie-5-go-chempionata/.

 С чего начать?

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

  • Плата датчиков
  • Плата микроконтроллера
  • Плата Радиопередатчика
  • Конструкция
  • Программатор

Здесь нет ничего лишнего и вам понадобится каждый из этих блоков.

Вся информация о платах находится здесь http://roscansat.com/tehnicheskaya-dokumentatsiya/, а информация о конструкции описана в положениях.

Немного ознокомились с чем имеем дело. Теперь надо распланировать работу на ближайшие полгода. Именно столько времени вам отведено на выполнение проекта. Не надо думать, что вы успеете сделать все в последние 2 недели или дня. Уделяя даже по 2 – 3 дня в неделю можно не успеть.

План можно составить в виде таблицы:

Сам конкурс состоит из трех этапов. Обучение, предзащита и сборы.

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

  • Что будет делать ваш спутник?
  • Из чего состоит ваш спутник?
  • Как вы обеспечите работу спутника?

На эти вопросы проще ответить схемой или рисунком, чем писать кучу занудного текста.

Например:

Структурная схема спутника со следящей системой

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

PID ( ПИД ) регулятор всем

Что такое ПИД регулятор

Простым языком – это штука которая делает чтобы работало лучше, например: машина не глохла на холостых в мороз, или сливной бачок наполнялся до верху после слива, или квадрокоптер находился в горизонте в ветреную погоду. ПИД регулятор является обобщением любого регулятора который используется в реальности. Дело в том, что он работает с физически значимыми параметрами:

  • Сам параметр
  • его скорость и
  • ускорение

Остальные производные особо никого не интересуют. Вот и все. Одной из важнейших особенностей регуляторов вообще – это его входной сигнал. Регулятор всегда работает с рассогласованием системы. Это разница между целевым значением  параметра и реальным значением. Например: (значение холостого хода – скорость двигателя), (высота бачка – уровень воды), (заданное угловое положение коптера – угловые положения квадрокоптера).

Преобразование

Для человека, который хоть немного учился в университете будет проще понимать ПИД регулятор как какое-то звено цепи, а не через абстракции типа: “Дифференциальная составляющая ускоряет процесс, Интегральная – убирает колебательность, Пропорциональная добавляет жесткость”. Это все ужасно раздражает, особенно когда не работает на практике.

Посмотрим на уравнение регулятора (из Wiki):

Если вы знакомы с Преобразованием Лапласа или проще говоря:

Можно представить ПИД регулятор в следующем виде, и сразу вынести 1/s:

Вот так просто сложный ПИД стал простым квадратным уравнением. Теперь нужно найти корни квадратного уравнения. И получим более удобное выражение:

Если вынести s1 и s2, а потом заменить на красивые буковки, получим очень даже удобное выражение. (Чего с этим делать объясню дальше)

Настройка ПИД регулятора

Можно найти кучу статей как настроить ПИД регулятор. При этом большинство из них задаются какой-то магией которая исходит от конкретного случая. Обобщенной теории же нигде не найти.

Основная задача регуляторов – это:

  • Сделать устойчивым
  •  Или Улучшить

процесс регулирования. Соответственно для выполнения первой задачи есть конкретные критерии, а вторую задачу решают увеличением коэффициента по контуру до тех пор пока не дойдем до необходимости решать первую.

Сделать устойчивым всегда необходимо такой процесс в котором вы хотите выдерживать параметр а управляете его ускорением. Ракета (измеряем угол, задаем тягу), Квадрокоптер (измеряем угол, задаем тягу винтов). Улучшить процесс регулирования бывает нужно обычно когда регулируемая величина меняется медленно, а хотелось бы побыстрее (естесственно в пределах возможности самого объекта управления). Или процесс довольно не точный, а хоется точнее (естесственно в пределах возможностей датчиков). Температура воды, скорость вращения двигателя, движение робота по линии.

  Передаточная функция

Из выражения выше мы выяснили, что ПИД регулятор это всего лишь 3 полюса в числителе и 1 в знаменателе.

Или 2 форсирующих звена и одно интегрирующее. Забьем пока на интегрирующее звено. Самое интересное в этих скобках. Дело в том что при решении квадратного уравнения может получиться несколько случаев:

  • (Ts+1)(Ts+1)
  • (Ts-1)(Ts+1)
  • (Ts-1)(Ts-1)
  • (Ts+1)(Ts-1)

Цвета соответствуют цветам графиков. (T1 = 0.1c, T2 = 1c)

Особенность звена (Ts-1) в том что фазовая характеристика начинается с +180 и заканчивается в +90. А обычное форсирующее звено начинается с 0 и идет до 90.

  • (Ts-1)
  • (Ts+1)

Полезная книжка: http://infoterra.ru/oty/books/files/tau_dlya_chainikov.pdf